<?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>Technoblog by Boris Kirzner</title>
	<atom:link href="http://boriskirzner.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://boriskirzner.wordpress.com</link>
	<description>Only empy files are bugless</description>
	<lastBuildDate>Mon, 23 Jul 2012 04:08:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='boriskirzner.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Technoblog by Boris Kirzner</title>
		<link>http://boriskirzner.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://boriskirzner.wordpress.com/osd.xml" title="Technoblog by Boris Kirzner" />
	<atom:link rel='hub' href='http://boriskirzner.wordpress.com/?pushpress=hub'/>
		<item>
		<title>301 Moved Permanently</title>
		<link>http://boriskirzner.wordpress.com/2008/03/29/301-moved-permanently/</link>
		<comments>http://boriskirzner.wordpress.com/2008/03/29/301-moved-permanently/#comments</comments>
		<pubDate>Sat, 29 Mar 2008 14:35:47 +0000</pubDate>
		<dc:creator>Boris Kirzner</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://boriskirzner.wordpress.com/2008/03/29/301-moved-permanently/</guid>
		<description><![CDATA[This blog has permanently moved to http://boris.kirzner.info/blog/<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=boriskirzner.wordpress.com&#038;blog=309337&#038;post=47&#038;subd=boriskirzner&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>This blog has permanently moved to <a href="http://boris.kirzner.info/blog/">http://boris.kirzner.info/blog/</a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/boriskirzner.wordpress.com/47/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/boriskirzner.wordpress.com/47/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/boriskirzner.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/boriskirzner.wordpress.com/47/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=boriskirzner.wordpress.com&#038;blog=309337&#038;post=47&#038;subd=boriskirzner&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://boriskirzner.wordpress.com/2008/03/29/301-moved-permanently/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/4dae49665098fb225f1f342c6ff846e8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Boris Kirzner</media:title>
		</media:content>
	</item>
		<item>
		<title>The rule of thumb</title>
		<link>http://boriskirzner.wordpress.com/2008/01/03/the-rule-of-thumb/</link>
		<comments>http://boriskirzner.wordpress.com/2008/01/03/the-rule-of-thumb/#comments</comments>
		<pubDate>Thu, 03 Jan 2008 09:12:30 +0000</pubDate>
		<dc:creator>Boris Kirzner</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://boriskirzner.wordpress.com/2008/01/03/the-rule-of-thumb/</guid>
		<description><![CDATA[If you may configure something using Spring &#8212; never ever try to configure the same thing with Hibernate. Sorry, Gavin.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=boriskirzner.wordpress.com&#038;blog=309337&#038;post=46&#038;subd=boriskirzner&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>If you may configure something using Spring &#8212; never ever try to configure the same thing with Hibernate.</p>
<p>Sorry, Gavin.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/boriskirzner.wordpress.com/46/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/boriskirzner.wordpress.com/46/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/boriskirzner.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/boriskirzner.wordpress.com/46/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=boriskirzner.wordpress.com&#038;blog=309337&#038;post=46&#038;subd=boriskirzner&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://boriskirzner.wordpress.com/2008/01/03/the-rule-of-thumb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/4dae49665098fb225f1f342c6ff846e8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Boris Kirzner</media:title>
		</media:content>
	</item>
		<item>
		<title>Is the modern software getting more and more humanlike?</title>
		<link>http://boriskirzner.wordpress.com/2007/12/20/is-the-modern-software-getting-more-and-more-humanlike/</link>
		<comments>http://boriskirzner.wordpress.com/2007/12/20/is-the-modern-software-getting-more-and-more-humanlike/#comments</comments>
		<pubDate>Thu, 20 Dec 2007 17:10:47 +0000</pubDate>
		<dc:creator>Boris Kirzner</dc:creator>
				<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://boriskirzner.wordpress.com/2007/12/20/is-the-modern-software-getting-more-and-more-humanlike/</guid>
		<description><![CDATA[The colleague of mine just got this from his IntelliJ IDEA 7.0.2: At least it apologizes&#8230;<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=boriskirzner.wordpress.com&#038;blog=309337&#038;post=45&#038;subd=boriskirzner&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>The colleague of mine just got this from his IntelliJ IDEA 7.0.2:</p>
<p><img src='http://boriskirzner.files.wordpress.com/2007/12/idea_cannot_message.gif?w=480' alt='idea_cannot_message.gif' /></p>
<p>At least it apologizes&#8230;</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/boriskirzner.wordpress.com/45/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/boriskirzner.wordpress.com/45/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/boriskirzner.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/boriskirzner.wordpress.com/45/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=boriskirzner.wordpress.com&#038;blog=309337&#038;post=45&#038;subd=boriskirzner&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://boriskirzner.wordpress.com/2007/12/20/is-the-modern-software-getting-more-and-more-humanlike/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/4dae49665098fb225f1f342c6ff846e8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Boris Kirzner</media:title>
		</media:content>

		<media:content url="http://boriskirzner.files.wordpress.com/2007/12/idea_cannot_message.gif" medium="image">
			<media:title type="html">idea_cannot_message.gif</media:title>
		</media:content>
	</item>
		<item>
		<title>Good old IE bug?</title>
		<link>http://boriskirzner.wordpress.com/2007/11/12/good-old-ie-bug/</link>
		<comments>http://boriskirzner.wordpress.com/2007/11/12/good-old-ie-bug/#comments</comments>
		<pubDate>Mon, 12 Nov 2007 12:54:01 +0000</pubDate>
		<dc:creator>Boris Kirzner</dc:creator>
				<category><![CDATA[Bugs]]></category>

		<guid isPermaLink="false">http://boriskirzner.wordpress.com/2007/11/12/good-old-ie-bug/</guid>
		<description><![CDATA[May someone explain me why the following HTML code is causing IE6 SP2 crash? &#60;html xmlns="http://www.w3.org/1999/xhtml"&#62; &#60;body&#62; &#60;table&#62; &#60;tr&#62; &#60;td&#62; &#60;table style="table-layout:fixed"&#62; &#60;col width="20"/&#62; &#60;/table&#62; &#60;/td&#62; &#60;/tr&#62; &#60;/table&#62; &#60;/body&#62; &#60;/html&#62; Bonus: CodeColorizer<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=boriskirzner.wordpress.com&#038;blog=309337&#038;post=43&#038;subd=boriskirzner&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>May someone explain me why the following HTML code is causing IE6 SP2 crash?
<pre><FONT SIZE="+1"><span class="cch1"><font color="gray"></font></span><FONT COLOR="BLACK">&lt;</FONT><FONT COLOR="BLUE"><B>html</B></FONT> xmlns<FONT COLOR="BLACK">=</FONT><FONT COLOR="PURPLE">"http://www.w3.org/1999/xhtml"</FONT><FONT COLOR="BLACK">&gt;</FONT><span class="cch1"><font color="gray">
</font></span><FONT COLOR="BLACK">&lt;</FONT><FONT COLOR="BLUE"><B>body</B></FONT><FONT COLOR="BLACK">&gt;</FONT><span class="cch1"><font color="gray">
</font></span><FONT COLOR="BLACK">&lt;</FONT><FONT COLOR="BLUE"><B>table</B></FONT><FONT COLOR="BLACK">&gt;</FONT><span class="cch1"><font color="gray">
    </font></span><FONT COLOR="BLACK">&lt;</FONT><FONT COLOR="BLUE"><B>tr</B></FONT><FONT COLOR="BLACK">&gt;</FONT><span class="cch1"><font color="gray">
        </font></span><FONT COLOR="BLACK">&lt;</FONT><FONT COLOR="BLUE"><B>td</B></FONT><FONT COLOR="BLACK">&gt;</FONT><span class="cch1"><font color="gray">
            </font></span><FONT COLOR="BLACK">&lt;</FONT><FONT COLOR="BLUE"><B>table</B></FONT> <FONT COLOR="BLUE"><B>style</B></FONT><FONT COLOR="BLACK">=</FONT><FONT COLOR="PURPLE">"table-layout:fixed"</FONT><FONT COLOR="BLACK">&gt;</FONT><span class="cch1"><font color="gray">
                </font></span><FONT COLOR="BLACK">&lt;</FONT><FONT COLOR="BLUE"><B>col</B></FONT> width<FONT COLOR="BLACK">=</FONT><FONT COLOR="PURPLE">"20"</FONT><FONT COLOR="BLACK">/</FONT><FONT COLOR="BLACK">&gt;</FONT><span class="cch1"><font color="gray">
            </font></span><FONT COLOR="BLACK">&lt;</FONT><FONT COLOR="BLACK">/</FONT><FONT COLOR="BLUE"><B>table</B></FONT><FONT COLOR="BLACK">&gt;</FONT><span class="cch1"><font color="gray">
        </font></span><FONT COLOR="BLACK">&lt;</FONT><FONT COLOR="BLACK">/</FONT><FONT COLOR="BLUE"><B>td</B></FONT><FONT COLOR="BLACK">&gt;</FONT><span class="cch1"><font color="gray">
    </font></span><FONT COLOR="BLACK">&lt;</FONT><FONT COLOR="BLACK">/</FONT><FONT COLOR="BLUE"><B>tr</B></FONT><FONT COLOR="BLACK">&gt;</FONT><span class="cch1"><font color="gray">
</font></span><FONT COLOR="BLACK">&lt;</FONT><FONT COLOR="BLACK">/</FONT><FONT COLOR="BLUE"><B>table</B></FONT><FONT COLOR="BLACK">&gt;</FONT><span class="cch1"><font color="gray">
</font></span><FONT COLOR="BLACK">&lt;</FONT><FONT COLOR="BLACK">/</FONT><FONT COLOR="BLUE"><B>body</B></FONT><FONT COLOR="BLACK">&gt;</FONT><span class="cch1"><font color="gray">
</font></span><FONT COLOR="BLACK">&lt;</FONT><FONT COLOR="BLACK">/</FONT><FONT COLOR="BLUE"><B>html</B></FONT><FONT COLOR="BLACK">&gt;</FONT></FONT></pre>
<p>Bonus: <a href="http://www.chamisplace.com/colorizer/cc.asp">CodeColorizer</a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/boriskirzner.wordpress.com/43/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/boriskirzner.wordpress.com/43/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/boriskirzner.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/boriskirzner.wordpress.com/43/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=boriskirzner.wordpress.com&#038;blog=309337&#038;post=43&#038;subd=boriskirzner&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://boriskirzner.wordpress.com/2007/11/12/good-old-ie-bug/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/4dae49665098fb225f1f342c6ff846e8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Boris Kirzner</media:title>
		</media:content>
	</item>
		<item>
		<title>Playing around with IntelliJ IDEA 7</title>
		<link>http://boriskirzner.wordpress.com/2007/10/30/playing-around-with-intellij-idea-7/</link>
		<comments>http://boriskirzner.wordpress.com/2007/10/30/playing-around-with-intellij-idea-7/#comments</comments>
		<pubDate>Tue, 30 Oct 2007 08:11:06 +0000</pubDate>
		<dc:creator>Boris Kirzner</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://boriskirzner.wordpress.com/2007/10/30/playing-around-with-intellij-idea-7/</guid>
		<description><![CDATA[There is something charming in those small things IDE developers make for us.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=boriskirzner.wordpress.com&#038;blog=309337&#038;post=41&#038;subd=boriskirzner&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>There is something charming in those small things IDE developers make for us.
<p>
<img src='http://boriskirzner.files.wordpress.com/2007/10/idea7-lookup.png?w=480' alt='idea7-lookup.png'></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/boriskirzner.wordpress.com/41/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/boriskirzner.wordpress.com/41/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/boriskirzner.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/boriskirzner.wordpress.com/41/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=boriskirzner.wordpress.com&#038;blog=309337&#038;post=41&#038;subd=boriskirzner&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://boriskirzner.wordpress.com/2007/10/30/playing-around-with-intellij-idea-7/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/4dae49665098fb225f1f342c6ff846e8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Boris Kirzner</media:title>
		</media:content>

		<media:content url="http://boriskirzner.files.wordpress.com/2007/10/idea7-lookup.png" medium="image">
			<media:title type="html">idea7-lookup.png</media:title>
		</media:content>
	</item>
		<item>
		<title>Mainsoft makes one more step forward to developing Grasshopper community</title>
		<link>http://boriskirzner.wordpress.com/2007/07/11/mainsoft-makes-one-more-step-forward-to-developing-grasshopper-community/</link>
		<comments>http://boriskirzner.wordpress.com/2007/07/11/mainsoft-makes-one-more-step-forward-to-developing-grasshopper-community/#comments</comments>
		<pubDate>Wed, 11 Jul 2007 12:52:08 +0000</pubDate>
		<dc:creator>Boris Kirzner</dc:creator>
				<category><![CDATA[Grasshopper]]></category>

		<guid isPermaLink="false">http://boriskirzner.wordpress.com/2007/07/11/mainsoft-makes-one-more-step-forward-to-developing-grasshopper-community/</guid>
		<description><![CDATA[This week Mainsoft introduced a new source of information for all Grasshopper users: &#171;The Grasshoppers&#187; blog. Although currently there is only one person actually blogging there, this is a promising step forward to developing a rich community of both Grasshopper users and developers. By the way, it worth to take a look at full Grasshopper [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=boriskirzner.wordpress.com&#038;blog=309337&#038;post=39&#038;subd=boriskirzner&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>This week Mainsoft introduced a new source of information for all Grasshopper users: <a href="http://blog.mainsoft.com/blog/">&laquo;The Grasshoppers&raquo; blog</a>.<br />
Although currently there is only one person actually blogging there, this is a promising step forward to developing a rich community of both Grasshopper users and developers.</p>
<p>By the way, it worth to take a look at <a href="http://blog.mainsoft.com/blog/about/">full Grasshopper bloggers list</a>.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/boriskirzner.wordpress.com/39/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/boriskirzner.wordpress.com/39/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/boriskirzner.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/boriskirzner.wordpress.com/39/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=boriskirzner.wordpress.com&#038;blog=309337&#038;post=39&#038;subd=boriskirzner&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://boriskirzner.wordpress.com/2007/07/11/mainsoft-makes-one-more-step-forward-to-developing-grasshopper-community/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/4dae49665098fb225f1f342c6ff846e8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Boris Kirzner</media:title>
		</media:content>
	</item>
		<item>
		<title>Mono and CafePress</title>
		<link>http://boriskirzner.wordpress.com/2007/06/26/mono-and-cafepress/</link>
		<comments>http://boriskirzner.wordpress.com/2007/06/26/mono-and-cafepress/#comments</comments>
		<pubDate>Tue, 26 Jun 2007 06:36:25 +0000</pubDate>
		<dc:creator>Boris Kirzner</dc:creator>
				<category><![CDATA[Mono]]></category>

		<guid isPermaLink="false">http://boriskirzner.wordpress.com/2007/06/26/mono-and-cafepress/</guid>
		<description><![CDATA[Since CafePress is still lacking any kind of Mono project stuff, I decided to make one of my own. There is nothing better than starting you morning with a good cup of Mono&#8230;<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=boriskirzner.wordpress.com&#038;blog=309337&#038;post=37&#038;subd=boriskirzner&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Since CafePress is still lacking any kind of Mono project stuff, I decided to make one of my own.</p>
<p><img src='http://boriskirzner.files.wordpress.com/2007/06/mono_cup.jpg?w=480' alt='mono_cup.jpg' style='margin-left:auto;margin-right:auto;'></p>
<p>There is nothing better than starting you morning with a good cup of Mono&#8230;</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/boriskirzner.wordpress.com/37/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/boriskirzner.wordpress.com/37/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/boriskirzner.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/boriskirzner.wordpress.com/37/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=boriskirzner.wordpress.com&#038;blog=309337&#038;post=37&#038;subd=boriskirzner&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://boriskirzner.wordpress.com/2007/06/26/mono-and-cafepress/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/4dae49665098fb225f1f342c6ff846e8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Boris Kirzner</media:title>
		</media:content>

		<media:content url="http://boriskirzner.files.wordpress.com/2007/06/mono_cup.jpg" medium="image">
			<media:title type="html">mono_cup.jpg</media:title>
		</media:content>
	</item>
		<item>
		<title>Source code inspection framework wanted</title>
		<link>http://boriskirzner.wordpress.com/2007/06/11/source-code-inspection-framework-wanted/</link>
		<comments>http://boriskirzner.wordpress.com/2007/06/11/source-code-inspection-framework-wanted/#comments</comments>
		<pubDate>Mon, 11 Jun 2007 08:07:27 +0000</pubDate>
		<dc:creator>Boris Kirzner</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Ideas]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://boriskirzner.wordpress.com/2007/06/11/source-code-inspection-framework-wanted/</guid>
		<description><![CDATA[Another example of problem similar to hashCode() mutability is an option for broken &#171;consistent with equals&#187; contract imposed by implementation of java.util.TreeSet while implementing java.util.Comparator. Actually, both of these cases (as well as a numerous others) are just an evidence of much wider problem &#8211; the requirement to follow some kind of contract various infrastructure [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=boriskirzner.wordpress.com&#038;blog=309337&#038;post=34&#038;subd=boriskirzner&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Another example of problem similar to <a href="http://boriskirzner.wordpress.com/2007/05/29/back-to-hashcode-mutability/"><code><font size="-0">hashCode()</font></code> mutability</a> is an option for broken &laquo;consistent with equals&raquo; contract imposed by implementation of <a href="http://java.sun.com/javase/6/docs/api/java/util/TreeSet.html"><code><font size="-0">java.util.TreeSet</font></code></a> while implementing <a href="http://java.sun.com/javase/6/docs/api/java/util/Comparator.html"><code><font size="-0">java.util.Comparator</font></code></a>.</p>
<p>Actually, both of these cases (as well as a numerous others) are just an evidence of much wider problem &#8211; the requirement to follow some kind of contract various infrastructure implementations rely on and lack of ability to validate/impose such a constraints using existing IDEs and tools. The basic of this is the fact no IDE vendor can track an implementations of an infrastructure libraries existing (the best support feasible to achieve is Microsoft-style solution: an inspection for .Net framework libraries embedded into Visual Studio) and thus creating inspections &#8220;by reaction&#8221; will always loose the battle.</p>
<p> The best way to avoid the gap between software component and the inspections is to eliminate the &#8220;broken phone&#8221; between the software developer, the documentation developer and the inspections developer. This presents an &laquo;inspection by creator&raquo; paradigm &#8211; inspections are developed in parallel with a software component (and in ideal case by the the same software developer), embedded within the component, and shipped with it.</p>
<p>
Summarizing the basic requirements for such a framework:</p>
<ul>
<li> <strong>Development simplicity:</strong> the inspection language should provide a way to create an inspections in declarative manner, rather than by reflection-style coding.</li>
<li> <strong>Lexical compliance:</strong> the inspections declaration language should be close enough to the syntax of programming language constructs inspections apply to (thus, there should coexist inspections framework implementations of the common functionality for the <i>different platforms</i> like Java and .Net and different <i>per programming language extensions</i> on the same platform like C# and VB.Net).</li>
<li> <strong>Multiple inspection sources:</strong> there should be and option for predefined inspections (shipped with the framework), vendor inspections (developed and shipped with particular software component) and ad-hoc custom inspections (in-house development of software component users).</li>
<li> <strong>Binding:</strong> there should be a way to associate the inspections with the related code structures (classes, methods, fields and properties) and ideally &#8212; keep and maintain them within the code.</li>
<li> <strong>Universality:</strong> inspections should be applied in &laquo;to subject&raquo; and &laquo;to object&raquo; manners (i.e. relate to the code structure associated with the inspection or to the code caller).</li>
</ul>
<p>Upon meeting the two first requirements the last three can be easily accomplished by using existing standard mechanisms like annotations and attributes.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/boriskirzner.wordpress.com/34/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/boriskirzner.wordpress.com/34/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/boriskirzner.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/boriskirzner.wordpress.com/34/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=boriskirzner.wordpress.com&#038;blog=309337&#038;post=34&#038;subd=boriskirzner&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://boriskirzner.wordpress.com/2007/06/11/source-code-inspection-framework-wanted/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/4dae49665098fb225f1f342c6ff846e8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Boris Kirzner</media:title>
		</media:content>
	</item>
		<item>
		<title>A new security blog around</title>
		<link>http://boriskirzner.wordpress.com/2007/06/05/a-new-security-blog-around/</link>
		<comments>http://boriskirzner.wordpress.com/2007/06/05/a-new-security-blog-around/#comments</comments>
		<pubDate>Tue, 05 Jun 2007 08:32:35 +0000</pubDate>
		<dc:creator>Boris Kirzner</dc:creator>
				<category><![CDATA[Blogroll]]></category>

		<guid isPermaLink="false">http://boriskirzner.wordpress.com/2007/06/05/a-new-security-blog-around/</guid>
		<description><![CDATA[Imperva CTO, Amichai Shulman has launched his own security-oriented blog. He moistly writes about enterprise security &#171;metas&#187;, providing a lot of valuable background information resources. A must-read for any enterprise-level developer.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=boriskirzner.wordpress.com&#038;blog=309337&#038;post=35&#038;subd=boriskirzner&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Imperva CTO, Amichai Shulman has launched <a href="http://impervaadc.typepad.com/">his own security-oriented blog</a>.</p>
<p>He moistly writes about enterprise security &laquo;metas&raquo;, providing a lot of valuable background information resources. A must-read for any enterprise-level developer.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/boriskirzner.wordpress.com/35/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/boriskirzner.wordpress.com/35/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/boriskirzner.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/boriskirzner.wordpress.com/35/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=boriskirzner.wordpress.com&#038;blog=309337&#038;post=35&#038;subd=boriskirzner&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://boriskirzner.wordpress.com/2007/06/05/a-new-security-blog-around/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/4dae49665098fb225f1f342c6ff846e8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Boris Kirzner</media:title>
		</media:content>
	</item>
		<item>
		<title>Back to hashCode() mutability</title>
		<link>http://boriskirzner.wordpress.com/2007/05/29/back-to-hashcode-mutability/</link>
		<comments>http://boriskirzner.wordpress.com/2007/05/29/back-to-hashcode-mutability/#comments</comments>
		<pubDate>Tue, 29 May 2007 12:55:44 +0000</pubDate>
		<dc:creator>Boris Kirzner</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://boriskirzner.wordpress.com/2007/05/29/back-to-hashcode-mutability/</guid>
		<description><![CDATA[My &#171;HashSet.contains(): does your basket contain something?&#187; post got too expected responses: &#171;There is no way to avoid this behavior, why should you expect something else?&#187;. Sure this behavior can not be changed &#8212; it&#8217;s in nature of any hashed collection. I do not expect anyone to tilt at windmills. What I do expect is, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=boriskirzner.wordpress.com&#038;blog=309337&#038;post=21&#038;subd=boriskirzner&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>My <a href="http://boriskirzner.wordpress.com/2006/10/01/hashsetcontains-does-your-busket-contain-something/">&laquo;HashSet.contains(): does your basket contain something?&raquo;</a> post got too expected responses: &laquo;There is no way to avoid this behavior, why should you expect something else?&raquo;.</p>
<p>Sure this behavior can not be changed &#8212; it&#8217;s in nature of any hashed collection. I do not expect anyone to tilt at windmills. What I do expect is, first, ensure I will never stuck with this bug again and, second, prevent others from falling into the same trap. And this is definitely the point I expect the software vendors to help me.<br />
Let&#8217;s look one more into the root of the problem: hash code should not be mutable while the entity exists in the collection. Actually, since we can newer be sure it does not, the hash code should never change since the entity was created. Thus, hash code calculation should be independent of object state, i.e. of its mutable fields.</p>
<p>Thus, the following suspicious code patterns should get a special attention in this context (I&#8217;ll generally use Java notation, the C# variation is trivial):</p>
<ul>
<li><strong>Mutable hash code</strong>: <code><font size="-0">hashCode()</font></code> accesses fields that are not <code><font size="-0">final</font></code>, or calls methods that access fields that are not <code><font size="-0">final</font></code> or call methods that&#8230; and so on.</li>
<li><strong>Using overridden <code><font size="-0">hashCode()</font></code></strong>: an instance of class with overriden <code><font size="-0">hashCode()</font></code> is added into hash-based collection (or one of its interfaces). More general &#8211; to any collection instance.</li>
<li><strong>Broken contract</strong>: <code><font size="-0">hashCode()</font></code> and <code><font size="-0">equals()</font></code> do not access the same fields or do not call the same methods (that do not access the same fields&#8230; and so on).</li>
</ul>
<p>What can prevent or warn us about the patterns mentioned?</p>
<ul>
<li><strong>Language level</strong>: not really can be taken into account, since providing language-level object identity is almost equal to just forbidding <code><font size="-0">hashCode()</font></code> override.</li>
<p class="alt">C# 3.0 anonymous classes make use of similar approach &#8211; the hash code of an object is immutable since both <code><font size="-0">equals()</font></code> and <code><font size="-0">getHashCode()</font></code> are compiler generated and both fields and properties are read-only.</p>
<li><strong>Compiler warning level</strong>: may be nice, also implementing recursive method inspection will require new paradigms definition and will add unnecessary complexity. In addition, this require implementing this functionality separate for each platform language.</li>
<li><strong>Code inspection</strong>: the most desirable option that should act at bytecode level and can be easily integrated into existing IDEs.</li>
<p class="alt"><a href="http://www.jetbrains.com/idea/documentation/inspections.jsp">IntelliJ IDEA 6 inspections list</a> presents a good inspection for mutable hashcode, and something not so powerful for broken contract.</p>
</ul>
<p>This small and annoying point is just a tiny part of features missing from existing IDEs (expected to provide developer with an ability to concentrate on application business logic development rather than on language or infrastructure implementation details).</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/boriskirzner.wordpress.com/21/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/boriskirzner.wordpress.com/21/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/boriskirzner.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/boriskirzner.wordpress.com/21/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=boriskirzner.wordpress.com&#038;blog=309337&#038;post=21&#038;subd=boriskirzner&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://boriskirzner.wordpress.com/2007/05/29/back-to-hashcode-mutability/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/4dae49665098fb225f1f342c6ff846e8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Boris Kirzner</media:title>
		</media:content>
	</item>
		<item>
		<title>Bad day for blogging?</title>
		<link>http://boriskirzner.wordpress.com/2007/05/16/bad-day-for-blogging/</link>
		<comments>http://boriskirzner.wordpress.com/2007/05/16/bad-day-for-blogging/#comments</comments>
		<pubDate>Wed, 16 May 2007 08:17:58 +0000</pubDate>
		<dc:creator>Boris Kirzner</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://boriskirzner.wordpress.com/2007/05/16/bad-day-for-blogging/</guid>
		<description><![CDATA[Both Monologue and ASP.Net Weblogs seem to be down for some time.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=boriskirzner.wordpress.com&#038;blog=309337&#038;post=33&#038;subd=boriskirzner&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Both <a href="http://go-mono.com/monologue/">Monologue</a> and <a href="http://weblogs.asp.net/">ASP.Net Weblogs</a> seem to be down for some time.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/boriskirzner.wordpress.com/33/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/boriskirzner.wordpress.com/33/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/boriskirzner.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/boriskirzner.wordpress.com/33/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=boriskirzner.wordpress.com&#038;blog=309337&#038;post=33&#038;subd=boriskirzner&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://boriskirzner.wordpress.com/2007/05/16/bad-day-for-blogging/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/4dae49665098fb225f1f342c6ff846e8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Boris Kirzner</media:title>
		</media:content>
	</item>
		<item>
		<title>C# 3.0 Automatic Properties</title>
		<link>http://boriskirzner.wordpress.com/2007/05/16/c-30-automatic-properties/</link>
		<comments>http://boriskirzner.wordpress.com/2007/05/16/c-30-automatic-properties/#comments</comments>
		<pubDate>Wed, 16 May 2007 07:18:22 +0000</pubDate>
		<dc:creator>Boris Kirzner</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://boriskirzner.wordpress.com/2007/05/16/c-30-automatic-properties/</guid>
		<description><![CDATA[Yesterday I read two excellent posts about C# 3.0 automatic properties feature: ScottGu&#8217;s &#171;New C# &#8220;Orcas&#8221; Language Features: Automatic Properties, Object Initializers, and Collection Initializers&#187; and Bart De Smet&#8217;s &#171;C# 3.0 Automatic Properties explained&#187;. It was a pleasure to see that my old &#171;A programming language pattern idea&#187; hit straight to the point. By the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=boriskirzner.wordpress.com&#038;blog=309337&#038;post=32&#038;subd=boriskirzner&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Yesterday I read two excellent posts about C# 3.0 automatic properties feature: ScottGu&#8217;s <a href="http://weblogs.asp.net/scottgu/archive/2007/03/08/new-c-orcas-language-features-automatic-properties-object-initializers-and-collection-initializers.aspx">&laquo;New C# &#8220;Orcas&#8221; Language Features: Automatic Properties, Object Initializers, and Collection Initializers&raquo;</a> and Bart De Smet&#8217;s <a href="http://community.bartdesmet.net/blogs/bart/archive/2007/03/03/c-3-0-automatic-properties-explained.aspx">&laquo;C# 3.0 Automatic Properties explained&raquo;</a>.</p>
<p>It was a pleasure to see that my old <a href="http://boriskirzner.wordpress.com/2005/07/21/a-programming-language-pattern-idea/">&laquo;A programming language pattern idea&raquo;</a> hit straight to the point.</p>
<p>By the way, this &#8220;Orcas&#8221; feature is still missing the &#8220;container&#8221; concept, enabling an access to the auto-generated field from the constructor. Another missing point is a read-only automatic properties.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/boriskirzner.wordpress.com/32/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/boriskirzner.wordpress.com/32/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/boriskirzner.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/boriskirzner.wordpress.com/32/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=boriskirzner.wordpress.com&#038;blog=309337&#038;post=32&#038;subd=boriskirzner&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://boriskirzner.wordpress.com/2007/05/16/c-30-automatic-properties/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/4dae49665098fb225f1f342c6ff846e8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Boris Kirzner</media:title>
		</media:content>
	</item>
		<item>
		<title>One mystery less</title>
		<link>http://boriskirzner.wordpress.com/2007/03/25/one-mystery-less/</link>
		<comments>http://boriskirzner.wordpress.com/2007/03/25/one-mystery-less/#comments</comments>
		<pubDate>Sun, 25 Mar 2007 07:18:33 +0000</pubDate>
		<dc:creator>Boris Kirzner</dc:creator>
				<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://boriskirzner.wordpress.com/2007/03/25/one-mystery-less/</guid>
		<description><![CDATA[I was always curious to know what is the engine behind the Miguel&#8217;s blog, and now there is an answer from his own. Lame Blog looks both powerful and simple enough to suit my needs. I think I&#8217;ll try it soon.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=boriskirzner.wordpress.com&#038;blog=309337&#038;post=31&#038;subd=boriskirzner&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I was always curious to know what is the engine behind the Miguel&#8217;s blog, and now <a href="http://tirania.org/blog/archive/2007/Mar-24.html"> there is an answer from his own</a>.</p>
<p><a href="http://anonsvn.mono-project.com/viewcvs/trunk/lb/">Lame Blog</a> looks both powerful and simple enough to suit my needs. I think I&#8217;ll try it soon.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/boriskirzner.wordpress.com/31/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/boriskirzner.wordpress.com/31/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/boriskirzner.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/boriskirzner.wordpress.com/31/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=boriskirzner.wordpress.com&#038;blog=309337&#038;post=31&#038;subd=boriskirzner&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://boriskirzner.wordpress.com/2007/03/25/one-mystery-less/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/4dae49665098fb225f1f342c6ff846e8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Boris Kirzner</media:title>
		</media:content>
	</item>
		<item>
		<title>Mainsoft out, Imperva in.</title>
		<link>http://boriskirzner.wordpress.com/2007/02/21/mainsoft-out-imperva-in/</link>
		<comments>http://boriskirzner.wordpress.com/2007/02/21/mainsoft-out-imperva-in/#comments</comments>
		<pubDate>Wed, 21 Feb 2007 10:05:16 +0000</pubDate>
		<dc:creator>Boris Kirzner</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://boriskirzner.wordpress.com/2007/02/21/mainsoft-out-imperva-in/</guid>
		<description><![CDATA[I&#8217;m changing my employee, leaving Mainsoft and moving to Imperva. I&#8217;ve already get a farewell present better I could ever imagine: support for Visual Basic in Mono was announced. Thanks to Rolf, Miguel, Lluis and others who made this happen. Working with Mono team was one of the best professional experience occasions I ever had. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=boriskirzner.wordpress.com&#038;blog=309337&#038;post=30&#038;subd=boriskirzner&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I&#8217;m changing my employee, leaving <a href="http://www.mainsoft.com">Mainsoft</a> and moving to <a href="http://www.imperva.com">Imperva</a>.</p>
<p>I&#8217;ve already get a farewell present better I could ever imagine: <a href="http://tirania.org/blog/archive/2007/Feb-20-1.html">support for Visual Basic in Mono was announced</a>. Thanks to Rolf, Miguel, Lluis and others who made this happen.</p>
<p>Working with Mono team was one of the best professional experience occasions I ever had. It may be difficult, but now I will have to get used to my new role as Mono user-only.</p>
<p>Still tuned with <a href="http://www.go-mono.com/monologue/">Monologue</a> and <a href="http://dev.mainsoft.com">DevZone</a>.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/boriskirzner.wordpress.com/30/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/boriskirzner.wordpress.com/30/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/boriskirzner.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/boriskirzner.wordpress.com/30/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=boriskirzner.wordpress.com&#038;blog=309337&#038;post=30&#038;subd=boriskirzner&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://boriskirzner.wordpress.com/2007/02/21/mainsoft-out-imperva-in/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/4dae49665098fb225f1f342c6ff846e8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Boris Kirzner</media:title>
		</media:content>
	</item>
		<item>
		<title>My private IDE war : small things make a big difference.</title>
		<link>http://boriskirzner.wordpress.com/2006/12/11/my-private-ide-war-small-things-make-a-big-difference/</link>
		<comments>http://boriskirzner.wordpress.com/2006/12/11/my-private-ide-war-small-things-make-a-big-difference/#comments</comments>
		<pubDate>Mon, 11 Dec 2006 13:34:18 +0000</pubDate>
		<dc:creator>Boris Kirzner</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://boriskirzner.wordpress.com/2006/12/11/my-private-ide-war-small-things-make-a-big-difference/</guid>
		<description><![CDATA[For the last three years I need to develop in both Java and C# side-by-side, which means almost simultaneous work with different IDEs. Thus the simple and intuitive interface is a must for keeping a productivity pace. And probably the most used and critical feature is a hot key shortcuts for navigating, debugging, refactoring and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=boriskirzner.wordpress.com&#038;blog=309337&#038;post=26&#038;subd=boriskirzner&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>For the last three years I need to develop in both Java and C# side-by-side, which means almost simultaneous work with different IDEs. Thus the simple and intuitive interface is a must for keeping a productivity pace. And probably the most used and critical feature is a hot key shortcuts for navigating, debugging, refactoring and so on.<br />
Ideally, I&#8217;d like to have the same hot key scheme in all my IDEs, so there will be no need to learn and remember how to do the same things twice.<br />
I&#8217;m usually working with three commons: <a href="http://msdn2.microsoft.com/en-us/vstudio/default.aspx">VisualStudio 2005</a>, <a href="http://www.easyeclipse.org/">Easy Eclipse</a> and <a href="http://www.jetbrains.com/idea/">IntelliJ IDEA</a>.<br />
So, what are the offerings?</p>
<ul>
<li>Visual Studio 2005<br />
&#8220;Options -&gt; Keyboard&#8221; dialog offers you eight different hot key mapping possibilities that can suite almost anyone used to work with Microsoft tools once. No surprise here: Microsoft, as usual, cares about &#8220;their&#8221; developers only, but provides a perfect solution.<br />
<a href='http://boriskirzner.files.wordpress.com/2006/12/vs_keymap.PNG' title='Visual Studio 2005 key mappings'><img src='http://boriskirzner.files.wordpress.com/2006/12/vs_keymap.thumbnail.PNG?w=480' alt='Visual Studio 2005 key mappings' /></a></li>
<li>IntelliJ IDEA 4.5<br />
&#8220;IDE Settings -&gt; Keymap&#8221; has four built in possibilities including Mac OS X and Visual Studio schemes. Mac OS X scheme is nice, Eclipse bindings seems to be missing, but Visual Studio is surprising: &#8220;wow, they even remember about those migrating from .Net to Java!&#8221;. I did not check the later versions, but its probably not worse.<br />
<a href='http://boriskirzner.files.wordpress.com/2006/12/idea_keymap.PNG' title='Intellij IDEA key mappings'><img src='http://boriskirzner.files.wordpress.com/2006/12/idea_keymap.thumbnail.PNG?w=480' alt='Intellij IDEA key mappings' /></a></li>
<li>Easy Eclipse 1.2.1<br />
&#8220;Preferences -&gt; General -&gt; Keys&#8221; gives a two possibilities: default and emacs. These guys do not care about anyone using any tool other that their own? Don&#8217;t worth a screenshot.<br />
The most annoying thing is that they do think about this feature: Eclipse <a href="http://www.javalobby.org/java/forums/m91837162.html">has a quick assistance for a hot keys</a>, creating and modifying key bindings <a href="http://wiki.eclipse.org/index.php/FAQ_How_do_I_create_my_own_key-binding_configuration%3F">is an issue</a>, developers <a href="http://digg.com/programming/Eclipse_Open_Source_Tool_Gains_Traction_To_Help_Build_User_Interfaces#c3009789">complain about feature weakness</a> and still nothing is done.</li>
</ul>
<p>The very sad bottom line is: do not expect extra attention to your needs unless you pay&#8230;</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/boriskirzner.wordpress.com/26/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/boriskirzner.wordpress.com/26/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/boriskirzner.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/boriskirzner.wordpress.com/26/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=boriskirzner.wordpress.com&#038;blog=309337&#038;post=26&#038;subd=boriskirzner&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://boriskirzner.wordpress.com/2006/12/11/my-private-ide-war-small-things-make-a-big-difference/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/4dae49665098fb225f1f342c6ff846e8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Boris Kirzner</media:title>
		</media:content>

		<media:content url="http://boriskirzner.files.wordpress.com/2006/12/vs_keymap.thumbnail.PNG" medium="image">
			<media:title type="html">Visual Studio 2005 key mappings</media:title>
		</media:content>

		<media:content url="http://boriskirzner.files.wordpress.com/2006/12/idea_keymap.thumbnail.PNG" medium="image">
			<media:title type="html">Intellij IDEA key mappings</media:title>
		</media:content>
	</item>
		<item>
		<title>Why being paranoid is a must for keeping a good service?</title>
		<link>http://boriskirzner.wordpress.com/2006/10/20/why-being-paranoid-is-a-must-for-keeping-a-good-service/</link>
		<comments>http://boriskirzner.wordpress.com/2006/10/20/why-being-paranoid-is-a-must-for-keeping-a-good-service/#comments</comments>
		<pubDate>Fri, 20 Oct 2006 18:47:45 +0000</pubDate>
		<dc:creator>Boris Kirzner</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://boriskirzner.wordpress.com/2006/10/20/why-being-paranoid-is-a-must-for-keeping-a-good-service/</guid>
		<description><![CDATA[Technorati Profile<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=boriskirzner.wordpress.com&#038;blog=309337&#038;post=22&#038;subd=boriskirzner&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.technorati.com/claim/thdyvhj2" rel="me">Technorati Profile</a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/boriskirzner.wordpress.com/22/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/boriskirzner.wordpress.com/22/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/boriskirzner.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/boriskirzner.wordpress.com/22/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=boriskirzner.wordpress.com&#038;blog=309337&#038;post=22&#038;subd=boriskirzner&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://boriskirzner.wordpress.com/2006/10/20/why-being-paranoid-is-a-must-for-keeping-a-good-service/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/4dae49665098fb225f1f342c6ff846e8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Boris Kirzner</media:title>
		</media:content>
	</item>
		<item>
		<title>HashSet.contains(): does your busket contain something?</title>
		<link>http://boriskirzner.wordpress.com/2006/10/01/hashsetcontains-does-your-busket-contain-something/</link>
		<comments>http://boriskirzner.wordpress.com/2006/10/01/hashsetcontains-does-your-busket-contain-something/#comments</comments>
		<pubDate>Sun, 01 Oct 2006 21:35:47 +0000</pubDate>
		<dc:creator>Boris Kirzner</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://boriskirzner.wordpress.com/2006/10/01/hashsetcontains-does-your-busket-contain-something/</guid>
		<description><![CDATA[When you put some good into your supermarket basket, you really suppose it will stay there, don&#8217;t you? Well, we&#8217;re living inside materialistic world. All of us, except Java programmers. Consider the following Entity class: public static class Entity { private String _name; private int _count; public Entity(String name, int count) { _name = name; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=boriskirzner.wordpress.com&#038;blog=309337&#038;post=20&#038;subd=boriskirzner&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>When you put some good into your supermarket basket, you really suppose it will stay there, don&#8217;t you? Well, we&#8217;re living inside materialistic world. All of us, except Java programmers. </p>
<p>Consider the following <code>Entity</code> class:
<pre><font size="-0">
       <span style="color:rgb(0,0,128);font-weight:bold;">public static class </span><span style="color:rgb(0,0,0);">Entity { 
       </span><span style="color:rgb(0,0,128);font-weight:bold;">private </span><span style="color:rgb(0,0,0);">String _name; 
       </span><span style="color:rgb(0,0,128);font-weight:bold;">private int </span><span style="color:rgb(0,0,0);">_count; 
 
        </span><span style="color:rgb(0,0,128);font-weight:bold;">public </span><span style="color:rgb(0,0,0);">Entity(String name, </span><span style="color:rgb(0,0,128);font-weight:bold;">int </span><span style="color:rgb(0,0,0);">count) { 
            _name = name; 
            _count = count; 
        } 
 
        </span><span style="color:rgb(0,0,128);font-weight:bold;">public void </span><span style="color:rgb(0,0,0);">setName(String name) { 
            _name = name; 
        } 
 
        </span><span style="color:rgb(0,0,128);font-weight:bold;">public boolean </span><span style="color:rgb(0,0,0);">equals(Object o) { 
            </span><span style="color:rgb(0,0,128);font-weight:bold;">if </span><span style="color:rgb(0,0,0);">(</span><span style="color:rgb(0,0,128);font-weight:bold;">this </span><span style="color:rgb(0,0,0);">== o) </span><span style="color:rgb(0,0,128);font-weight:bold;">return true</span><span style="color:rgb(0,0,0);">; 
            </span><span style="color:rgb(0,0,128);font-weight:bold;">if </span><span style="color:rgb(0,0,0);">(o == </span><span style="color:rgb(0,0,128);font-weight:bold;">null </span><span style="color:rgb(0,0,0);">|| getClass() != o.getClass()) </span><span style="color:rgb(0,0,128);font-weight:bold;">return false</span><span style="color:rgb(0,0,0);">; 
 
            </span><span style="color:rgb(0,0,128);font-weight:bold;">final </span><span style="color:rgb(0,0,0);">Entity entity = (Entity) o; 
 
            </span><span style="color:rgb(0,0,128);font-weight:bold;">if </span><span style="color:rgb(0,0,0);">(_count != entity._count) </span><span style="color:rgb(0,0,128);font-weight:bold;">return false</span><span style="color:rgb(0,0,0);">; 
            </span><span style="color:rgb(0,0,128);font-weight:bold;">if </span><span style="color:rgb(0,0,0);">(_name != </span><span style="color:rgb(0,0,128);font-weight:bold;">null </span><span style="color:rgb(0,0,0);">? !_name.equals(entity._name) : entity._name != </span><span style="color:rgb(0,0,128);font-weight:bold;">null</span><span style="color:rgb(0,0,0);">) </span><span style="color:rgb(0,0,128);font-weight:bold;">return false</span><span style="color:rgb(0,0,0);">; 
 
            </span><span style="color:rgb(0,0,128);font-weight:bold;">return true</span><span style="color:rgb(0,0,0);">; 
        } 
 
        </span><span style="color:rgb(0,0,128);font-weight:bold;">public int </span><span style="color:rgb(0,0,0);">hashCode() { 
            </span><span style="color:rgb(0,0,128);font-weight:bold;">int </span><span style="color:rgb(0,0,0);">result; 
            result = (_name != </span><span style="color:rgb(0,0,128);font-weight:bold;">null </span><span style="color:rgb(0,0,0);">? _name.hashCode() : </span><span style="color:rgb(0,0,255);">0</span><span style="color:rgb(0,0,0);">); 
            result = </span><span style="color:rgb(0,0,255);">29 </span><span style="color:rgb(0,0,0);">* result + _count; 
            </span><span style="color:rgb(0,0,128);font-weight:bold;">return </span><span style="color:rgb(0,0,0);">result; 
        } 
    } </span></font></pre>
<p>Let&#8217;s store our entity into various Java collections instances, both implementing <code>Set</code> interface:
<pre><font size="-0">
    <span style="color:rgb(0,0,0);">
        Set&lt;Entity&gt; hashSet = </span><span style="color:rgb(0,0,128);font-weight:bold;">new </span><span style="color:rgb(0,0,0);">HashSet&lt;Entity&gt;(); 
        Set&lt;Entity&gt; arraySet = </span><span style="color:rgb(0,0,128);font-weight:bold;">new </span><span style="color:rgb(0,0,0);">CopyOnWriteArraySet&lt;Entity&gt;(); 
         
        Entity e = </span><span style="color:rgb(0,0,128);font-weight:bold;">new </span><span style="color:rgb(0,0,0);">Entity(</span><span style="color:rgb(0,128,0);font-weight:bold;">&quot;OldName&quot;</span><span style="color:rgb(0,0,0);">, </span><span style="color:rgb(0,0,255);">5</span><span style="color:rgb(0,0,0);">); 
 
        hashSet.add(e); 
        arraySet.add(e); 
 </span></font></pre>
<p>Now, let&#8217;s see whenever the previously stored entity is still inside the collections:
<pre><font size="-0">
<span style="color:rgb(0,0,0);">
        System.out.println(arraySet.contains(e));  </span><span style="color:rgb(128,128,128);font-style:italic;">// returns true</span><span style="color:rgb(0,0,0);"> 
        System.out.println(hashSet.contains(e));   </span><span style="color:rgb(128,128,128);font-style:italic;">// returns true</span><span style="color:rgb(0,0,0);"></span></font></pre>
<p>Now, a simple mutation, changing an entity name:
<pre><font size="-0">
<span style="color:rgb(0,0,0);">
        e.setName(</span><span style="color:rgb(0,128,0);font-weight:bold;">&quot;NewName&quot;</span><span style="color:rgb(0,0,0);">);</span></font></pre>
<p>And, voila &#8212; now the entity is still in <code>ArraySet</code>, but not in <code>TreeSet</code>:
<pre><font size="-0">
<span style="color:rgb(0,0,0);">
        System.out.println(arraySet.contains(e)); </span><span style="color:rgb(128,128,128);font-style:italic;">// returns true</span><span style="color:rgb(0,0,0);"> 
        System.out.println(hashSet.contains(e));  </span><span style="color:rgb(128,128,128);font-style:italic;">// returns false     </span><span style="color:rgb(0,0,0);"> 
</span></font></pre>
<p>This looks like a quite stupid bug from the first time, but googling aroung brings an answer: <code>TreeSet</code> implementation uses <code>hashCode()</code> and not <code>equals()</code> for storing and retrieving entities, <a href="http://forum.java.sun.com/thread.jspa?threadID=621359&amp;tstart=105"> thus <code>TreeSet</code> requires <code>hashCode()</code> of contained entity to be immutable</a>!</p>
<p>Presonally I think it&#8217;s too smart to be good, but, let&#8217;s say &#8220;the big brother knows beter&#8221;. The really annoying thing is that <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4459681">the request for proper documentation of this feature was initially issued for Java 1.3.1 at 16 May, 2001</a> and nothing was done since that.</p>
<p>Shame on you, Sun Microsystems&#8230;</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/boriskirzner.wordpress.com/20/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/boriskirzner.wordpress.com/20/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/boriskirzner.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/boriskirzner.wordpress.com/20/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=boriskirzner.wordpress.com&#038;blog=309337&#038;post=20&#038;subd=boriskirzner&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://boriskirzner.wordpress.com/2006/10/01/hashsetcontains-does-your-busket-contain-something/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/4dae49665098fb225f1f342c6ff846e8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Boris Kirzner</media:title>
		</media:content>
	</item>
		<item>
		<title>Visual Studio developers, welcome to Mac OSX :)</title>
		<link>http://boriskirzner.wordpress.com/2006/09/28/visual-studio-developers-welcome-to-mac-osx/</link>
		<comments>http://boriskirzner.wordpress.com/2006/09/28/visual-studio-developers-welcome-to-mac-osx/#comments</comments>
		<pubDate>Thu, 28 Sep 2006 10:14:03 +0000</pubDate>
		<dc:creator>Boris Kirzner</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Grasshopper]]></category>

		<guid isPermaLink="false">http://boriskirzner.wordpress.com/2006/09/28/visual-studio-developers-welcome-to-mac-osx/</guid>
		<description><![CDATA[Yes, we did it. The fruit of mine and Rafi&#8217;s work: .Net IBuySpy application running on Tomcat on Mac OSX (using Grasshopper 1.8): N.B. This post was originally created 100% totally using Mac OSX Safari.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=boriskirzner.wordpress.com&#038;blog=309337&#038;post=19&#038;subd=boriskirzner&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Yes, we did it.<br />
The fruit of mine and <a href="http://rafaelmizrahi.blogspot.com">Rafi&#8217;s</a> work: .Net IBuySpy application running on Tomcat on Mac OSX (using <a href="http://dev.mainsoft.com">Grasshopper 1.8</a>):</p>
<p><a href="http://www.ljplus.ru/img/_/k/_kir/IBuySpy_MacOSX.gif" target="_new"><img src="http://www.ljplus.ru/img/_/k/_kir/IBuySpy_MacOSX_small.png" width="484" alt="Click to view full screenshot" /></a></p>
<p>N.B. This post was originally created 100% totally using Mac OSX Safari. </p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/boriskirzner.wordpress.com/19/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/boriskirzner.wordpress.com/19/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/boriskirzner.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/boriskirzner.wordpress.com/19/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=boriskirzner.wordpress.com&#038;blog=309337&#038;post=19&#038;subd=boriskirzner&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://boriskirzner.wordpress.com/2006/09/28/visual-studio-developers-welcome-to-mac-osx/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/4dae49665098fb225f1f342c6ff846e8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Boris Kirzner</media:title>
		</media:content>

		<media:content url="http://www.ljplus.ru/img/_/k/_kir/IBuySpy_MacOSX_small.png" medium="image">
			<media:title type="html">Click to view full screenshot</media:title>
		</media:content>
	</item>
		<item>
		<title>Bytecode viewer tools: Jclasslib vs Classfile Inspector.</title>
		<link>http://boriskirzner.wordpress.com/2006/08/24/bytecode-viewer-tools-jclasslib-vs-classfile-inspector/</link>
		<comments>http://boriskirzner.wordpress.com/2006/08/24/bytecode-viewer-tools-jclasslib-vs-classfile-inspector/#comments</comments>
		<pubDate>Thu, 24 Aug 2006 12:59:52 +0000</pubDate>
		<dc:creator>Boris Kirzner</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">https://boriskirzner.wordpress.com/2006/08/24/bytecode-viewer-tools-jclasslib-vs-classfile-inspector/</guid>
		<description><![CDATA[Comparison overview of bytecode viewer applications Jclasslib Bytecode Viewer 3.0 by ej-technologies and Classfile Inspector 2.0 by Industrial Software Technology. Introduction Recently I faced with a need to inspect a Java bytecode in order to create a tests for bytecode processing application. Googling around showed that the market of the bytecode viewers is narrow and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=boriskirzner.wordpress.com&#038;blog=309337&#038;post=16&#038;subd=boriskirzner&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Comparison overview of bytecode viewer applications <a href="http://www.ej-technologies.com/products/jclasslib/overview.html"><b>Jclasslib Bytecode Viewer 3.0</b></a> by ej-technologies and <a href="http://www.classfileinspector.com/"><b>Classfile Inspector 2.0</b></a> by Industrial Software Technology.</p>
<h3>Introduction</h3>
<p>Recently I faced with a need to inspect a Java bytecode in order to create a tests for bytecode processing application. Googling around showed that the market of the bytecode viewers is narrow and actually there is no large variety of possibilities to choose from.</p>
<p>Viewing Java bytecode generated from the Java source is not too common task for most Java developers, so the choice of the tools in this area is quite narrow. In addition to the bytecode viewers discussed here I&#8217;ve found the following additional tools:</p>
<ul>
<li><a href="http://asm.objectweb.org/eclipse/index.html"><b>ASM Bytecode Outline plugin for Eclipse</b></a> &#8211; provides an ability of viewing bytecode instructions for current method and/or ASMfied view of the method code.</li>
<li><a href="http://www.intellij.org/twiki/bin/view/Main/JavaP"><b>JavaP plugin for Intellij IDEA</b></a> &#8211; last updated in June 2003, seems to be dead project.</li>
<li><a href="http://ej-technologies.com/products/jprofiler/overview.html"><b>JProfiler by ej-technologies</b></a> &#8211; Java profiling application <a href="http://resources.ej-technologies.com/jprofiler/help/doc/indexRedirect.html?http&amp;&amp;&amp;resources.ej-technologies.com/jprofiler/help/doc/views/classViewer.html" title="claims to have a bytecode presenation feature">claims to have a bytecode presentation feature</a> when integrated with IDE like Intellij IDEA (probably it uses Jclasslib as underlying library).</li>
</ul>
<h3>Feature comparison table</h3>
<p></p>
<table border="1" cellpadding="3" cellspacing="0" width="100%">
<tbody>
<tr>
<td>
      </td>
<td>
        <b>Jclasslib Bytecode Viewer 3.0</b>
      </td>
<td>
        <b>Classfile Inspector 2.0</b>
      </td>
</tr>
<tr>
<td>
        <b>General</b>
      </td>
<td>
      </td>
<td>
      </td>
</tr>
<tr>
<td>
          Pricing
      </td>
<td>
        Free
      </td>
<td>
        10€-99€ per license (depends on license amount), free for students and<br />
        teachers
      </td>
</tr>
<tr>
<td>
          License
      </td>
<td>
        GPL
      </td>
<td>
        Commercial
      </td>
</tr>
<tr>
<td>
          Supported platforms
      </td>
<td>
        Windows, Linux, Unix, Mac OS X 10.1/2
      </td>
<td>
        Windows, Linux and others (as plugin)
      </td>
</tr>
<tr>
<td>
          Installation
      </td>
<td>
        Platform-specific installation package
      </td>
<td>
        Jar file. Requires write privileges
      </td>
</tr>
<tr>
<td>
          Available plugins
      </td>
<td>
        NetBeans module
      </td>
<td>
        Eclipse 3.1 (and higher) plugin
      </td>
</tr>
<tr>
<td>
          Standalone version
      </td>
<td>
        Yes
      </td>
<td>
        No
      </td>
</tr>
<tr>
<td>
          Java versions supported
      </td>
<td>
        1.5
      </td>
<td>
        1.5
      </td>
</tr>
<tr>
<td>
          Usability
      </td>
<td>
        Works smoothly
      </td>
<td>
        Changing default output directory breaks an ability of viewing *.class file corresponding to java source
      </td>
</tr>
<tr>
<td>
        <b>Features</b>
      </td>
<td>
      </td>
<td>
      </td>
</tr>
<tr>
<td>
          Presentation
      </td>
<td>
        Application windows
      </td>
<td>
        Text file
      </td>
</tr>
<tr>
<td>
          Bytecode hierarchy presentation
      </td>
<td>
        Application window
      </td>
<td>
        &#8220;Outline&#8221; Eclipse view
      </td>
</tr>
<tr>
<td>
          Hierarchy link with bytecode editor
      </td>
<td>
        Yes
      </td>
<td>
        Yes
      </td>
</tr>
<tr>
<td>
          Viewing standalone *.class files
      </td>
<td>
        No
      </td>
<td>
        Yes
      </td>
</tr>
<tr>
<td>
          Exploring *.jar files
      </td>
<td>
        Yes
      </td>
<td>
        Yes
      </td>
</tr>
<tr>
<td>
          Binary data presentation
      </td>
<td>
        No
      </td>
<td>
        Yes
      </td>
</tr>
<tr>
<td>
          Bytecode presentation
      </td>
<td>
        Yes. Separate presentation for each type (methods, fields, exceptions etc.)
      </td>
<td>
        Yes. All-in-one text file containing binary data, bytecode instruction presentation and source code
      </td>
</tr>
<tr>
<td>
          Java source presentation
      </td>
<td>
        No
      </td>
<td>
        If available in project
      </td>
</tr>
<tr>
<td>
          Bytecode decompilation
      </td>
<td>
        No
      </td>
<td>
        No
      </td>
</tr>
<tr>
<td>
          Bytecode modification
      </td>
<td>
        No
      </td>
<td>
        Yes
      </td>
</tr>
<tr>
<td>
          Bytecode validation
      </td>
<td>
        No
      </td>
<td>
        No
      </td>
</tr>
<tr>
<td>
          Links inside bytecode
      </td>
<td>
        Yes
      </td>
<td>
        No
      </td>
</tr>
<tr>
<td>
          Export
      </td>
<td>
        Method bytecode instructions can be copied to clipboard
      </td>
<td>
        As any text file
      </td>
</tr>
</tbody>
</table>
<h3>Pros and cons</h3>
<p><b>Jclasslib Bytecide Viewer 3.0</b><br />
Pros:
<ul>
<li>Availability as a standalone application</li>
<li>Links inside bytecode presentation</li>
</ul>
</li>
<p>Cons:
<ul>
<li>Limited export ability</li>
<li>No binary data presentation</li>
<li>No source code presentation</li>
</ul>
</li>
</ul>
<p><b>Classfile Inspector 2.0</b><br />
Pros:
<ul>
<li>Eclipse integration</li>
<li>Mixed binary, instructions and java source presentation</li>
<li>Bytecode modification</li>
</ul>
</li>
<p>Cons:
<ul>
<li>No available as standalone application</li>
<li>Limited usability</li>
</ul>
</li>
<h3>Summary</h3>
<p><b>Classfile Inspector 2.0</b> is a very powerful bytecode viewer application, with good presentation features, giving an ability of inspecting bytecode created by compiler as a derivative of java source code. This provides a user with an opportunity to understand deeply the way bytecode is generated and the affects of different coding decisions on actual code execution. It looks to be an ultimate helper for anyone teaching or studying Java. The main application disadvantage is its tight binding to Eclipse platform, making it almost useless for those working with any other Java IDE.</p>
<p><b>Jclasslib Bytecide Viewer 3.0</b> is a good tool for developer that needs just an inspection view on the jar files containing bytecode created, with no ability to modify it or to follow the influence of source code changes on the bytecode generated. Plugins for IDEs other that NetBeans would be nice, even it always can be used as a standalone application.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/boriskirzner.wordpress.com/16/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/boriskirzner.wordpress.com/16/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/boriskirzner.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/boriskirzner.wordpress.com/16/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=boriskirzner.wordpress.com&#038;blog=309337&#038;post=16&#038;subd=boriskirzner&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://boriskirzner.wordpress.com/2006/08/24/bytecode-viewer-tools-jclasslib-vs-classfile-inspector/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/4dae49665098fb225f1f342c6ff846e8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Boris Kirzner</media:title>
		</media:content>
	</item>
		<item>
		<title>&#171;We bee!&#187; aka Visual Basic reloaded</title>
		<link>http://boriskirzner.wordpress.com/2006/08/20/we-bee-aka-visual-basic-reloaded/</link>
		<comments>http://boriskirzner.wordpress.com/2006/08/20/we-bee-aka-visual-basic-reloaded/#comments</comments>
		<pubDate>Sun, 20 Aug 2006 09:58:00 +0000</pubDate>
		<dc:creator>Boris Kirzner</dc:creator>
				<category><![CDATA[VB]]></category>

		<guid isPermaLink="false">https://boriskirzner.wordpress.com/2006/08/16/we-bee-aka-visual-basic-reloaded/</guid>
		<description><![CDATA[Last time we&#160;(me,&#160;Rafi and others) were working on&#160;new Microsoft.VisualBasic.dll implementation, fully rewriting it&#160;in&#160;Visual Basic and extending the library with .NET 2.0&#160;features. New implementation brings a&#160;both quality and coverage breakthrough, passing 3200&#160;tests more that the old one. Thanks to&#160;Rolf it&#160;now can be&#160;compiled with vbnc, making it&#160;true &#171;VB&#160;implemented in&#160;VB&#187;. Its now a&#160;community time to&#160;pick up&#160;the &#171;Coding Flame&#187; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=boriskirzner.wordpress.com&#038;blog=309337&#038;post=15&#038;subd=boriskirzner&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Last time we&nbsp;(me,&nbsp;<a href="http://rafaelmizrahi.blogspot.com/">Rafi</a> and others) were working on&nbsp;new Microsoft.VisualBasic.dll implementation, fully rewriting it&nbsp;in&nbsp;Visual Basic and extending the library with .NET 2.0&nbsp;features. New implementation brings a&nbsp;both quality and coverage breakthrough, passing 3200&nbsp;tests more that the old one.</p>
<p>Thanks to&nbsp;Rolf it&nbsp;now can be&nbsp;compiled with vbnc, making it&nbsp;true &laquo;VB&nbsp;implemented in&nbsp;VB&raquo;.</p>
<p>Its now a&nbsp;community time to&nbsp;pick up&nbsp;the &laquo;Coding Flame&raquo; and continue with the further implementation.</p>
<p>A new Microsoft.VisualBasic.dll implementation is&nbsp;available in&nbsp;Mono SVN repository at&nbsp;<a href="http://mono.myrealbox.com/source/trunk/mono-basic/">svn://mono.myrealbox.com/source/trunk/mono-basic</a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/boriskirzner.wordpress.com/15/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/boriskirzner.wordpress.com/15/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/boriskirzner.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/boriskirzner.wordpress.com/15/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=boriskirzner.wordpress.com&#038;blog=309337&#038;post=15&#038;subd=boriskirzner&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://boriskirzner.wordpress.com/2006/08/20/we-bee-aka-visual-basic-reloaded/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/4dae49665098fb225f1f342c6ff846e8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Boris Kirzner</media:title>
		</media:content>
	</item>
	</channel>
</rss>