<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>New RIFERS blogs entries from Geert Bevin</title>
		<link>http://rifers.org/blogs</link>
		<description>The feeds of the Rifers community blogs</description>
		<language>en</language>
		<copyright>Copyright of the content contained is attributed to the original authors</copyright>
		<pubDate>Sat, 17 May 2008 14:40:30 +0200</pubDate>
		<managingEditor>Rifers Blogs: https://rifers.org/blogs</managingEditor>
		
			<item>
				<title>ScreenFlow : Finally a Mac screen capturing app that kicks ass</title>
				<link>http://rifers.org/blogs/gbevin/2008/2/29/screenflow_finally_a_mac_screen</link>
				<description>&lt;p&gt;I&apos;ve been recording all my screen casts with SnapzPro and then re-recording them with Camtasia Studio on Windows to be able to edit them. This is to say the least, extremely tedious.&lt;/p&gt;
&lt;p&gt;Yesterday I stumbled into &lt;a href=&quot;http://www.varasoftware.com/products/screenflow/&quot;&gt;ScreenFlow&lt;/a&gt;, an all-in one screen recording and video editing application with very cool features like call outs, video actions, key press display, etc. You can even capture audio from multiple sources and record your iSight at the same time as doing your screen cast. Afterwards you can combine them by manipulating the individual tracks and for example get a cool narrator call out that sits in a corner of the screen cast.&lt;/p&gt;
&lt;p&gt;I also like their approach towards the recording operation itself. You don&apos;t have to constraint yourself by deciding which area of the screen has to be recorded beforehand. With ScreenFlow you just record everything and crop it in the editor afterwards. They are using a custom algorithm that only records changes that appeared on the screen, so even my 2560x1600 resolution was recorded together with audio and the iSight video, without any sign of a hick-up. I love it!&lt;/p&gt;
&lt;p&gt;It might be a tad on the expensive side ($99), but considering the functionality that you get, I don&apos;t think it&apos;s exaggerated.&lt;/p&gt;</description>
				<pubDate>Fri, 29 Feb 2008 08:24:39 +0100</pubDate>
				<author>Geert Bevin</author>
				<guid>http://rifers.org/blogs/gbevin/2008/2/29/screenflow_finally_a_mac_screen</guid>
			</item>
		
			<item>
				<title>Terracotta lightning talk at Fosdem 2008</title>
				<link>http://rifers.org/blogs/gbevin/2008/2/15/terracotta_lightning_talk</link>
				<description>The yearly open-source Fosdem conference takes place again in Brussels on February the 23rd and the 24th.&lt;br /&gt;
&lt;br /&gt;
I&apos;m giving a 15 minute lightning talk about Terracotta on Saturday the 23rd at 15h40. Given the available time, I will not be able to say much and will just try to wet everybody&apos;s appetite. I&apos;ll stick around for a while afterwards to answer question and give demos and such.&lt;br /&gt;
&lt;br /&gt;
You can find the details here:&lt;br /&gt;
&lt;a href=&quot;http://fosdem.org/2008/schedule/events/456&quot; target=&quot;_blank&quot;&gt;http://fosdem.org/2008/schedule/events/456&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Looking forward to the conference and catching up with everyone in real life &lt;img src=&quot;http://rifers.org/images/blog/emoticon-nose.gif&quot; width=&quot;16&quot; height=&quot;16&quot; alt=&quot;:-)&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
</description>
				<pubDate>Fri, 15 Feb 2008 11:09:33 +0100</pubDate>
				<author>Geert Bevin</author>
				<guid>http://rifers.org/blogs/gbevin/2008/2/15/terracotta_lightning_talk</guid>
			</item>
		
			<item>
				<title>Laszlo in Action hits the shelves</title>
				<link>http://rifers.org/blogs/gbevin/2008/2/5/laszlo_in_action</link>
				<description>&lt;p&gt;&lt;a href=&quot;http://www.manning.com/klein/&quot;&gt;&lt;img src=&quot;http://www.manning.com/klein/klein_cover150.jpg&quot; alt=&quot;cover&quot; align=&quot;left&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;After many months of editing and fine-tuning, Manning finally published &lt;a href=&quot;http://www.manning.com/klein/&quot;&gt;Laszlo in Action&lt;/a&gt;, the first comprehensive guide towards OpenLaszlo besides the reference documentation.&lt;/p&gt;
