<?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>Galder’s Passionate Blog</title>
	<atom:link href="http://galder.zamarreno.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://galder.zamarreno.com</link>
	<description>What&#039;s the point of living if you can&#039;t love or hate?</description>
	<lastBuildDate>Tue, 27 Sep 2011 09:57:21 +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>Catch me if you can&#8230; at Soft Shake or JUDCon!</title>
		<link>http://galder.zamarreno.com/?p=1167</link>
		<comments>http://galder.zamarreno.com/?p=1167#comments</comments>
		<pubDate>Tue, 27 Sep 2011 08:36:30 +0000</pubDate>
		<dc:creator>Galder Zamarreño</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://galder.zamarreno.com/?p=1167</guid>
		<description><![CDATA[<a href="http://galder.zamarreno.com/wp-content/uploads/2011/09/sos11-speaker-w.png"><img src="http://galder.zamarreno.com/wp-content/uploads/2011/09/sos11-speaker-w-300x153.png" alt="" title="sos11-speaker-w" width="300" height="153" class="alignleft size-medium wp-image-1179" /></a>I'll be speaking at <a href="http://soft-shake.ch/en/">Soft Shake</a>, an IT conference in Geneva, on the 3rd of October about <a href="http://soft-shake.ch/en/schedule/">data grids and data caching with Infinispan</a>. In fact, I'll be speaking twice. In the first talk, which is a 1pm, I'll be introducing the concepts of data grids and data caching with Infinispan, and in the second talk (5pm), I'll be comparing data grids with databases. Don't miss it! [<a href="http://galder.zamarreno.com/?p=1167">...</a>]]]></description>
			<content:encoded><![CDATA[<p><a href="http://galder.zamarreno.com/wp-content/uploads/2011/09/sos11-speaker-w.png"><img src="http://galder.zamarreno.com/wp-content/uploads/2011/09/sos11-speaker-w-300x153.png" alt="" title="sos11-speaker-w" width="300" height="153" class="alignleft size-medium wp-image-1179" /></a><span class="drop">A</span>s you&#8217;re probably well aware, the Infinispan team is delivering talks all around the world. If you&#8217;re in the US and you want to find out more Infinispan/EDG, <a href="http://infinispan.blogspot.com/2011/09/javaone-2011-and-devoxx-2011.html">Manik will be speaking at JavaOne</a>, but if like me you&#8217;re staying out in Europe, why not come to <a href="http://soft-shake.ch/en/">Soft Shake</a> in Geneva?</p>
<p><a href="http://soft-shake.ch/en/">Soft Shake</a> is an IT conference being held in Geneva on October 3rd and 4th and <a href="http://soft-shake.ch/en/schedule/">I&#8217;ll be speaking</a> about data grids and data caching with Infinispan on the 3rd. In fact, I&#8217;ll be speaking twice! At 1pm you&#8217;ll see me doing an introduction to data grids and data caching, and at 5pm I&#8217;ll be delving into the data grid vs database debate.</p>
<p>So, if any of this topics interest you, come and join us at Soft Shake! It&#8217;s gonna be fun :)</p>
<p>And that is not all! I&#8217;ll be one of the Infinispan team members speaking in JUDCon London at the end of October. The <a href="http://www.jboss.org/events/JUDCon/2011/london/agenda.html">agenda</a> is now live and you&#8217;ll see me talking about near caching on the 31st of October. Don&#8217;t miss it!</p>
<p>Cheers,<br />
Galder</p>
]]></content:encoded>
			<wfw:commentRss>http://galder.zamarreno.com/?feed=rss2&#038;p=1167</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Python: Killing a java process started from script</title>
		<link>http://galder.zamarreno.com/?p=1148</link>
		<comments>http://galder.zamarreno.com/?p=1148#comments</comments>
		<pubDate>Fri, 11 Mar 2011 21:57:18 +0000</pubDate>
		<dc:creator>Galder Zamarreño</dc:creator>
				<category><![CDATA[How To]]></category>
		<category><![CDATA[infinispan]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://galder.zamarreno.com/?p=1148</guid>
		<description><![CDATA[<a href="http://galder.zamarreno.com/wp-content/uploads/2011/03/python-logo.png"><img src="http://galder.zamarreno.com/wp-content/uploads/2011/03/python-logo.png" alt="" title="python-logo" width="80" height="80" class="alignleft size-full wp-image-1159" /></a>A few weeks back I was writing some Python code and I found myself needing to kick off a script that started a Java process from Python, but what wasn't very obvious is how to stop the actual Java process. Read on to find out more how to quickly kill a Java process started from kicking off a script in Python [<a href="http://galder.zamarreno.com/?p=1148">...</a>]]]></description>
			<content:encoded><![CDATA[<p><a href="http://galder.zamarreno.com/wp-content/uploads/2011/03/python-logo.png"><img src="http://galder.zamarreno.com/wp-content/uploads/2011/03/python-logo.png" alt="" title="python-logo" width="80" height="80" class="alignleft size-full wp-image-1159" /></a><span class="drop">A</span> few weeks back I was writing some Python code and I found myself needing to kick off a script that started a Java process from Python, but what wasn&#8217;t very obvious is how to stop the actual Java process. Eventually I came up with the following code that does job and thought it&#8217;d be good to share it with you in case anyone else needs to do the same. Let&#8217;s look at the different parts of the script:</p>
<ol>
<li> First of all, the script kicks off the .sh script and keeps track of the script process:

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1148code1'); return false;">View Code</a> PYTHON</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p11481"><td class="code" id="p1148code1"><pre class="python" style="font-family:monospace;">  <span style="color: #ff7700;font-weight:bold;">def</span> start_local<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
    <span style="color: #008000;">self</span>.<span style="color: black;">target_dir</span> = <span style="color: #483d8b;">&quot;/tmp&quot;</span>
    <span style="color: #008000;">self</span>._unzip<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">target_dir</span><span style="color: black;">&#41;</span>
    <span style="color: #008000;">self</span>.<span style="color: black;">p</span> = <span style="color: #008000;">self</span>._start<span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;infinispan/test_local_config.xml&quot;</span>, 
                          <span style="color: #008000;">self</span>.<span style="color: black;">target_dir</span><span style="color: black;">&#41;</span></pre></td></tr></table></div>


<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1148code2'); return false;">View Code</a> PYTHON</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p11482"><td class="code" id="p1148code2"><pre class="python" style="font-family:monospace;">  <span style="color: #ff7700;font-weight:bold;">def</span> _start<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, config, target_dir<span style="color: black;">&#41;</span>:
    script = <span style="color: #483d8b;">&quot;%s/infinispan-%s/bin/startServer.sh&quot;</span> 
              <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>target_dir, VERSION<span style="color: black;">&#41;</span>
    <span style="color: #dc143c;">os</span>.<span style="color: black;">chmod</span><span style="color: black;">&#40;</span>script, 0755<span style="color: black;">&#41;</span>
    p = Popen<span style="color: black;">&#40;</span><span style="color: black;">&#91;</span>script, <span style="color: #483d8b;">&quot;-r&quot;</span>, <span style="color: #483d8b;">&quot;hotrod&quot;</span>, <span style="color: #483d8b;">&quot;-c&quot;</span>, config<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">return</span> p</pre></td></tr></table></div>

</li>
<li>The problem with this type of scenarios where you have a Java process started from a script is that Python, and probably any other scripting language out there, will give you the PID of the script process but not the Java process. So, when it comes to stopping the Java process, we need to find the PID of the underlying Java process, for example:

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1148code3'); return false;">View Code</a> PYTHON</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p11483"><td class="code" id="p1148code3"><pre class="python" style="font-family:monospace;">  <span style="color: #ff7700;font-weight:bold;">def</span> _find_pid<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, shell_pid<span style="color: black;">&#41;</span>:
    ps = Popen<span style="color: black;">&#40;</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;ps&quot;</span>, <span style="color: #483d8b;">&quot;-ef&quot;</span><span style="color: black;">&#93;</span>, stdout=PIPE<span style="color: black;">&#41;</span>
    out, err = ps.<span style="color: black;">communicate</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
    lines = out.<span style="color: black;">split</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: black;">&#41;</span>
    java_proc = <span style="color: #008000;">filter</span><span style="color: black;">&#40;</span><span style="color: #ff7700;font-weight:bold;">lambda</span> l: l.<span style="color: black;">find</span><span style="color: black;">&#40;</span><span style="color: #008000;">str</span><span style="color: black;">&#40;</span>shell_pid<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span> <span style="color: #66cc66;">&gt;</span> -1 <span style="color: #ff7700;font-weight:bold;">and</span>
                                 l.<span style="color: black;">find</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;java&quot;</span><span style="color: black;">&#41;</span> <span style="color: #66cc66;">&gt;</span> -1, lines<span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">return</span> java_proc<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span>.<span style="color: black;">split</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">' '</span><span style="color: black;">&#41;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">3</span><span style="color: black;">&#93;</span></pre></td></tr></table></div>

<p>This function takes the PID of shell script and tries to find the Java process whose parent process is the script process.</li>
<li>Once the Java PID is know, things are pretty straightforward, just kill it:

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1148code4'); return false;">View Code</a> PYTHON</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p11484"><td class="code" id="p1148code4"><pre class="python" style="font-family:monospace;">  <span style="color: #ff7700;font-weight:bold;">def</span> stop<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
    java_pid = <span style="color: #008000;">self</span>._find_pid<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">p</span>.<span style="color: black;">pid</span><span style="color: black;">&#41;</span>
    kill = Popen<span style="color: black;">&#40;</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;kill&quot;</span>, <span style="color: #483d8b;">&quot;-2&quot;</span>, java_pid.<span style="color: black;">strip</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#93;</span>, stdout=PIPE, 
                 stderr=PIPE<span style="color: black;">&#41;</span>
    out, err = kill.<span style="color: black;">communicate</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></td></tr></table></div>

</li>
</ol>
<p>And that&#8217;s it :) &#8211; The code that I originally wrote did the same but with with a few more process open to do grepping and cutting the output. The final version that you can see in its entirety <a href="https://github.com/galderz/python-client/blob/master/infinispan/test_hotrod.py">here</a> and whose code snippets are shown uses Python functions as much as possible to reduce the number of system calls.</p>
]]></content:encoded>
			<wfw:commentRss>http://galder.zamarreno.com/?feed=rss2&#038;p=1148</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How IntelliJ IDEA Won Me Over</title>
		<link>http://galder.zamarreno.com/?p=900</link>
		<comments>http://galder.zamarreno.com/?p=900#comments</comments>
		<pubDate>Sun, 26 Dec 2010 21:28:21 +0000</pubDate>
		<dc:creator>Galder Zamarreño</dc:creator>
				<category><![CDATA[Random]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[intellij]]></category>

		<guid isPermaLink="false">http://galder.zamarreno.com/?p=900</guid>
		<description><![CDATA[<a href="http://galder.zamarreno.com/wp-content/uploads/2010/12/intellij_logo1.png"><img src="http://galder.zamarreno.com/wp-content/uploads/2010/12/intellij_logo1.png" alt="" title="intellij_logo" width="75" height="75" class="alignleft size-full wp-image-1144" /></a>It's almost a year since I stopped using <a href="http://www.eclipse.org/">Eclipse</a> as my main Java IDE and started using <a href="http://www.jetbrains.com/idea/">IntelliJ IDEA</a> instead. This post is motivated by <a href="http://www.aldana-online.de/2010/12/12/intellij-idea-rocks-revisted-for-10/">Manuel's post on why IntelliJ rocks</a>, where I think he's missing out some important. Read to find out the features where, in my opinion, IntelliJ particularly excels as opposed to Eclipse. [<a href="http://galder.zamarreno.com/?p=900">...</a>] ]]></description>
			<content:encoded><![CDATA[<p><a href="http://galder.zamarreno.com/wp-content/uploads/2010/12/intellij_logo1.png"><img src="http://galder.zamarreno.com/wp-content/uploads/2010/12/intellij_logo1.png" alt="" title="intellij_logo" width="75" height="75" class="alignleft size-full wp-image-1144" /></a><span class="drop">I</span>t&#8217;s almost a year since I stopped using <a href="http://www.eclipse.org/">Eclipse</a> as my main Java IDE and started using <a href="http://www.jetbrains.com/idea/">IntelliJ IDEA</a> instead. Ever since I&#8217;ve been meaning to write this post and finally I found the motivation after reading <a href="http://www.aldana-online.de/2010/12/12/intellij-idea-rocks-revisted-for-10/">Manuel&#8217;s reasons on why IntellIJ rocks</a>. I think he makes some valid points, but in my opinion, it misses some other key differentiators. Here&#8217;s my list of reasons why IntelliJ really kicks ass as opposed to Eclipse:</p>
<blockquote><p><strong>IntelliJ differentiates between test and main folders</strong></p></blockquote>
<p>This is in my opinion one of the biggest advantages of IntelliJ, because it means I can search for references to a class/method within the testing scope or within the production code. Why is this useful? Let me give you two examples:</p>
<ul>
<li>Imagine you want to find out if a method is actually used in production code. Sure, it might be used 1000 times in testing, but is it actually used in production code? Go and figure out from those 1000 references whether any comes from production code.</li>
<li>Imagine you want to figure out how to test a particular class. With IntelliJ, you can find references to that class only within the test code, giving you a clear view of how this class might get tested. With Eclipse, if the class is used plenty of times in the production code, separating between testing and production code can be a PITA.</li>
</ul>
<blockquote><p><strong>IntelliJ supports running individual test methods better</strong></p></blockquote>
<p>Eclipse used to drive me nuts whenever I want to execute a particular test method. First of all, it wasn&#8217;t intuitive, you had to go to the class overview panel to be able to do so. On the contrary, with IntelliJ you can do so directly from the class code which is much easier. But the most annoying thing about Eclipse was when you wanted to run individual test methods that are defined in super classes. Eclipse could not do this. If you went to parent class and selected the method, it would try to instantiate the parent class but not the child. IntelliJ does this very well, allowing to select the class and then the test method in the run configuration. Eclipse, at least a year ago, was not able to do so.</p>
<blockquote><p><strong>IntelliJ is the king of refactoring</strong></p></blockquote>
<p>Refactoring in IntelliJ is taken to limits where Eclipse has never reached. For example with Eclipse, whenever I renamed a test class, I always had to go and change the run configuration. Not any more with IntelliJ.</p>
<blockquote><p><strong>IntelliJ can shelve changes</strong></p></blockquote>
<p>A year ago I was not fully using Git yet, and so finding the ability of <a href="www.jetbrains.com/idea/webhelp/shelving-changes.html">shelve changes</a> on Subversion projects was really useful. Eclipse could not do this. With Git now, <a href="http://www.kernel.org/pub/software/scm/git/docs/git-stash.html">git-stash</a> already does this job, so this feature is not as important this days if you&#8217;re coding in Git.</p>
<blockquote><p><strong>With IntelliJ you can define default VM parameters for all tests</strong></p></blockquote>
<p>In Eclipse, this is not possible. The only thing you can really do is define default parameters at JRE level, which can be too far reaching if you&#8217;re running different type of applications from the IDE.</p>
<blockquote><p><strong>IntelliJ provides plugins via a central repository</strong></p></blockquote>
<p>IntelliJ has always had a single place from which you install plugins, which makes it nice, easy and quick to install plugins. This might be a bit outdated now but with Eclipse, in the past at least, you had to go and set up individual plugin update sites in order to install plugins, and this used to be quite a PITA.</p>
]]></content:encoded>
			<wfw:commentRss>http://galder.zamarreno.com/?feed=rss2&#038;p=900</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>New DJ Mix: What Makes Elmo Tic?</title>
		<link>http://galder.zamarreno.com/?p=1090</link>
		<comments>http://galder.zamarreno.com/?p=1090#comments</comments>
		<pubDate>Wed, 17 Nov 2010 21:22:16 +0000</pubDate>
		<dc:creator>Galder Zamarreño</dc:creator>
				<category><![CDATA[DJ Mix Podcast]]></category>
		<category><![CDATA[der-dritte-raum]]></category>
		<category><![CDATA[disco]]></category>
		<category><![CDATA[nu-disco]]></category>
		<category><![CDATA[tensnake]]></category>
		<category><![CDATA[vitalic]]></category>

		<guid isPermaLink="false">http://galder.zamarreno.com/?p=1090</guid>
		<description><![CDATA[<a href="http://galder.zamarreno.com/wp-content/uploads/2010/11/elmo.jpg"><img src="http://galder.zamarreno.com/wp-content/uploads/2010/11/elmo.jpg" alt="" title="elmo" width="120" height="90" class="alignleft size-full wp-image-1093" /></a>My latest DJ mix is out now including tracks from Tensnake, Vitalic, Ossie, Der Dritte Raum and even Randy Crawford! There is so much good new music out there that it's impossible for me not to get excited about it. I hope you can feel some of this energy when you listen to the mix. Read on to find out more [<a href="http://galder.zamarreno.com/?p=1090">...</a>]]]></description>
			<content:encoded><![CDATA[<p><a href="http://galder.zamarreno.com/wp-content/uploads/2010/11/elmo.jpg"><img src="http://galder.zamarreno.com/wp-content/uploads/2010/11/elmo.jpg" alt="" title="elmo" width="120" height="90" class="alignleft size-full wp-image-1093" /></a><span class="drop">O</span>ver the past few weeks a few people have been asking me whether Elmo was dead, whether I had stopped doing mixes. On the contrary! Since my last mix, I&#8217;ve been listening to over huge pile of CDs and songs that I bought earlier in the year, in preparation for a series of mixes to come out in the next few months.</p>
<p>The first of those mixes is called <em><strong>&#8216;What Makes Elmo Tic?&#8217;</strong></em> and It&#8217;s full of tracks that I simply can&#8217;t stop listening, in particular, Tensnake&#8217;s Battlehymn For Children remix, Vitalic&#8217;s Poison Lips and of course, Ossie&#8217;s (huge!!!) Holly Land. For those of you who are fans of the Rockstar&#8217;s classic PS3 <em>&#8216;Red Dead Redemption&#8217;</em> game, you might remember Jose Gonzalez&#8217;s <a href="http://www.youtube.com/watch?v=7IkvAb6THQY">Far Away</a> track. In this mix I&#8217;m featuring another legendary track from him called Crosses but with a more dancy touch ;)</p>
<p>I hope you enjoy the mix as much as I did putting it together :)</p>
<p>Tracklisting:</p>
<p>01. Annie &#8211; Intro<br />
02. Randy Crawford &#8211; Street Life<br />
03. Metro Area &#8211; Let&#8217;s Get&#8230;<br />
04. Neon Neon &#8211; Raquel<br />
05. The Outrunners &#8211; Runaway<br />
06. Lindstrøm &#038; Christabelle &#8211; Baby Can&#8217;t Stop (Aeroplane Remix)<br />
07. The Faint &#8211; Battlehymn For Children (Tensnake Remix)<br />
08. Paul Kalkbrenner &#8211; Atzepeng (Special Berlin Calling Edit)<br />
09. Der Dritte Raum &#8211; Swing Bop (Tanz Variante)<br />
10. Danny Howells &#8211; Right Off (Faze Action Remix)<br />
11. Feadz &#8211; The Bright Side<br />
12. Justin Martin &#8211; The Sad Piano (Jimpster Remix)<br />
13. Jose Gonzalez &#8211; Crosses (Suburban Remix)<br />
14. Masomenos feat. Curro Savoy &#8211; Ningeressa<br />
15. Paul Kalkbrenner &#8211; Castenets (Special Berlin Calling Edit)<br />
16. Swen Weber &#8211; First Stroke<br />
17. 2Raumwohnung &#8211; Wir Werden Sehen (Solomun Vox Remix)<br />
18. James Zabiela &#8211; No Other Way But Down<br />
19. Vitalic &#8211; Poison Lips<br />
20. Ossie &#8211; Holly Land</p>
<p>Links:</p>
<ul>
<li><a href="http://feeds.feedburner.com/ElmoAtTheControls" title="Get my latest mixes subscribing to this podcast">Subscribe to Podcast</a></li>
<li><a href="itpc://feeds.feedburner.com/ElmoAtTheControls" title="Subscribe directly via iTunes">Subscribe via iTunes</a></li>
<li><a href="http://galder.zamarreno.com/files/audio/galder-what-makes-elmo-tic-v3.mp3" title="Direct MP3 download of mix">Direct Download</a></li>
</ul>
<p>I&#8217;ve taken the opportunity as well to upload my previous mix, <em>&#8216;The Fat Beat Diet Mix&#8217;</em>, to my podcast so that you can listen it without any spoken interruptions. As always, you can get this mix by subscribing to the podcast, or you can find a direct download <a href="http://galder.zamarreno.com/files/audio/galder-the-fat-beat-diet-mix-v1.mp3" title="Direct MP3 download of mix">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://galder.zamarreno.com/?feed=rss2&#038;p=1090</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://galder.zamarreno.com/files/audio/galder-what-makes-elmo-tic-v3.mp3" length="117531233" type="audio/mpeg" />
<enclosure url="http://galder.zamarreno.com/files/audio/galder-the-fat-beat-diet-mix-v1.mp3" length="86502869" type="audio/mpeg" />
		</item>
		<item>
		<title>Generic marshalling with Protobufs (just)</title>
		<link>http://galder.zamarreno.com/?p=1014</link>
		<comments>http://galder.zamarreno.com/?p=1014#comments</comments>
		<pubDate>Thu, 28 Oct 2010 18:50:39 +0000</pubDate>
		<dc:creator>Galder Zamarreño</dc:creator>
				<category><![CDATA[JBoss]]></category>
		<category><![CDATA[infinispan]]></category>
		<category><![CDATA[protobufs]]></category>

		<guid isPermaLink="false">http://galder.zamarreno.com/?p=1014</guid>
		<description><![CDATA[<a href="http://galder.zamarreno.com/wp-content/uploads/2010/10/code_small.png"><img src="http://galder.zamarreno.com/wp-content/uploads/2010/10/code_small.png" alt="" title="code_small" width="161" height="40" class="alignleft size-full wp-image-1079" /></a>The post explains how to potentially use Google Protocol Buffers as a generic marshalling layer. The solution is less than ideal but nonetheless, it's an interesting exercise [<a href="http://galder.zamarreno.com/?p=1014">...</a>]]]></description>
			<content:encoded><![CDATA[<p><a href="http://galder.zamarreno.com/wp-content/uploads/2010/10/code_small.png"><img src="http://galder.zamarreno.com/wp-content/uploads/2010/10/code_small.png" alt="" title="code_small" width="161" height="40" class="alignleft size-full wp-image-1079" /></a><span class="drop">O</span>ver the past few days I&#8217;ve been playing around with <a href="http://code.google.com/p/protobuf/">Google Protocol Buffers (Protobufs)</a> and <a href="http://jboss.org/infinispan">Infinispan</a> in order to find out whether Protobufs could act as a generic marshalling layer. By generic, I mean marshalling/unmarshalling logic that would take an object built from a <em>protoc</em>-compiled class in one of the <a href="http://code.google.com/apis/protocolbuffers/docs/tutorials.html">supported languages (Java, C++ or Python)</a> and convert it into a byte[] on the marshalling side, and viceversa, convert a byte[] into an instance of the original object. If I managed to achieve this, Infinispan would potentially have a layer that could take a byte[] generated by a python client converted into a java class in a generic way.</p>
<p>Infinispan is different to many applications out there using Protobufs because it has no control over what the users put in Infinispan and so such generic marshalling layer cannot make any assumptions on the type when trying to convert it from byte[] to a Java/Python/C++ object. So, the traditional methods used by Protobufs for example in Java don&#8217;t really work for Infinispan. In other words, if you have a Person java class generated with protoc precompiler, you&#8217;d transform the the byte[] into an instance of Person doing something along the lines of:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1014code5'); return false;">View Code</a> JAVA</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p10145"><td class="code" id="p1014code5"><pre class="java" style="font-family:monospace;"> <span style="color: #000066; font-weight: bold;">byte</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> buffer <span style="color: #339933;">=</span> ...<span style="color: #339933;">;</span>
 Person me <span style="color: #339933;">=</span> Person.<span style="color: #006633;">parseFrom</span><span style="color: #009900;">&#40;</span>buffer<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>As I said earlier, such generic marshalling layer could not do that because the type is unknown. If you look at Java marshalling strategies such as <a href="http://download.oracle.com/docs/cd/E17409_01/javase/6/docs/platform/serialization/spec/serialTOC.html">Java Serialization</a> or <a href="http://www.jboss.org/jbossmarshalling">JBoss Marshalling</a>, they don&#8217;t have these problems. Out of the payload byte[], they can figure out the type, instantiate it and populate it accordingly. So, I wondered whether something similar could be built on top of Protobufs. If you take Java as example for the rest of the article, a naive approach would be to simply prepend the payload generated by Protobufs with a UTF-8 String containing the Java class name. The receveiving end could read this, locate the class, and then using reflection call the static parseFrom method. However, what sort of Java class name would a Python generic marshaller provide?</p>
<p>A potential solution for this is hinted in the <a href="http://code.google.com/apis/protocolbuffers/docs/techniques.html">Techniques section in the Protobufs documentation</a>. By generating a <a href="http://code.google.com/apis/protocolbuffers/docs/reference/java/com/google/protobuf/DescriptorProtos.FileDescriptorSet.html">FileDescriptorSet</a> out of your .proto files, at runtime you can build a mapping between the <a href="http://code.google.com/apis/protocolbuffers/docs/reference/java/com/google/protobuf/Descriptors.Descriptor.html#getFullName()">proto language descriptor names</a> and corresponding Java class names. The proto language descriptor name is something that&#8217;s generic irrespective of the target language, so if the marshaller could prepend this to the payload sent, the reading part could read it, figure out the corresponding Java class name and use the method explained earlier. Let&#8217;s look at this in greater detail taking the <a href="http://code.google.com/apis/protocolbuffers/docs/javatutorial.html">Protobufs Basic Java Tutorial</a> as starting point:</p>
<ol>
<li>First, let&#8217;s generate the FileDescriptorSet file:

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1014code6'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p10146"><td class="code" id="p1014code6"><pre class="bash" style="font-family:monospace;"> .<span style="color: #000000; font-weight: bold;">/</span>protoc <span style="color: #660033;">-I</span>=src<span style="color: #000000; font-weight: bold;">/</span>main<span style="color: #000000; font-weight: bold;">/</span>proto 
    --descriptor_set_out=src<span style="color: #000000; font-weight: bold;">/</span>main<span style="color: #000000; font-weight: bold;">/</span>desc<span style="color: #000000; font-weight: bold;">/</span>addressbook.desc
    src<span style="color: #000000; font-weight: bold;">/</span>main<span style="color: #000000; font-weight: bold;">/</span>proto<span style="color: #000000; font-weight: bold;">/</span>addressbook.proto</pre></td></tr></table></div>

</li>
<li>Next, on startup inspect the .desc file generated and map the Protobuf full descriptor name with the corresponding fully qualified Java class name:

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1014code7'); return false;">View Code</a> JAVA</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p10147"><td class="code" id="p1014code7"><pre class="java" style="font-family:monospace;"> <span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.google.protobuf.DescriptorProtos.FileDescriptorSet</span><span style="color: #339933;">;</span>
 <span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.google.protobuf.DescriptorProtos.FileDescriptorProto</span><span style="color: #339933;">;</span>
 <span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.google.protobuf.Descriptors.FileDescriptor</span><span style="color: #339933;">;</span>
 <span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.google.protobuf.Descriptors.Descriptor</span><span style="color: #339933;">;</span>
 <span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.HashMap</span><span style="color: #339933;">;</span>
 <span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.Map</span><span style="color: #339933;">;</span>
 <span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.io.FileInputStream</span><span style="color: #339933;">;</span>
&nbsp;
 Map<span style="color: #339933;">&lt;</span>String, String<span style="color: #339933;">&gt;</span> mapping <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> HashMap<span style="color: #339933;">&lt;</span>String, String<span style="color: #339933;">&gt;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
 FileDescriptorSet descriptorSet <span style="color: #339933;">=</span> FileDescriptorSet.<span style="color: #006633;">parseFrom</span><span style="color: #009900;">&#40;</span>
    <span style="color: #000000; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afileinputstream+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">FileInputStream</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;src/main/desc/addressbook.desc&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
 <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>FileDescriptorProto fdp<span style="color: #339933;">:</span> descriptorSet.<span style="color: #006633;">getFileList</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afiledescriptor+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">FileDescriptor</span></a> fd <span style="color: #339933;">=</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afiledescriptor+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">FileDescriptor</span></a>.<span style="color: #006633;">buildFrom</span><span style="color: #009900;">&#40;</span>fdp,
       <span style="color: #000000; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afiledescriptor+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">FileDescriptor</span></a><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>Descriptor descriptor <span style="color: #339933;">:</span> fd.<span style="color: #006633;">getMessageTypes</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a> className <span style="color: #339933;">=</span> fdp.<span style="color: #006633;">getOptions</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getJavaPackage</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot;.&quot;</span> 
         <span style="color: #339933;">+</span> fdp.<span style="color: #006633;">getOptions</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getJavaOuterClassname</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot;$&quot;</span> 
         <span style="color: #339933;">+</span> descriptor.<span style="color: #006633;">getName</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      mapping.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span>descriptor.<span style="color: #006633;">getFullName</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>, className<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

</li>
<li>Once the mapping is in place, it&#8217;s time to take an Protobuf object and try to generate a byte[]. To make sure the reading part can figure out what the Java class to use, the writing part needs to prepend the Protobuf generated byte[] with the Protobuf descriptor name:

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1014code8'); return false;">View Code</a> JAVA</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p10148"><td class="code" id="p1014code8"><pre class="java" style="font-family:monospace;"> <span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.acme.protobuf.AddressBookProtos</span><span style="color: #339933;">;</span>
 <span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.io.ByteArrayOutputStream</span><span style="color: #339933;">;</span>
&nbsp;
 AddressBookProtos.<span style="color: #006633;">Person</span>.<span style="color: #006633;">Builder</span> personBuilder <span style="color: #339933;">=</span> 
    AddressBookProtos.<span style="color: #006633;">Person</span>.<span style="color: #006633;">newBuilder</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 personBuilder.<span style="color: #006633;">setId</span><span style="color: #009900;">&#40;</span>1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 personBuilder.<span style="color: #006633;">setName</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Galder Zamarreño&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 personBuilder.<span style="color: #006633;">setEmail</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;galder@galder.com&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 AddressBookProtos.<span style="color: #006633;">Person</span> person <span style="color: #339933;">=</span> personBuilder.<span style="color: #006633;">build</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #000066; font-weight: bold;">byte</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> buffer <span style="color: #339933;">=</span> objectToByteBuffer<span style="color: #009900;">&#40;</span>person<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
 <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">byte</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> objectToByteBuffer<span style="color: #009900;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aobject+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Object</span></a> o<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">throws</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Exception</span></a> <span style="color: #009900;">&#123;</span>
    <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Abytearrayoutputstream+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">ByteArrayOutputStream</span></a> baos <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Abytearrayoutputstream+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">ByteArrayOutputStream</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    Message message <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>Message<span style="color: #009900;">&#41;</span> o<span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">byte</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> name <span style="color: #339933;">=</span> message.<span style="color: #006633;">getDescriptorForType</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getFullName</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
       .<span style="color: #006633;">getBytes</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;UTF-8&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    baos.<span style="color: #006633;">write</span><span style="color: #009900;">&#40;</span>name.<span style="color: #006633;">length</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// TODO: Length as int and not byte</span>
    <span style="color: #666666; font-style: italic;">// Write the full descriptor name, i.e. protobuf.Person</span>
    baos.<span style="color: #006633;">write</span><span style="color: #009900;">&#40;</span>name<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">byte</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> messageBytes <span style="color: #339933;">=</span> message.<span style="color: #006633;">toByteArray</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    baos.<span style="color: #006633;">write</span><span style="color: #009900;">&#40;</span>messageBytes.<span style="color: #006633;">length</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// TODO: Length as int and not byte</span>
    baos.<span style="color: #006633;">write</span><span style="color: #009900;">&#40;</span>messageBytes<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">return</span> baos.<span style="color: #006633;">toByteArray</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

</li>
<li>With the buffer written, it&#8217;s time to read it now:

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1014code9'); return false;">View Code</a> JAVA</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p10149"><td class="code" id="p1014code9"><pre class="java" style="font-family:monospace;"> <span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.acme.protobuf.AddressBookProtos</span><span style="color: #339933;">;</span>
 <span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.io.ByteArrayInputStream</span><span style="color: #339933;">;</span>
 <span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.lang.reflect.Method</span><span style="color: #339933;">;</span>
&nbsp;
 AddressBookProtos.<span style="color: #006633;">Person</span> person2 <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>AddressBookProtos.<span style="color: #006633;">Person</span><span style="color: #009900;">&#41;</span> 
    objectFromByteBuffer<span style="color: #009900;">&#40;</span>buffer<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
 <span style="color: #000000; font-weight: bold;">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aobject+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Object</span></a> objectFromByteBuffer<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">byte</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> buffer<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">throws</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Exception</span></a> <span style="color: #009900;">&#123;</span>
    <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Abytearrayinputstream+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">ByteArrayInputStream</span></a> bais <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Abytearrayinputstream+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">ByteArrayInputStream</span></a><span style="color: #009900;">&#40;</span>buffer<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">byte</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> name <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">byte</span><span style="color: #009900;">&#91;</span>bais.<span style="color: #006633;">read</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
    bais.<span style="color: #006633;">read</span><span style="color: #009900;">&#40;</span>name<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// TODO: Read fully??</span>
    <span style="color: #666666; font-style: italic;">// Get the class name associated with the descriptor name</span>
    <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a> className <span style="color: #339933;">=</span> mapping.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a><span style="color: #009900;">&#40;</span>name, <span style="color: #0000ff;">&quot;UTF-8&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">Class</span> clazz <span style="color: #339933;">=</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Athread+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Thread</span></a>.<span style="color: #006633;">currentThread</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getContextClassLoader</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
       .<span style="color: #006633;">loadClass</span><span style="color: #009900;">&#40;</span>className<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Amethod+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Method</span></a> parseFromMethod <span style="color: #339933;">=</span> clazz.<span style="color: #006633;">getMethod</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;parseFrom&quot;</span>, <span style="color: #000066; font-weight: bold;">byte</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span>.<span style="color: #000000; font-weight: bold;">class</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">byte</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> message <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">byte</span><span style="color: #009900;">&#91;</span>bais.<span style="color: #006633;">read</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
    bais.<span style="color: #006633;">read</span><span style="color: #009900;">&#40;</span>message<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// TODO: Read fully??</span>
    <span style="color: #000000; font-weight: bold;">return</span> parseFromMethod.<span style="color: #006633;">invoke</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">null</span>, message<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

</li>
<li>Finally, you can try to assert whether the object written and the object read are the same:

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1014code10'); return false;">View Code</a> JAVA</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p101410"><td class="code" id="p1014code10"><pre class="java" style="font-family:monospace;"> <span style="color: #000000; font-weight: bold;">assert</span> person.<span style="color: #006633;">equals</span><span style="color: #009900;">&#40;</span>person2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

</li>
</ol>
<p>That&#8217;s it! It&#8217;s worth noting that this approach has some disadvantages. It uses reflection to call the parsing method which is slower than calling the static parseFrom method directly on Person class. On top of that, users need to add an extra step of generating the FileDescriptorSet and it needs to be passed to the generic marshalling layer. Finally, adding the descriptor name to payload increases its size. </p>
<p>So, this approach is not flawless by any means. In fact, we will instead use a marshaller based in Apache Avro which suits our use case better (see <a href="http://community.jboss.org/docs/DOC-15774">&#8220;Portable Serialization For Hot Rod With Apache Avro&#8221; wiki</a> for more info on its use and you can find the <a href="http://anonsvn.jboss.org/repos/infinispan/trunk/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/marshall/ApacheAvroMarshaller.java">actual Apache Avro marshaller code in our SVN repository</a>). However, I thought it&#8217;d be of interest to anyone else out there who might be trying to do something similar or anyone who has done it in a different way. </p>
<p>Feedback appreciated :)</p>
]]></content:encoded>
			<wfw:commentRss>http://galder.zamarreno.com/?feed=rss2&#038;p=1014</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Infinispan&#8217;s been harvested, time to evangelise!</title>
		<link>http://galder.zamarreno.com/?p=1062</link>
		<comments>http://galder.zamarreno.com/?p=1062#comments</comments>
		<pubDate>Fri, 24 Sep 2010 16:55:01 +0000</pubDate>
		<dc:creator>Galder Zamarreño</dc:creator>
				<category><![CDATA[JBoss]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[infinispan]]></category>
		<category><![CDATA[jaoo]]></category>
		<category><![CDATA[judcon]]></category>
		<category><![CDATA[lausanne jug]]></category>

		<guid isPermaLink="false">http://galder.zamarreno.com/?p=1062</guid>
		<description><![CDATA[<a href="http://galder.zamarreno.com/wp-content/uploads/2010/09/Webbanner_speaking@_233px135px.jpg"><img src="http://galder.zamarreno.com/wp-content/uploads/2010/09/Webbanner_speaking@_233px135px.jpg" alt="" title="Webbanner_speaking@_233px135px" width="233" height="135" class="alignleft size-full wp-image-1068" /></a>After <a href="http://www.dzone.com/links/infinispan_410final_released.html">releasing Infinispan 4.1.0.FINAL</a>, it's time to go out and tell the world about it. I'll be at <a href="http://jaoo.dk/aarhus-2010/presentation/Beyond%20peer-to-peer%20data%20grids%20with%20Infinispan%20Servers">JAOO</a> (Aarhus), <a href="http://jboss.org/events/JUDCon/JUDCon2010Berlin/agenda.html">JUDCon</a> (Berlin) and <a href="http://www.jugevents.org/jugevents/event/29833">Lausanne JUG</a> over the next 3 weeks speaking about <a href="http://jboss.org/infinispan/">Infinispan</a>. So if you happen to be around, make sure you come and join us for some very interesting discussions!]]></description>
			<content:encoded><![CDATA[<p><a href="http://galder.zamarreno.com/wp-content/uploads/2010/09/Webbanner_speaking@_233px135px.jpg"><img src="http://galder.zamarreno.com/wp-content/uploads/2010/09/Webbanner_speaking@_233px135px.jpg" alt="" title="Webbanner_speaking@_233px135px" width="233" height="135" class="alignleft size-full wp-image-1068" /></a><span class="drop">H</span>ere @ Infinispan we&#8217;ve been extremely busy over the summer <a href="http://www.dzone.com/links/infinispan_410final_released.html">baking Infinispan 4.1.0.FINAL and after releasing it just over a couple of weeks ago</a>, it&#8217;s time to go out and tell the world about it! </p>
<p>As far as I&#8217;m concerned, I&#8217;ll be at the <a href="http://jaoo.dk/">JAOO</a> conference in Aarhus, Denmark, where I&#8217;ll be speaking about the <a href="http://jaoo.dk/aarhus-2010/presentation/Beyond%20peer-to-peer%20data%20grids%20with%20Infinispan%20Servers">importance of the brand new Infinispan Server modules</a>, emphasizing the motivation for developing them and showcasing some really exciting use cases.</p>
<p>Just a few days later I&#8217;ll be in <a href="http://jboss.org/events/JUDCon/JUDCon2010Berlin.html">Berlin for Europe&#8217;s round for hosting JBoss&#8217; JUDCon</a>, a developer conference by developers where I&#8217;ll be introducing a <a href="http://jboss.org/events/JUDCon/JUDCon2010Berlin/agenda.html#1100AM">brand-new, innovative data eviction algorithm included in Infinispan 4.1</a>, which increases eviction precision and reduces overhead. I will also be talking about <a href="http://jboss.org/events/JUDCon/JUDCon2010Berlin/agenda.html#1000AM">the Infinispan Server modules</a> in this conference. On top of that, Mircea Markus will be explaining <a href="http://jboss.org/events/JUDCon/JUDCon2010Berlin/agenda.html#100PM">how transactions are handled within Infinispan</a> and how to do <a href="http://jboss.org/events/JUDCon/JUDCon2010Berlin/agenda.html#100PM">continuous querying of Infinispan data grids</a>. In total, Infinispan has 4 talks @ JUDCon which is very exciting for us!!</p>
<p>To round things up, on the 14th of October I&#8217;ll be in Lausanne where I&#8217;ll be <a href="http://www.jugevents.org/jugevents/event/29833">introducing the audience of the local JUG to Infinispan</a>, talking about our motivations to create Infinispan, how different it is to JBoss Cache&#8230;etc.</p>
<p>So, if you happen to be around, make sure you come! It&#8217;ll be fun :) </p>
]]></content:encoded>
			<wfw:commentRss>http://galder.zamarreno.com/?feed=rss2&#038;p=1062</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Solving Drag &amp; Drop Issues With Live 7 and iTunes 9.2</title>
		<link>http://galder.zamarreno.com/?p=1044</link>
		<comments>http://galder.zamarreno.com/?p=1044#comments</comments>
		<pubDate>Thu, 29 Jul 2010 17:06:23 +0000</pubDate>
		<dc:creator>Galder Zamarreño</dc:creator>
				<category><![CDATA[DJ Mix Podcast]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[ableton]]></category>
		<category><![CDATA[ableton live]]></category>
		<category><![CDATA[itunes]]></category>

		<guid isPermaLink="false">http://galder.zamarreno.com/?p=1044</guid>
		<description><![CDATA[<a href="http://galder.zamarreno.com/wp-content/uploads/2010/07/itunes_ableton.png"><img src="http://galder.zamarreno.com/wp-content/uploads/2010/07/itunes_ableton.png" alt="" title="itunes_ableton" width="150" height="150" class="alignleft size-full wp-image-1050" /></a>If you're an <a href="http://www.ableton.com/">Ableton Live</a> and <a href="http://www.apple.com/itunes/">iTunes</a> user, you might be encountering some drag and drop issues. In particular, it seems like the <a href="http://discussions.info.apple.com/thread.jspa?threadID=2513166&#038;tstart=0">latest iTunes 9.2 series does not allow songs to be dragged and dropped into Ableton Live 7</a> or earlier. Upgrading to Ableton Live 8 or using a small tool called iToones can help to get around this issue. Read on to find out more [<a href="http://galder.zamarreno.com/?p=1044">...</a>]]]></description>
			<content:encoded><![CDATA[<p><a href="http://galder.zamarreno.com/wp-content/uploads/2010/07/itunes_ableton.png"><img src="http://galder.zamarreno.com/wp-content/uploads/2010/07/itunes_ableton.png" alt="" title="itunes_ableton" width="150" height="150" class="alignleft size-full wp-image-1050" /></a><span class="drop">I</span>f you&#8217;re an <a href="http://www.ableton.com/">Ableton Live</a> and <a href="http://www.apple.com/itunes/">iTunes</a> user, you might be encountering some drag and drop issues. In particular, it seems like the <a href="http://discussions.info.apple.com/thread.jspa?threadID=2513166&#038;tstart=0">latest iTunes 9.2 series does not allow songs to be dragged and dropped into Ableton Live 7</a> or earlier.</p>
<p>However, it seems like there&#8217;s no such issue with Ableton Live 8 as indicated <a href="http://forum.ableton.com/viewtopic.php?f=1&#038;t=144958&#038;sid=48e25fbaa2c07a7c7fd5bf13ec067dd1">in this forum entry</a>. In fact, I was suffering from the issues mentioned above and once I upgraded to Ableton Live 8, my problems dissapeared. If for whatever reason you&#8217;re unable to upgrade to Live 8, all is not lost! You can <a href="http://forum.ableton.com/viewtopic.php?f=1&#038;t=110119&#038;start=15.">install a small tool called iToones created by misal</a> that shows your iTunes library in a separate tool from which you can indeed drag and drop to Live 7. It&#8217;s a good workaround but in my opinion, nowhere near as good as dragging directly from iTunes where you might have extra information such as genre, rating&#8230;etc.</p>
<p>Now that I&#8217;ve solved my Ableton Live and iTunes issues, I can get on with my next mix :)</p>
]]></content:encoded>
			<wfw:commentRss>http://galder.zamarreno.com/?feed=rss2&#038;p=1044</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Infinispan 4.1.0.CR1 is now available!</title>
		<link>http://galder.zamarreno.com/?p=992</link>
		<comments>http://galder.zamarreno.com/?p=992#comments</comments>
		<pubDate>Fri, 09 Jul 2010 20:57:20 +0000</pubDate>
		<dc:creator>Galder Zamarreño</dc:creator>
				<category><![CDATA[JBoss]]></category>
		<category><![CDATA[hotrod]]></category>
		<category><![CDATA[infinispan]]></category>

		<guid isPermaLink="false">http://galder.zamarreno.com/?p=992</guid>
		<description><![CDATA[<a href="http://galder.zamarreno.com/wp-content/uploads/2010/07/infinispan_iconupdate_256x.png"><img src="http://galder.zamarreno.com/wp-content/uploads/2010/07/infinispan_iconupdate_256x.png" alt="" title="infinispan_iconupdate_256x" width="95" height="94" class="alignleft size-full wp-image-999" /></a>!Original post can be found in the <a href="http://infinispan.blogspot.com/2010/07/infinispan-410cr1-is-now-available.html">Infinispan Blog</a>. 
<hr/>

After very busy last few weeks with <a href="http://www.jboss.org/events/JUDCon.html">JUDCon</a> and <a href="http://www.redhat.com/promo/summit/2010/">JBoss World/Red Hat Summit</a>, we're proud to release Infinispan 4.1.0.CR1, the first candidate release of the Infinispan 4.1 series. Read on to find out more [<a href="http://galder.zamarreno.com/?p=992">...</a>]]]></description>
			<content:encoded><![CDATA[<p><a href="http://galder.zamarreno.com/?p=992"><a href="http://galder.zamarreno.com/wp-content/uploads/2010/07/infinispan_iconupdate_256x.png"><img src="http://galder.zamarreno.com/wp-content/uploads/2010/07/infinispan_iconupdate_256x.png" alt="" title="infinispan_iconupdate_256x" width="95" height="94" class="alignleft size-full wp-image-999" /></a><span class="drop">!</span>Original post can be found in the <a href="http://infinispan.blogspot.com/2010/07/infinispan-410cr1-is-now-available.html">Infinispan Blog</a>. </p>
<hr/>
<p>After very busy last few weeks with <a href="http://www.jboss.org/events/JUDCon.html">JUDCon</a> (checkout my Hot Rod presentation <a href="https://docs.google.com/viewer?url=https://www.jboss.org/dms/judcon/presentations/JUDCon2010_HotRodProtocolinInfinispan.pdf">here</a>) and <a href="http://www.redhat.com/promo/summit/2010/">JBoss World/Red Hat Summit</a> (check out my presentation with Manik Surtani <a href="https://docs.google.com/viewer?url=http://www.redhat.com/promo/summit/2010/presentations/jbossworld/developer-insights/thurs/msurtani-1130-infinispan/Using-Infinispan-for-High-Availability-Load-Balancing-Extreme-Performance.pdf">here</a> and the REST for Clouds one <a href="https://docs.google.com/viewer?url=http://www.redhat.com/promo/summit/2010/presentations/cloud/fri/gzamerreno-945-rest/RestfulDesignJBWSummit2010.pdf">here</a>), we&#8217;re proud to release Infinispan 4.1.0.CR1, the first candidate release of the Infinispan 4.1 series. The release is downloadable in the <a href="http://www.jboss.org/infinispan/downloads">usual place</a>. A lot of work has gone into this release primarily with the aim of stabilising new functionality wrote in previous beta/alpha versions. Here are some of the highlights included in this release:</p>
<ul>
<li>An fantastic demo showing how to run Infinispan in EC2. Check <a href="http://infinispan.blogspot.com/2010/05/infinispan-ec2-demo.html">Noel O&#8217;Connor&#8217;s blog last month</a> for more detailed information.</li>
<li>Enable Hot Rod servers to <a href="http://community.jboss.org/wiki/UsingHotRodServer">run behind a proxy</a> in environments such as EC2, and make TCP buffers and TCP no delay flag configurable for both the server and client.</li>
<li>Important performance improvements for Infinispan based Lucene directory and Hot Rod client and sever.</li>
<li>To avoid confusion, the single jar distribution has been removed. The two remaining distributions are: The bin distribution containing the Infinispan modules and documentation, and the all distribution which adds demos on top of that.</li>
</ul>
<p>A more detailed changelog can be found here.</p>
<p>Finally, if you&#8217;re a user of Infinispan 4.0 or 4.1, please make sure you download and try this release out so that any outstanding issues are fixed in time for the final release. Also, if you&#8217;re interested in finding out more about Infinispan&#8217;s architecture, don&#8217;t miss Manik&#8217;s latest article <a href="http://community.jboss.org/docs/DOC-15544">explaining Infinispan&#8217;s &#8216;nuts and bolts&#8217;</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://galder.zamarreno.com/?feed=rss2&#038;p=992</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Speaking at JUDCon and JBoss World / Red Hat Summit 2010</title>
		<link>http://galder.zamarreno.com/?p=975</link>
		<comments>http://galder.zamarreno.com/?p=975#comments</comments>
		<pubDate>Sun, 13 Jun 2010 22:41:08 +0000</pubDate>
		<dc:creator>Galder Zamarreño</dc:creator>
				<category><![CDATA[JBoss]]></category>
		<category><![CDATA[ec2]]></category>
		<category><![CDATA[hotrod]]></category>
		<category><![CDATA[infinispan]]></category>
		<category><![CDATA[jboss world]]></category>
		<category><![CDATA[judcon]]></category>
		<category><![CDATA[red hat summit]]></category>

		<guid isPermaLink="false">http://galder.zamarreno.com/?p=975</guid>
		<description><![CDATA[<a href="http://galder.zamarreno.com/wp-content/uploads/2010/06/Summit2010_OfficialSpeaker_summit_180x150_0310LL.png"><img src="http://galder.zamarreno.com/wp-content/uploads/2010/06/Summit2010_OfficialSpeaker_summit_180x150_0310LL.png" alt="" title="Summit2010_OfficialSpeaker_summit_180x150_0310LL" width="150" height="125" class="alignleft size-full wp-image-983" /></a>I'll be speaking at the first ever <a href="http://www.jboss.org/events/JUDCon.html">JBoss Users &#038; Developers Conference (JUDCon)</a> on the 21st of June and at the <a href="http://www.redhat.com/promo/summit/2010/">JBoss World / Red Hat Summit</a> (22nd - 25th of June), both being held in Boston (USA). This is a great opportunity to meet technology enthusiasts, discuss the latest developments by the JBoss and Red Hat teams, and find out how to apply them to solve real-life problems. Read on to find out more [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://galder.zamarreno.com/wp-content/uploads/2010/06/Summit2010_OfficialSpeaker_summit_180x150_0310LL.png"><img src="http://galder.zamarreno.com/wp-content/uploads/2010/06/Summit2010_OfficialSpeaker_summit_180x150_0310LL.png" alt="" title="Summit2010_OfficialSpeaker_summit_180x150_0310LL" width="150" height="125" class="alignleft size-full wp-image-983" /></a><span class="drop">I</span>&#8217;ll be speaking at the first ever <a href="http://www.jboss.org/events/JUDCon.html">JBoss Users &#038; Developers Conference (JUDCon)</a> on the 21st of June and at the <a href="http://www.redhat.com/promo/summit/2010/">JBoss World / Red Hat Summit</a> (22nd &#8211; 25th of June), both being held in Boston (USA). Here&#8217;s a brief summary of the talks that I&#8217;ll be giving:</p>
<p><strong><a href="http://www.jboss.org/events/JUDCon/schedule.html">The Hot Rod Protocol in Infinispan &#8211; JUDCon</a></strong><br />
On the 21st of June, I&#8217;ll be introducing the audience to Hot Rod, <a href="http://www.jboss.org/infinispan/">Infinispan</a>&#8216;s client-server protocol, explaining the motivation for creating it and comparing it with other existing protocols. I&#8217;ll also be talking about the potential use cases and will showcase a demo of a cluster of Hot Rod servers running on EC2.</p>
<p><strong><a href="http://www.redhat.com/promo/summit/2010/sessions/jboss.html#927134">Using Infinispan for High Availability, Load Balancing, &#038; Extreme Performance &#8211; JBoss World</a></strong><br />
In this talk which will be held on the 24th of June, myself and Manik Surtani will be talking about the most interesting uses of Infinispan that we&#8217;ve seen in the community. With the experience of the challenges faced and lessons learned, we&#8217;ll be providing the audience with some valuable tips for any Infinispan based projects.</p>
<p><strong><a href="http://www.redhat.com/promo/summit/2010/sessions/cloud.html#528191">Why RESTful Design for the Cloud is Best &#8211; Red Hat Summit (Cloud)</a></strong><br />
Finally, on the last day of the summit, I&#8217;ll be talking about the relationship between REST and Clouds, focusing on the principles that make REST a successful technology for cloud-like environments.</p>
<p>If you happen to be around in Boston during these dates and you&#8217;re interested in these topics, do not hesitate in joining us :) </p>
]]></content:encoded>
			<wfw:commentRss>http://galder.zamarreno.com/?feed=rss2&#038;p=975</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>F1 Grand Prix weekend at Monaco</title>
		<link>http://galder.zamarreno.com/?p=958</link>
		<comments>http://galder.zamarreno.com/?p=958#comments</comments>
		<pubDate>Mon, 07 Jun 2010 21:23:54 +0000</pubDate>
		<dc:creator>Galder Zamarreño</dc:creator>
				<category><![CDATA[Holidays]]></category>
		<category><![CDATA[f1]]></category>
		<category><![CDATA[formula1]]></category>
		<category><![CDATA[grandprix]]></category>
		<category><![CDATA[monaco]]></category>

		<guid isPermaLink="false">http://galder.zamarreno.com/?p=958</guid>
		<description><![CDATA[<a href="http://galder.zamarreno.com/wp-content/uploads/2010/06/circuit_image_10.png"><img src="http://galder.zamarreno.com/wp-content/uploads/2010/06/circuit_image_10.png" alt="" title="circuit_image_10" width="150" height="95" class="alignleft size-full wp-image-967" /></a>One of the trips I made this year has to be the one I did with Adrian, Mark and Stewart to Monaco to see the F1 Grand Prix in May. What a weekend that was!!! We managed to get some paddock tickets which meant that we had access to the pit lane, free food &#038; drinks…etc. An absolutely amazing weekend which can be summed up checking out the pictures and videos I took [...]]]></description>
			<content:encoded><![CDATA[<p><span class="drop">O</span>ne of the trips I made this year has to be the one I did with Adrian, Mark and Stewart to Monaco to see the F1 Grand Prix in May. What a weekend that was!!! We managed to get some paddock tickets which meant that we had access to the pit lane, free food &#038; drinks&#8230;etc. An absolutely amazing weekend which can be summed up checking out the pictures and videos I took. Enjoy :)</p>
<p>The pictures:</p>
<div class="shashin_album" style="width: 170px;"><a href="http://galder.zamarreno.com/?page_id=203&amp;shashin_album_key=69"><img src="http://lh3.ggpht.com/_bh0KadZ_ND4/TA1aJn0ornE/AAAAAAAAEiE/05PM7qHqADY/s160-c/F1MonacoGrandPrix.jpg" alt="F1 Monaco Grand Prix" width="160" height="160"></a><span class="shashin_album_title"><a href="http://galder.zamarreno.com/?page_id=203&amp;shashin_album_key=69">F1 Monaco Grand Prix</a></span><span class="shashin_album_count">207 pictures</span><span class="shashin_album_date">May 14, 2010</span></div>
<p>The videos:<br/><br />
<object width="500" height="400"><param name="movie" value="http://www.youtube.com/e/NQ9OGnuk2Js"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/e/NQ9OGnuk2Js" type="application/x-shockwave-flash" width="500" height="400" allowscriptaccess="always" allowfullscreen="true"></embed></object><br/><br />
<object width="500" height="400"><param name="movie" value="http://www.youtube.com/e/9PMJ6bJtnys"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/e/9PMJ6bJtnys" type="application/x-shockwave-flash" width="500" height="400" allowscriptaccess="always" allowfullscreen="true"></embed></object><br/><br />
<object width="500" height="400"><param name="movie" value="http://www.youtube.com/e/V44x_Cxzyq8"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/e/V44x_Cxzyq8" type="application/x-shockwave-flash" width="500" height="400" allowscriptaccess="always" allowfullscreen="true"></embed></object><br/><br />
<object width="500" height="400"><param name="movie" value="http://www.youtube.com/e/Zx5QQ5E9VYI"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/e/Zx5QQ5E9VYI" type="application/x-shockwave-flash" width="500" height="400" allowscriptaccess="always" allowfullscreen="true"></embed></object><br/><br />
<object width="500" height="400"><param name="movie" value="http://www.youtube.com/e/59tU-ZRPkaM"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/e/59tU-ZRPkaM" type="application/x-shockwave-flash" width="500" height="400" allowscriptaccess="always" allowfullscreen="true"></embed></object><br/><br />
<object width="500" height="400"><param name="movie" value="http://www.youtube.com/e/pWfnvbmcl2M"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/e/pWfnvbmcl2M" type="application/x-shockwave-flash" width="500" height="400" allowscriptaccess="always" allowfullscreen="true"></embed></object><br/><br />
<object width="500" height="400"><param name="movie" value="http://www.youtube.com/e/eTZX2et0a8k"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/e/eTZX2et0a8k" type="application/x-shockwave-flash" width="500" height="400" allowscriptaccess="always" allowfullscreen="true"></embed></object><br/><br />
<object width="500" height="400"><param name="movie" value="http://www.youtube.com/e/7qp16bs1wgU"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/e/7qp16bs1wgU" type="application/x-shockwave-flash" width="500" height="400" allowscriptaccess="always" allowfullscreen="true"></embed></object><br/><br />
<object width="500" height="400"><param name="movie" value="http://www.youtube.com/e/3R1gySuokpM"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/e/3R1gySuokpM" type="application/x-shockwave-flash" width="500" height="400" allowscriptaccess="always" allowfullscreen="true"></embed></object><br/><br />
<object width="500" height="400"><param name="movie" value="http://www.youtube.com/e/VR-W3fOtqbc"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/e/VR-W3fOtqbc" type="application/x-shockwave-flash" width="500" height="400" allowscriptaccess="always" allowfullscreen="true"></embed></object><br/><br />
<object width="500" height="400"><param name="movie" value="http://www.youtube.com/e/6Nwbv6L6OxU"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/e/6Nwbv6L6OxU" type="application/x-shockwave-flash" width="500" height="400" allowscriptaccess="always" allowfullscreen="true"></embed></object><br/><br />
<object width="500" height="400"><param name="movie" value="http://www.youtube.com/e/lRf0cKLgTQY"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/e/lRf0cKLgTQY" type="application/x-shockwave-flash" width="500" height="400" allowscriptaccess="always" allowfullscreen="true"></embed></object><br/><br />
<object width="500" height="400"><param name="movie" value="http://www.youtube.com/e/YeExmpP1E7E"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/e/YeExmpP1E7E" type="application/x-shockwave-flash" width="500" height="400" allowscriptaccess="always" allowfullscreen="true"></embed></object><br/><br />
<object width="500" height="400"><param name="movie" value="http://www.youtube.com/e/RyGGWCKvUuI"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/e/RyGGWCKvUuI" type="application/x-shockwave-flash" width="500" height="400" allowscriptaccess="always" allowfullscreen="true"></embed></object><br/></p>
]]></content:encoded>
			<wfw:commentRss>http://galder.zamarreno.com/?feed=rss2&#038;p=958</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! --><style type="text/css">#sp, #sp a {font-size: 9px;color: #302020;border-bottom: none;clear: both;}</style><div id='sp' style='text-align:right;'></div>
