<?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>Gerbrand on ICT &#187; Reviews</title>
	<atom:link href="http://www.gerbrand-ict.nl/category/reviews/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.gerbrand-ict.nl</link>
	<description>Weblog on JEE and software-engineering</description>
	<lastBuildDate>Tue, 18 Oct 2011 14:10:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Serializable Exception in Java</title>
		<link>http://www.gerbrand-ict.nl/2011/07/serializable-exception-in-java/</link>
		<comments>http://www.gerbrand-ict.nl/2011/07/serializable-exception-in-java/#comments</comments>
		<pubDate>Sat, 23 Jul 2011 20:07:21 +0000</pubDate>
		<dc:creator>gerbrand</dc:creator>
				<category><![CDATA[Reviews]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[wicket]]></category>

		<guid isPermaLink="false">http://www.gerbrand-ict.nl/?p=563</guid>
		<description><![CDATA[When  you use Wicket as webfrontend framework to build your application, sooner or later you&#8217;ll encounter the NotSerializableException. This is because Wicket will want to serialize any state you have into a HTTPSession. In Wicket, the first three pages are usually in memory too, so you could ignore the exception for a while, but of [...]]]></description>
			<content:encoded><![CDATA[<p>When  you use Wicket as webfrontend framework to build your application, sooner or later you&#8217;ll encounter the NotSerializableException. This is because Wicket will want to serialize any state you have into a HTTPSession. In Wicket, the first three pages are usually in memory too, so you could ignore the exception for a while, but of course this will fail immediately in case use want to use your webapplication in a clustered configuration. Not to mention you should never ignore Exceptions anyway.</p>
<p>The problem in solving such a Serializable exception is finding the field that is not Serializable. The stacktrace of java doesn&#8217;t help much. Fortunatelly, after some searching I&#8217;ve found the <a href="http://blog.crazybob.org/2007/02/debugging-serialization.html">solution, in the comment of blog posting</a>: add the option <em>-Dsun.io.serialization.extendedDebugInfo=true</em> to the JVM startup parameters.<br />
Now the stacktrace gives you the exact fieldname or expression that is causing the problems, as you can see in the example below:</p>
<pre>2011-07-23 21:44:50,362 ERROR [http-8080-1] [] org.apache.wicket.util.lang.Objects - Error serializing object class nl.gerbrandict.forum.AdminPage [object=[Page class = nl.gerbrandict.forum.AdminPage, id = 2, version = 0]]
java.io.NotSerializableException: org.springframework.beans.factory.support.DefaultListableBeanFactory
- field (class "org.springframework.orm.hibernate3.HibernateTransactionManager", name: "beanFactory", type: "interface org.springframework.beans.factory.BeanFactory")
- object (class "org.springframework.orm.hibernate3.HibernateTransactionManager", org.springframework.orm.hibernate3.HibernateTransactionManager@10fd8ce3)
- custom writeObject data (class "org.springframework.transaction.interceptor.TransactionInterceptor")
- object (class "org.springframework.transaction.interceptor.TransactionInterceptor", org.springframework.transaction.interceptor.TransactionInterceptor@2c96cb51)
- field (class "org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor", name: "transactionInterceptor", type: "class org.springframework.transaction.interceptor.TransactionInterceptor")
..
        - field (class "nl.gerbrandict.forum.AdminModel", name: "person", type: "class nl.gerbrandict.forum.Person")</pre>
<p>(note: not publishing the entire stack trace and using some sample dummy field/classnames).<br />
Although I haven&#8217;t tried, enabling this option in production is most likely a bad idea, because Serialization is already a pretty inefficient process without any debugging information enabled. In my case, I was using a <a href="http://wicket.apache.org/apidocs/1.4/org/apache/wicket/model/PropertyModel.html">PropertyModel</a> somewhere, using non model as target object.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gerbrand-ict.nl/2011/07/serializable-exception-in-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Slow right click on Windows</title>
		<link>http://www.gerbrand-ict.nl/2011/06/slow-right-click-on-windows/</link>
		<comments>http://www.gerbrand-ict.nl/2011/06/slow-right-click-on-windows/#comments</comments>
		<pubDate>Sun, 19 Jun 2011 07:12:44 +0000</pubDate>
		<dc:creator>gerbrand</dc:creator>
				<category><![CDATA[Reviews]]></category>
		<category><![CDATA[utils]]></category>

		<guid isPermaLink="false">http://www.gerbrand-ict.nl/?p=544</guid>
		<description><![CDATA[Besides by Mac laptop I have a Windows desktop at home. Windows 7 is all in all quite a nice OS. However, after using Windows for a while, Windows seems to start degrading. Of course one solution is to reinstall Windows, but that&#8217;s not exactly a clean solution. I wanted to know the source why [...]]]></description>
			<content:encoded><![CDATA[<p>Besides by Mac laptop I have a Windows desktop at home. Windows 7 is all in all quite a nice OS. However, after using Windows for a while, Windows seems to start degrading. Of course one solution is to reinstall Windows, but that&#8217;s not exactly a clean solution. I wanted to know the source why Windows seems so slow. Better investigation seems the only problem is the File Explorer, especially when using the context menu/right clicking on a file.<br />
This led me to think some third shell extension for the explorer might be the cause.<br />
After some google&#8217;ing I found this nice article: <a href="http://windowsxp.mvps.org/slowrightclick.htm">slow right click</a>. In the article a tool is listed: <a href="http://www.nirsoft.net/utils/shexview.html">ShellExView</a>. Using this tool you can disable any shell extension that&#8217;s hooked in the explorer. I disabled all software not coming from Microsoft, and my Windows starting working smoothly again! Of course any overlay icons from for example <a href="http://tortoisesvn.tigris.org/">TortoiseSVN</a> don&#8217;t work anymore, but that&#8217;s the whole idea of  these shell extensions. Now I just have to shell extensions one by one to find out what&#8217;s the actual cause of the slowness, but that&#8217;s better then reinstalling windows.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gerbrand-ict.nl/2011/06/slow-right-click-on-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaFX 2.0</title>
		<link>http://www.gerbrand-ict.nl/2011/02/javafx-2-0-by-roger-brinkley/</link>
		<comments>http://www.gerbrand-ict.nl/2011/02/javafx-2-0-by-roger-brinkley/#comments</comments>
		<pubDate>Fri, 18 Feb 2011 22:01:27 +0000</pubDate>
		<dc:creator>gerbrand</dc:creator>
				<category><![CDATA[Reviews]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[ria]]></category>

		<guid isPermaLink="false">http://www.gerbrand-ict.nl/?p=495</guid>
		<description><![CDATA[Yesterday I attended a NLJug meeting at Oracle at De Meern on JavaFX, called &#8216;JavaFX 2.0 EA&#8216;. The meeting was presented by Roger Brinkley, who&#8217;s a called &#8216;Community leader&#8217;, of Mobile and Embedded. That he was formally part of Sun wasn&#8217;t hard to see based on his clothing and style. Roger gave an overview of [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday I attended a <a href="http://www.nljug.org/">NLJug </a>meeting at Oracle at De Meern on <a href="http://javafx.com/">JavaFX</a>, called &#8216;<a href="http://www.nljug.org/pages/events/content/university_20110217/">JavaFX 2.0 EA</a>&#8216;. The meeting was presented by Roger Brinkley, who&#8217;s a called &#8216;Community leader&#8217;, of Mobile and Embedded. That he was formally part of Sun wasn&#8217;t hard to see based on his clothing and style.</p>
<p>Roger gave an overview of the new JavaFX 2.0, the<a href="http://javafx.com/roadmap/"> road-map</a> and the planned features. The software seems to be developed in an agile manner: the dead line is fixed, as is policy at Oracle (not meeting a dead line means exit for the responsible executive), but the final set of features is not.<br />
The preview is available now for a limited audience, in May the first public beta will be released and in November the final will be available.</p>
<p><span id="more-495"></span>The most important news I heard:</p>
<ul>
<li>JavaFX 2.0 will be a <strong>library </strong>(jfx.jar), rather than a separate scripting language <em>JavaFX</em>. The language works in the language Java of course, but you can use the language <a href="http://www.scala-lang.org/">Scala</a>, <a href="http://jruby.org/">JRuby</a>, <a href="http://www.jython.org/">Jython</a> or other languages available on the JVM. JavaFX script is end-of-life. Fortunately, the syntax of the library calls is quite similar, and there&#8217;s a program to translate JavaFX script into equivalent Javacode. Curiously, the translator, <em>FX Translator</em>, is written in <a href="http://www.scala-lang.org/">Scala</a>.<br />
<em><strong>Update 2011-06-15</strong>: I only heard about the fx translator at the here mentioned presentation. I could find little references to the translator: a back-reference to <a href="http://forums.oracle.com/forums/thread.jspa?threadID=2232556&amp;tstart=45">this postin</a>g (sigh) and the fxtranslator mentioned shortly in this posting on <a href="http://drdobbs.com/blogs/java/229400781">DrDobbs</a>.</em><br />
<em>If you want to use the FXtranslator, you&#8217;ll have to contact Oracle for now. I guess Oracle will release the automatic translation tool in some time too.</em></li>
<li>The <strong>Swing</strong>-controls can be used from JavaFX 2.0. The &#8216;traditional Swing&#8217; is now in maintenance mode, Oracle won&#8217;t create an new features for the original Swing library. Meaning, if you want to develop Swing applications, or more generally, desktop applications in Java now, you can best get the beta or coming GA of JavaFX.</li>
<li>JavaFX 2.0 will be available on <strong>neither the Mobiles nor Televisions</strong>! Oracle has accepted (Sun&#8217;s) loss, and will only focus on the desktop for the time being.<br />
JavaFX seems practical on tablet-devices. However, since most tablet devices are enlarged mobiles (running a mobile os) ratter than flattened laptops (running a full desktop os), you can&#8217;t use JavaFX on any of those devices for the time being.</li>
<li>The JavaFX is supported on the <strong>MS-Windows </strong>platform only for the coming time, (but) it will run on Mac, Linux or other platforms unsupported. This means, you might miss the hardware acceleration when not using Windows. Mind you: Roger was using a Mac while doing his presentation and demonstration the code-samples so the MS-Windows-only support might not look as dramatic as it seems at first glance.</li>
<li>Of course JavaFX runs on the JVM 6 or higher. If all goes well, JavaFX will be part of JDK 8. Before that JavaFX can be downloaded as a plugin before from <a href="http://www.java.com">java.com</a>, which will be not to painful for users, especially if they already have some version of the Java-plugin installed.</li>
</ul>
<p>The JavaFX SDK contains a set of sample application called &#8216;Ensemble&#8217;. Roger presented a few impressive programs, and showed the source code. The audience, including the Oracle employee hosting the event was very tech oriented so everyone was eager to see the code of all the nice examples.</p>
<p>Furthermore, Roger frequently mentioned <a href="http://blogs.sun.com/javaspotlight">Podcasts</a>. I have yet to listen to them, but maybe if I have some time left. Should find a way to broadcast audio while doing the dishes.<br />
All in all a nice event. Oracle may turn JavaFX in something that might be practical and usable on a limited number of platforms, ratter then trying to take over the world (or more specifically taking on Android, Flex, Apple IOS).</p>
<p>As you might notice, I&#8217;ve got no code examples or screen-shots. I hope to get access to the beta release of JavaFX 2.0, I&#8217;m quite interested in trying out all those nifty things, and expect some nice blog postings on JavaFX soon!</p>
<p>Update 2011-06-01: The public beta of JavaFX is out! I&#8217;ve published on <a href="http://blog.xebia.com/2011/05/javafx-2-0-beta/">JavaFX on the Xebia-blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gerbrand-ict.nl/2011/02/javafx-2-0-by-roger-brinkley/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Motorola milestone: frustating as hell</title>
		<link>http://www.gerbrand-ict.nl/2010/07/motorola-milestone-frustating-as-hell/</link>
		<comments>http://www.gerbrand-ict.nl/2010/07/motorola-milestone-frustating-as-hell/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 12:35:40 +0000</pubDate>
		<dc:creator>gerbrand</dc:creator>
				<category><![CDATA[Reviews]]></category>
		<category><![CDATA[motorola]]></category>

		<guid isPermaLink="false">http://www.gerbrand-ict.nl/?p=435</guid>
		<description><![CDATA[Since a few weeks I have a Motorola Milestone, the European version of the Motorola Droid. For a small computer/handheld works very well. I can browse, use email, install application, write documents. As a phone the device fails. There&#8217;s a lot of talk about the IPhone 4 supposedly having bad reception. Well, the Motorola Milestone [...]]]></description>
			<content:encoded><![CDATA[<p>Since a few weeks I have a Motorola Milestone, the European version of the Motorola Droid. For a small computer/handheld works very well. I can browse, use email, install application, write documents. As a phone the device fails.<br />
<a href="http://www.gerbrand-ict.nl/wp-content/uploads/2010/07/Motorola-Milestone-2.jpg"><img class="alignnone size-medium wp-image-438" title="Motorola-Milestone" src="http://www.gerbrand-ict.nl/wp-content/uploads/2010/07/Motorola-Milestone-2-300x250.jpg" alt="" width="300" height="250" /></a></p>
<p>There&#8217;s a lot of talk about the IPhone 4 supposedly having bad reception. Well, the Motorola Milestone has a problem too. When calling, I very often incidentally put the telephone to mute, which causes the other party not to hear me anymore. This is caused by the mute button in the middle of the touch screen. I often press is that area with my hear while calling, as I have the habit of putting my telephone to my ear&#8230; Well apparently few people in Motorola though of that.</p>
<p><span id="more-435"></span> The Motorola Milestone has a proximity sensor that supposed to turn of the screen while calling. However, for me, that doesn&#8217;t work. I searched for a solution on the <a href="https://supportforums.motorola.com/search.jspa?resultTypes=&amp;dateRange=lastyear&amp;peopleEnabled=true&amp;q=proximity+sensor+mute&amp;containerType=&amp;container=&amp;containerName=&amp;username=&amp;rankBy=30&amp;numResults=15">Motorola forum</a>. There a quite a few threads about this issue, like <a href="https://supportforums.motorola.com/message/62983#62983">this</a>, <a href="https://supportforums.motorola.com/thread/17080?start=105&amp;tstart=0">this one</a>, this on <a href="https://supportforums.motorola.com/message/98288#98288">long hair</a> and this one saying it&#8217;s <a href="https://supportforums.motorola.com/message/81811#81811">a hardware problem</a>.<br />
Many answers are infuriating rather than useful. Most of them have tips on how to properly hold the phone (in your right hand, below ear lob, under your hair). Arg, that&#8217;s not what I want to hear. Apart from the fact that doesn&#8217;t work, I don&#8217;t want a whole instruction who to hold my phone when I&#8217;m using a mobile phone for over 10 years.<br />
Some idiots even say they have the problem, but still love the Droid.</p>
<p>At least some sort of <a href="https://supportforums.motorola.com/people/Matt">official person</a> who sorts of answers to the problem. People at Motorola are working on an update.  That&#8217;s not of much help. Finally, in <a href="https://supportforums.motorola.com/message/131040#131040">this thread</a> I found a more useful answer. There&#8217;s an application called Screen Suite, which allows you to lock the screen while calling. It only costs $1.99. Bought it already, I have the phone to long to get my money back. I just installed the application, Screen Suite seems to work.</p>
<p>Well bottom line, <a href="http://www.apple.com/hotnews/openiphoneletter/">Apple </a>isn&#8217;t the only one with a problematic telephone. And avoid the Motorola Droid and Milestone, at least when you also want to make phonecalls with your smartphone.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gerbrand-ict.nl/2010/07/motorola-milestone-frustating-as-hell/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Docs and MS-Office</title>
		<link>http://www.gerbrand-ict.nl/2010/02/google-docs-and-ms-office/</link>
		<comments>http://www.gerbrand-ict.nl/2010/02/google-docs-and-ms-office/#comments</comments>
		<pubDate>Sat, 27 Feb 2010 17:21:55 +0000</pubDate>
		<dc:creator>gerbrand</dc:creator>
				<category><![CDATA[Reviews]]></category>
		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://www.gerbrand-ict.nl/?p=405</guid>
		<description><![CDATA[Google Docs is a great tool store and edit documents online. MS-Office is a pretty good tool as well. Wouldn&#8217;t it be nice if you could open documents stored at Google Doc using MS-Office. Of course MS-Office has something similar, MS Office Live, but that&#8217;s still beta and I&#8217;m more used to Google Docs. However, [...]]]></description>
			<content:encoded><![CDATA[<p>Google Docs is a great tool store and edit documents online. MS-Office is a pretty good tool as well. Wouldn&#8217;t it be nice if you could open documents stored at Google Doc using MS-Office. Of course MS-Office has something similar, MS Office Live, but that&#8217;s still beta and I&#8217;m more used to Google Docs. However, since recently, Google Docs integration is possible, using <a href="http://offisync.com/">OffiSync</a>!<br />
OfficeSync is a plugin for MS-Office. After installation, you&#8217;ll get an extra menu.</p>
<p><a href="http://www.gerbrand-ict.nl/wp-content/uploads/2010/02/MSOffice-with-OffiSync.png"><img class="alignnone size-medium wp-image-406" title="MSOffice with OffiSync" src="http://www.gerbrand-ict.nl/wp-content/uploads/2010/02/MSOffice-with-OffiSync-300x150.png" alt="" width="404" height="202" /></a></p>
<p>Using the menu, you can open and save documents at Google Docs, in a similar fashion when you&#8217;d use MS Office Live or Sharepoint. OffiSync is free to use, but when you use the free tool, any MS Office feature that isn&#8217;t supported by Google doc is lost when you save you&#8217;re files at Google Docs. The paid version doesn&#8217;t have this disadvantage.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gerbrand-ict.nl/2010/02/google-docs-and-ms-office/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cloud storage, review of Zumodrive</title>
		<link>http://www.gerbrand-ict.nl/2009/12/cloud-storage/</link>
		<comments>http://www.gerbrand-ict.nl/2009/12/cloud-storage/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 11:49:25 +0000</pubDate>
		<dc:creator>gerbrand</dc:creator>
				<category><![CDATA[Reviews]]></category>
		<category><![CDATA[cloud]]></category>

		<guid isPermaLink="false">http://www.gerbrand-ict.nl/?p=373</guid>
		<description><![CDATA[A while ago a reviewed a few online storage solutions. I especially liked Zumodrive, second to Dropbox. Now I found a nice article that reviews Zumodrive and compares it to Sugarsync and Dropbox: A Review of ZumoDrive Service]]></description>
			<content:encoded><![CDATA[<p>A while ago a reviewed <a href="/2009/04/internet-storage/">a few online storage solutions</a>. I especially liked Zumodrive, second to Dropbox. Now I found a nice article that reviews Zumodrive and compares it to Sugarsync and Dropbox: <a href="http://online.wsj.com/article/SB10001424052748704107104574572002476586722.html#mod=todays_us_section_b">A Review of ZumoDrive Service</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.gerbrand-ict.nl/2009/12/cloud-storage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JFall report</title>
		<link>http://www.gerbrand-ict.nl/2009/11/jfall-report/</link>
		<comments>http://www.gerbrand-ict.nl/2009/11/jfall-report/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 21:43:22 +0000</pubDate>
		<dc:creator>gerbrand</dc:creator>
				<category><![CDATA[Reviews]]></category>
		<category><![CDATA[concurrency]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jfall]]></category>

		<guid isPermaLink="false">http://www.gerbrand-ict.nl/?p=368</guid>
		<description><![CDATA[Ik heb een verslag geschreven over JFall 2009 voor Whitehorses, het bedrijf waarvoor ik werk. Hier is de officiele introductie Op 11 november 2009 werd JFall 2009, een van de twee congressen die jaarlijks door de NLJug worden georganiseerd, gehouden. Naast de inhoudelijke sessies, is een van de mooiste aspecten van JFall (en JSpring) het [...]]]></description>
			<content:encoded><![CDATA[<p>Ik heb een verslag geschreven over JFall 2009 voor <a href="http://www.whitehorses.nl">Whitehorses</a>, het bedrijf waarvoor ik werk.</p>
<p>Hier is de officiele introductie</p>
<blockquote><p>
Op 11 november 2009 werd JFall 2009, een van de twee congressen die jaarlijks door de NLJug worden georganiseerd, gehouden. Naast de inhoudelijke sessies, is een van de mooiste aspecten van JFall (en JSpring) het ontmoeten van andere Java programmeurs. In dit Whitebook vind je een verslag van dit congres en van een aantal sessies, o.a. over Java SE 7 en de nieuwe Google ontwikkelingen. Lees het volledige artikel »
</p></blockquote>
<p>en hier is de whitebook: <a href="http://www.whitehorses.nl/whitebooks/2009/jfall-2009-een-verslag">JFall 2009, een verslag </a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.gerbrand-ict.nl/2009/11/jfall-report/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Clean code</title>
		<link>http://www.gerbrand-ict.nl/2009/07/clean-code/</link>
		<comments>http://www.gerbrand-ict.nl/2009/07/clean-code/#comments</comments>
		<pubDate>Sat, 04 Jul 2009 22:20:45 +0000</pubDate>
		<dc:creator>gerbrand</dc:creator>
				<category><![CDATA[Reviews]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[coder]]></category>

		<guid isPermaLink="false">http://www.gerbrand-ict.nl/?p=303</guid>
		<description><![CDATA[Recently I read the book Clean Code by Robert C. Martin. I was very pleasently surprised by the book. The book was well written, for me it was a page-turner. The book starts with explaining why you (or the people you manage) should write clean code: writing good, well-written, consise - in short clean &#8211; code, is [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I read the book <a href="http://www.amazon.com/gp/product/B001GSTOAM?ie=UTF8&amp;tag=geonic-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B001GSTOAM">Clean Code</a><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=geonic-20&amp;l=as2&amp;o=1&amp;a=B001GSTOAM" border="0" alt="" width="1" height="1" /> by Robert C. Martin. I was very pleasently surprised by the book. The book was well written, for me it was a page-turner. The book starts with explaining why you (or the people you manage) should write clean code: writing good, well-written, consise - in short clean &#8211; code, is essential to agile software development. Writing clean code makes certain both yourself and any future developers can easily extend and maintain your software.</p>
<p style="text-align: center;"><a href="http://www.amazon.com/gp/product/B001GSTOAM?ie=UTF8&amp;tag=geonic-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B001GSTOAM"><img class="aligncenter" src="http://www.gerbrand-ict.nl/wp-content/uploads/2009/07/41Obj6pdGtL._SL160_.jpg" border="0" alt="" /></a><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=geonic-20&amp;l=as2&amp;o=1&amp;a=B001GSTOAM" border="0" alt="" width="1" height="1" /></p>
<p>Every chapter goes on specific part of programming, amongst others: using meaning full names, how to write good, consise and easy-to-understand functions, writing good comments, writing good unit tests, and having a good class design. A lot of content I already knew or was at least aware of, either intuitively through experience or from other sources. However, that didn&#8217;t made reading it any less usuful, the book does very well on explaining why and offering good arguments, just to convince other people. The book also questions a lot of common practices, I did not think of before.<br />
<br/><br />
I&#8217;ll pick some chapters to explain more in detail the content. First chapter goes into importance of good naming. Amongst others, variable should have meaning full names, and one letter variables like <code>j</code> or <code>h</code> should be used only for simple loop iteration. Class names should correspond to domain words like <code>Customer</code>, <code>WikiPage </code>or <code>AddressParser</code>. Postfixes like <code>Info </code>(<code>AccountInfo</code>) or prefixes like I (<code>ICustomer</code>) just clutter up and don&#8217;t add anything. Same goes for prefixed variable names like <code>m_dsc </code>or <code>int_ordernum</code>. Function names should be verbs like <code>addAccount </code>or <code>deletePage</code>.<br />
Another chapter goes on a often mis-understood or underestimated subject: writing good comments. One point the auther made is to limit the amount of generated comments. IDE-generated comments containing lots of <code>@param, @return </code>tags, etc., just clutter up your code while not adding information: if you use clear names, you don&#8217;t need to explain each parameter. Worse, they increase the change that of introducing &#8216;lies&#8217;: comments that do not corrrespond with the code the&#8217;re commenting.</p>
<p>Allthough the title of the book suggests it&#8217;s about programming in general, the book is slightly targeted to Java-programming. All code-samples are Java code, and some times the book refers to Java standards (like the Bean standard). C# developers could benefit from the book as well, as well as developers in similar languages, allthough some code samples could be harder to understand. Programmers in languages like Haskell, XSLT, Lisp would benifit less of the book.<br />
<br/><br />
I could go on, but I&#8217;d just recommend you to read the book if you&#8217;re a programmer yourself or have to manage programmers directly!</p>
<hr/>
<table width="100%">
<tr>
<td align="left">
<iframe src="http://rcm.amazon.com/e/cm?t=geonic-20&#038;o=1&#038;p=8&#038;l=as1&#038;asins=B001GSTOAM&#038;fc1=000000&#038;IS2=1&#038;lt1=_blank&#038;m=amazon&#038;lc1=0000FF&#038;bc1=000000&#038;bg1=FFFFFF&#038;f=ifr&#038;nou=1" style="width:120px; height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
</td>
<td border=1 align="right" valign="top">
<p><A HREF="http://clk.tradedoubler.com/click?a=1601917&#038;p=67859&#038;g=17297702&#038;epi=1001004006133271" TARGET="_BLANK"><br />
Bol.com<br />
<IMG SRC="http://www.bol.com/imgbase0/thumb/BOOKCOVER/FC/0/1/3/2/3/0132350882.gif" ALT="Clean Code" BORDER="0"><BR>Clean Code<BR>Robert C. Martin<BR></A></p>
</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.gerbrand-ict.nl/2009/07/clean-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Alternative to SQL</title>
		<link>http://www.gerbrand-ict.nl/2009/05/alternative-to-sql/</link>
		<comments>http://www.gerbrand-ict.nl/2009/05/alternative-to-sql/#comments</comments>
		<pubDate>Mon, 04 May 2009 14:55:57 +0000</pubDate>
		<dc:creator>gerbrand</dc:creator>
				<category><![CDATA[Reviews]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://www.gerbrand-ict.nl/?p=241</guid>
		<description><![CDATA[Database alternative, for people just browsing and scanning, I&#8217;ll write in staccato. Relational model pretty good, but we need a better implementation of the relational model, SQL, at least the way it&#8217;s used now, is just to primitive and cumbersome. Lot&#8217;s of new languages for the JVM, but we&#8217;re still using SQL to retrieve data [...]]]></description>
			<content:encoded><![CDATA[<p>Database alternative, for people just browsing and scanning, I&#8217;ll write in staccato.</p>
<ul>
<li>Relational model pretty good, but we need a better implementation of the relational model, SQL, at least the way it&#8217;s used now, is just to primitive and cumbersome.</li>
<li>Lot&#8217;s of new languages for the JVM, but we&#8217;re still using SQL to retrieve data from databases. Many programmers may even think that is the only way to retrieve data!</li>
<li>ORM is worst of both world
<ul>
<li>Reinventing the wheel, caching, optimal data retrieval, query optimization</li>
<li>Relational model is more natural to retrieve data then object oriented model</li>
<li>Inheritence is not possible the way it&#8217;s possible in OO, but same functionality is <a href="http://fyi.oreilly.com/2009/02/the-relational-model-is-much-m.html">still possible</a>.</li>
</ul>
</li>
<li>Java Programmers are spending a LOT of time creating queries, doing optimization, thinking how to retrieve data. Java is improving, but SQL is just largely the same as it was 10 ago.</li>
<li>SQL / Database integration in Java is still poor. ORM frameworks just hide away the database &#8211; usually resulting in a lot of work for database administrators and programmer&#8217;s just to tweak ill formed sql.</li>
</ul>
<p>In short, where&#8217;s a new language for the relation model and why isn&#8217;t that language or technology emerging? What would be nice is:</p>
<ol>
<li>A better language to access a relation database, that doesn&#8217;t involve lots of subqueries and joins to retrieve data.</li>
<li>A database query langauge that is truly embedded in the programming language I daily work with (Java), and not hidden behind persistence managers, xml files,  application servers.  Or just as worse, SQL hidden in quoted string or text files.</li>
</ol>
<ul>
<li>For 1. After some searching, I found an <a href="http://developers.slashdot.org/article.pl?sid=04/10/12/2159209&amp;tid=221&amp;tid=218">alternative to SQL</a>, <a href="http://www.techworld.com/applications/features/index.cfm?featureid=910">Tutorial D</a>.  The language isn&#8217;t main stream, but is interesting to <a href="http://tech.inhelsinki.nl/2007-01-27/">read about</a>. Especially if you think SQL and (relational) databases are the same.</li>
<li>Also I heard a while ago about<a href="http://en.wikipedia.org/wiki/.QL"> .QL</a> on  the <a onclick="javascript:pageTracker._trackPageview('/outgoing/25jaar.cs.uu.nl/');" href="http://25jaar.cs.uu.nl/">25 year</a> anniversary of my university, but that&#8217;s far from mainstream either.</li>
<li>For .Net there&#8217;s <a href="http://www.infoq.com/interviews/erik-meijer-linq">LinQ</a>, but that&#8217;s little use for me as Java software developer.  At least Microsoft has a solution for 2.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.gerbrand-ict.nl/2009/05/alternative-to-sql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Diagram software</title>
		<link>http://www.gerbrand-ict.nl/2009/05/diagram-software/</link>
		<comments>http://www.gerbrand-ict.nl/2009/05/diagram-software/#comments</comments>
		<pubDate>Fri, 01 May 2009 11:55:20 +0000</pubDate>
		<dc:creator>gerbrand</dc:creator>
				<category><![CDATA[Reviews]]></category>

		<guid isPermaLink="false">http://www.gerbrand-ict.nl/?p=227</guid>
		<description><![CDATA[Sometimes a diagram says more then a thousands words. That being said, what is good software to draw diagrams? I could quickly draw a diagram on my paper notepad, but known I wanted to visualize my diagram. I tried Dia. Advantage of that software is that is very basic, so you don&#8217;t have to waste [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes a diagram says more then a thousands words. That being said, what is good software to draw diagrams? I could quickly draw a diagram on my paper notepad, but known I wanted to visualize my diagram. I tried Dia. Advantage of that software is that is very basic, so you don&#8217;t have to waste time on any nifty features more expensive diagram software may have. Disadvantage is the amazingly user unfriendly interface.<br />
Well, I don&#8217;t know Diagram Drawing program is the best one, but I did find a nice review of several free versions: <a href="http://www.techmixer.com/free-diagram-software-to-replace-visio-for-diagramming-purpose/">Free Diagram Software</a>. There are already several on line versions, which is quite cool.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gerbrand-ict.nl/2009/05/diagram-software/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

