
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Research and Destroy &#187; Java</title>
	<atom:link href="http://research-and-destroy.de/blog/cat/technology/java-technology/feed/" rel="self" type="application/rss+xml" />
	<link>http://research-and-destroy.de/blog</link>
	<description>... using advanced technology</description>
	<lastBuildDate>Sun, 18 Dec 2011 22:38:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Howto implement MySQL&#8217;s OLD_PASSWORD() in Java</title>
		<link>http://research-and-destroy.de/blog/2010/07/23/howto-implement-mysqls-old_password-in-java/</link>
		<comments>http://research-and-destroy.de/blog/2010/07/23/howto-implement-mysqls-old_password-in-java/#comments</comments>
		<pubDate>Fri, 23 Jul 2010 19:30:12 +0000</pubDate>
		<dc:creator>makii</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[hash]]></category>
		<category><![CDATA[legacy]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[OLD_PASSWORD]]></category>

		<guid isPermaLink="false">http://research-and-destroy.de/blog/?p=200</guid>
		<description><![CDATA[Like most Software Engineers I don't have the luxury to [...]]]></description>
			<content:encoded><![CDATA[<p>Like most Software Engineers I don&#8217;t have the luxury to start with an <em>greenfield strategy</em>. Most times we know a good and viable solution to a problem, but cannot implement it due to restrictions which come with legacy systems and stuff out of our control. </p>
<p>Recently I had to migrate Newsletter subscribers to a newly created subscription system which uses an <a href="http://www.oracle.com/us/products/database/index.html" title="Oracle Databases">Oracle Database</a> (I would have preferred <a href="http://www.postgresql.org/" title="PostgreSQL">PostgreSQL</a>) rather than a <a href="http://www.mysql.com/" title="MySQL database">MySQL</a>, as the old system does.</p>
<p>Programmers are lazy, and as expected the developers of the old system used the <code><a href="http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html#function_old-password" title="OLD_PASSWORD in the MySQL Reference Manual">OLD_PASSWORD(str)</a></code> function from the database available to hash the password entered by the user. This is a very convenient way to protect the users&#8217; login credentials, but rather bad when migrating to another system which has different or none implementations of this functionality. So what do we do? The options are:</p>
<ul>
<li>Send every user a new password. Bad, we don&#8217;t want to harass them with our technical issues.</li>
<li>Force them to set a new password when they log in the next time. <em>See above</em></li>
<li>Try to find a solution to validate the password against the old password hash.</li>
</ul>
<p>As MySQL is widely used and a lot of data migration happens to and from, someone must have been run in this issue already, and most likely there is a solution to this problem in the net. And there is. I found a reimplementation of the <code>OLD_PASSWORD()</code> function in <em>C#</em> at <a href="http://www.yourhelpcenter.de/2009/06/mysql-alten-md5-hash-in-c-berechnen-16-stellig/" title="C# implementation of OLD_PASSWORD()">yourhelpcenter.de</a> (attention, german) and together with my coworker Maurice we ported it to Java, resulting in this piece of code:</p>
<p><code>
<pre>public static String mysqlOldPassword(byte[] password) {
        int[] result = new int[2];
        int nr = 1345345333;
        int add = 7;
        int nr2 = 0x12345671;
        int tmp;

        int i;
        for (i = 0; i < password.length; i++) {
            if (password[i] == ' ' || password[i] == '\t')
                continue;

            tmp = (int) password[i];
            nr ^= (((nr &#038; 63) + add) * tmp) + (nr << 8);
            nr2 += (nr2 << 8) ^ nr;
            add += tmp;
        }

        result[0] = nr &#038; ((1 << 31) - 1);
        int val = ((1 << 31) - 1);
        result[1] = nr2 & val;
        String hash = String.format("%08x%08x",result[0],result[1]);
        return hash.toLowerCase();
    }</pre>
<p></code></p>
<p>I give no guarantee this will work in all cases. My IDE complains all over the place about possible integer overflows. The usage of <code>Integer.toHexString()</code>did not work either, as the resulting String is not padded up with zeroes.</p>
<p>Finally, some Unit Tests for the interested user: </p>
<p>
<pre>    @Test
    public void testOldPassword() throws Exception {
        final String expected = "0414ac6137ee1adc";
        byte[] bytes = "fooo".getBytes("UTF8");
        String foo = mysqlOldPassword(bytes);
        assertEquals(expected, foo);
    }

    @Test
    public void testOldPassword2() throws Exception {
        final String expected = "3fa0dce62ba931b5";
        byte[] bytes = "hastewas".getBytes("UTF8");
        String foo = mysqlOldPassword(bytes);
        assertEquals(expected, foo);
    }</pre>
</p>
<p>Have fun with it!</p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://research-and-destroy.de/blog/2010/07/23/howto-implement-mysqls-old_password-in-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java &#8211; The Movie</title>
		<link>http://research-and-destroy.de/blog/2010/06/27/java-the-movie/</link>
		<comments>http://research-and-destroy.de/blog/2010/06/27/java-the-movie/#comments</comments>
		<pubDate>Sun, 27 Jun 2010 13:14:47 +0000</pubDate>
		<dc:creator>makii</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[javazone]]></category>
		<category><![CDATA[trailer]]></category>

		<guid isPermaLink="false">http://research-and-destroy.de/blog/?p=177</guid>
		<description><![CDATA[For all you out there who code java like me :-)



 [...]]]></description>
			<content:encoded><![CDATA[<p>For all you out there who code java like me :-)</p>
<p><object width="600" height="385"><param name="movie" value="http://www.youtube.com/v/1HUMYWGnMVs&#038;hl=de_DE&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/1HUMYWGnMVs&#038;hl=de_DE&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="600" height="385"></embed></object></p>
<p>And everyone else…</p>
<p>via <a href="http://twitter.com/pommesbude/status/17032357008">@pommesbude</a></p>
<p><strong>Update:</strong>Youtube seemingly has killed the video, but the original version is still available <a href="http://jz10.java.no/java-4-ever-trailer.html" title"java.no">here.</a></p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://research-and-destroy.de/blog/2010/06/27/java-the-movie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java is hot!!!</title>
		<link>http://research-and-destroy.de/blog/2009/05/15/java-is-hot/</link>
		<comments>http://research-and-destroy.de/blog/2009/05/15/java-is-hot/#comments</comments>
		<pubDate>Fri, 15 May 2009 07:35:52 +0000</pubDate>
		<dc:creator>123Laune</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://research-and-destroy.de/blog/2009/05/15/java-is-hot/</guid>
		<description><![CDATA[But we all knew it anyway.... ;-)

 [...]]]></description>
			<content:encoded><![CDATA[<p>But we all knew it anyway&#8230;. ;-)</p>
<p><a href='http://research-and-destroy.de/blog/wp-content/uploads/2009/05/firestarter.jpg' title='firestarter.jpg'><img src='http://research-and-destroy.de/blog/wp-content/uploads/2009/05/firestarter.jpg' alt='firestarter.jpg' /></a></p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://research-and-destroy.de/blog/2009/05/15/java-is-hot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft&#8217;s &#8220;Apple Tax&#8221;. WTF?</title>
		<link>http://research-and-destroy.de/blog/2009/04/12/microsofts-apple-tax-wtf/</link>
		<comments>http://research-and-destroy.de/blog/2009/04/12/microsofts-apple-tax-wtf/#comments</comments>
		<pubDate>Sun, 12 Apr 2009 13:15:50 +0000</pubDate>
		<dc:creator>makii</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://research-and-destroy.de/blog/2009/04/12/microsofts-apple-tax-wtf/</guid>
		<description><![CDATA[After Microsoft's ad starring Jerry Seinfeld and Bill G [...]]]></description>
			<content:encoded><![CDATA[<p>After Microsoft&#8217;s ad starring Jerry Seinfeld and Bill Gates, which was the first response to the well-known <a href="http://www.youtube.com/results?search_query=get+a+mac" title="Search Results for get a mac on youtube">Get a Mac</a> commercials, was kind of a flop, they recently started the <em>Laptop Hunters</em> series. Watching it is kind of funny. Mostly, for my part, because of the reactions of the people when they&#8217;re presented with the money for their computer-to-be.</p>
<p>Apart from that, the Company From Redmond <a href="http://windowsteamblog.com/blogs/windowsexperience/archive/2009/04/09/avoid-the-apple-tax-cash-in-on-the-value-of-windows.aspx" title="Avoid the Apple Tax – Cash in on the value of Windows">commissioned, or <em>sponsored</em></a>, as they call it, an <a href="http://www.ndpta.com/files/AppleTax.pdf" title="What Price Cool? - Users may know they pay more for Mac hardware, but much of the Apple Tax is hidden.">analysis</a> from Endpoint Technologies Associates, which should transparently describe the &#8220;Apple Tax&#8221;. At the first glance the form (filled out by hand, as it seems) looks pretty convincing, stating an overall saving of more than 3300 bucks when you buy a PC instead of a Mac. Is that really true?</p>
<p>Ina Fried from Cnet took <a href="http://news.cnet.com/8301-13860_3-10216096-56.html" title="">a closer look</a> at the findings and is not convinced. The report states no additional license fees for the Windows systems despite the OEM licenses included in the hardware price. Where do they get there Software from? Do they use <a href="http://www.openoffice.org/">OpenOffice</a>? Do they use copies from their friends illegally? Why do they list the (totally optional) MobileMe account? This account on it&#8217;s own bills for about $750 in the five years. I know only one person who uses MobileMe and he will discontinue it. </p>
<p>Sure, Apple hardware is more expansive in comparison to PC hardware, that&#8217;s true. But as the <em><a href="http://windowsteamblog.com/blogs/windowsexperience/archive/2009/04/09/avoid-the-apple-tax-cash-in-on-the-value-of-windows.aspx" title="Avoid the Apple Tax – Cash in on the value of Windows">Windows Experience Blog</a></em> states correctly, it&#8217;s not only about cost, but about value. I&#8217;m an Apple user for about a half year now and I think I get a lot more value for my money than for my previous laptops, which were PC systems. In germany we have two words to describe this difference. The word which describes a possibly good deal is <em>&#8220;g&uuml;nstig&#8221;</em>, which translates well to <em>cheap</em> as in <em>low priced</em>. <em>&#8220;billig&#8221;</em> also means cheap, but more in a kind of <em>this product&#8217;s kinda crappy</em> way. A lot of PC hardware in the past was <em>&#8220;billig&#8221;</em>, and the present one often still is. The hardware of these systems does not fit together well, the cheap ones still have a ridiculously low resolution (I will never work willingly on anything below 1400&#215;900 on 14&#8243; or 15&#8243; screens). The chassis stability of Macs might be reached by Thinkpads, but the Design I think is still leading, though it is quite simply.</p>
<p>To the software. I had installed Windows on my previous PC systems, and I even have a BootCamp installation with Windows XP on it on my Mac. I boot it two or three times a month to play games which unfortunately are not available for OSX (<a href="http://assassinscreed.uk.ubi.com/" title="by UbiSoft">Assasins Creed</a> and <a href="http://fallout.bethsoft.com/" title="by Bethsoft">Fallout 3</a>) and don&#8217;t work with <a href="http://www.codeweavers.com/products/cxgames/" title="Codeweavers">Crossover Games</a> properly. That&#8217;s all I use it for, and, hell, that&#8217;s all I need it for. The last five years I solely worked on Unix- and Linux- based systems. And I like it. Instead of clicking around endlessly in the explorer or the System Control I have a powerful shell (<a href="http://www.zsh.org/" title="zsh home">zsh</a> or <a href="http://www.gnu.org/software/bash/" title="Bourne Again Shell home">bash</a>) and I can do everything on the fast lane. For the direct functions of the operating system the clicking point is also valid for OSX. But the simple gestures on the trackpad, or the Expose configuration is so addictive I tried to switch workspaces on my Linux workstation in the office by moving the mouse pointer to the upper right corner only <em>two days</em> after I bought my first Mac (yeah, I know. This might become a problem someday). </p>
<p>The important part for me is: Mac OSX, while shiny and colorful, has a Unix foundation, which is (IMO, even if not open source), a good thing. No ugly Cygwin necessary. There is <a href="http://www.macports.org/" title="macports.org homepage">MacPorts</a>. There is <a href="http://www.finkproject.org/" title="Fink homepage">Fink</a>. Lots of stuff I need for everyday life. And the parts which come with OSX UI are most natural and intuitive.</p>
<p>To the point. I like Apple Hardware and Software, because
<ul>
<li>It looks kinda cool. This sure is one major point why Apple is so successful.</il>
<li>The hardware is sturdy.</li>
<li>The software fits my needs.</li>
<li>There is not that much malware, spyware and other bad stuff for OSX, if any.</li>
<li>There is a usable Unix environment underneath all that glamour.</li>
<li>I am not ridicuously accurate about free software licenses, though I like and respect free software in general.</li>
</ul>
<p>I have stopped looking into Microsoft&#8217;s operating systems since Windows 2000. As mentioned before I&#8217;ve run XP on my Samsung X20 and MacBook Pro for gaming only. This was good as I can tell you now. Having started at a new Job I need to speak with a funny Exchange Server from Redmond Industries which I could not get up and running with anything I tried with Evolution, so I continued using the pre-installed Vista. It looks good enough for now, but still is a plain continuation of the user interface concepts from Windows 95. I still have to use the embedded context menue to create a new folder. It still comes with 2 tons of funny software preinstalled which needs to be cleaned out before you can somehow work with the system. Every tool which should bring me some sane Virtual Desktop support is either broken somehow, or is totally cumbersome to use. I think this will be my next desktop wallpaper&#8230;</p>
<p><a href="http://technology.desktopnexus.com/wallpaper/23063/" title="I wish I had a Mac"><img src='http://research-and-destroy.de/blog/wp-content/uploads/2009/04/23063-bigthumbnail.jpg' alt='I wish I had a Mac.' /></a>
</p>
<p>But this would not help either, this mail setup does not work for Entourage either.</p>
<p>So I&#8217;m (again, for once) stuck with Windows and no light at the end of the tunnel. I think I&#8217;ll, if time allowes, play a bit more with an Ubuntu in some <a href="http://www.virtualbox.org/" title="virtual box homepage">virtual box</a> setup and try to get Mail access up and running with Linux. Till then I need to work around with the most sane environment on windows, which still is <a href="http://www.cygwin.com" title="cygwin home">Cygwin</a>, which offers a sane xterm, zsh/bash, screen and some other utilities which I never want to miss.</p>
<p>Comming back to the topic of this post: There sure is some kind of &#8220;Apple Tax&#8221; if you want to call it that. <em>BUT</em> I really really doubt that it is so high as described in the Microsoft-paid paper. My opinion is that users get more <em>value</em> for a higher price. Some of the added value is purely aestetic, another is less pain in the ass, as they don&#8217;t bloat up their registry with a ton of funny entries for installing software they simply want to try, viruses, malware, The Search For The Driver(tm) and other stuff. The whole software suit from Apple is much more integrated and more simple to use. Every user has to decide whether they think it&#8217;s worth the price for them. If (probably) crappy hardware with Windows works for them &#8211; who am I to judge?</p>
<p>Despite that, the <em>Get a Mac</em> ads from Apple are more conciliabe, meaning they acknowledge the strengths of the PC to some degree, even if in a comical way. <em>Laptop Hunters</em> is a more offensive and absolutistic approach to compare the two systems, telling the customers Apple is stealing money from them. That&#8217;s business, OK, but it&#8217;s totally unfair.</p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://research-and-destroy.de/blog/2009/04/12/microsofts-apple-tax-wtf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Patterns Reloaded: The other Singleton</title>
		<link>http://research-and-destroy.de/blog/2008/11/19/patterns-reloaded-the-other-singleton/</link>
		<comments>http://research-and-destroy.de/blog/2008/11/19/patterns-reloaded-the-other-singleton/#comments</comments>
		<pubDate>Wed, 19 Nov 2008 10:36:24 +0000</pubDate>
		<dc:creator>123Laune</dc:creator>
				<category><![CDATA[Common]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[funny]]></category>

		<guid isPermaLink="false">http://research-and-destroy.de/blog/2008/11/19/patterns-reloaded-the-other-singleton/</guid>
		<description><![CDATA[

A Singleton both PHP- and JEE-DevGuys should like ; [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://research-and-destroy.de/blog/wp-content/uploads/2008/11/07-11-08_2048.jpg" alt="Singleton " title="The real Singleton" width="480" height="640" class="aligncenter size-full wp-image-102" /></p>
<p>
A Singleton both PHP- and JEE-DevGuys should like ;-)</p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://research-and-destroy.de/blog/2008/11/19/patterns-reloaded-the-other-singleton/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>parallelization + array = ParallelArray</title>
		<link>http://research-and-destroy.de/blog/2008/10/17/parallelization-array-parallelarray/</link>
		<comments>http://research-and-destroy.de/blog/2008/10/17/parallelization-array-parallelarray/#comments</comments>
		<pubDate>Fri, 17 Oct 2008 15:18:24 +0000</pubDate>
		<dc:creator>AVC</dc:creator>
				<category><![CDATA[16ms]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Common]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://research-and-destroy.de/blog/2008/10/17/parallelization-array-parallelarray/</guid>
		<description><![CDATA[The idea is that a ParallelArray represents a collectio [...]]]></description>
			<content:encoded><![CDATA[<p>The idea is that a <code>ParallelArray</code> represents a collection of structurally similar data items, and you use the methods on <code>ParallelArray</code> to create a description of how you want to slice and dice the data. You then use the description to actually execute the array operations, which uses the fork-join framework under the hood, in parallel&#8230;This idea coming in JDK 7 :)</p>
<p>In fact, here are some operations supported by <code>ParallelArray</code>:</p>
<ul>
<li>Filtering: selecting a subset of the elements</li>
<li>Mapping: convert selected elements to another form</li>
<li>Replacement: create a new <code>ParallelArray</code> derived from the original</li>
<li>Aggregation: combine all values into a single value</li>
<li>Application: perform an action for each selected element</li>
</ul>
<p>- avc</p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://research-and-destroy.de/blog/2008/10/17/parallelization-array-parallelarray/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The best Java Exception ever</title>
		<link>http://research-and-destroy.de/blog/2008/10/10/the-best-java-exception-ever/</link>
		<comments>http://research-and-destroy.de/blog/2008/10/10/the-best-java-exception-ever/#comments</comments>
		<pubDate>Fri, 10 Oct 2008 12:33:06 +0000</pubDate>
		<dc:creator>makii</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[funny]]></category>

		<guid isPermaLink="false">http://research-and-destroy.de/blog/2008/10/10/the-best-java-exception-ever/</guid>
		<description><![CDATA[ A lot of thanks to Code To Joy for the best Java Excep [...]]]></description>
			<content:encoded><![CDATA[<p> A lot of thanks to <a href="http://codetojoy.blogspot.com/2008/10/razz-your-friends-best-java-exception.html">Code To Joy</a> for the best Java Exception I ever saw: <a href="http://java.sun.com/j2se/1.4.2/docs/api/java/nio/charset/CoderMalfunctionError.html">JavaDoc of CME</a> </p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://research-and-destroy.de/blog/2008/10/10/the-best-java-exception-ever/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>String literals</title>
		<link>http://research-and-destroy.de/blog/2008/06/02/string-literals/</link>
		<comments>http://research-and-destroy.de/blog/2008/06/02/string-literals/#comments</comments>
		<pubDate>Mon, 02 Jun 2008 10:51:03 +0000</pubDate>
		<dc:creator>makii</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://research-and-destroy.de/blog/2008/06/02/string-literals/</guid>
		<description><![CDATA[When coding in Java, I usually try to avoid string lite [...]]]></description>
			<content:encoded><![CDATA[<p>When coding in Java, I usually try to avoid string literals in the code, especiall when they reference other software components like templates, which are filled with values in arbitrary places throughout the code. This is what I found in a project which we&#8217;re going to insource soon:  </p>
<p><code>#-[ user@host ]- ~/work/project/trunk<br />
#-[0]-> find . -type f -name "*.java" -exec grep -r "\"salutation2\"" {} \;  | wc -l<br />
24<br />
#-[ host@host ]- ~/work/project/trunk<br />
#-[0]-> kill -9 $SOFTWARE_SERVICE_PROVIDER<br />
</code></p>
<p>No comment.</p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://research-and-destroy.de/blog/2008/06/02/string-literals/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My oh my what have we here&#8230;</title>
		<link>http://research-and-destroy.de/blog/2008/04/22/my-oh-my-what-have-we-here/</link>
		<comments>http://research-and-destroy.de/blog/2008/04/22/my-oh-my-what-have-we-here/#comments</comments>
		<pubDate>Tue, 22 Apr 2008 10:03:45 +0000</pubDate>
		<dc:creator>derlanders</dc:creator>
				<category><![CDATA[Common]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://research-and-destroy.de/blog/2008/04/22/my-oh-my-what-have-we-here/</guid>
		<description><![CDATA[Did you ever get scared about modern Software being all [...]]]></description>
			<content:encoded><![CDATA[<p>Did you ever get scared about modern Software being all too intelligent, that it would finally take control and such? Don&#8217;t be.</p>
<p><img src="http://research-and-destroy.de/blog/wp-content/uploads/2008/04/brainless.JPG" alt="brainless" /></p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://research-and-destroy.de/blog/2008/04/22/my-oh-my-what-have-we-here/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Funny things when building web applications&#8230;</title>
		<link>http://research-and-destroy.de/blog/2008/04/03/funny-things-when-building-web-applications/</link>
		<comments>http://research-and-destroy.de/blog/2008/04/03/funny-things-when-building-web-applications/#comments</comments>
		<pubDate>Thu, 03 Apr 2008 09:19:11 +0000</pubDate>
		<dc:creator>makii</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[office]]></category>

		<guid isPermaLink="false">http://research-and-destroy.de/blog/2008/04/03/funny-things-when-building-web-applications/</guid>
		<description><![CDATA[When you build a web application using maven2, there ar [...]]]></description>
			<content:encoded><![CDATA[<p>When you build a web application using <a href="http://maven.apache.org/">maven2</a>, there are funny log messages in the output, if you care see them:</p>
<p><code>[INFO] [war:war]<br />
[INFO] Packaging webapp<br />
[INFO] Assembling webapp[commodities.view] in [C:\code\commodities.view\target\commodities.view-0.1-SNAPSHOT]<br />
[INFO] Processing war project</code></p>
<p>Whom is this maven thingy going to attack???</p>
<p>© derlanders</p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://research-and-destroy.de/blog/2008/04/03/funny-things-when-building-web-applications/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>We were wrong all the Time!</title>
		<link>http://research-and-destroy.de/blog/2008/04/02/we-were-wrong-all-the-time/</link>
		<comments>http://research-and-destroy.de/blog/2008/04/02/we-were-wrong-all-the-time/#comments</comments>
		<pubDate>Wed, 02 Apr 2008 09:37:05 +0000</pubDate>
		<dc:creator>derlanders</dc:creator>
				<category><![CDATA[Common]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://research-and-destroy.de/blog/2008/04/02/we-were-wrong-all-the-time/</guid>
		<description><![CDATA[If you’re not familiar with FAD, then you’ve been m [...]]]></description>
			<content:encoded><![CDATA[<p>If you’re not familiar with FAD, then you’ve been missing out. Essentially, FAD is a fundamental paradigm shift over the “traditional” and “neo” ways of building software. Not only does it surpass every other software development methodology out there, it solves every problem there is to building software. And then some.</p>
<p><u><strong>The FAD Manifesto</strong></u></p>
<blockquote><p><strong>I. Front Ahead Design<br />
</strong>The essence of FAD is conveyed directly in its name: design your front-end/user-interface first, ahead of everything else. The customer could care less what’s behind the scenes, so long as it looks good and does what it’s supposed to. Deliver a working front-end first and then <em>Do What It Takes</em> to fill in the functionality gaps.</p>
<p><strong>II. Do What It Takes<br />
</strong>Other methodologies are great at delivering excuses. How many times have you heard (or have been told) “we can’t do that here because it could throw off the whole design?”  In FAD, you just <em>do it</em> (that would have been the bullet point, but Nike has it trademarked). To get it done, you <em>Do What It Takes</em>. Your customer will love you.</p>
<p><strong>III. Code Light, Not “Right”<br />
</strong>A traditional methodology calls a complex framework with layer after layer of objects. In those ways, adding a simple value to a form can be a monumental task, requiring it to be added to every single layer. Does that sound right? Proponents of the other methodologies will tell you it is, but what about your customer? With FAD, you just <em>Do What It Takes</em> to add the functionality to your interface. No more.</p>
<p><strong>IV. “Throw Away” Diagrams</strong><br />
Think of all the Visio diagrams you’ve drawn over the years. Sequence diagrams, context diagrams, flow charts, and so on. Was that really productive? Did your customer ever see any of those? Were those diagrams even relevant after the system was finally developed? Didn’t think so.</p>
<p>In FAD, all diagrams are made on a disposable medium. Whiteboards, napkins, even your forearms work. And there is no formal modeling language to battle with: just <em>Do What It Takes</em> to draw and explain your design to other developers.</p>
<p><strong>V. Life Is Short (a.k.a. Patchwork)</strong><br />
The average software system has a life expectancy of seven years. No matter how “properly” the system is designed from the start, within the first year of its life, maintenance programmers unfamiliar with the complex architecture (and having no help from out-of-date documentation) will turn the system into a complete mess with bug fixes and change requests.</p>
<p>In FAD, this isn’t even a concern. We know the short life span of a system and develop every feature (from the interface) as a patch. Maintenance programmers can come in and <em>Do What It Takes</em> to add their patches. In FAD, we don’t even try to stop the aging process. We encourage it.</p>
<p><strong>VI. Learn To Deal<br />
</strong>Many other methodologies focus on delivering “quality” (as in “bug free”) software. And guess what: they fail. Miserably. No matter how hard you try, software will have bugs. In FAD, we just <em>learn to deal</em> with it, and we encourage the client to do the same. So what if the application crashes when you click that button that way? Don’t click the button that way, and <em>learn to deal</em>!</p>
<p><strong>VII. Be Environmentally Conservative<br />
</strong>In the real world, there’s only one environment: it’s called The Real World. So why do some methodologies invent these counter-intuitive, bizarro environments called “QA” and “UAT”? Do architecture firms construct an entire house <em>before</em> building an addition on yours, just so they can “test” their building skills? Of course not, and neither should software developers. In FAD, there’s only one software environment: Production. Anything else is pollution.</p></blockquote>
<p><strong><u>FAD Application Design</u></strong></p>
<blockquote><p>NOTE: First and foremost, understand that the FADAD is merely the <em>preferred </em>method of building applications. Because in FAD, we <em>do what it takes</em>, a lesser or more in depth approach can be used as needed.</p>
<p>Many of the tenets of Front Ahead Design are based on the failings of other methodologies. FADAD is no different, and draws some of its key facets from the archaic Model-View-Controller architecture. In MVC, there are three different components: the Model (the data), the View (the UI), and the Control (everything else).</p>
<p>If you think about it, two of MVC’s components are nothing but dead weight. All anyone – including the client – really cares about when all things are said and done is the View. Therefore, in FADAD, our guiding architecture model is simply called “V”:</p>
<p><img src="http://img.thedailywtf.com/images/200804/v.png" /></p></blockquote>
<p><strong><u>The H/YPE Framework: The FAD Developer’s Best Friend</u></strong></p>
<blockquote><p>If there’s one thing that’s frustrated just about every developer out there, it’s “untouchable” library code that <em>almost</em> does what you need it to, but not quite. For FAD developers who chose to use the H/YPE framework, this is not a problem.</p>
<p>Unlike the stodgy libraries of yesteryear, H/YPE is not a “compiled” library. It’s a set of cross-language codefiles that can be copied to any application, and is designed to “live” with that application for life. Don’t like that 48 plus 92 is <em>not</em> 4892? No problem! Just edit MathHelper. Here’s a small subset of what comes in H/YPE:</p>
<ul>
<li><strong>HYPE.StringHelper</strong> – all sorts of functions like IsEqual, AreEqual, Add, Subtract, Join, DoubleJoin, Encrypt, and Decrypt</li>
<li><strong>HYPE.VHelper.HTML </strong>– the ultimate HTML library including functions like WrapInCENTER, UnHTML, ToHTML, and ScriptBlock</li>
<li><strong>HYPE.Audio </strong>– everything you’d ever want to add audio, including Beep and BeepMore</li>
</ul>
</blockquote>
<p><strong><u>But Wait, There’s More: Certification!</u></strong></p>
<blockquote><p>No, I don’t mean to sound like our good friend Ron Popeil, but before wrapping things up here, I wanted to tell you about the latest excitement in the world of Front-Ahead Design: certification!</p>
<p>Just last week at the International FAD Conference in Azerbaijan, I joined several other FAD leaders to formally announce the first official Front-Ahead Design certification program: the Fadstronaut certificate. Why Fadstronaut? Because we felt that the astronaut was the best analogy for the challenges and difficulties that FAD software developers face each day.</p>
<p>Becoming a Certified Fadstronaut is easy, but not too easy. All you need is one year (1,000 hours) of verifiable FAD development experience, and you’ll be eligible to sit for the Fadstronaut certification exam. Score in the 50th percentile, and you’ve earned the designation <em>Certified Fadstronaut</em>!</p></blockquote>
<p>I hope that gives you all a good idea of what FAD is all about. Believe me, there’s a whole world more of FAD out there. That said, I hope to see some of you soon at the Worldwide FAD Meeting in Buenos Aires next month!</p>
<p>http://thedailywtf.com/Articles/FrontAhead-Design.aspx</p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://research-and-destroy.de/blog/2008/04/02/we-were-wrong-all-the-time/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Review of Neil Gafters&#8217; talk</title>
		<link>http://research-and-destroy.de/blog/2008/03/24/review-of-neil-gafters-talk/</link>
		<comments>http://research-and-destroy.de/blog/2008/03/24/review-of-neil-gafters-talk/#comments</comments>
		<pubDate>Mon, 24 Mar 2008 15:09:33 +0000</pubDate>
		<dc:creator>makii</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Closures]]></category>

		<guid isPermaLink="false">http://research-and-destroy.de/blog/2008/03/24/review-of-neil-gafters-talk/</guid>
		<description><![CDATA[Yes, it's a little late, but so what?

About two week [...]]]></description>
			<content:encoded><![CDATA[<p>Yes, it&#8217;s a little late, but so what?</p>
<p>About two weeks I visited a quite interesting talk by <a href="http://gafter.blogspot.com/" title="Neil Gafter's blog">Dr. Neil Gafter</a>,  developer of <a href="https://www.google.com/calendar/" title="Google Calendar">Google Calendar</a>, whom, in his spare time, proposes new language features for the Java Programming Language and Sun&#8217;s <em>javac</em>-Java compiler. The latest proposes <a href="http://javac.info/" title="BGGA closures proposal to the Java Programming Language">BGGA closures</a>, in conjunction with other nice features like <a href="http://tronicek.blogspot.com/2008/02/version-2008-02-22.html" title="Control Abstraction and Restriction by Zden\u011bk Troní\u010dek">control abstraction</a>, <a href="http://tronicek.blogspot.com/2007/12/function-types.html" title="function types">function types</a> and lots of other pretty useful things,is under heavy discussion.</p>
<p>At first I was unsure what to think about closures, lots of people compained about the syntax, and that noone ever will understand the code when here are some function types in it. But, honestly, can it get any more confusing than with generics? <strong>NEVER!!</strong>. During the talk I recognized the pattern, which clearly is derived from the code blocks I used to love in <a href="http://en.wikipedia.org/wiki/Smalltalk" title="Smalltalk on en.wikipedia.org">Smalltalk</a>. Clearly there are some slight differences taking into account that Java is, contrary to Smalltalk, a strongly typed language.</p>
<p>Further than that, it gets really nice when using closures in conjunction with control abstraction: Often used example, which actually doesn&#8217;t make sense, as Java5 has a foreach loop built in, but let&#8217;s just say someone wants to implement a method like <code>foreach</code>, taking as parameter any type of <code>Collection&lt;T&gt;</code>, as well as a block of code, which itself takes as parameter one item of <code>T</code>. This method then can be imported statically by any class which has need of this particular <code>foreach</code> loop.  This abstract functionality is, right now, hard-wired in the java compiler to the Java Collections framework from the runtime environment. *hick* Yes, exactly the way around it should <strong>NOT</strong> be.</p>
<p>Closures in conjunction with control abstraction have the power to enable APIs to implement their own control statements like, for example, a foreach-loop for Collections or Maps, performance logging, cleanup work, whatever you can imagine. Despite my reservations in the beginning, I can&#8217;t wait to see the BGGA proposal into Java7 or Java8. Hopefully we will see it!</p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://research-and-destroy.de/blog/2008/03/24/review-of-neil-gafters-talk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

