<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Virgo&#039;s Naive Stories</title>
	<atom:link href="http://virgo47.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://virgo47.wordpress.com</link>
	<description>Technology (Java mostly), games, music, or whatever just pisses me off. And maybe stories.</description>
	<lastBuildDate>Tue, 24 Jan 2012 12:44:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='virgo47.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Virgo&#039;s Naive Stories</title>
		<link>http://virgo47.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://virgo47.wordpress.com/osd.xml" title="Virgo&#039;s Naive Stories" />
	<atom:link rel='hub' href='http://virgo47.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Three years with Java Simon (3)</title>
		<link>http://virgo47.wordpress.com/2012/01/16/three-years-with-java-simon-3/</link>
		<comments>http://virgo47.wordpress.com/2012/01/16/three-years-with-java-simon-3/#comments</comments>
		<pubDate>Mon, 16 Jan 2012 07:36:09 +0000</pubDate>
		<dc:creator>virgo47</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[virtual-life]]></category>
		<category><![CDATA[callback]]></category>
		<category><![CDATA[java simon]]></category>
		<category><![CDATA[javasimon]]></category>
		<category><![CDATA[jmx]]></category>
		<category><![CDATA[observer]]></category>
		<category><![CDATA[webnode]]></category>

		<guid isPermaLink="false">http://virgo47.wordpress.com/?p=614</guid>
		<description><![CDATA[I should finish this series before it should be called “Four years with Java Simon” &#8211; but we still have some time. I’ll show you what possibilities callbacks brought to the Simon, but first I’d like to deal with our Webnode site. It was three years back (January 13th, 2009) when I posted on our [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virgo47.wordpress.com&amp;blog=2988789&amp;post=614&amp;subd=virgo47&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I should finish this series before it should be called “Four years with Java Simon” &#8211; but we still have some time. I’ll show you what possibilities callbacks brought to the Simon, but first I’d like to deal with our Webnode site.</p>
<p>It was three years back (January 13th, 2009) when I posted on our Webnode site that we need some better web for presentation than our project site on Google Code. But then we found we can’t post bunch of HTML files (Javadoc) on Webnode &#8211; and with mime-types SVN props we can do that on Google Code&#8230; oh, how quickly things change.</p>
<p>Webnode site could be good if Java Simon gained some bigger momentum on our side &#8211; more committers and contributors, people writing blogs or tutorials or success stories (or not so success stories too if they can help <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ). But this did not happen and I felt as rather annoying obligation to update this site. Especially because the edit functionality is on a separate URL &#8211; editing a Wikipedia page or a blog post on WordPress is always just one click away &#8211; but not so on Webnode.</p>
<p>Three years later I decided to redirect javasimon.org on our <a href="https://plus.google.com/115141838919870730025">Google+ page</a> because it is so much easy to update, posting even very short posts is not inappropriate (which would be on a blog) and it’s just so much closer to my way of living on the Internet right now. I’ll go through javasimon.webnode.com and it will soon be a matter of past.</p>
<p>Last time I discussed some changes from version 1 to version 2. And to preserve the little from Webnode site that has any “historical” value I hereby copy one blog post covering just these differences:</p>
<blockquote><p><strong>Major changes in the core of the Java Simon v2</strong><br />
2009-01-28 14:30<br />
While there are some important extensions to the Java Simon (JMX, Spring integration, etc.) there are a few important changes in the core part of the API that are probably even more important. If you&#8217;ve already managed to use Java Simon 1 I strongly suggest that you use version 2 even in its alpha stages. The thing is:</p>
<ul>
<li>If your project is finished or close to finish (month or two) stay with version 1.</li>
<li>If your project continues and you&#8217;re just experimenting with Simon, definitely use version 2! There is v2-alpha1 which is basically rework of the v1 after a few changes in Stopwatch. If there is newer alpha out (check Featured Downloads on the right on our project page) take that one of course, because it contains more features from v2.</li>
<li>Version 2 is planned to be out during March or April 2009, which is really soon.</li>
</ul>
<p>Now what are the changes and why we made them?</p>
<ul>
<li>Important change happened in the <strong>Stopwatch</strong>. While in the v1 it contained various start/stop methods that took care of multi-threaded environment now it has only <strong>one start method</strong> and this start doesn&#8217;t return this anymore but it returns <strong>new Split object</strong> instead. You have to take care of the Split object, you have to take care of your multi-threading, you have to <strong>call stop method on the Split</strong>. This makes our code safer as the Stopwatch doesn&#8217;t contain internal maps that were prone to memore-leaks if client forgot to stop some split. Thanks to Erik van Oosten and his great Java Simon evaluation.</li>
<li>Based on the same post we changed <strong>sample methods</strong> so that they <strong>return Java Bean objects</strong> now instead of the field.</li>
<li>While in v1 you had to use SimonManager now <strong>you can use non-static Manager implementation</strong> directly. SimonManager still stays your favourite convenient class full of static methods, of course. <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  This allows to have multiple separeated Simon hierarchies which may be handy in Java EE environment.</li>
<li>To provide some extensibility for the API we introduced <strong>Callback</strong> interface. This allows to hook onto various events and process these events in any way you want &#8211; to log them, send JMX notifications, whatever.</li>
</ul>
<p>There are more features to come with version 2 and I covered only those in the core part of the API. Stay tuned, download, use, test, let us know what you think. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p></blockquote>
<p>Now let’s take a look at those Callbacks. Based on good-old Observer pattern, <a href="http://code.google.com/p/javasimon/source/browse/trunk/core/src/main/java/org/javasimon/callback/Callback.java">Callback</a> is a listener that performs some actions on various events. First question was where the Callback should be registered &#8211; and we decided that Manager will hold its Callbacks. We didn’t want to scatter Callbacks across various Simons because typical usage would lead to a situation where many Simons call (and point to) the same Callback. We rather decided we will centralize Callback management on a Manager (that is per Manager of course) and bring some way how to filter events based on Simon name for instance.</p>
<p>Simple example of Simon is in our <a href="http://code.google.com/p/javasimon/source/browse/trunk/examples/src/main/java/org/javasimon/examples/CallbackExample.java">CallbackExample</a>:</p>
<p><pre class="brush: java;">
    SimonManager.callback().addCallback(new CallbackSkeleton() {
           public void onStopwatchStart(Split split) {
               System.out.println(&quot;\nStopwatch &quot; + split.getStopwatch().getName() + &quot; has just been started.&quot;);
           }

           public void onStopwatchStop(Split split) {
               System.out.println(&quot;Stopwatch &quot; + split.getStopwatch().getName()
                   + &quot; has just been stopped (&quot; + SimonUtils.presentNanoTime(split.runningFor()) + &quot;).&quot;);
           }
       });

       Stopwatch sw = SimonManager.getStopwatch(SimonUtils.generateName());
       sw.start().stop();
</pre></p>
<p>When you work with Simon (last two lines) you don’t care about Callbacks &#8211; they will be called. Their configuration can be based on some configuration and they should do whatever you want to hook on various Simon events.</p>
<p>BTW: If you use Java Simon 3.1 method onStopwatchStop is still called stopwatchStop. This is quite serious flaw and poor choice of method name on my part (and I’m terribly sorry for that). While this method doesn’t show it clearly, there was another method &#8211; clear (now onManagerClear). This method is called &#8211; as you may guess from the new name &#8211; when clear method on the manager is called. Let me explain composite callbacks first to show you the whole problem&#8230;</p>
<p>To add more callbacks to the manager is all right but if you want to filter Simons (by name, for instance) that fire an event on a Callback you actually need to do it in the event itself. Or wrap the Callback into another one &#8211; that is exactly what FilterCallback idea is all about. Another thing is that you may need to call various callbacks for the same filter &#8211; to group them &#8211; and that is what composite callback does &#8211; holds more callbacks (children) and relays the event to all of them. There is no interface CompositeCallback &#8211; instead all these methods are on Callback already, but they are not implemented in the CallbackSkeleton for instance (used in the example above). There is one implementation called CompositeFilterCallback &#8211; and you probably can guess what it does. It can hold more callbacks and call them when the common configured filter is passed. See <a href="http://code.google.com/p/javasimon/source/browse/trunk/examples/src/main/java/org/javasimon/examples/CallbackFilteringExample.java">CallbackFilteringExample</a> for simple use case.</p>
<p>Now guess how people tried to remove callbacks from composite callback. It’s just a collection of callbacks after all, right? Ah, method “clear” must do exactly what I need here. But it didn’t. And if you didn’t implement this event method (which is not very common, but <a href="http://code.google.com/p/javasimon/source/browse/trunk/core/src/main/java/org/javasimon/jmx/JmxRegisterCallback.java">JmxRegisterCallback</a> is nice example where it is very handy) it simply did nothing. There was method to remove one callback, but not all of them (this one was in SimonUtils). This is all finally fixed with version 3.2 &#8211; all names are much better and removeAllCallbacks is in the Callback interface.</p>
<p>JMX is nice example why we needed callbacks just as much as we wanted to offer them to our users. There are two ways how to access Simons via JMX &#8211; you can use single point MX bean, or let Simon instantiate MX beans per Simon. The latter however requires some actions when Simon is created, destroyed or the whole manager is cleared. I mentioned <a href="http://code.google.com/p/javasimon/source/browse/trunk/core/src/main/java/org/javasimon/jmx/JmxRegisterCallback.java">JmxRegisterCallback</a> already &#8211; check how it’s done there. Now the Simon manager knows about Callback mechanism &#8211; but it doesn’t have to know about JMX &#8211; or anything else you want to drive by these events.</p>
<p>Split introduction and Callbacks are two very important changes that happened in version 2 &#8211; and these things are now well proven and will probably last (though some names can change as will happen in version 3.2 <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ). Next time I’ll try to wrap up the rest of the story.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/virgo47.wordpress.com/614/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/virgo47.wordpress.com/614/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/virgo47.wordpress.com/614/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/virgo47.wordpress.com/614/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/virgo47.wordpress.com/614/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/virgo47.wordpress.com/614/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/virgo47.wordpress.com/614/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/virgo47.wordpress.com/614/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/virgo47.wordpress.com/614/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/virgo47.wordpress.com/614/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/virgo47.wordpress.com/614/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/virgo47.wordpress.com/614/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/virgo47.wordpress.com/614/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/virgo47.wordpress.com/614/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virgo47.wordpress.com&amp;blog=2988789&amp;post=614&amp;subd=virgo47&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://virgo47.wordpress.com/2012/01/16/three-years-with-java-simon-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/af081c81efc82a005def915cde584475?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">virgo47</media:title>
		</media:content>
	</item>
		<item>
		<title>Open letter to Java Simon users</title>
		<link>http://virgo47.wordpress.com/2012/01/11/open-letter-to-java-simon-users/</link>
		<comments>http://virgo47.wordpress.com/2012/01/11/open-letter-to-java-simon-users/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 16:49:39 +0000</pubDate>
		<dc:creator>virgo47</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[virtual-life]]></category>
		<category><![CDATA[java simon]]></category>
		<category><![CDATA[javasimon]]></category>

		<guid isPermaLink="false">http://virgo47.wordpress.com/?p=611</guid>
		<description><![CDATA[I bet there are people who are not on our mail group or watching Java Simon page on Google+. Roughly three years after the first official release we have another really good release. I’m really proud about our newest Java Simon release (3.1.0) and I decided to share the mail written to javasimon@googlegroups.com also here [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virgo47.wordpress.com&amp;blog=2988789&amp;post=611&amp;subd=virgo47&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I bet there are people who are not on our mail group or watching Java Simon page on Google+. Roughly three years after the first official release we have another really good release.</p>
<p>I’m really proud about our newest Java Simon release (3.1.0) and I decided to share the mail written to javasimon@googlegroups.com also here on my blog:</p>
<blockquote><p>Dear Java Simon users</p>
<p>Firstly &#8211; version 3.1.0 was released on New Year&#8217;s Day &#8211; more about it<br />
on our project site:<br />
<a href="http://code.google.com/p/javasimon/">http://code.google.com/p/javasimon/</a></p>
<p>We announced it also on our new stream on Google+ (it should be<br />
available for non-google users too):<br />
<a href="https://plus.google.com/b/115141838919870730025/115141838919870730025/posts/ZpmYGp9F2yp">https://plus.google.com/b/115141838919870730025/115141838919870730025/posts/ZpmYGp9F2yp</a></p>
<p>Secondly &#8211; about Google+ &#8211; we decided to pull down our Webnode site<br />
because it was a bit cumbersome to maintain and add new posts there.<br />
Instead we are moving to the aforementioned Google+ page.</p>
<p>Direct link: <a href="https://plus.google.com/115141838919870730025/posts">https://plus.google.com/115141838919870730025/posts</a><br />
Short link: <a href="http://gplus.to/javasimon">http://gplus.to/javasimon</a><br />
Or just use our domain! <a href="http://javasimon.org/">http://javasimon.org/</a> or <a href="http://www.javasimon.org/">http://www.javasimon.org/</a></p>
<p>This way it should be easier for us to post more often even smaller<br />
facts about your favourite monitoring library. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Thirdly &#8211; Happy New Year to you all, update and share your thoughts, I<br />
feel very well about the last release. We&#8217;re working on 3.2 already,<br />
with our new commiter (Gerald) we should be able to deliver simple<br />
embeddable web console too, so there is a lot to be looking forward<br />
to.</p>
<p>Best regards and wishes</p>
<p>Richard &#8220;Virgo&#8221; Richter</p></blockquote>
<p>You are welcome &#8211; and encouraged &#8211; to add Google+ page into your circles of course. And once more &#8211; Happy New Year &#8211; as this is my first post here in 2012. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/virgo47.wordpress.com/611/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/virgo47.wordpress.com/611/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/virgo47.wordpress.com/611/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/virgo47.wordpress.com/611/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/virgo47.wordpress.com/611/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/virgo47.wordpress.com/611/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/virgo47.wordpress.com/611/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/virgo47.wordpress.com/611/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/virgo47.wordpress.com/611/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/virgo47.wordpress.com/611/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/virgo47.wordpress.com/611/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/virgo47.wordpress.com/611/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/virgo47.wordpress.com/611/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/virgo47.wordpress.com/611/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virgo47.wordpress.com&amp;blog=2988789&amp;post=611&amp;subd=virgo47&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://virgo47.wordpress.com/2012/01/11/open-letter-to-java-simon-users/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/af081c81efc82a005def915cde584475?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">virgo47</media:title>
		</media:content>
	</item>
		<item>
		<title>2011 in review</title>
		<link>http://virgo47.wordpress.com/2011/12/31/2011-in-review/</link>
		<comments>http://virgo47.wordpress.com/2011/12/31/2011-in-review/#comments</comments>
		<pubDate>Sat, 31 Dec 2011 22:51:01 +0000</pubDate>
		<dc:creator>virgo47</dc:creator>
				<category><![CDATA[virtual-life]]></category>

		<guid isPermaLink="false">http://virgo47.wordpress.com/?p=604</guid>
		<description><![CDATA[If you blog on WordPress you probably got the mail too. It was just lovely dot after the whole year on the Internet. Especially with sentences like &#8220;your writing has staying power&#8221;. That made my day. Here it goes &#8211; full of it is behind the link at the bottom: The WordPress.com stats helper monkeys [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virgo47.wordpress.com&amp;blog=2988789&amp;post=604&amp;subd=virgo47&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><i>If you blog on WordPress you probably got the mail too. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  It was just lovely dot after the whole year on the Internet. Especially with sentences like &#8220;your writing has staying power&#8221;. That made my day. Here it goes &#8211; full of it is behind the link at the bottom:</i></p>
<p>The WordPress.com stats helper monkeys prepared a 2011 annual report for this blog.</p>
<div style="background:url('/wp-content/mu-plugins/annual-reports/img/emailteaser.jpg') no-repeat center center;height:300px;"></div>
<p>Here&#8217;s an excerpt:</p>
<blockquote><p>The concert hall at the Syndey Opera House holds 2,700 people. This blog was viewed about <strong>26,000</strong> times in 2011. If it were a concert at Sydney Opera House, it would take about 10 sold-out performances for that many people to see it.</p></blockquote>
<p><a href="/2011/annual-report/">Click here to see the complete report.</a></p>
<p>PS: I forgot to mention that my wife&#8217;s blog about cooking &#8211; in Slovak only! &#8211; made three times bigger numbers. With only two new posts this year she reportedly sold out Medison Square Garden three times (I was rather compared to Sydney Opera &#8211; another nice touch of the report). <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/virgo47.wordpress.com/604/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/virgo47.wordpress.com/604/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/virgo47.wordpress.com/604/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/virgo47.wordpress.com/604/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/virgo47.wordpress.com/604/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/virgo47.wordpress.com/604/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/virgo47.wordpress.com/604/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/virgo47.wordpress.com/604/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/virgo47.wordpress.com/604/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/virgo47.wordpress.com/604/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/virgo47.wordpress.com/604/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/virgo47.wordpress.com/604/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/virgo47.wordpress.com/604/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/virgo47.wordpress.com/604/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virgo47.wordpress.com&amp;blog=2988789&amp;post=604&amp;subd=virgo47&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://virgo47.wordpress.com/2011/12/31/2011-in-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/af081c81efc82a005def915cde584475?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">virgo47</media:title>
		</media:content>
	</item>
		<item>
		<title>Personal Log (4): Games I played in 2011</title>
		<link>http://virgo47.wordpress.com/2011/12/27/personal-log-4-games-i-played-in-2011/</link>
		<comments>http://virgo47.wordpress.com/2011/12/27/personal-log-4-games-i-played-in-2011/#comments</comments>
		<pubDate>Tue, 27 Dec 2011 12:40:11 +0000</pubDate>
		<dc:creator>virgo47</dc:creator>
				<category><![CDATA[games]]></category>
		<category><![CDATA[real-life]]></category>
		<category><![CDATA[virtual-life]]></category>
		<category><![CDATA[anomaly warzone earth]]></category>
		<category><![CDATA[batman arkham asylum]]></category>
		<category><![CDATA[dragon age origins]]></category>
		<category><![CDATA[frozen synapse]]></category>
		<category><![CDATA[half-life 2]]></category>
		<category><![CDATA[king arthur]]></category>
		<category><![CDATA[Mass Effect]]></category>
		<category><![CDATA[oblivion]]></category>
		<category><![CDATA[Steam]]></category>

		<guid isPermaLink="false">http://virgo47.wordpress.com/?p=600</guid>
		<description><![CDATA[Last time I wrote “Personal Log” it was the end of 2009 and I wrapped it up in my post from more perspectives. Year 2011 was a good one (again), I started in a new job in January, our daughter Barbora was born in January &#8211; but even with these obligations (job and family) and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virgo47.wordpress.com&amp;blog=2988789&amp;post=600&amp;subd=virgo47&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Last time I wrote “Personal Log” it was the end of 2009 and I wrapped it up <a href="http://virgo47.wordpress.com/2010/01/01/personal-log-3-year-of-fulfilled-dreams/">in my post</a> from more perspectives. Year 2011 was a good one (again), I started in a new job in January, our daughter Barbora was born in January &#8211; but even with these obligations (job and family) and a lot of additional work on <a href="http://gplus.to/javasimon">Java Simon</a> I still managed to play games. And to my surprise &#8211; quite a lot. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  I’ll talk only about single-player games because I can’t engage into any serious multi-player with all the children around. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>So let’s start with the previous Christmas sales on <a href="http://store.steampowered.com/">Steam</a>. I bought Mass Effect 2, King Arthur Pack, Railworks (now updated to Train Simulator 2012), Dragon Age: Origins, Crysis Complete, The Ball and Burnout Paradise. I even new I may not play some of them, but for the gamer it would be a sin not buy it when it’s so cheap. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  I want to play The Ball just because it’s made by Hourences and the team of other great mappers/modders who had been around Unreal engine and Unreal Tournament quite some time &#8211; and the game is original too.</p>
<p>In the last few years <strong>Mass Effect</strong> may be my favourite franchise &#8211; it’s a great shooter and I even forgot it’s RPG. Not that I have anything against RPGs &#8211; on the contrary &#8211; lately I played more RPGs of various types to my own surprise. I stopped playing other games and first I had to go through <strong>Mass Effect 2</strong> (twice, different gender, different specialization). While you don’t exactly save the galaxy in front of the whole council (dead or alive <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> ) like in the first part, the continuation is probably more epic on the whole. Not that I didn’t have any gripes about the game, I can’t remember them now &#8211; but I can remember how great the game was. As I remember the VI announcing another customer in line from the first part I still have vivid memories of quite a lot of scenes from ME2. This game flows well and it’s getting bigger and bigger towards the end. If you like sci-fi RPGs (or even shooters and can survive a few dialogues) then this is an absolute must-have. ME1 was great, ME2 is greater, with less annoyances, more variability in scenery, more subplots and one really nasty boss at the end. Fun factor 5/5, frustration 0, length just right.</p>
<p><strong>King Arthur</strong> was the game I spent the start of the year with (after ME2 that is). I was really surprised with the blend of the Heroes M&amp;M turn-based strategy (on a map that reminded me good old Defender of the Crown) and RTS battles &#8211; this all spiced up by simple text-based quests and some economy. I was really surprised how playable the game was. In the middle of it I thought I will loose because opponents’ knights (heroes) started to be very strong while I underestimated the power of some spells, but somehow I managed to outmaneuver them in the end. If you like strategies, try it. On the RTS battlefield it’s often about you knowing how to play around key areas and you may destroy a few armies with a single one. Maybe hard-core players would object, but I &#8211; casual nearly-ex-gamer &#8211; appreciated this concept. Fun factor 4/5, frustration 0, length quite long as expected. Typical “just one more move and I’ll go to bed” game.</p>
<p><strong>Batman: Arkham Asylum</strong> is a bit difficult story. I had troubles to save single player games originally &#8211; I even wanted to play cracked version because of the stupid Windows Live service. But I figured out the offline profile feature (hidden in an unbelievably stupid way) and then I started to play. Another serious issue &#8211; no way to change controls. I’m ESDF guy, I touch-type too. WASD drives me crazy and when I want to press 1, I always press ` (key to the left) &#8211; well&#8230; because I touch-type! Not to mention that one disabled guy told me how missing controls customization can render the game unplayable for them. But back to the game itself. The story, visuals and all was quite reminiscent of Bioshock (both Unreal 3 engine games, by the way). I liked special tactics Batman can use, detective mode, gargoyles, visuals &#8211; this all was very good. You were really in the middle of Batman’s story with may heroes I didn’t even know. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Boss fights were interesting, each of them a bit different. If you had any problem, game gave you some hints &#8211; I liked this as I’m less and less hard-core player and more and more a casual one. However here and there you played with different camera than over-the-shoulder and it made controls even more difficult (some boss fights mostly). You could take it as a minigame though. For one reason or the other I wasn’t so sucked into this game in the end, but I finished it after a few breaks (a few months mostly). Fun factor 4/5, frustration 3 (Windows Life + controls + camera), length just fine for me (progress meter counts also riddles, so you may probably end around 60% if you don’t care for the riddles). Recommended? Why not, but I don’t plan playing Arkham City.</p>
<p>In the middle of the year I suddenly got a strong need to play <strong>Half-Life 2</strong> again &#8211; with both Episodes too, of course. As scripted this FPS is, it is simply great. Even the second run. I realized how many scenes in this game are simply so great. The river, first gravity-gun practice, “We don’t go to Ravenholm”, blocked bridge, Nova Prospect fight while waiting for Alyx, all those striders, Overwatch Nexus, Citadel&#8230; all of it! And then the Episodes &#8211; reactor hot-fix, run away to the station, fleeing the city, jumping over a broken bridge, Alyx down and up again, ambush in a homestead and amazing finale of the second episode. Without making any choices, without any active dialogues, the story is just great and I think I’ll probably have to go through it some other time again. Not to mention that it has great commentaries too &#8211; these just underline how well-thought this game is. Fun factor 5, frustration 0, length just fine &#8211; I even consider the main game quite long for a shooter, but I bet it’s short for others. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>I was nicely surprised by <strong>Anomaly Warzone Earth</strong>. Simple, arcadish, and as goes with turret defense &#8211; very addictive. The concept of playing against the turret defense is smart, it is spiced up with a lot of specific details on particular maps and while this game was shorter in overall, it was also cheaper as it is no AAA title. Still the production was surprisingly good and the whole game is just smooth. Worth a few bucks for killing a few evenings, really. Fun 5, frustration 0, length could be longer, but OK.</p>
<p><strong>Frozen Synapse</strong> on the other hand was too much for me. You have to dedicate more time to this game, it’s not good for a casual player I’d say. I expected some kind of Laser Squad I remember from ZX Spectrum (or the horrible port on PC) &#8211; but then &#8211; I had much more time (and much less games) back then. However the concept is interesting but without going for a multiplayer it’s probably not worth it. Fun factor 3 (single player), frustration 0, length &#8211; no idea.</p>
<p>And then there’s <strong>The Elder Scrolls IV: Oblivion</strong>. I played Morrowind before, but after some time I just gave up. Maybe I chose more boring class, but I guess different class wouldn’t change my mind. Oblivion is more or less like Morrowind &#8211; but more fun. Both these games are BIG. A lot of locations, a lot of characters, a lot of quest. However I lost my goal after some time. Oblivion is far better from this perspective than Morrowind, not only because it’s newer. But still &#8211; after shutting a few Oblivion gates I started to loose my focus, I didn’t know where to go and what to achieve in this game. This game is very good and having less other games and more time I’d probably play it (and maybe I’ll return to it). System is better than in Morrowind, a bit simpler, leveling goes more naturally, movement around the world map is faster &#8211; this all makes the game great. But when I compare it with games like Witcher and Dragon Age Origins (which I’m playing now though I hardly started the story) it’s easy to get lost here. I like RPGs that lead the player a bit (or more) &#8211; Witcher, Dragon Age, Mass Effect &#8211; these are much better in this aspect. For Oblivion the fun factor is 4, frustration 0, length was too much for me. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>However, there is one easy way how to try a lot of games for little money. Wait a year or two and buy it during holidays sales if you’re not sure if you really want it. I remember buying Unreal Tournament 3 in metal case for quite a lot of money for my taste &#8211; and I was utterly disappointed by the game (though I loved UT99/2004). That’s why I hate to give anything more than 30 for a game I’m not sure of. Having Dragon Age 1 with all of the DLCs (another reason why to wait a bit) for 20 is much better deal then. I rather spend a lot of money on a lot of games risking I’ll not play a few of them than spending even more money on a few ones, half of them probably more or less disappointing.</p>
<p>And what were your favourite games in 2011? <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Let me know, anonymous comments are allowed as well &#8211; as always.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/virgo47.wordpress.com/600/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/virgo47.wordpress.com/600/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/virgo47.wordpress.com/600/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/virgo47.wordpress.com/600/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/virgo47.wordpress.com/600/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/virgo47.wordpress.com/600/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/virgo47.wordpress.com/600/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/virgo47.wordpress.com/600/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/virgo47.wordpress.com/600/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/virgo47.wordpress.com/600/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/virgo47.wordpress.com/600/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/virgo47.wordpress.com/600/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/virgo47.wordpress.com/600/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/virgo47.wordpress.com/600/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virgo47.wordpress.com&amp;blog=2988789&amp;post=600&amp;subd=virgo47&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://virgo47.wordpress.com/2011/12/27/personal-log-4-games-i-played-in-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/af081c81efc82a005def915cde584475?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">virgo47</media:title>
		</media:content>
	</item>
		<item>
		<title>Three years with Java Simon (2)</title>
		<link>http://virgo47.wordpress.com/2011/12/05/three-years-with-java-simon-2/</link>
		<comments>http://virgo47.wordpress.com/2011/12/05/three-years-with-java-simon-2/#comments</comments>
		<pubDate>Mon, 05 Dec 2011 15:09:47 +0000</pubDate>
		<dc:creator>virgo47</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[java simon]]></category>
		<category><![CDATA[javasimon]]></category>
		<category><![CDATA[simon]]></category>
		<category><![CDATA[split]]></category>
		<category><![CDATA[stopwatch]]></category>

		<guid isPermaLink="false">http://virgo47.wordpress.com/?p=589</guid>
		<description><![CDATA[This is continuation of the previous post where we somehow got to version 1.0 &#8211; that was December 2008. Working on our first version of Java Simon I learned a lot from my colleagues too. While we shared our views all the time on the OSS library we somehow did even better than on our [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virgo47.wordpress.com&amp;blog=2988789&amp;post=589&amp;subd=virgo47&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This is continuation of <a href="http://virgo47.wordpress.com/2011/11/08/three-years-with-java-simon-1/">the previous post</a> where we somehow got to version 1.0 &#8211; that was December 2008.</p>
<p>Working on our first version of Java Simon I learned a lot from my colleagues too. While we shared our views all the time on the OSS library we somehow did even better than on our common (resource limited) projects. We also knew that library must be even cleaner and better than some Information System developed once &#8211; often without proper support budget. One guy insisted on finals whenever possible (which I’m not fan of) and he also vigorously refactored methods with boolean flags &#8211; and I originally disliked this change. In Simon interface we had methods like:<br />
<pre class="brush: java;">
Map&lt;String, String&gt; sample(boolean reset);
</pre></p>
<p>Now we have much cleaner two methods instead of using boolean parameter &#8211; not to mention that we have Sample object instead of Map used in early versions:<br />
<pre class="brush: java;">
Sample sample();
Sample sampleAndReset();
</pre></p>
<p>Not that we don’t have any method with boolean flag &#8211; but the most prominent one is rather management one compared to sample methods:<br />
<pre class="brush: java;">
void setState(SimonState state, boolean overrule);
</pre></p>
<p>Generally I don’t like using boolean flag parameters because they are hard to read when you see just plain code. If they are replaced with enums (where suitable) readability goes up instantly. If they are split to two methods &#8211; especially when one of them is rather default (like the sample without reset) &#8211; even better.</p>
<p>Working on an OSS library (or any other library &#8211; even a private one) you have to think way harder (or rethink more often) how to organize your interface, packages and all. I personally hate backward compatibility as an ultimate decision and we knew that we will change the interface here and there. If you want to upgrade then just go through your code and change those few things you have to change! Or don’t upgrade. (I’ll not go on about the whole myth of compatiblity and how often it is not completely true.)</p>
<p>That’s why we decided to release version 1.0 quite soon (December 2008, we started the project in August 2008) and find out what is missing. Version 2.0 followed quite quickly &#8211; in January 2009 we had the first alpha (quite stable though) and we decided to focus solely on this without any support for 1.0. The reason was that the Stopwatch behaviour changed quite a lot &#8211; for the better.</p>
<p>In 1.0 HalloWorld looked something like this:<br />
<pre class="brush: java;">
SimonStopwatch stopwatch = SimonFactory.getStopwatch(&quot;org.javasimon.HelloWorld-stopwatch&quot;);
stopwatch.start();
System.out.println(&quot;Hello world, &quot; + stopwatch);
stopwatch.stop();
System.out.println(&quot;Result: &quot; + stopwatch);
</pre></p>
<p>Most important feature was that both start and stop were called on the Stopwatch. Now you may wonder what would happen if you started stopwatch twice and stopped it twice as well. It depended&#8230; though &#8211; honestly &#8211; I don’t remember exactly. Stopwatch had thread-local variable that remembered start timestamp (nanoseconds of course) and stop was expected to be called in the same thread. Double start and stop was illegal operation. Now this implied two serious limitations. The first was potential memory leak on the thread-local variable if you (client programmer) failed (or forgot) to stop the stopwatch. The second was that you couldn’t stop the stopwatch in a different thread.</p>
<p>This was troublesome design and happened to be resolved soon after 1.0 release. Our new HelloWorld looked (and still looks) like this:<br />
<pre class="brush: java;">
Stopwatch stopwatch = SimonManager.getStopwatch(&quot;org.javasimon.examples.HelloWorld-stopwatch&quot;);
Split split = stopwatch.start();
System.out.println(&quot;Hello world, &quot; + stopwatch);
split.stop();
System.out.println(&quot;Result: &quot; + stopwatch);
</pre></p>
<p>Now the client programmer is fully responsible for working with the Split, there is no thread-local and the worst thing that may happen to the stopwatch is that its “actual” count will go up and up (and so indicate some problem with missing stops). Split will be garbage collected &#8211; unless stored by the programmer (his fault anyway <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> ).</p>
<p>Another important features coming with 2.0 were JMX support (MX Bean) and Callbacks &#8211; these allowed programmer to hook on various events. But more about these in my next post, right?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/virgo47.wordpress.com/589/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/virgo47.wordpress.com/589/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/virgo47.wordpress.com/589/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/virgo47.wordpress.com/589/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/virgo47.wordpress.com/589/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/virgo47.wordpress.com/589/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/virgo47.wordpress.com/589/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/virgo47.wordpress.com/589/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/virgo47.wordpress.com/589/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/virgo47.wordpress.com/589/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/virgo47.wordpress.com/589/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/virgo47.wordpress.com/589/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/virgo47.wordpress.com/589/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/virgo47.wordpress.com/589/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virgo47.wordpress.com&amp;blog=2988789&amp;post=589&amp;subd=virgo47&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://virgo47.wordpress.com/2011/12/05/three-years-with-java-simon-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/af081c81efc82a005def915cde584475?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">virgo47</media:title>
		</media:content>
	</item>
		<item>
		<title>Three years with Java Simon (1)</title>
		<link>http://virgo47.wordpress.com/2011/11/08/three-years-with-java-simon-1/</link>
		<comments>http://virgo47.wordpress.com/2011/11/08/three-years-with-java-simon-1/#comments</comments>
		<pubDate>Mon, 07 Nov 2011 23:10:14 +0000</pubDate>
		<dc:creator>virgo47</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[monitoring]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[java simon]]></category>
		<category><![CDATA[simon]]></category>
		<category><![CDATA[jmx]]></category>
		<category><![CDATA[jamon]]></category>
		<category><![CDATA[tss]]></category>

		<guid isPermaLink="false">http://virgo47.wordpress.com/?p=579</guid>
		<description><![CDATA[If you wonder what that Java Simon is just check the project site. It all started when we got back from TheServerSide Java Symposium in Prague in 2008. One of the many talks given there was about JAMon (don’t mix it with jamon &#8211; the text template engine) &#8211; simple monitoring API that allowed you [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virgo47.wordpress.com&amp;blog=2988789&amp;post=579&amp;subd=virgo47&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>If you wonder what that Java Simon is just check <a href="http://code.google.com/p/javasimon/">the project site</a>. It all started when we got back from TheServerSide Java Symposium in Prague in 2008. One of the many talks given there was about <a href="http://jamonapi.sourceforge.net/">JAMon</a> (don’t mix it with jamon &#8211; the text template engine) &#8211; simple monitoring API that allowed you to code your monitors into your application and obtain the results later.</p>
<p>JAMon guys used <a href="http://sourceforge.net/projects/jarep/">Jarep</a> to store and graph results and what I liked the most was the story how these results available over a long time helped them when they needed it. Story went something like: “We found out that the performance of our web-shop started to be unacceptable sooner then originally calculated. Graph showed us that there was sudden jump half a year ago and since then the application performed worse. Luckily we had also work plan from IT stuff that revealed that the same day new JDBC driver was installed &#8211; and that was the reason.” Bottom line &#8211; without data you just don’t know. I liked that and it went pretty much along the lines <a href="http://kirk.blog-city.com/">Kirk Pepperdine</a> says all the time &#8211; you need proof, you need data, you just need to know &#8211; don’t guess. Actually most wise people say that, but I remember Kirk and also that JAMon/JARep story when it comes to performance and monitoring.</p>
<p>A colleague of mine tried to use JAMon for our work project but he was not happy about the API. He was missing some management hierarchy &#8211; and that’s how idea of a tree hierarchy (not much different from java.util.logging for instance) for Simons started. Another issue was timer based on ms (JAMon is compatible with J2SE 1.4), I didn’t like that at all. So many things may happen in a single ms &#8211; not to mention most Windows changed the timer ever 10 or 16 ms. We decided to write our stopwatch facility and over one August weekend I wrote some basics (<a href="http://code.google.com/p/javasimon/source/list?num=25&amp;start=7">our first commits</a>) and we started building on it. We can’t measure anything &#8211; like JAMon tries &#8211; we focused solely on Stopwatch and Counter. Three years later I’m happy about it &#8211; Stopwatch being probably 90% (or more) of all used Simons. Originally I wanted to give our users some way to add another kinds of Simons, but soon I realized how messy it would all become.</p>
<p>JAMon was in version 2.7 when we started the Simon project and the page looked exactly how it looks right now. We finished the first version in December, we were happy about most of it, we cared for the code and for the Javadoc too &#8211; and I think it was really obvious from the look at the project. These are ideas we still care for and quality Javadoc is undisputed part of the project.</p>
<p>TSS press release: <a href="http://www.theserverside.com/news/thread.tss?thread_id=52447">Java Simon 1.0, monitoring API, released</a></p>
<p>Simon gained some initial attention and one particular developer even blogged a few times about us &#8211; check <a href="http://day-to-day-stuff.blogspot.com/2008/12/evaluating-simon.html">Evaluating Simon &#8211; Java monitoring</a> or other Erik’s <a href="http://day-to-day-stuff.blogspot.com/search/label/monitoring">posts related to monitoring</a>. Funny &#8211; later I’ve heard the name Erik van Oosten mentioned by my colleagues working with Wicket, but I’m 2 years ahead of the story. That&#8217;s just how it is with active people. His posts were most appreciated and he also provided AOP based Spring integration. Now &#8211; years later &#8211; even I use it in our current project (though it went through a few fixes, but the code is essentially still Erik’s).</p>
<p>Soon we discovered that the first version had a few serious issues and redesign was necessary. But more about that in the next installment some other time.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/virgo47.wordpress.com/579/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/virgo47.wordpress.com/579/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/virgo47.wordpress.com/579/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/virgo47.wordpress.com/579/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/virgo47.wordpress.com/579/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/virgo47.wordpress.com/579/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/virgo47.wordpress.com/579/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/virgo47.wordpress.com/579/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/virgo47.wordpress.com/579/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/virgo47.wordpress.com/579/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/virgo47.wordpress.com/579/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/virgo47.wordpress.com/579/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/virgo47.wordpress.com/579/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/virgo47.wordpress.com/579/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virgo47.wordpress.com&amp;blog=2988789&amp;post=579&amp;subd=virgo47&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://virgo47.wordpress.com/2011/11/08/three-years-with-java-simon-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/af081c81efc82a005def915cde584475?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">virgo47</media:title>
		</media:content>
	</item>
		<item>
		<title>Testing booleans readably in Java</title>
		<link>http://virgo47.wordpress.com/2011/10/30/testing-booleans-readably-in-java/</link>
		<comments>http://virgo47.wordpress.com/2011/10/30/testing-booleans-readably-in-java/#comments</comments>
		<pubDate>Sun, 30 Oct 2011 20:03:23 +0000</pubDate>
		<dc:creator>virgo47</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[boolean]]></category>
		<category><![CDATA[comparison]]></category>
		<category><![CDATA[expression]]></category>

		<guid isPermaLink="false">http://virgo47.wordpress.com/?p=572</guid>
		<description><![CDATA[This surely is not the first or last musing on how to write ifs with boolean variables in Java. I normally just write it as IDEA suggests with its “simplify” correction (inspection is called “Pointless boolean expression”). However I never criticized anyone yet for their style of comparing the boolean variable to the literal true [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virgo47.wordpress.com&amp;blog=2988789&amp;post=572&amp;subd=virgo47&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This surely is not the first or last musing on how to write ifs with boolean variables in Java. I normally just write it as IDEA suggests with its “simplify” correction (inspection is called “Pointless boolean expression”). However I never criticized anyone yet for their style of comparing the boolean variable to the literal <strong>true</strong> or <strong>false</strong>. I do some code review that is a part of my role in the team and while I communicate most of my observations this I just quick fix with IDEA and go on. “Whatever your taste is, my word is the final word anyway.”</p>
<p>But this Friday one of the developers came back to me and said “hey, I do it so it is more readable”. And <strong>readable</strong> is the word I hear to pretty strong. I have no problem to read both these styles and I prefer the minimal one. While I’m clearly decided about comparing to true (utter waste and <a href="http://stackoverflow.com/questions/493233/boolean-expressions-in-java/493258#493258">nicely exaggerated here</a>), comparing to false is indeed a bit different. There you can argue that that exclamation is not always so visible.</p>
<p>It’s not always as easy as “short is better” &#8211; often on the contrary. Prominent example being the assignment in the middle of the expression &#8211; in a ternary expression for instance. I’d go for ifs and an assignment per line all the time. But while here we are mostly aligned when it comes to (checked == false) versus (!checked) we developers are not so unanimous.</p>
<p>The aforementioned link to stackoverflow inspired me to check how various cases are compiled. I made a class:<br />
<pre class="brush: java;">
public class BooleanEqualityTest {
   boolean bb;

   private void a() {
       boolean b = bb;
   }
   private void b() {
       boolean b = bb == true;
   }
   private void c() {
       boolean b = (bb == true) == true;
   }
   private void x() {
       boolean b = !bb;
   }
   private void y() {
       boolean b = bb == false;
   }
   private void z() {
       boolean b = bb == false == false;
   }
}
</pre></p>
<p>After compile I went to the output directory and ran the command:<br />
<pre class="brush: plain;">javap -private -c BooleanEqualityTest</pre></p>
<p>And the result was:<br />
<pre class="brush: plain;">
Compiled from &quot;BooleanEqualityTest.java&quot;
public class BooleanEqualityTest extends java.lang.Object{
boolean bb;

public BooleanEqualityTest();
 Code:
  0:    aload_0
  1:    invokespecial    #1; //Method java/lang/Object.&quot;&lt;init&gt;&quot;:()V
  4:    return

private void a();
 Code:
  0:    aload_0
  1:    getfield    #2; //Field bb:Z
  4:    istore_1
  5:    return

private void b();
 Code:
  0:    aload_0
  1:    getfield    #2; //Field bb:Z
  4:    iconst_1
  5:    if_icmpne    12
  8:    iconst_1
  9:    goto    13
  12:    iconst_0
  13:    istore_1
  14:    return

private void c();
 Code:
  0:    aload_0
  1:    getfield    #2; //Field bb:Z
  4:    iconst_1
  5:    if_icmpne    12
  8:    iconst_1
  9:    goto    13
  12:    iconst_0
  13:    iconst_1
  14:    if_icmpne    21
  17:    iconst_1
  18:    goto    22
  21:    iconst_0
  22:    istore_1
  23:    return

private void x();
 Code:
  0:    aload_0
  1:    getfield    #2; //Field bb:Z
  4:    ifne    11
  7:    iconst_1
  8:    goto    12
  11:    iconst_0
  12:    istore_1
  13:    return

private void y();
 Code:
  0:    aload_0
  1:    getfield    #2; //Field bb:Z
  4:    ifne    11
  7:    iconst_1
  8:    goto    12
  11:    iconst_0
  12:    istore_1
  13:    return

private void z();
 Code:
  0:    aload_0
  1:    getfield    #2; //Field bb:Z
  4:    ifne    11
  7:    iconst_1
  8:    goto    12
  11:    iconst_0
  12:    ifne    19
  15:    iconst_1
  16:    goto    20
  19:    iconst_0
  20:    istore_1
  21:    return

}
</pre></p>
<p>What does it mean? Every == true is adding something to the code, but the first == false produces the same bytecode as the <strong>not</strong> operator itself (!). Every other == false is then adding to the code just like any other comparison. While HotSpot may do wonders with the code later I still consider it a waste and completely unnecessary &#8211; except for the single == false &#8211; and that was the case where I hesitated just a bit.</p>
<p>Now I will probably stop correcting this case, though I will keep writing !checked instead of checked == false. The only thing I don’t like about it all right now is that the inspection in IDEA cannot be set to ignore just this case. I can still set it to weak-warning, but that’s just not the same, you know. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>What is your opinion on this matter? Do you have similar cases where you’re just not convinced which way is the cleaner one?</p>
<p><strong>Update 31.10.2011:</strong> I decided after all. I&#8217;ll go for !(&#8230;) like this:<pre class="brush: java;">if (!(checked)) ...</pre><br />
This is quite clear, ! is nicely visible and redundant parentheses are not warning. After all, parentheses are traditionally used to make expressions <strong>readable</strong>. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/virgo47.wordpress.com/572/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/virgo47.wordpress.com/572/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/virgo47.wordpress.com/572/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/virgo47.wordpress.com/572/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/virgo47.wordpress.com/572/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/virgo47.wordpress.com/572/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/virgo47.wordpress.com/572/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/virgo47.wordpress.com/572/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/virgo47.wordpress.com/572/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/virgo47.wordpress.com/572/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/virgo47.wordpress.com/572/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/virgo47.wordpress.com/572/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/virgo47.wordpress.com/572/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/virgo47.wordpress.com/572/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virgo47.wordpress.com&amp;blog=2988789&amp;post=572&amp;subd=virgo47&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://virgo47.wordpress.com/2011/10/30/testing-booleans-readably-in-java/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/af081c81efc82a005def915cde584475?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">virgo47</media:title>
		</media:content>
	</item>
		<item>
		<title>Dear IntelliJ IDEA, I love you, but&#8230;</title>
		<link>http://virgo47.wordpress.com/2011/10/10/dear-intellij-idea-i-love-you-but/</link>
		<comments>http://virgo47.wordpress.com/2011/10/10/dear-intellij-idea-i-love-you-but/#comments</comments>
		<pubDate>Mon, 10 Oct 2011 20:16:16 +0000</pubDate>
		<dc:creator>virgo47</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[encoding]]></category>
		<category><![CDATA[idea]]></category>
		<category><![CDATA[intellij]]></category>
		<category><![CDATA[jetbrains]]></category>
		<category><![CDATA[love]]></category>

		<guid isPermaLink="false">http://virgo47.wordpress.com/?p=570</guid>
		<description><![CDATA[No, no, it’s not that I’m leaving. Where would I go? To that total eclipse of sense? Or should I get some beans or what? No way&#8230; I’m with you &#8211; in good times and in bad! We’ve been through so much together! Do you remember your version 4? How we all couldn’t understand why [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virgo47.wordpress.com&amp;blog=2988789&amp;post=570&amp;subd=virgo47&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>No, no, it’s not that I’m leaving. Where would I go? To that total eclipse of sense? Or should I get some beans or what? No way&#8230; I’m with you &#8211; in good times and in bad! We’ve been through so much together! Do you remember your version 4? How we all couldn’t understand why we can’t have web application support in the same source tree with all EJBs? Not that your free version have any Java EE support now &#8211; but then, it is free! Back to that version 4, right?</p>
<p>We got it after all. We partially mavenized our projects (without using Maven while possible and hell, how easy was our life even with all those libraries we had to manage!), we split artifacts into their respective modules and we felt&#8230; well, reformed. Thank you.</p>
<p>With every version you brought refactorings that made sense and helped, templates that were really useful, and your completion&#8230; it was just all so normal and obvious until any of us had to use those other incompetent IDEs around. Where, tell me, where would we go? We’re not masochists, we know why we use you, it’s hardly possible to live without you anymore.</p>
<p>I declare here and now &#8211; I DO love you. You know it, I know it, everybody who knows me knows it &#8211; why to hide it anymore? I don’t care what my “normal” friends say (those that are not programmers, you know), I don’t care what people kept in the dark (you know, those living in umbra) may think, they never got it anyway what it is like when enum literals are just completed and foreach template asks for the collection first and the rest is just derived correctly.</p>
<p>My wife can hardly bear it, she’s jealous, but I just don’t care! I love you. But&#8230;</p>
<p>There are those times when it’s harder then it should be. Consider, my dear, just a few things. I did my part, I reported stuff, I was faithful &#8211; and I’d love to stay it that way. But there are things that are hard to forgive. Hard to go around. Sometimes I just have to use Eclipse &#8211; not because I want, not even because the project requires me to do so &#8211; but because you are so stubborn and can’t get better with just a few things. While Eclipse is just beyond any chance to be mended, you, my dear, have just a few bugs that are &#8211; I’m sure! &#8211; easy to fix and all those problems would be gone! All those little situations when Eclipse crowd can just laugh back for all my laughing on their pathetic SVN, Maven (or whatever you name) support.</p>
<p>Not that my list is short, but then there is clear line between things I can easily forgive (though not forget, you know how it goes after many years in relationships) and those I can’t however hard I try. You know that search widget introduced years ago&#8230; it would be just so good if <a href="http://youtrack.jetbrains.net/issue/IDEA-64828">Enter worked like in Firefox</a> and Escape really cancelled the search and forgot whatever I wrote in there. No, you’re stubborn. But OK, however stupid it is, maybe all other users love your way and not the Firefox way. I can forgive this.</p>
<p>What I can’t, you ask? Well&#8230; the first thing is caused by the existence of Eclipse. You know, we store our resources with Unicode escapes &#8211; that is using transparent native-to-ASCII conversion. And the problem is that you and Eclipse just can’t <a href="http://youtrack.jetbrains.net/issue/IDEA-54895">agree on the same casing</a> of those escape sequences. My dear, my dear, I know&#8230; it may be Eclipses fault too, but as pointed here, you are not in line with native2ascii tool in the first place. This bug might actually be close to some resolution IF&#8230; there wasn’t that resistant bug that appears in a few variants and <a href="http://youtrack.jetbrains.net/issue/IDEA-75368">prevents us from changing the file encoding</a>. Quite serious, don’t you think?</p>
<p>Well, this I had on my heart today (and actually for many days, weeks, even months) and I just needed to get it out. I hope you’ll not take it the wrong way. I told you about my feelings and those are true. Yet I think love is not about being blind, you know. Whatever romantics may say. Of course, <a href="http://youtrack.jetbrains.net/issues?q=by%3Avirgo47+%23IDEA+%23Unresolved">my nitpicking list could go longer</a>, but let’s separate serious stuff from details, shall we&#8230;</p>
<p>And yes, I don’t want to repeat myself&#8230; but if I must. I love you. Of course. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/virgo47.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/virgo47.wordpress.com/570/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/virgo47.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/virgo47.wordpress.com/570/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/virgo47.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/virgo47.wordpress.com/570/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/virgo47.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/virgo47.wordpress.com/570/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/virgo47.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/virgo47.wordpress.com/570/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/virgo47.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/virgo47.wordpress.com/570/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/virgo47.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/virgo47.wordpress.com/570/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virgo47.wordpress.com&amp;blog=2988789&amp;post=570&amp;subd=virgo47&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://virgo47.wordpress.com/2011/10/10/dear-intellij-idea-i-love-you-but/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/af081c81efc82a005def915cde584475?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">virgo47</media:title>
		</media:content>
	</item>
		<item>
		<title>Visual Paradigm for UML by lame user&#8217;s eyes</title>
		<link>http://virgo47.wordpress.com/2011/09/23/visual-paradigm-for-uml-by-lame-users-eyes/</link>
		<comments>http://virgo47.wordpress.com/2011/09/23/visual-paradigm-for-uml-by-lame-users-eyes/#comments</comments>
		<pubDate>Fri, 23 Sep 2011 20:45:01 +0000</pubDate>
		<dc:creator>virgo47</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[diagrams]]></category>
		<category><![CDATA[enterprise architect]]></category>
		<category><![CDATA[sparx]]></category>
		<category><![CDATA[uml]]></category>
		<category><![CDATA[visual paradigm]]></category>
		<category><![CDATA[vp for uml]]></category>
		<category><![CDATA[vpuml]]></category>

		<guid isPermaLink="false">http://virgo47.wordpress.com/?p=566</guid>
		<description><![CDATA[After my previous fast-scan through a few UML tools I decided to try Visual Paradigm for UML for the following reasons: I knew Sparx Enterprise Architect a bit already and wanted to try something new (plus the lowest edition price was a bit lower), outputs look really nice compared to free alternatives (just like Sparx [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virgo47.wordpress.com&amp;blog=2988789&amp;post=566&amp;subd=virgo47&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>After my previous <a href="http://virgo47.wordpress.com/2011/05/31/skimming-the-world-of-uml-tools/">fast-scan through a few UML tools</a> I decided to try Visual Paradigm for UML for the following reasons:</p>
<ul>
<li>I knew Sparx Enterprise Architect a bit already and wanted to try something new (plus the lowest edition price was a bit lower),</li>
<li>outputs look really nice compared to free alternatives (just like Sparx does, and both produce way nicer diagrams than Rational),</li>
<li>I tried VP before (a few years actually), it impressed me then, and it impressed me the second time again.</li>
</ul>
<p>I went for the Modeler Edition as I needed mostly just diagrams and nothing sophisticated behind. It all started with a bit of communication with the company about their one year support policy (simply put, without support you can get fixes, but no version upgrade, if I understand it correctly) and after that I bought one license with one-year support plan.</p>
<p>When I started to draw <a href="http://www.visual-paradigm.com/VPGallery/diagrams/Class.html">class diagrams</a> I was satisfied with overall quality (as expected) but some features were surprisingly&#8230; well&#8230; indigested. It seemed to me like no user before me ever tried to work with gradient fills before. My creed is “nothing changes if nothing is said”, so I went on their support page and told them. There is no Jira-like open bug-tracking, but support is responsive and deals with your problems mostly in a matter of days &#8211; and I had a few more issues with my naive approach to diagrams, trust me. <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  And all of them were solved to my satisfaction. Whow, really &#8211; for a company that has such an non-transparent issue tracking (for other users) I’d hardly expect score to be so great.</p>
<p>I was very happy about class, <a href="http://www.visual-paradigm.com/VPGallery/diagrams/State.html">state machine</a> and <a href="http://www.visual-paradigm.com/VPGallery/diagrams/Activity.html">activity diagrams</a> &#8211; though in case of activity I rather don’t like the UML notation. However I was less happy about <a href="http://www.visual-paradigm.com/VPGallery/diagrams/Object.html">object diagrams</a> because it was rather complicated to get some attributes with specified values in it (far harder than adding an attribute in class diagram). Here you have to dive into dialogs and the VP magic is suddenly over. Also I didn’t like one thing about <a href="http://www.visual-paradigm.com/VPGallery/diagrams/Sequence.html">sequence diagram</a> &#8211; I wanted to model interaction between an instance of a class &#8211; but I was not able to create life-line with just the type name (or turn of the name of the type, or something similar). In the end I rather created life-life with names I wanted (often the same as types) without actually using the existing type from the model. Maybe UML problem rather than VP’s &#8211; I don’t know &#8211; but I just didn’t want to have life-line boxes SO wide.</p>
<p>Apropos, so wide&#8230; all boxes have auto-size icon (bottom right corner), but when you write a long note, it wants to make it one line and extra wide. Also note text never goes under the curled corner rendering part of the box useless and always empty. And positioning of some elements is rather funny when you use grid &#8211; I had two associations between the same two classes and I wasn’t able to align cardinality number equally on both of them (to line or column, whatever the direction was). Alignment of these texts (association name, cardinality, &#8230;) somehow depends on the overall box size instead of text’s baseline. And it’s also not very easy to understand presentation settings and their defaults because some of them are checkboxes in contextual menu of the diagram (this menu is quite deep sometimes and after every change you have to open it again to switch another checkbox), but others are just actions. For instance turning off names of the association end (I display both association and attribute &#8211; and attribute is the name of the association role at the particular end) as a preferred behavior is done somewhere else (Tools/Options, but not diagram contextual menu).</p>
<p>And I also don’t like all the clutter in the Model explorer &#8211; this view is bloated by too many associations for instance &#8211; and you can’t tell which one is which, because it’s not so easy to find usages and show them right on the diagram (or maybe it is, but I remember doing this in Sparx EA much easier without checking the manual).</p>
<p>All in all, I’m happy using this software, but I didn’t realise one serious limitation. Modeler Edition is not limited only on features, but you can’t use it for commercial activity. Not even as a single person when you own it. And that is very serious limitation and suddenly makes the price too high. For just a few more bucks you can go for Enterprise Architect Desktop edition &#8211; I’m not aware of any such limitation there. And quality wise you probably don’t loose any bit.</p>
<p>Soon our company will evaluate where to go with our choice of UML tool &#8211; I hope for our sake we will leave Rational and use something that cares about actual usability &#8211; and Sparx EA is quite a hot candidate. Visual Paradigm seems to be very solid too, but there are less references around us, less actual users. I can use my license forever now (at least it’s perpetual) but only for some other (non-commercial) activity. Happens when you don’t read licenses properly. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/virgo47.wordpress.com/566/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/virgo47.wordpress.com/566/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/virgo47.wordpress.com/566/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/virgo47.wordpress.com/566/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/virgo47.wordpress.com/566/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/virgo47.wordpress.com/566/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/virgo47.wordpress.com/566/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/virgo47.wordpress.com/566/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/virgo47.wordpress.com/566/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/virgo47.wordpress.com/566/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/virgo47.wordpress.com/566/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/virgo47.wordpress.com/566/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/virgo47.wordpress.com/566/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/virgo47.wordpress.com/566/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virgo47.wordpress.com&amp;blog=2988789&amp;post=566&amp;subd=virgo47&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://virgo47.wordpress.com/2011/09/23/visual-paradigm-for-uml-by-lame-users-eyes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/af081c81efc82a005def915cde584475?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">virgo47</media:title>
		</media:content>
	</item>
		<item>
		<title>The worst way to explain dependency injection</title>
		<link>http://virgo47.wordpress.com/2011/07/28/the-worst-way-to-explain-dependency-injection/</link>
		<comments>http://virgo47.wordpress.com/2011/07/28/the-worst-way-to-explain-dependency-injection/#comments</comments>
		<pubDate>Thu, 28 Jul 2011 08:33:23 +0000</pubDate>
		<dc:creator>virgo47</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[cdi]]></category>
		<category><![CDATA[dependency injection]]></category>
		<category><![CDATA[explanations]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[uml]]></category>

		<guid isPermaLink="false">http://virgo47.wordpress.com/?p=563</guid>
		<description><![CDATA[I don’t know, but sometimes I feel like I’m talked to like a child. When I read a book about some technology I expect to learn how to use technology too. I remember reading one book about UML with such a nonsense example from real life that it debased the whole explanation and made it [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virgo47.wordpress.com&amp;blog=2988789&amp;post=563&amp;subd=virgo47&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I don’t know, but sometimes I feel like I’m talked to like a child. When I read a book about some technology I expect to learn how to use technology too. I remember reading one book about UML with such a nonsense example from real life that it debased the whole explanation and made it ridiculous. Add a few cases where picture said something and description something else and a few flaws that were clear even to new learner (yet still confusing) and you have one of those books I can’t recommend at all (I think it was some older edition of Teach Yourself UML in 24 Hours &#8211; and in Czech translation that probably added just more to it).</p>
<p>Now I’m reading (among too many other things) Spring in Action &#8211; and there is that first chapter with Knight and Quest and how you can send Knight for a Quest using dependency injection. But who would do that? Now I was thinking: “Is it possible to manage runtime relations with Spring? Can I control entity creation and inject something to them?” What a stupid questions these are when you know what Spring really is, right? But why they are using Knight and Quest? Who would ever create a system with a knight (or a few of them) and *configure* them and their quests with Spring? Obviously &#8211; nobody.</p>
<p>And just this evening I was checking presentations from one local Oracle conference and professional Java Developer Advocate was explaining CDI and ManagedBeans with one SpaceCapsule and a Cosmonaut who’s ManagedBean was named “yuri”. How real is such an example? It’s not! It’s misleading altogether and that’s what is likely shown to CDI/DI/IoC newbie nowadays! I just can’t understand why&#8230;</p>
<p>Of course, we all play some little games with our code here and there, but I’d expect from new technology introduction also the right way how to use it. What type of situations, when yes and not. I don’t want them to suggest (or just accidentally imply) that I can manage various cosmonauts in my system in CDI &#8211; because that’s just wrong. I can name roles for managed beans, what they should act like in this and that scope&#8230; but “yuri”? Come on. Stop it. Please.</p>
<p>Or do you, readers, think this is the good way? Maybe it is, I don’t know. Sometimes I’m just off the crowd, really &#8211; and not always the right time. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  If you feel it some other way, drop me a line in comments.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/virgo47.wordpress.com/563/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/virgo47.wordpress.com/563/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/virgo47.wordpress.com/563/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/virgo47.wordpress.com/563/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/virgo47.wordpress.com/563/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/virgo47.wordpress.com/563/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/virgo47.wordpress.com/563/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/virgo47.wordpress.com/563/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/virgo47.wordpress.com/563/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/virgo47.wordpress.com/563/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/virgo47.wordpress.com/563/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/virgo47.wordpress.com/563/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/virgo47.wordpress.com/563/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/virgo47.wordpress.com/563/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virgo47.wordpress.com&amp;blog=2988789&amp;post=563&amp;subd=virgo47&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://virgo47.wordpress.com/2011/07/28/the-worst-way-to-explain-dependency-injection/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/af081c81efc82a005def915cde584475?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">virgo47</media:title>
		</media:content>
	</item>
		<item>
		<title>More positive take on Maven</title>
		<link>http://virgo47.wordpress.com/2011/07/19/more-positive-take-on-maven/</link>
		<comments>http://virgo47.wordpress.com/2011/07/19/more-positive-take-on-maven/#comments</comments>
		<pubDate>Tue, 19 Jul 2011 20:15:23 +0000</pubDate>
		<dc:creator>virgo47</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[intellij idea]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://virgo47.wordpress.com/?p=561</guid>
		<description><![CDATA[Sometimes I start making notes on some topic and it takes me months (or even over a year!) to finish that particular post. But I should not wait with this one. Situation with my Maven expertise isn’t much better than when I wrote what I wrote the last time. I found some more around the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virgo47.wordpress.com&amp;blog=2988789&amp;post=561&amp;subd=virgo47&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Sometimes I start making notes on some topic and it takes me months (or even over a year!) to finish that particular post. But I should not wait with this one. Situation with my Maven expertise isn’t much better than when I <a href="http://virgo47.wordpress.com/2011/03/07/honestly-i-hate-maven/">wrote what I wrote</a> the last time. I found <a href="http://escx.blogspot.com/2007/02/hating-maven-less-than-ant.html">some more</a> around the same attitude (or <a href="http://blog.sourcebender.com/2008/06/28/25-things-i-hate-about-maven.html">even more</a>, no problem) &#8211; but also <a href="http://www.sonatype.com/people/2009/05/were-used-to-the-axe-grinding/">something in defence</a> &#8211; right from the people who should know Maven best. And yes, even they agreed with some of the issues (especially on release plugin).</p>
<p>Actually, talking about releasing artifact&#8230; right know I’m reading book about Continuous delivery (of software, of course), we’re still long way to get there all the way, but what strikes me is how often automation is mentioned and stressed. And here we are releasing Maven artifacts after reading dozens of points, installing external software (PGP), configuring tons of stuff and eventually failing in many cases (or just giving up). That’s definitely the biggest failure of Maven in my eyes.</p>
<p>But back to the title! Today it’s positive and &#8211; shame on me! &#8211; here I am spoiling it with all the reiteration of my previous concerns. So what is it that I suddenly like so much about Maven? It’s actually very simple. One thing that Maven really made right was imposing all its rules about project structure on us. Most of our current projects are not really Eclipse anymore, they are Maven projects &#8211; and Eclipse understands them, creates all is necessary files &#8211; but we don’t check in those.</p>
<p>While Eclipse project is not particular problem for my beloved IntelliJ IDEA (the same I cannot say about Eclipse&#8230; well talking about Idea’s project, not Eclipse’s own, of course <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ), using Maven projects in IDEA is just trivial too! And this kind of cooperation is just worth it. Because with Maven, you can go either direction. I just wish the building and all was just as pleasant as is project management.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/virgo47.wordpress.com/561/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/virgo47.wordpress.com/561/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/virgo47.wordpress.com/561/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/virgo47.wordpress.com/561/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/virgo47.wordpress.com/561/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/virgo47.wordpress.com/561/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/virgo47.wordpress.com/561/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/virgo47.wordpress.com/561/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/virgo47.wordpress.com/561/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/virgo47.wordpress.com/561/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/virgo47.wordpress.com/561/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/virgo47.wordpress.com/561/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/virgo47.wordpress.com/561/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/virgo47.wordpress.com/561/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virgo47.wordpress.com&amp;blog=2988789&amp;post=561&amp;subd=virgo47&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://virgo47.wordpress.com/2011/07/19/more-positive-take-on-maven/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/af081c81efc82a005def915cde584475?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">virgo47</media:title>
		</media:content>
	</item>
		<item>
		<title>From IntelliJ IDEA to Eclipse (5)</title>
		<link>http://virgo47.wordpress.com/2011/06/28/from-intellij-idea-to-eclipse-5/</link>
		<comments>http://virgo47.wordpress.com/2011/06/28/from-intellij-idea-to-eclipse-5/#comments</comments>
		<pubDate>Tue, 28 Jun 2011 10:56:00 +0000</pubDate>
		<dc:creator>virgo47</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[comparison]]></category>
		<category><![CDATA[completion]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[ide]]></category>
		<category><![CDATA[idea]]></category>
		<category><![CDATA[intellij]]></category>
		<category><![CDATA[refactoring]]></category>

		<guid isPermaLink="false">http://virgo47.wordpress.com/?p=558</guid>
		<description><![CDATA[It has been some time since I wrote last installment of this series &#8211; and much happened in the meantime. IDEA 10.5 was released (with full support of JDK 7) &#8211; and the whole beast is again a bit faster and better &#8211; though not without bugs. I’ll probably write a dedicated monologue about things [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virgo47.wordpress.com&amp;blog=2988789&amp;post=558&amp;subd=virgo47&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>It has been some time since I wrote last installment of this series &#8211; and much happened in the meantime. <a href="http://www.jetbrains.com/idea/whatsnew/">IDEA 10.5 was released</a> (with full support of JDK 7) &#8211; and the whole beast is again a bit faster and better &#8211; though not without bugs. I’ll probably write a dedicated monologue about things I don’t like in IDEA and why. Then, very recently, <a href="http://eclipse.org/indigo/">Eclipse Indigo was released</a> as well (without Java SE 7 language level support, not that it is make/break feature). One thing I’m very interested in about it is <a href="http://www.eclipse.org/Xtext/">Xtext 2.0</a>, which now seems to be the most driven DSL solution if you want to write text based grammars, models, whatever. (Aside from Xtext, I’m even more interested in <a href="http://www.jetbrains.com/mps/">MPS by JetBrains</a>, but MPS as of now is a bit rugged if you expect the same fluency as with IDEA.)</p>
<p>This gives me opportunity to recheck some features I collected in previous months and haven’t published yet, though I don’t expect some big improvements in Eclipse core features (not sure why, but when I think about it like this, big blue logo always appears somewhere in my mind &#8211; I’m not sure how much IBM is to be blamed, really).</p>
<p>One big thing I don’t like about Eclipse is SVN integration &#8211; and I honestly don’t know how can anyone compare and criticize SVN in IDEA. While I don’t know about Synchronization feature in IDEA, truth is I never needed it! IDEA’s workflow is more in line with SVN &#8211; especially when it comes to <a href="http://virgo47.wordpress.com/2011/02/28/why-to-synchronize-with-svn-in-eclipse/">adding files to the repository</a> (before you actually commit them).</p>
<p>Another and probably more important thing is merging. In IDEA I’ve never been afraid of version conflicts &#8211; at least not technically. Conflict should be about decision making, but with Eclipse it’s a real nightmare instead. Most Eclipse users don’t know what 3-way diff is, there is no way how I can see my version, after-merge version (the result) and incoming version on one screen. This way you can always compare your code with the resulting code, you can move changes from your code to the result, etc. In Eclipse you can only change your code directly &#8211; and hardly see the differences in the end. I often close Eclipse and start Idea on the same project just to resolve conflicts and do commits.</p>
<p>Also files that can be merged perfectly are reported as in-conflict, because two (or more) people were working on them &#8211; this is ridiculous! Eclipse is confusing reporting conflicts, it’s also confusing about files added locally to repository. You have little control over it as new file is again and again suggested as an outgoing change (so you are forced to use SVN ignore, information that is stored in repository, to solve Eclipse’s own problems) &#8211; instead of you being in control and deciding whether the file is in revision control or not. You can add it, but there is no difference.</p>
<p>Let’s compare some refactorings, completion and shortcuts again!</p>
<p>You can easily do basic refactorings on classes in IDEA &#8211; shortcuts are familiar from Norton/TotalCommander (<strong>F5</strong> copy, <strong>Shift+F5</strong> clone, <strong>F6</strong> move, <strong>Shift+F6</strong> rename). This works consistently whether you are in editor with cursor on the class name or in the project tree. In Eclipse you have to go to the project tree and do it there. Clone/copy is <strong>Ctrl+C</strong> and <strong>Ctrl+V</strong>, not sure if that is refactoring. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  <strong>F2</strong> in Eclipse works in project tree, on the class name in the editor you have to use <strong>Alt+Shift+R</strong>.</p>
<p><strong>Ctrl+Space</strong> is the same, but in Eclipse many other features are bound to the same “completion” functionality while in IDEA you have the following: <strong>Ctrl+O</strong> (override), <strong>Ctrl+I</strong> (implements), <strong>Alt+Insert</strong> (toString, setters/getters &#8211; but if you want more than just one of them use<strong> Alt+S</strong>, <strong>R</strong> in Eclipse rather than <strong>Ctrl+Space</strong> &#8211; or bind it to your key somehow) &#8211; and of course also IDEA&#8217;s smart completion <strong>Ctrl+Shift+Space</strong>. Here &#8211; while it may seem stupid to have so many keys in IDEA for every different thing I never had problem with that (because you always know what to do). Also the lists are more focused for various functions while in Eclipse it’s all in one list. The rest is probably just the matter of taste. However, smart completion (<strong>Ctrl+Shift+Space</strong>) from Idea works much better for me than Eclipse’s all-embracing completion. Not to mention Eclipse doesn’t offer enum value completion in method parameters or equals as IDEA naturally does.</p>
<p>Class name completion in non-java files &#8211; IDEA is far superior compared to virtually no completion in (for instance) XML files in Eclipse (may vary in Java EE version).</p>
<p>God/Devil is in the details when it comes to how to accept the completion. In Idea you can press <strong>Tab</strong> or <strong>Enter</strong>. The difference is when you “overwrite” some existing code, identifier, value, whatever. <strong>Tab</strong> is natural for us, Idea crowd, and it replaces the previous stuff. I made the test, check <a href="https://lh4.googleusercontent.com/_mI6W6O01fqE/TWUoFplk_wI/AAAAAAAAPqI/C1REWIp08aM/idea-tab-enter.gif">this animated GIF</a> &#8211; funny that Enter behavior differs with and without smart completion (Ctrl+Space vs. Ctrl+Shift+Space) &#8211; but as it’s mostly not what you want, it doesn’t really matter, right? Eclipse behavior is different when finishing enum and the class (<a href="https://lh4.googleusercontent.com/_mI6W6O01fqE/TWUoJdLNZqI/AAAAAAAAPqM/5Nb2Tyf30II/eclipse-tab-enter.gif">animated GIF</a>, in 3rd case it does what it should, ignore the syntax error) &#8211; to simplify things one can say that <strong>Ctrl+Enter</strong> is always what you want (probably). Many users may not know about the difference or haven’t thought about it, but it indeed is a difference. Here “know your IDE” is the most important thing &#8211; then you can get what you want quickly in both.</p>
<p>Eclipse’s <strong>Ctrl+Space</strong> has one additional feature &#8211; when you press it repeatedly it cycles through a few filtered views (Template Proposals, SWT Template Proposals, JPA Proposals) &#8211; this can be further customized in Preferences/Java/Editor/Content Assist/Advanced.</p>
<p>Finally &#8211; here are two IDEA-positive resources &#8211; about <a href="http://grahamhackingscala.blogspot.com/2010/08/intentional-programming-intellij-idea.html">IDEA knowing what you want</a> (there are more articles in the same month) and one <a href="http://www.canoo.com/blog/tag/idea/">quite an active blog</a>.</p>
<blockquote><p>Don&#8217;t miss other posts on this topic:<br />
<a href="http://virgo47.wordpress.com/2011/01/30/eclipse-vs-intellij-idea/" title="Eclipse vs IntelliJ IDEA">Eclipse vs IntelliJ IDEA</a><br />
<a title="From IntelliJ IDEA to Eclipse (2)" href="http://virgo47.wordpress.com/2011/02/22/from-intellij-idea-to-eclipse-2/">From IntelliJ IDEA to Eclipse (2)</a><br />
<a title="Why to synchronize with SVN in Eclipse?" href="http://virgo47.wordpress.com/2011/02/28/why-to-synchronize-with-svn-in-eclipse/">Why to synchronize with SVN in Eclipse?</a><br />
<a title="From IntelliJ IDEA to Eclipse (3)" href="http://virgo47.wordpress.com/2011/03/24/from-intellij-idea-to-eclipse-3/">From IntelliJ IDEA to Eclipse (3)</a><br />
<a title="From IntelliJ IDEA to Eclipse (4)" href="http://virgo47.wordpress.com/2011/04/10/from-intellij-idea-to-eclipse-4/">From IntelliJ IDEA to Eclipse (4)</a>
</p></blockquote>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/virgo47.wordpress.com/558/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/virgo47.wordpress.com/558/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/virgo47.wordpress.com/558/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/virgo47.wordpress.com/558/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/virgo47.wordpress.com/558/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/virgo47.wordpress.com/558/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/virgo47.wordpress.com/558/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/virgo47.wordpress.com/558/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/virgo47.wordpress.com/558/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/virgo47.wordpress.com/558/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/virgo47.wordpress.com/558/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/virgo47.wordpress.com/558/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/virgo47.wordpress.com/558/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/virgo47.wordpress.com/558/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virgo47.wordpress.com&amp;blog=2988789&amp;post=558&amp;subd=virgo47&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://virgo47.wordpress.com/2011/06/28/from-intellij-idea-to-eclipse-5/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/af081c81efc82a005def915cde584475?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">virgo47</media:title>
		</media:content>
	</item>
		<item>
		<title>Skimming the world of UML tools</title>
		<link>http://virgo47.wordpress.com/2011/05/31/skimming-the-world-of-uml-tools/</link>
		<comments>http://virgo47.wordpress.com/2011/05/31/skimming-the-world-of-uml-tools/#comments</comments>
		<pubDate>Tue, 31 May 2011 07:21:21 +0000</pubDate>
		<dc:creator>virgo47</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[real-life]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[argouml]]></category>
		<category><![CDATA[comparison]]></category>
		<category><![CDATA[enterprise architect]]></category>
		<category><![CDATA[modeler]]></category>
		<category><![CDATA[rational]]></category>
		<category><![CDATA[staruml]]></category>
		<category><![CDATA[uml]]></category>
		<category><![CDATA[visual paradigm]]></category>

		<guid isPermaLink="false">http://virgo47.wordpress.com/?p=554</guid>
		<description><![CDATA[This is just another “skimming” and it will not be objective nor in depth. I needed to draw a few UML pictures and I prefer having some model behind. I honestly believe that tools should be easy, intuitive and just working. I remember how I liked IntelliJ IDEA right from the start (not that it [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virgo47.wordpress.com&amp;blog=2988789&amp;post=554&amp;subd=virgo47&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This is <a href="http://virgo47.wordpress.com/2009/08/03/skimming-java-based-cms-world/">just another “skimming”</a> and it will not be objective nor in depth. I needed to draw a few UML pictures and I prefer having some model behind. I honestly believe that tools should be easy, intuitive and just working. I remember how I liked IntelliJ IDEA right from the start (not that it is flawless or without learning curve!).</p>
<p>What I want &#8211; some class diagram to model my entities (ER diagram will be done in Oracle SQL Developer Data Modeler, that is set in our team), some enums, state machines for enums (some of them are state values) and some sequence diagram here and there. Nothing big, nothing MDD.</p>
<p>In our company we use IBM Rational Software Modeler 7.5.4. I can’t say how it looks in newer versions, but this one is just killing me with it’s “hey! I’m built on Eclipse platform!” approach. I created model for instance, and I went for some design template that I felt is best for me. Alas, the template didn’t have state machine diagram. Can you add it somehow? I don’t know, there is no obvious way? Can you google how? I don’t know, it seems that IBM/Rational did the best job in anti-<a href="http://en.wikipedia.org/wiki/Search_engine_optimization">SEO</a>. Their documentation is most difficult to find with search engines, and kinda&#8230; IBMish. I created new model without template and copied my old model into that one &#8211; what a fix. Even if there is way how to add diagram that is not in template (there always should be!) or how to convert model to another template &#8211; these functions are not easy to find. That’s like they are not there.</p>
<p>And the UI itself &#8211; it’s massive click-fest with minimum keyboard shortcuts (how I love IDEA, because it always tells you in pop-up menus what the shortcut is). Results are quite OK, if you know how to export them. Default export dialog is just another Eclipse-style hell, the same goes for import, you know one expects import where you just specify the file and it’s imported, but in Rational it’s always difficult &#8211; you have to know dozen of steps to do before the actual import. Eclipse based software traditionally has very poor consistency between contextual menus. You have File, Save As Image File&#8230; on right click in the diagram itself, but you don’t have it when you right click the diagram node in Project Explorer, nor you have it in main menu in any expected place. I honestly admire bravery of all those working with this tool.</p>
<p>I tried some other free: ArgoUML (limited UML 2 and undo support, plus I just didn’t like it), StarUML (not in development anymore&#8230; since 2005) and finally <a href="http://astah.change-vision.com/en/product/astah-community.html">astah* community</a>. Astah is probably my favourite choice from those freely available, though its community version has some serious limitations (enums are just ugly if you don’t use professional edition). But it’s much more intuitive than Rational, workflow is much better (well, there is hardly any “flow” in Rational, really) and I will probably use it in my future works.</p>
<p>Then there is one option for non-commercial usage (which means no option for me) &#8211; Visual Paradigm, or rather their <a href="http://www.visual-paradigm.com/product/?favor=vpuml">VP for UML</a>. Their suite (5.2) contains UML modeller (8.2) that is quite usable for drawing, but you’ll suffer quite aggressive watermark if you create more than one diagram per type. This actually means I’d not use it for non-commercial project either &#8211; unless I don’t need image outputs (which I mostly want to have). But the price for modeler edition is quite reasonable ($99) and in overall work with VP for UML was OK. By default their diagrams have rather simple visuals (no gradients so popular today), but they look clean on paper and &#8211; the most important &#8211; there are enough features that are easy to use (with keyboard shortcuts too <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ).</p>
<p>And finally, tool I like most of them &#8211; <a href="http://www.sparxsystems.com.au/">Enterprise Architect</a>. Here I have to say that I worked with this tool. I never liked drawing diagrams (mostly because of the tools itself), but this one makes it quite easy. You have to get used to it’s dialog window workflow, but everything is accessible and resulting diagrams are just nice and clean. Desktop Edition starts at $135 and I think it’s well worth it.</p>
<p>One thing I particularly liked about EA is that it allowed me to bind associations to attributes, so you could see both lines (associations) and attributes in the class. I like attributes as a kind of checklist, without need to go around the box and search for associations &#8211; and I don’t care if it’s UMLish or not. EA allows this and I just love it.</p>
<p>One thing I couldn’t model as I’d wish to &#8211; I have enum and I want its literals to be states in state machine diagram. I don’t know how to do this in any of these tools. Right now I have to repeat myself and add states with the same names as literals in the enum.</p>
<p>After all this, my winners are astah* for being free and EA if one is willing to spend $135. I think for companies it’s definitely much better investment than Rational if you care for sanity of your staff.</p>
<p>I can’t tell how these tools work for more developers, how easy is to keep their project files in SVN, or how you like them after a year or two &#8211; or which one causes the most serious <a href="http://en.wikipedia.org/wiki/Repetitive_strain_injury">RSI</a>. That’s why it’s called skimming after all. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/virgo47.wordpress.com/554/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/virgo47.wordpress.com/554/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/virgo47.wordpress.com/554/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/virgo47.wordpress.com/554/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/virgo47.wordpress.com/554/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/virgo47.wordpress.com/554/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/virgo47.wordpress.com/554/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/virgo47.wordpress.com/554/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/virgo47.wordpress.com/554/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/virgo47.wordpress.com/554/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/virgo47.wordpress.com/554/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/virgo47.wordpress.com/554/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/virgo47.wordpress.com/554/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/virgo47.wordpress.com/554/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virgo47.wordpress.com&amp;blog=2988789&amp;post=554&amp;subd=virgo47&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://virgo47.wordpress.com/2011/05/31/skimming-the-world-of-uml-tools/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/af081c81efc82a005def915cde584475?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">virgo47</media:title>
		</media:content>
	</item>
		<item>
		<title>Javac, UTF8, BOM and Notepad2</title>
		<link>http://virgo47.wordpress.com/2011/05/13/javac-utf8-bom-and-notepad2/</link>
		<comments>http://virgo47.wordpress.com/2011/05/13/javac-utf8-bom-and-notepad2/#comments</comments>
		<pubDate>Fri, 13 May 2011 19:00:13 +0000</pubDate>
		<dc:creator>virgo47</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[bom]]></category>
		<category><![CDATA[javac]]></category>
		<category><![CDATA[notepad2]]></category>
		<category><![CDATA[utf8]]></category>

		<guid isPermaLink="false">http://virgo47.wordpress.com/?p=550</guid>
		<description><![CDATA[Sometimes I loose all my faith in this world. And people, and direction of progress and all. For instance when we discuss browser compatibility &#8211; that’s the most obvious case. I started my Java career in 2000, but of course I had some HTML experience from before. Based on all the inter-browser mess and also [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virgo47.wordpress.com&amp;blog=2988789&amp;post=550&amp;subd=virgo47&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Sometimes I loose all my faith in this world. And people, and direction of progress and all. For instance when we discuss browser compatibility &#8211; that’s the most obvious case. I started my Java career in 2000, but of course I had some HTML experience from before. Based on all the inter-browser mess and also on poor capabilities of HTML/HTTP when you wanted to deliver proper web-application I told to myself quite early: “There must be some other way, some better protocol, sooner or later, something that can push as well, etc.” That was ten years ago.</p>
<p>And we all know where we are now. Maybe, just maybe HTML5 will push things somehow and browsers will converge a bit &#8211; I don’t expect complete compatibility anytime soon. Just maybe.</p>
<p>Today my colleague committed a few Java files that couldn’t be compiled because of the compiler error:</p>
<p><code>illegal character: \65279</code></p>
<p>I quickly found out about UTF-8 and BOM (more <a href="http://illegalargumentexception.blogspot.com/2009/05/java-rough-guide-to-character-encoding.html">here</a>), there is even <a href="http://bugs.sun.com/view_bug.do?bug_id=4508058">bug related to this</a> &#8211; it’s funny to read ironic comments about “bug compatibility” too. After more searching I decided that our sources must not have BOM, even though that it seems it could be there (by Unicode specification) and I’d expect javac to compile it all. My colleagues compiler even did it (maybe some Jikes in Eclipse or what, not sure), but other colleagues experienced “my problem” too. BOM itself was probably introduced by some clever editor.</p>
<p>Now how to get rid of it easily &#8211; it was only in 5 files, some hexa editor would help. It has been some time since I installed <a href="http://www.flos-freeware.ch/notepad2.html">Notepad2</a> on my system. Well, installed&#8230; I <a href="http://www.flos-freeware.ch/doc/notepad2-Replacement.html">replaced original notepad.exe</a> by this one. This way Total Commander opens it without any setup. Notepad2 doesn’t have hexa editor, that’s true, but I noticed that it shows “UTF-8 Signature” in status bar. So I clicked there, changed it to “Unicode (UTF-8)” (without Signature) &#8211; and that was it!</p>
<p>Now &#8211; Notepad2 is far from the only solution here, but I mentioned it because it was a nice surprise how easy and straightforward it was and because it’s just so lovely Notepad, that I really recommend anyone to remove original notepad.exe (quite a pain with all the needed permission messing) and install this one. It’s not replacement for your Crimson or PSPad or whatever, but whenever Windows tries to show you true power of its default Notepad, you’ll be glad you followed my advice. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Trust me.</p>
<p>And seeing things like Notepad2, things that are simple and really work, I often find my positive way again and my faith is restored and I can go on to another endless battle with yet another technological stupidity. May that force be with you as well.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/virgo47.wordpress.com/550/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/virgo47.wordpress.com/550/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/virgo47.wordpress.com/550/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/virgo47.wordpress.com/550/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/virgo47.wordpress.com/550/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/virgo47.wordpress.com/550/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/virgo47.wordpress.com/550/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/virgo47.wordpress.com/550/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/virgo47.wordpress.com/550/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/virgo47.wordpress.com/550/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/virgo47.wordpress.com/550/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/virgo47.wordpress.com/550/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/virgo47.wordpress.com/550/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/virgo47.wordpress.com/550/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virgo47.wordpress.com&amp;blog=2988789&amp;post=550&amp;subd=virgo47&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://virgo47.wordpress.com/2011/05/13/javac-utf8-bom-and-notepad2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/af081c81efc82a005def915cde584475?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">virgo47</media:title>
		</media:content>
	</item>
		<item>
		<title>From IntelliJ IDEA to Eclipse (4)</title>
		<link>http://virgo47.wordpress.com/2011/04/10/from-intellij-idea-to-eclipse-4/</link>
		<comments>http://virgo47.wordpress.com/2011/04/10/from-intellij-idea-to-eclipse-4/#comments</comments>
		<pubDate>Sun, 10 Apr 2011 21:51:24 +0000</pubDate>
		<dc:creator>virgo47</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[comparison]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[ide]]></category>
		<category><![CDATA[idea]]></category>
		<category><![CDATA[intellij]]></category>
		<category><![CDATA[shortcuts]]></category>

		<guid isPermaLink="false">http://virgo47.wordpress.com/?p=545</guid>
		<description><![CDATA[Today I’ll try to focus on key shortcuts more. And also the way you can customize them. In all cases when comparing shortcuts, the first one mentioned is Idea’s, the second is from Eclipse. While Idea has static Default Keymap Reference in its Help menu, Eclipse has Key Assist (Ctrl+Shift+L) &#8211; which is more handy [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virgo47.wordpress.com&amp;blog=2988789&amp;post=545&amp;subd=virgo47&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Today I’ll try to focus on key shortcuts more. And also the way you can customize them. In all cases when comparing shortcuts, the first one mentioned is Idea’s, the second is from Eclipse.</p>
<p>While Idea has static Default Keymap Reference in its Help menu, Eclipse has Key Assist (<strong>Ctrl+Shift+L</strong>) &#8211; which is more handy if you don’t know what you’re looking for (name of the features are not always the same between both products). Idea’s Search Action (<strong>Ctrl+Shift+A</strong>) can compensate for this. Talking about Help menu &#8211; you can check some JetBrains TV videos about IDEA to get better idea how to be productive or just for some tips.</p>
<p>There is Idea keymap for Eclipse (plugin), but I wasn’t satisfied with it’s completeness, plus I wasn’t happy with Idea shortcut acting the Eclipse way &#8211; and you can’t change that. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  And I also want to be able use Eclipse on colleague’s computers too &#8211; so why not to learn it with its shortcuts? Well&#8230;</p>
<p>One recommendation actually &#8211; duplicate (called copy line in Eclipse) and delete line &#8211; you may want to change those. You can mostly live with rest (yes even with <strong>Enter</strong> vs <strong>Tab</strong> to confirm completion) but <strong>Ctrl+D</strong> will soon kill you, especially if you are forced to work in Eclipse more than you can in Idea. I changed it in the Default scheme, because when I wanted to create a new one, I found out it’s not possible in any simple way.</p>
<p>Shortcut Schemes cannot be copied inside of Eclipse. If you’re wondering how to create a new one, wonder no more &#8211; you have to do it <a href="http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.platform.doc.isv/guide/wrkAdv_keyBindings_accelConfig.htm">this way</a> (not that I understand that page too much). I’m also not sure how you can add more binds to one action (not a sequence, but two different combinations). Long way to catch Idea on this one.</p>
<p>OK, and now some “Idea-Eclipse remapping” right?</p>
<ul>
<li><strong>Alt+Enter</strong> is <strong>Ctrl+1</strong> &#8211; called quick fix</li>
<li><strong>Ctrl+H</strong> is <strong>F4</strong> &#8211; view type hierarchy</li>
<li><strong>Ctrl+B</strong> or <strong>F4</strong> is <strong>F3</strong> (<strong>Ctrl+left click</strong> works the same, though a bit lazily &#8211; you have to wait till Eclipse underlines the stuff &#8211; maybe even move the cursor a bit, sometimes I can’t force Eclipse to understand this) &#8211; you’ll probably mess F3 with F4 a bit</li>
<li><strong>F3</strong>, <strong>Shift+F3</strong> is <strong>Ctrl+K</strong> and <strong>Ctrl+Shift+K</strong> &#8211; next/previous search, in Eclipse you can just select stuff and press <strong>Ctrl+K</strong>, in Idea you have to <strong>Ctrl+F</strong> it or highlight it with <strong>Ctrl+Shift+F7</strong>, then <strong>F3</strong></li>
<li><strong>F2</strong>, <strong>Shift+F2</strong> is <strong>Ctrl+.</strong> and <strong>Ctrl+,</strong> &#8211; next/previous error/warning, in both IDEs you can set to focus on errors first instead of mixing warnings in too &#8211; in Eclipse go to Preferences, General, Editors, Text Editors, Annotations and there you can include many things into this kind of search</li>
<li><strong>Ctrl+Y</strong> is <strong>Ctrl+D</strong> &#8211; what a shock for delete a line <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </li>
<li><strong>Ctrl+D</strong> is <strong>Ctrl+Alt+Down</strong>/<strong>Up</strong> (but only for whole lines) &#8211; now you see why I recommend to switch at least this, Eclipse’s option to copy up or down is quite nice, though minor feature</li>
<li><strong>Ctrl+W</strong>/<strong>Ctrl+Shift+W</strong> is <strong>Alt+Shift+Up</strong>/<strong>Down</strong> &#8211; but the selection jumps differently than in Idea and you will probably not like it at all, in Idea it really starts with word &#8211; even inside of strings, but not in Eclipse; funny enough, while word selection is way too eager in Eclipse, <strong>Ctrl+Left</strong>/<strong>Right</strong> jumps to camel humps inside words (which in most cases is too slow for me, but YMMV of course, you can switch it in Preferences); you will also probably hate selection expansion on property names, where I want to start with one word again, not the whole property</li>
<li>Eclipse has <strong>Ctrl+J</strong> for incremental search &#8211; this is mostly similar to <strong>Ctrl+F</strong> in Idea, though Idea’s <strong>Enter/Escape</strong> workflow in the search bar could be better for smoother feel (<a href="http://youtrack.jetbrains.net/issue/IDEA-64828">but maybe nobody feels the same</a>)</li>
<li><strong>Ctrl+G</strong> is <strong>Ctrl+L</strong> &#8211; go to line</li>
<li><strong>Ctrl+Alt+V</strong> (as variable) is <strong>Alt+Shift+L</strong> (as local)</li>
<li><strong>Ctrl+Alt+C</strong> (constant) is only in menu &#8211; <strong>Alt-T</strong> (T as refactor <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ) and there press <strong>A</strong> (as … well, constant). This leads us to menu mnemonics. Maybe in Eclipse they are problematic because of some history (that is shorter than Idea, BTW), I don’t know. But however you look at it, refactor is not so important, so intuitive, you have to remember strange shortcuts or add your own (which means changes to the Default key scheme for most normal users)</li>
<li>Instead of File Structure View (<strong>Ctrl+F12</strong>) you have Outline (<strong>Ctrl+O</strong>) in Eclipse. While in outline you can lookup any member from nested classes (<a href="http://youtrack.jetbrains.net/issue/IDEA-65527">something I suggested</a> for Idea a few days back) you can’t use camel humps lookup (gF for getFilter for instance)</li>
<li><strong>Ctrl+N</strong> is <strong>Ctrl+Shift+T</strong> to find class quickly &#8211; camel humps work nicely in both</li>
<li><strong>Ctrl+Shift+N</strong> is <strong>Ctrl+Shift+R</strong> to find any resource (file)</li>
</ul>
<p>Find in path (Idea’s <strong>Ctrl+Shift+F</strong>) is quite a pain really. There is no item for this in context menu on the project tree, you have to select the directory, go to menu Search and select File&#8230; I don’t feel like searching for file, I take it more like searching for occurrences, but whatever. After this you have to switch radio button to “Selected resources” (I honestly wouldn’t understand that without help, though directory is kinda resource too, right?) and there you go finally. Many Eclipse users don’t know what that radio button means and they rather go with working sets or just change pattern for files if possible. Very, very non-intuitive.</p>
<p>Find usages (<strong>Alt+F7</strong>) is here (<strong>Ctrl+H</strong>) but funny enough my Eclipse mates wondered why I ask if I can see the actual lines with occurrence in the search results. Maybe just to know how the same method was used without going to the source! <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  I’m sure we (Idea users) miss some funny features from Eclipse too and we don’t know about them yet. Sometimes I’m in doubt if we all code in Java really &#8211; so many mindset differences. Also be aware that Eclipse might open all your search results in a single tab &#8211; you can change this in Preferences. Also the behavior of this find is very annoying. In non-java files it mostly offers File Search (text search) tab as default, but in Java it offers Java Search with File Search tab missing altogether. That’s the famous “context-awareness” of Eclipse in its worst moments, if you ask me.</p>
<p>Comment the line (<strong>Ctrl+/</strong> in both IDEs) works in Java but not in XML/HTML/CSS [EDIT: reportedly it does for JavaEE version]. (CSS doesn’t work in Idea Community Edition either, but then &#8211; CSS syntax is officially not supported there.)</p>
<p><strong>Alt+Shift+Insert</strong> for column selection mode is <strong>Alt+Shift+A</strong>. No problem with selection behavior either.</p>
<p>Open recently closed editors with <strong>Ctrl+E</strong>? Depends&#8230; there is no list of files recently closed (quite a shame if you ask me), but you can quickly reopen the last one using <strong>Ctrl+Q</strong> (last edit location) or hope that your recently closed tab was one of those recently open and then you can use <strong>Alt+F</strong> and some number (default last 4 can be changed to 9, I strongly recommend that if you need it in your workflow). This is feature I really miss in Eclipse &#8211; and from what I asked, many Eclipse users too.</p>
<p>Finally two more links:</p>
<ul>
<li><a href="http://www.rossenstoyanchev.org/write/prog/eclipse/eclipse3.html">Essential Eclipse Shortcuts</a> (in line with today’s post)</li>
<li>And some <a href="http://benpryor.com/blog/2006/03/03/top-10-tips-for-new-eclipse-users/">tips for new Eclipse users</a></li>
</ul>
<p>I have a bunch of other things prepared, completion comparison mostly with some animated gifs, so stay tuned!</p>
<blockquote><p>Don&#8217;t miss other posts on this topic:<br />
<a href="http://virgo47.wordpress.com/2011/01/30/eclipse-vs-intellij-idea/" title="Eclipse vs IntelliJ IDEA">Eclipse vs IntelliJ IDEA</a><br />
<a title="From IntelliJ IDEA to Eclipse (2)" href="http://virgo47.wordpress.com/2011/02/22/from-intellij-idea-to-eclipse-2/">From IntelliJ IDEA to Eclipse (2)</a><br />
<a title="Why to synchronize with SVN in Eclipse?" href="http://virgo47.wordpress.com/2011/02/28/why-to-synchronize-with-svn-in-eclipse/">Why to synchronize with SVN in Eclipse?</a><br />
<a title="From IntelliJ IDEA to Eclipse (3)" href="http://virgo47.wordpress.com/2011/03/24/from-intellij-idea-to-eclipse-3/">From IntelliJ IDEA to Eclipse (3)</a><br />
<a title="From IntelliJ IDEA to Eclipse (5)" href="http://virgo47.wordpress.com/2011/06/28/from-intellij-idea-to-eclipse-5/">From IntelliJ IDEA to Eclipse (5)</a></p></blockquote>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/virgo47.wordpress.com/545/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/virgo47.wordpress.com/545/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/virgo47.wordpress.com/545/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/virgo47.wordpress.com/545/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/virgo47.wordpress.com/545/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/virgo47.wordpress.com/545/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/virgo47.wordpress.com/545/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/virgo47.wordpress.com/545/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/virgo47.wordpress.com/545/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/virgo47.wordpress.com/545/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/virgo47.wordpress.com/545/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/virgo47.wordpress.com/545/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/virgo47.wordpress.com/545/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/virgo47.wordpress.com/545/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=virgo47.wordpress.com&amp;blog=2988789&amp;post=545&amp;subd=virgo47&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://virgo47.wordpress.com/2011/04/10/from-intellij-idea-to-eclipse-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/af081c81efc82a005def915cde584475?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">virgo47</media:title>
		</media:content>
	</item>
	</channel>
</rss>