&lt;p&gt;I received a final copy through DHL yesterday. Norman Klein and Max Carlson really did a great job explaining the technology behind this vast RIA framework, and it has been a pleasure to review several chapters of the earlier drafts.&lt;/p&gt;
&lt;p&gt;I&apos;m sure this book will make it much easier for people to develop with OpenLaszlo as it clarifies some of the lesser known intricacies.&lt;/p&gt;</description>
				<pubDate>Tue, 05 Feb 2008 10:43:47 +0100</pubDate>
				<author>Geert Bevin</author>
				<guid>http://rifers.org/blogs/gbevin/2008/2/5/laszlo_in_action</guid>
			</item>
		
			<item>
				<title>Programming while lying on my back (lumbar disc hernia)</title>
				<link>http://rifers.org/blogs/gbevin/2008/2/4/programming_while_lying_on_back</link>
				<description>&lt;p&gt;After several months of constant pain in my back, I finally decided to get scans made of my spine. Turns out I have a double lumbar disc hernia (L4-L5 left and L5-S1 right). Luckily they are minor, so there not even talk of needing an operation.&lt;/p&gt;
&lt;p&gt;For the hernias to go away, I need to rest. I&apos;m supposed to lie flat on my back all the time with my legs folded in an angle. This should reduce the tension in my back and allow it to cure by itself. This position makes it however very difficult - almost impossible - to program while holding a laptop. I searched the web for appropriate laptop stands and stumbled into &lt;a href=&quot;http://lappyvator.cyberknights.com.au/&quot;&gt;&apos;The Lappyvator&apos;&lt;/a&gt;, a build-it-yourself project that is easy to execute. The only downside seems to me that your arms are in a vertical position and don&apos;t rest on anything at all, which is bound to be very tiring. Luckily, I use the &lt;a href=&quot;http://www.alphagrips.com/&quot;&gt;AlphaGrip&lt;/a&gt; as my keyboard, so I don&apos;t need to touch the laptop, eliminating this problem.&lt;/p&gt;
&lt;p&gt;Now I&apos;m able to work regular hours and totally rest my back. I haven&apos;t tried it yet, but it also seems like an awesome approach to watch movies or series in bed with the laptop.&lt;/p&gt;
&lt;p&gt;Below are the pictures of my own lappyvator. I&apos;ve built it so that I can easily remove the horizontal feet and take it with my in a suitcase when I travel: at last comfortable computing in hotel rooms!&lt;/p&gt;
&lt;p&gt;&lt;img width=&quot;640&quot; height=&quot;480&quot; src=&quot;http://gbevin.com/gallery2/main.php?g2_view=core.DownloadItem&amp;amp;g2_itemId=5518&amp;amp;g2_serialNumber=1&quot; alt=&quot;laptop stand bed 1&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img width=&quot;640&quot; height=&quot;480&quot; src=&quot;http://gbevin.com/gallery2/main.php?g2_view=core.DownloadItem&amp;amp;g2_itemId=5520&amp;amp;g2_serialNumber=1&quot; alt=&quot;laptop stand bed 2&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img width=&quot;640&quot; height=&quot;480&quot; src=&quot;http://gbevin.com/gallery2/main.php?g2_view=core.DownloadItem&amp;amp;g2_itemId=5522&amp;amp;g2_serialNumber=1&quot; alt=&quot;laptop stand bed 3&quot; /&gt;&lt;/p&gt;
</description>
				<pubDate>Mon, 04 Feb 2008 23:03:43 +0100</pubDate>
				<author>Geert Bevin</author>
				<guid>http://rifers.org/blogs/gbevin/2008/2/4/programming_while_lying_on_back</guid>
			</item>
		
			<item>
				<title>Closing several JDBC statements cleanly</title>
				<link>http://rifers.org/blogs/gbevin/2008/1/30/closing_several_jdbc_statements</link>
				<description>&lt;p&gt;It&apos;s been a while since I wrote some raw JDBC code. I didn&apos;t remember that it was so tedious to manually close a series of &lt;code&gt;PreparedStatement&lt;/code&gt; objects and make sure that any exception was properly handled and reported.&lt;/p&gt;
&lt;p&gt;Note that the &lt;a href=&quot;http://docs.google.com/View?docid=dffxznxr_1nmsqkz&quot;&gt;ARM blocks&lt;/a&gt; or &lt;a href=&quot;http://javac.info/&quot;&gt;BGGA closures&lt;/a&gt; proposals don&apos;t make this easier since this cleanup should be done after the prepared statements have been used for a while in various other methods, it doesn&apos;t automatically have to be done at the end of a lexical scope.&lt;/p&gt;
&lt;p&gt;This is what I came up with.&lt;/p&gt;
&lt;p&gt;Of course, you could write an alternative implementation that creates some kind of repository for the prepared statements in a map and then provide a method that closes them all by going over the entries of the map while preserving the exceptions in a similar manner. Any other suggestions or comments for this to be done better?&lt;/p&gt;
&lt;div class=&quot;paste&quot;&gt;
					
						&lt;div&gt;&lt;code&gt;&lt;!--  : generated by JHighlight v1.0 (http://jhighlight.dev.java.net) --&gt;
&lt;span class=&quot;java_keyword&quot;&gt;private&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_type&quot;&gt;PreparedStatement&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;psStmt1&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_keyword&quot;&gt;private&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_type&quot;&gt;PreparedStatement&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;psStmt2&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_keyword&quot;&gt;private&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_type&quot;&gt;PreparedStatement&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;psStmt3&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&amp;nbsp;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_keyword&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_type&quot;&gt;void&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;cleanup&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;()&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_keyword&quot;&gt;throws&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_type&quot;&gt;SQLException&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_type&quot;&gt;SQLException&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;exception&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_literal&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;psStmt1&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_operator&quot;&gt;!=&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_literal&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_keyword&quot;&gt;try&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;psStmt1&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;();&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_keyword&quot;&gt;catch&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;java_type&quot;&gt;SQLException&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;e&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exception&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;e&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_keyword&quot;&gt;finally&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;psStmt1&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_literal&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&amp;nbsp;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;psStmt2&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_operator&quot;&gt;!=&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_literal&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_keyword&quot;&gt;try&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;psStmt2&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;();&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_keyword&quot;&gt;catch&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;java_type&quot;&gt;SQLException&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;e&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;exception&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_operator&quot;&gt;!=&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_literal&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;e&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;setNextException&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;exception&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exception&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;e&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_keyword&quot;&gt;finally&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;psStmt2&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_literal&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&amp;nbsp;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;psStmt3&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_operator&quot;&gt;!=&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_literal&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_keyword&quot;&gt;try&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;psStmt3&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;();&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_keyword&quot;&gt;catch&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;java_type&quot;&gt;SQLException&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;e&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;exception&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_operator&quot;&gt;!=&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_literal&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;e&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;setNextException&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;exception&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exception&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;e&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_keyword&quot;&gt;finally&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;psStmt3&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_literal&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&amp;nbsp;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;exception&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_operator&quot;&gt;!=&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_literal&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_keyword&quot;&gt;throw&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;exception&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_separator&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
					
					
					
				&lt;/div&gt;</description>
				<pubDate>Wed, 30 Jan 2008 18:11:23 +0100</pubDate>
				<author>Geert Bevin</author>
				<guid>http://rifers.org/blogs/gbevin/2008/1/30/closing_several_jdbc_statements</guid>
			</item>
		
			<item>
				<title>Custom constraints and validation in RIFE</title>
				<link>http://rifers.org/blogs/gbevin/2008/1/29/custom_constraints_validation</link>
				<description>&lt;p&gt;Joshua Hansen wrote a nice example of how to create custom meta data constraints and display dedicated validation error messages with RIFE. He also shows how easy it is to make RIFE/Crud display your validation errors for beans that use your custom constraints.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://rifers.org/wiki/display/RIFE/Custom+constraints+and+validation+cheatsheet&quot;&gt;Read the article in the RIFE wiki.&lt;/a&gt;&lt;/p&gt;</description>
				<pubDate>Tue, 29 Jan 2008 17:52:51 +0100</pubDate>
				<author>Geert Bevin</author>
				<guid>http://rifers.org/blogs/gbevin/2008/1/29/custom_constraints_validation</guid>
			</item>
		
			<item>
				<title>Java Champions interviews at JavaPolis 2007</title>
				<link>http://rifers.org/blogs/gbevin/2008/1/4/jc_javapolis_interviews</link>
				<description>&lt;p&gt;At JavaPolis 2007, Aaron Houston the coordinator of the &lt;a href=&quot;https://java-champions.dev.java.net/&quot;&gt;Sun Java Champions program&lt;/a&gt;, recorded a whole collection of short interviews with the Java Champions that were present at the conference (2-8 mins).&lt;/p&gt;
&lt;p&gt;If you&apos;re wondering what the Java Champions are up to, or even who or what they are, this is a easy and quick way to find out.&lt;/p&gt;
&lt;p&gt;The interviews can be found on the Java Champions &lt;a href=&quot;https://java-champions.dev.java.net/&quot;&gt;homepage&lt;/a&gt; and will eventually move to the &lt;a href=&quot;https://java-champions.dev.java.net/content/JCLibrary.html&quot;&gt;library section&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can listen to my interview directly here (6 min 12 MB):&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://java-champions.dev.java.net/mp3/JP07-geert-bevin.mp3&quot;&gt;https://java-champions.dev.java.net/mp3/JP07-geert-bevin.mp3&lt;/a&gt;&lt;/p&gt;</description>
				<pubDate>Fri, 04 Jan 2008 19:20:25 +0100</pubDate>
				<author>Geert Bevin</author>
				<guid>http://rifers.org/blogs/gbevin/2008/1/4/jc_javapolis_interviews</guid>
			</item>
		
			<item>
				<title>Back in the saddle, happy New-Year!</title>
				<link>http://rifers.org/blogs/gbevin/2008/1/4/back_in_the_saddle</link>
				<description>&lt;p&gt;Some people might have been wondering why it has been so quiet on the RIFE front and also why I haven&apos;t been blogging more regularly for almost half a year.&lt;/p&gt;
&lt;p&gt;First of all, I started working at &lt;a href=&quot;http://terracotta.org&quot;&gt;Terracotta&lt;/a&gt; in April 2007 and it has taken me a few months to get comfortable with the code-base, the concepts and the architecture. The technology is truly amazing and my colleagues are extremely smart and friendly. I&apos;ve been learning a lot about concurrency and clustering and made a couple of friends that are already very close to my heart.&lt;/p&gt;
&lt;p&gt;Then, in fall last year, it seems that fate decided to show us that life can&apos;t always be smooth sailing. I&apos;m not complaining, we have been surprisingly fortunate for many years but this series of unfortunate events followed up on each-other so quickly that for the first time in history I truly took an effort to write sincere New-Year wishes to my friends and family. Wishing someone &apos;good health&apos; and &apos;joy&apos; got a whole new meaning.&lt;/p&gt;
&lt;p&gt;First, I had a motorcycle accident and my girlfriend did so too a couple of weeks later. We weren&apos;t significantly hurt, but it does shake you up for a while.&lt;/p&gt;
&lt;p&gt;After that, our youngest daughter almost lost her eye after hitting her head against the table corner. She has nothing permanent except for a small scar in the corner of her left eye.&lt;/p&gt;
&lt;p&gt;A few weeks later, we were all evacuated out of our house with carbon-monoxide poisoning. Our oldest daughter escaped death by a couple of minutes and we had to get intense oxygen treatment to reduce the CO levels in our blood. People, really, &lt;a href=&quot;http://en.wikipedia.org/wiki/Carbon_monoxide_detector&quot;&gt;get CO detectors&lt;/a&gt;! CO poisoning is NOT something that only happens to others! You can die from it in a matter of minutes! I installed the detectors now and had the source of the CO leak fixed.&lt;/p&gt;
&lt;p&gt;Just after that, my father was found on the floor of his kitchen by the police. They forcibly entered his house at my request, since he hadn&apos;t been seen by anyone for several days. He&apos;s got permanent brain damage due to many years of alcohol abuse and will most certainly live the rest of his life in an institution, not remembering 99% of his life and constantly confusing dreams and reality.&lt;/p&gt;
&lt;p&gt;Finally, I lost my dog after she escaped from the enclosed field at the back of our house. After calling all animals shelters in the area, alerting the police and putting up many posters, someone finally contacted us saying that they had found her.&lt;/p&gt;
&lt;p&gt;All in all, after looking back, I actually consider ourselves lucky. All of these events could have had severe consequences, but finally the outcomes were all much more positive than what they could have been.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Happy New-Year to everyone! I wish you a soothing 2008 with lots of joy and pleasant surprises, and also an excellent health for you and your loved ones!&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;I&apos;m getting back in the saddle. I will be working on RIFE again and will be blogging more frequently.&lt;/p&gt;
</description>
				<pubDate>Fri, 04 Jan 2008 16:02:47 +0100</pubDate>
				<author>Geert Bevin</author>
				<guid>http://rifers.org/blogs/gbevin/2008/1/4/back_in_the_saddle</guid>
			</item>
		
			<item>
				<title>RIFE BOF tonight at QCon conference in San-Francisco</title>
				<link>http://rifers.org/blogs/gbevin/2007/11/8/rife_bof_tonight_at_qcon</link>
				<description>In case you want to learn more about RIFE, ask questions, chat a bit about what you&apos;ve done, share experiences, etc., feel free to come the the BOF tonight that I&apos;m organizing during the QCon conference in San Francisco. You can find all the details here:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://qcon.infoq.com/sanfrancisco/conference/&quot; target=&quot;_blank&quot;&gt;http://qcon.infoq.com/sanfrancisco/conference/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
The address is:&lt;br /&gt;
Westin San Francisco Market Street&lt;br /&gt;
50 Third Street&lt;br /&gt;
San Francisco&lt;br /&gt;
California 94103&lt;br /&gt;
&lt;br /&gt;
The BOF will be from 8:30pm - 9:30pm in the &apos;City&apos; room.&lt;br /&gt;
&lt;br /&gt;
We are also organizing a Terracotta BOF right before it, so if you&apos;re interested in that, you can come from 7:30pm - 8:30pm to the &apos;Stanford&apos; room.&lt;br /&gt;
&lt;br /&gt;
See you there!</description>
				<pubDate>Thu, 08 Nov 2007 22:40:24 +0100</pubDate>
				<author>Geert Bevin</author>
				<guid>http://rifers.org/blogs/gbevin/2007/11/8/rife_bof_tonight_at_qcon</guid>
			</item>
		
			<item>
				<title>Please give us JDK 1.6 on MacOSX soon (13949712720901ForOSX)</title>
				<link>http://rifers.org/blogs/gbevin/2007/11/8/please_give_us_jdk_1_6_on_macos</link>
				<description>&lt;p&gt;This blog entry is just to speak up about the ongoing &lt;a href=&quot;http://blogs.sun.com/bblfish/entry/vote_for_java6_on_leopard&quot;&gt;blogosphere effort&lt;/a&gt; to show the need for Java 1.6 on MacOSX.&lt;/p&gt;
&lt;p&gt;If you are a Java developer that uses MacOSX, please create a blog post with this string:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;13949712720901ForOSX&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Also, &lt;a href=&quot;http://www.apple.com/feedback/macosx.html/&quot;&gt;file a bug&lt;/a&gt; with Apple and explain why you think that Java 1.6 support is important.&lt;/p&gt;
&lt;p&gt;I personally am still confident that Apple will release it in the coming months since they need Java support for their server products. Not keeping up with this would significantly cut their customer-base there. The fact that there have been several pre-releases is also encouraging. It&apos;s a shame though that none of those are available anymore.&lt;/p&gt;
&lt;p&gt;It would be very frustrating to have to move to another operating system just due to the lack of Java 1.6 on MacOSX. None of the other operating systems give me as much joy and productivity both with work and personal use of the computer.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Apple, please don&apos;t disappoint the large Java community that adopted MacOSX ... and release JDK 1.6 soon.&lt;/i&gt;&lt;/p&gt;</description>
				<pubDate>Thu, 08 Nov 2007 00:03:58 +0100</pubDate>
				<author>Geert Bevin</author>
				<guid>http://rifers.org/blogs/gbevin/2007/11/8/please_give_us_jdk_1_6_on_macos</guid>
			</item>
		
			<item>
				<title>Profiling Terracotta clients with YourKit is dead easy</title>
				<link>http://rifers.org/blogs/gbevin/2007/10/25/profiling_terracotta_yourkit</link>
				<description>&lt;p&gt;While tracking down some performance characteristics of the ConcurrentHashMap class with &lt;a href=&quot;http://terracotta.org&quot;&gt;Terracotta&lt;/a&gt;, I decided to run it through the &lt;a href=&quot;http://yourkit.com&quot;&gt;YourKit&lt;/a&gt; profiler.&lt;/p&gt;
&lt;p&gt;I remember that a while ago, someone on the Terracotta mailing list was having difficulties profiling client applications since we instrument the JDK classes through a bootjar. I thus expected to run into problems with YourKit. To my surprise I didn&apos;t experience a single one. Following the instructions on the YourKit website to &lt;a href=&quot;http://yourkit.com/docs/70/help/getting_started/running_with_profiler/agent.jsp&quot;&gt;manually enable profiling&lt;/a&gt;, did exactly what was expected and I was thus able to get all the information I wanted.&lt;/p&gt;
&lt;p&gt;As an example, this is similar to the command line that I executed:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;java &lt;span style=&quot;background-color: #ffffbb&quot;&gt;-agentlib:yjpagent=sampling,onexit=snapshot&lt;/span&gt;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-cp /path/to/project/classes&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-Dtc.install-root=$TC_INSTALL_DIR&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-Xbootclasspath/p:$TC_INSTALL_DIR/lib/dso-boot/dso-boot-hotspot_linux_160_02.jar&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-Dtc.config=tc-config.xml&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;com.MyMainClass&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Just thought that this might be helpful to know &lt;img src=&quot;http://rifers.org/images/blog/emoticon-wink.gif&quot; width=&quot;16&quot; height=&quot;16&quot; alt=&quot;;)&quot; /&gt;&lt;/p&gt;</description>
				<pubDate>Thu, 25 Oct 2007 12:17:50 +0200</pubDate>
				<author>Geert Bevin</author>
				<guid>http://rifers.org/blogs/gbevin/2007/10/25/profiling_terracotta_yourkit</guid>
			</item>
		
			<item>
				<title>Speaking at NFJS Europe : &quot;Cutting-edge productivity with RIFE and Web Continuations&quot;</title>
				<link>http://rifers.org/blogs/gbevin/2007/8/9/nfjs_europe_rife</link>
				<description>&lt;script language=&quot;JavaScript&quot; type=&quot;text/javascript&quot;&gt;
&lt;!--
document.write(&apos;&lt;div style=&quot;float: right; width: 125px; margin-left: 10px; margin-bottom: 10px;&quot;&gt;&lt;object classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0&quot; width=&quot;125&quot; height=&quot;125&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://nfjs-exchange.com/images/banners/125x125_nfjs-rif660_offer_wii.swf&quot; /&gt;&lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt;&lt;embed src=&quot;http://nfjs-exchange.com/images/banners/125x125_nfjs-rif660_offer_wii.swf&quot; quality=&quot;high&quot; pluginspage=&quot;http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;125&quot; height=&quot;125&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&apos;);
//--&gt;
&lt;/script&gt;
&lt;p&gt;I&apos;m speaking at NFJS in London at the end of this month about &lt;a href=&quot;http://rifers.org&quot;&gt;RIFE&lt;/a&gt; and &lt;a href=&quot;http://terracotta.org&quot;&gt;Terracotta&lt;/a&gt;. You can find the abstract of my session quoted below. The &lt;a href=&quot;http://www.nofluffjuststuff.com/show_agenda.jsp?showId=93&quot;&gt;schedule looks very interesting&lt;/a&gt; and I&apos;m excited that NFJS is finally taking place in Europe too.&lt;/p&gt;
&lt;p&gt;If you&apos;re interested in going, you might want to click on the banner to the right or to use the promotion code &lt;b&gt;NFJS-RIF660&lt;/b&gt;. This will give you a free Nintendo Wii with your registration (woohooo, I love my Wii!).&lt;/p&gt;
&lt;p&gt;See you at NFJS Europe.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;I also have &lt;a href=&quot;http://rifers.org/blogs/gbevin/2007/8/9/nfjs_europe_terracotta&quot;&gt;another session about Terracotta&lt;/a&gt; in the real-world.&lt;/i&gt;&lt;/p&gt;
&lt;blockquote style=&quot;border: 1px gray solid; text-color: #333333; padding: 1em;&quot;&gt;
&lt;div style=&quot;margin: 0 0.5em;&quot;&gt;
&lt;p&gt;&lt;b&gt;Cutting-edge productivity with RIFE and Web Continuations&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;RIFE is a full-stack, open-source Java web application framework, offering fast results with the promise of maintainability and code clarity. This session will review the novel ideas in Java web application development that RIFE has introduced to the development community.&lt;/p&gt;

&lt;p&gt;Through a real-world demonstration of the development process with RIFE, learn how RIFE makes developing easier with features such as: instant reloads and centralized declarations, meta programming through constraints and meta data merging, run-time POJO-driven CRUD generation, bi-directional logic-less templates, automatic context-aware components, and the integration of a content management framework. &lt;/p&gt;

&lt;p&gt;The second part will focus on state management, which has always been a complex and tricky part of web application development. Native Java web continuations simplify this and automatically allow you to create a one-to-one conversation between users and a web application. State preservation and flow control no longer need to be handled manually, bringing you back to the simplicity of single user console applications. Remember &apos;scanf()&apos;? &lt;/p&gt;

&lt;p&gt;Continuations will be introduced from general principles, followed by practical examples that explain how they benefit web application development and their frequent usage patterns. Finally, automatic and non-intrusive fail-over and scalability will be demonstrated through the integration with Terracotta.&lt;/p&gt;
&lt;/div&gt;
&lt;/blockquote&gt;</description>
				<pubDate>Thu, 09 Aug 2007 20:46:53 +0200</pubDate>
				<author>Geert Bevin</author>
				<guid>http://rifers.org/blogs/gbevin/2007/8/9/nfjs_europe_rife</guid>
			</item>
		
			<item>
				<title>Speaking at NFJS Europe : &quot;Exploring Terracotta - JVM clustering in the real world&quot;</title>
				<link>http://rifers.org/blogs/gbevin/2007/8/9/nfjs_europe_terracotta</link>
				<description>&lt;script language=&quot;JavaScript&quot; type=&quot;text/javascript&quot;&gt;
&lt;!--
document.write(&apos;&lt;div style=&quot;float: right; width: 125px; margin-left: 10px; margin-bottom: 10px;&quot;&gt;&lt;object classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0&quot; width=&quot;125&quot; height=&quot;125&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://nfjs-exchange.com/images/banners/125x125_nfjs-rif660_offer_wii.swf&quot; /&gt;&lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt;&lt;embed src=&quot;http://nfjs-exchange.com/images/banners/125x125_nfjs-rif660_offer_wii.swf&quot; quality=&quot;high&quot; pluginspage=&quot;http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;125&quot; height=&quot;125&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&apos;);
//--&gt;
&lt;/script&gt;
&lt;p&gt;I&apos;m speaking at NFJS in London at the end of this month about &lt;a href=&quot;http://terracotta.org&quot;&gt;Terracotta&lt;/a&gt;. You can find the abstract of my session quoted below. The &lt;a href=&quot;http://www.nofluffjuststuff.com/show_agenda.jsp?showId=93&quot;&gt;schedule looks very interesting&lt;/a&gt; and I&apos;m excited that NFJS is finally taking place in Europe too.&lt;/p&gt;
&lt;p&gt;If you&apos;re interested in going, you might want to click on the banner to the right or to use the promotion code &lt;b&gt;NFJS-RIF660&lt;/b&gt;. This will give you a free Nintendo Wii with your registration (woohooo, I love my Wii!).&lt;/p&gt;
&lt;p&gt;See you at NFJS Europe.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;I also have &lt;a href=&quot;http://rifers.org/blogs/gbevin/2007/8/9/nfjs_europe_rife&quot;&gt;another session continuations, RIFE and Terracotta&lt;/a&gt;.&lt;/i&gt;&lt;/p&gt;
&lt;blockquote style=&quot;border: 1px gray solid; text-color: #333333; padding: 1em;&quot;&gt;
&lt;div style=&quot;margin: 0 0.5em;&quot;&gt;
&lt;p&gt;&lt;b&gt;Exploring Terracotta : JVM clustering in the real world&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Terracotta provides open-source clustering for Java and removes the burden from the developer. Instead of having to design and code against a specific API, the characteristics of the Java Memory Model (wait, lock, notify) are automatically translated towards a multiple node architecture. This clustering solution guarantees proper handling of concurrency, fail-over, distributed method invocation and efficient state propagation by simply instrumenting your Java bytecode and providing you with Network Attached Memory. This is however so generic that it&apos;s sometimes difficult realize which use-cases can benefit from it. &lt;/p&gt;

&lt;p&gt;This presentation introduces the basic principles of Terracotta and explains how to configure and integrate it into your application. Afterwards, we&apos;ll go through a collection of real-world examples that all benefit from JVM-level clustering. These include: serialization-less HTTP session clustering, fine-grained distributed caches, workload distribution through master-worker, shared state and events between server and desktop tiers, clustered Spring and other OSS frameworks ... and more. &lt;/p&gt;

&lt;p&gt;Garbage collection made the JVM responsible for memory management. Take the plunge and experience how Terracotta does the same for clustering.&lt;/p&gt;
&lt;/div&gt;
&lt;/blockquote&gt;</description>
				<pubDate>Thu, 09 Aug 2007 20:39:33 +0200</pubDate>
				<author>Geert Bevin</author>
				<guid>http://rifers.org/blogs/gbevin/2007/8/9/nfjs_europe_terracotta</guid>
			</item>
		
			<item>
				<title>Artima article : Distributed Web Continuations with RIFE and Terracotta</title>
				<link>http://rifers.org/blogs/gbevin/2007/8/8/distributed_continuations_terrac</link>
				<description>&lt;p&gt;&lt;a href=&quot;http://www.artima.com/lejava/articles/distributed_continuations.html&quot;&gt;In this article&lt;/a&gt;, Jonas Bon&amp;eacute;r and me discuss how the RIFE Web framework helps you become productive and efficient in building conversational Web applications. Productivity with RIFE is in large part due to RIFE&apos;s unique approach to Web development&amp;mdash;its use of continuations for conversational logic, and complete integration of meta-programming to minimize boilerplate code.&lt;/p&gt;

&lt;p&gt;We also introduce you to Terracotta and it&apos;s JVM-level clustering technology, and show you how Terracotta and RIFE can work together to create an application stack that allows you to scale out and ensure high-availability for your applications, but without sacrificing simplicity and productivity. This means working with POJOs, and minimal boilerplate and infrastructure code.&lt;/p&gt;

&lt;p&gt;You can read it at &lt;a href=&quot;http://www.artima.com/lejava/articles/distributed_continuations.html&quot;&gt;Artima&lt;/a&gt;.&lt;/p&gt;</description>
				<pubDate>Wed, 08 Aug 2007 20:23:11 +0200</pubDate>
				<author>Geert Bevin</author>
				<guid>http://rifers.org/blogs/gbevin/2007/8/8/distributed_continuations_terrac</guid>
			</item>
		
			<item>
				<title>Clustered Drupal through Quercus, Terracotta and Ehcache</title>
				<link>http://rifers.org/blogs/gbevin/2007/8/1/clustered_drupal_terracotta</link>
				<description>&lt;p&gt;Caucho created an impressive Java implementation of PHP that runs in Resin, called &lt;a href=&quot;http://www.caucho.com/resin-3.0/quercus/&quot;&gt;Quercus&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I regularly hear people complain about the scalability of Drupal on PHP and after looking at the layer cache implementation, it seems that they use the database as a cache. This is understandable since short of using &lt;a href=&quot;http://www.danga.com/memcached/&quot;&gt;memcached&lt;/a&gt;, PHP doesn&apos;t support preserving object state across requests. However, tunneling everything through the database is bound to create a bottleneck.&lt;/p&gt;
&lt;p&gt;Quercus has a neat &lt;a href=&quot;http://www.caucho.com/resin-3.0/quercus/tutorial/module/index.xtp&quot;&gt;module system&lt;/a&gt; that allows the creation of PHP functions in Java. So I wondered if I could use &lt;a href=&quot;http://www.terracotta.org&quot;&gt;Terracotta&lt;/a&gt; together with &lt;a href=&quot;http://ehcache.sourceforge.net/&quot;&gt;Ehcache&lt;/a&gt; to replace Drupal&apos;s caching system with a more scalable solution.&lt;/p&gt;
&lt;p&gt;After some tinkering and experimenting I got it to work. I did have to resort to some ugly hacks, since Terracotta doesn&apos;t officially support Resin yet (they inject their own system classloader which doesn&apos;t play well with how we do stuff). I also didn&apos;t do any performance tests, nor went through all the Drupal features to check if everything still worked.&lt;/p&gt;
&lt;p&gt;I think this prototype is very interesting though, since it gives a glimpse of what is possible nowadays in the Java world when creating &apos;technology mash-ups&apos; (for the lack up a better term). Who would have thought a year ago that you would be able to improve the scalability of a PHP CMS by using JVM-level clustering, makes my mind spin if I think about it.&lt;/p&gt;
&lt;p&gt;If you want to try this out for yourself, I posted &lt;a href=&quot;https://wiki.terracotta.org/confluence/display/wiki/Drupal&quot;&gt;detailed instructions on our wiki&lt;/a&gt;. I&apos;m interested in knowing what your findings are and if you have any improvements to what I did, please reach out and let me know.&lt;/p&gt;</description>
				<pubDate>Wed, 01 Aug 2007 14:54:12 +0200</pubDate>
				<author>Geert Bevin</author>
				<guid>http://rifers.org/blogs/gbevin/2007/8/1/clustered_drupal_terracotta</guid>
			</item>
		
		
	</channel>
</rss>