<?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>Kai Witte's Blog &#187; Computers</title>
	<atom:link href="http://witte-consulting.com/blog/category/computers/feed/" rel="self" type="application/rss+xml" />
	<link>http://witte-consulting.com/blog</link>
	<description>Brief articles by Kai Witte</description>
	<lastBuildDate>Sat, 22 May 2010 11:20:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>The history of JTiger</title>
		<link>http://witte-consulting.com/blog/the-history-of-jtiger/</link>
		<comments>http://witte-consulting.com/blog/the-history-of-jtiger/#comments</comments>
		<pubDate>Sat, 22 May 2010 11:20:00 +0000</pubDate>
		<dc:creator>Kai Witte</dc:creator>
				<category><![CDATA[Computers]]></category>

		<guid isPermaLink="false">http://witte-consulting.com/blog/?p=222</guid>
		<description><![CDATA[JTiger is a test framework, developed by Tony Morris in 2004 and published March 23, 2005. Defining attributes JTiger had a rich set of features and predefined assertions: It was easy to run tests programmatically or from an Apache Ant task. History Tony Morris developed Assertion Extensions for JUnit (at that time known as JUnitX; [...]]]></description>
			<content:encoded><![CDATA[<p>JTiger is a test framework, developed by <a href="http://cv.tmorris.net/">Tony Morris</a> in 2004 and published March 23, 2005.</p>
<h2>Defining attributes</h2>
<p>JTiger had a rich set of features and predefined assertions:<br />
<div class="wp-caption alignnone" style="width: 331px"><img alt="an integrated test assertion for serializability" src="http://kaiwitte.org/images/testcase1.png" title="JTiger testcase" width="321" height="113" /><p class="wp-caption-text">an integrated test assertion for serializability</p></div><br />
<div class="wp-caption alignnone" style="width: 331px"><img alt="check for expected Exception" src="http://kaiwitte.org/images/testcase2.png" title="check for expected Exception" width="321" height="113" /><p class="wp-caption-text">check for expected Exception</p></div><br />
<div class="wp-caption alignnone" style="width: 331px"><img style="max-width:200%" alt="check for equals/hashCode contract" src="http://kaiwitte.org/images/testcase3.png" title="assert correct serialization" width="664" height="130" /><p class="wp-caption-text">check for equals/hashCode contract</p></div><br />
It was easy to run tests programmatically or from an Apache Ant task.</p>
<h2>History</h2>
<p>Tony Morris developed <a href="http://www.alphaworks.ibm.com/tech/junitx">Assertion Extensions for JUnit</a> (at that time known as JUnitX; not to be confused with other frameworks sharing the same name) a while ago. It contained advanced assertions to be used with plain old JUnit. When Java SE 5 was in beta, he started with the development of JTiger. Because of his contract as an employee of IBM, he needed permission by IBM to publish it as Open Source, even though he developed it in his free time. That process took several months. JTiger even crossed the desk of Erich Gamma, who commented on it in a private email to Tony Morris.</p>
<p>
While JTiger was in this approval process, TestNG has been released. At that time it had less fancy assertions (see examples above), but the concept was just as good and additional assertions have been introduced later. Also there were IDE-Plugins for Intellij Idea and Eclipse.</p>
<p>
After JTiger has been approved by IBM and released, it gained a fair amount of community acceptance. Independent comparisons with JUnit and TestNG were rather positive, such as <a href="http://www.theserverside.com/news/1365218/Test-Framework-Comparison">Justin Lee&#8217;s Test Framework Comparison</a>.</p>
<p>
In December 2005 I officially took charge of the project and Tony Morris retired from it. I never changed much except for the documentation and website, though.</p>
<p>
Early in 2010 the transfer of the domain ownership for jtiger.org to me failed. I don&#8217;t know what went wrong. I got the correct release code from Tony Morris and gave it to my registrar. A few days later my registrar informed me that either the current registrar or the owner (Tony Morris) did not approve the transfer. That was the end of the website.</p>
<h2>What now?</h2>
<p>In 2008, Tony Morris released Reductio. Similar to QuickCheck, it uses Automated Specification-based Testing. Reductio has become part of the <a href="http://functionaljava.org/">Functional Java</a> API.</p>
<p>
And of course you can still use JTiger:</p>
<p class="plaintext">
            <b><br />
                JTiger tar.gz<br />
            </b></p>
<p>            <a href="http://kaiwitte.org/jtiger/jtiger-2.1.0376.tar.gz">jtiger-2.1.0376.tar.gz</a>
        </p>
<p class="plaintext">
            <b></p>
<p>                JTiger MD5 tar.gz<br />
            </b></p>
<p>            <a href="http://kaiwitte.org/jtiger/jtiger-2.1.0376.tar.gz.MD5">jtiger-2.1.0376.tar.gz.MD5</a>
        </p>
<p class="plaintext">
            <b><br />
                JTiger zip<br />
            </b></p>
<p>
            <a href="http://kaiwitte.org/jtiger/jtiger-2.1.0376.zip">jtiger-2.1.0376.zip</a>
        </p>
<p class="plaintext">
            <b><br />
                JTiger MD5 zip<br />
            </b></p>
<p>            <a href="http://kaiwitte.org/jtiger/jtiger-2.1.0376.zip.MD5">jtiger-2.1.0376.zip.MD5</a>
        </p>
]]></content:encoded>
			<wfw:commentRss>http://witte-consulting.com/blog/the-history-of-jtiger/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Slow Research &#8211; A Mod for Warzone 2100</title>
		<link>http://witte-consulting.com/blog/slow-research-a-mod-for-warzone-2100/</link>
		<comments>http://witte-consulting.com/blog/slow-research-a-mod-for-warzone-2100/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 21:32:42 +0000</pubDate>
		<dc:creator>Kai Witte</dc:creator>
				<category><![CDATA[Computers]]></category>

		<guid isPermaLink="false">http://witte-consulting.com/blog/?p=212</guid>
		<description><![CDATA[This mod doubles the time for all research in Warzone 2100. Download Slow Research Mod Version 1.0 alpha 3 System requirements Warzone 2100 Version 2.3 beta 10 (MIGHT work with other versions). Installation See the reference on the official project website. Tactical motivation Experienced players have optimised their research in such a way that many [...]]]></description>
			<content:encoded><![CDATA[<p>This mod doubles the time for all research in <a href="http://wz2100.net/">Warzone 2100</a>.</p>
<p><a href="http://kaiwitte.org/slowresearch.wz">Download Slow Research Mod Version 1.0 alpha 3</a></p>
<h3>System requirements</h3>
<p>Warzone 2100 Version 2.3 beta 10 (MIGHT work with other versions).</p>
<h3>Installation</h3>
<p>See the <a href="http://wz2100.net/faq#HowdoIinstallamod">reference on the official project website</a>.</p>
<h3>Tactical motivation</h3>
<p>Experienced players have optimised their research in such a way that many technologies are outdated a few minutes after they have been researched. The lifespan of some weapons is very short in games with experienced players. For example ripple rockets are available in less than 19 minutes (T1, no starting bases), which makes mortars pretty much useless. When someone tries to use mortar or bombard pits, the opponent can simply build a few bunkers and wait for CB tower and ripple rockets. Even a huge field of mortar pits can only destroy a few bunkers before it gets smashed by ripple rockets.<br />
With this mod, ripple rockets will be available around game minute 37, which makes mortars more attractive.</p>
<p>It does <strong>not</strong> slow down the entire game! Production speed and unit movement speed as well as power income are unchanged. So <strong>relative</strong> to the research, these elements are twice as fast now. For example in the previously short time span from when twin mg gets researched until the research of heavy MG (or a different superior counter weapon like mini pod), a player can build twice as many tanks with twin MG and move twice as far with them as before.</p>
]]></content:encoded>
			<wfw:commentRss>http://witte-consulting.com/blog/slow-research-a-mod-for-warzone-2100/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java EE-Vortrag in Kiel</title>
		<link>http://witte-consulting.com/blog/java-ee-vortrag-in-kiel/</link>
		<comments>http://witte-consulting.com/blog/java-ee-vortrag-in-kiel/#comments</comments>
		<pubDate>Sat, 05 Sep 2009 23:45:15 +0000</pubDate>
		<dc:creator>Kai Witte</dc:creator>
				<category><![CDATA[Computers]]></category>

		<guid isPermaLink="false">http://witte-consulting.com/blog/?p=206</guid>
		<description><![CDATA[Hallo Teilnehmer, für die Codeschnipsel, die ich in der Präsentation gezeigt habe, habe ich ein kleines Java EE-Projekt angelegt, das Ihr hier herunterladen könnt: javaee-vortrag.zip Erwartet bitte nicht zu viel. Es macht nichts Sinnvolles, sondern enthält nur die gezeigten Programmteile. Allerdings funktioniert es, und Ihr könnt darauf zum Testen aufbauen. Ich helfe gern bei der [...]]]></description>
			<content:encoded><![CDATA[<p>Hallo Teilnehmer,</p>
<p>für die Codeschnipsel, die ich in der Präsentation gezeigt habe, habe ich ein kleines Java EE-Projekt angelegt, das Ihr hier herunterladen könnt:</p>
<p><a href="http://witte-consulting.com/javaee-vortrag.zip">javaee-vortrag.zip</a></p>
<p>Erwartet bitte nicht zu viel. Es macht nichts Sinnvolles, sondern enthält nur die gezeigten Programmteile. Allerdings funktioniert es, und Ihr könnt darauf zum Testen aufbauen. Ich helfe gern bei der Installation, falls die Anweisungen unter &#8220;Dokumentation&#8221; im zip nicht reichen sollten. Projektdateien für Intellij Idea und Eclipse (ungetestet) sind dabei.</p>
<p>Als komplettes Beispiel für eine Java EE 5 Applikation bietet sich ansonsten die <a href="https://blueprints.dev.java.net/petstore/">Pet Store Demo</a> von Sun an.</p>
<p>Wer den Stand der Technik mit Schwerpunkt Webfrontend durch Java EE-basierte Frameworks sehen will, für den bietet sich das Booking-Example von <a href="http://seamframework.org/">Seam</a> an oder auch die <a href="http://www.jboss.org/richfaces/demos.html">Demos von JBoss RichFaces</a>.</p>
<p>Fragen und Diskussion zum Vortrag oder zu Java EE gern hier in den Kommentaren, oder <a href="http://witte-consulting.com/contact/">kontaktiert mich direkt</a>.</p>
<p>Gruß</p>
<p>Kai</p>
]]></content:encoded>
			<wfw:commentRss>http://witte-consulting.com/blog/java-ee-vortrag-in-kiel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Found undocumented trojan</title>
		<link>http://witte-consulting.com/blog/found-undocumented-trojan/</link>
		<comments>http://witte-consulting.com/blog/found-undocumented-trojan/#comments</comments>
		<pubDate>Fri, 28 Nov 2008 13:10:31 +0000</pubDate>
		<dc:creator>Kai Witte</dc:creator>
				<category><![CDATA[Computers]]></category>

		<guid isPermaLink="false">http://witte-consulting.com/blog/?p=162</guid>
		<description><![CDATA[I recently came across a trojan, which is detected by common virus scanners, but not much documented. So I analysed it just a little. Like many others it is located in the Windows directory (for example c:\winnt) and named svchost.exe (the real svchost.exe belongs to system32). It is set up to start with Windows. These [...]]]></description>
			<content:encoded><![CDATA[<p>I recently came across a trojan, which is detected by common virus scanners, but not much documented. So I analysed it just a little.</p>
<p>Like many others it is located in the Windows directory (for example c:\winnt) and named <code>svchost.exe</code> (the real <code>svchost.exe</code> belongs to <code>system32</code>). It is set up to start with Windows.</p>
<p>These are its names according to <a href="http://virusscan.jotti.org/">jotti.org</a>:</p>

<div class="wp_syntax"><div class="code"><pre>A-Squared  	
Found Win32.SuspectCrc!IK
AntiVir 	
Found TR/Downloader.Gen
ArcaVir 	
Found Trojan.Agent.Wo
Avast 	
Found Win32:Trojan-gen {Other}
AVG Antivirus 	
Found BackDoor.Agent.MEA
BitDefender 	
Found Backdoor.Agent.WO
ClamAV 	
Found Trojan.Agent-8319
CPsecure 	
Found nothing
Dr.Web 	
Found BackDoor.IRC.Spreader
F-Prot Antivirus 	
Found W32/IRCBot-based!Maximus (probable variant)
F-Secure Anti-Virus 	
Found Backdoor.Win32.Agent.wo
G DATA 	
Found Win32:Trojan-gen
Ikarus 	
Found Win32.SuspectCrc
Kaspersky Anti-Virus 	
Found Backdoor.Win32.Agent.wo
NOD32 	
Found probably unknown NewHeur_PE (probable variant)
Norman Virus Control 	
Found W32/Agent.CWBV
Panda Antivirus 	
Found Trj/Downloader.MDW
Sophos Antivirus 	
Found Mal/Generic-A
VirusBuster 	
Found nothing
VBA32 	
Found Backdoor.Win32.Agent.wo</pre></div></div>

<p>The size is 86.016 bytes, MD5: 5ec89f1f189fc5af94aa9306d7df4b8b</p>
<p>What it does is this: It tries to connect to IRC.BENDOVER.BE (that server is no longer operational), then joins <code>#spreader.crew</code> (password: spreadmaster). In my case it used the name!id: <code>oppqrrstc!oppqrrstc</code> (probably generated individually). Then it stayed in the channel and did nothing more. It probably waited for a bot or real person to contact it with further instructions.</p>
<p>Any hints about this trojan or the creators (former owner of bendover.be? &quot;spreader.crew&quot;?) are appreciated.</p>
]]></content:encoded>
			<wfw:commentRss>http://witte-consulting.com/blog/found-undocumented-trojan/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to fix multiplayer_msg_general_failure</title>
		<link>http://witte-consulting.com/blog/how-to-fix-multiplayer_msg_general_failure/</link>
		<comments>http://witte-consulting.com/blog/how-to-fix-multiplayer_msg_general_failure/#comments</comments>
		<pubDate>Thu, 06 Nov 2008 20:06:53 +0000</pubDate>
		<dc:creator>Kai Witte</dc:creator>
				<category><![CDATA[Computers]]></category>

		<guid isPermaLink="false">http://witte-consulting.com/blog/?p=159</guid>
		<description><![CDATA[In Heroes of Might and Magic IV (aka Heroes of Might and Magic 4, HOMM 4, HOMM IV) this error occurs when the name of the executable used to launch the program differs: multiplayer_msg_general_failure The content of the executable does not matter, it is the name. So both must use for example h4tour351.exe, even though [...]]]></description>
			<content:encoded><![CDATA[<p>In Heroes of Might and Magic IV (aka Heroes of Might and Magic 4, HOMM 4, HOMM IV) this error occurs when the name of the executable used to launch the program differs:</p>

<div class="wp_syntax"><div class="code"><pre>multiplayer_msg_general_failure</pre></div></div>

<p>The content of the executable does not matter, it is the name. So both must use for example h4tour351.exe, even though in Equilibris 3.51 it has the same content as h4mod.exe.</p>
]]></content:encoded>
			<wfw:commentRss>http://witte-consulting.com/blog/how-to-fix-multiplayer_msg_general_failure/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>JNI (Java Native Interface): Exception in thread &#8220;main&#8221; java.lang.UnsatisfiedLinkError: Can&#8217;t find dependent libraries</title>
		<link>http://witte-consulting.com/blog/jni-java-native-interface-exception-in-thread-main-javalangunsatisfiedlinkerror-can-t-find-dependent-libraries/</link>
		<comments>http://witte-consulting.com/blog/jni-java-native-interface-exception-in-thread-main-javalangunsatisfiedlinkerror-can-t-find-dependent-libraries/#comments</comments>
		<pubDate>Mon, 22 Sep 2008 06:48:51 +0000</pubDate>
		<dc:creator>Kai Witte</dc:creator>
				<category><![CDATA[Computers]]></category>

		<guid isPermaLink="false">http://witte-consulting.com/blog/?p=141</guid>
		<description><![CDATA[How to fix UnsatisfiedLinkError in JNI I have never had problems with JNI. In the few situations when I needed it, it just worked. But last week someone asked me for help with his problem. When I tried to reproduce it, I found out that it had spread even to my old JNI programs which [...]]]></description>
			<content:encoded><![CDATA[<h3>How to fix UnsatisfiedLinkError in JNI</h3>
<p>I have never had problems with JNI. In the few situations when I needed it, it just worked. But last week someone asked me for help with his problem. When I tried to reproduce it, I found out that it had spread even to my old JNI programs which worked until 2006!</p>
<p>When running a program that uses a native function the following error occured:</p>

<div class="wp_syntax"><div class="code"><pre>Exception in thread &quot;main&quot; java.lang.UnsatisfiedLinkError: Test.dll: Can't find dependent libraries</pre></div></div>

<p>It&#8217;s obviously a linker problem related to the generation of the .dll file. I have no idea why it occurs now and didn&#8217;t occur in the past. Different OS, compiler version, something like that? For some reason both the linker of Visual Studio and the linker of GCC started to think that is was a good idea to replace all method names by some arbitrary name which then cannot be found at runtime.</p>
<h4>Fix for GCC</h4>
<p>To fix that with GCC, the linker opion <code>--add-stdcall-alias</code> can be used.</p>

<div class="wp_syntax"><div class="code"><pre>gcc -Wl,--add-stdcall-alias -mno-cygwin -shared -I/cygdrive/c/Program\ Files/Java/jdk1.6.0_05/include -I/cygdrive/c/Program\ Files/Java/jdk1.6.0_05/include/win32 -o HelloWorld.dll HelloWorld.c</pre></div></div>

<h4>Fix for Visual C</h4>
<p>For Microsoft Visual C Compiler it should theoretically be possible with a linker option as well.</p>
<h5>Find out the correct linker option</h5>
<p>First compile and link in the usual way that didn&#8217;t work. This will create the .dll file which results in the error we are talking about. Then use the <code>dumpbin</code> tool to list the procedure names:</p>

<div class="wp_syntax"><div class="code"><pre>dumpbin HelloWorld.dll /EXPORTS</pre></div></div>

<p>You will find your procedure name, something like _Java_HelloWorld_print@8. Now try to guess what the name <strong>should</strong> be. My guess in this case would be Java_HelloWorld_print. This would result in the linker option <code>/EXPORT:Java_HelloWorld_print=_Java_HelloWorld_print@8</code></p>
<h5>Supply the linker option</h5>
<ol>
<li>Use a <code>#pragma comment</code> in the source file:

<div class="wp_syntax"><div class="code"><pre>#pragma comment(linker, &quot;/EXPORT:Java_HelloWorld_print=_Java_HelloWorld_print@8&quot;)</pre></div></div>

<p>OR</li>
<li>Split into linking and compiling and provide the option to the linker in the command line, OR</li>
<li>Supply it to the compiler at the end using <code>/link</code>:

<div class="wp_syntax"><div class="code"><pre>cl -I&quot;C:\Program Files\Java\jdk1.6.0_05\include&quot; -I&quot;c:\Program Files\java\jdk1.6.0_05\include\win32&quot; -MD -LD HelloWorld.c -FeHelloWorld.dll /link /EXPORT:Java_HelloWorld_print=_Java_HelloWorld_print@8</pre></div></div>

</li>
</ol>
<p><strong>Edit:</strong> According to user comments, the -MD option above is wrong and causes the problem described below. Do not use -MD! See <a href="http://msdn.microsoft.com/en-us/library/2kzt1wy3(VS.71).aspx">MSDN</a> for further information about the -MD option.</p>
<p>Option 3 is probably the easiest. After that <code>dumpbin</code> will show that now there is an additional procedure with the <strong>correct</strong> name:</p>

<div class="wp_syntax"><div class="code"><pre>dumpbin HelloWorld.dll /EXPORTS</pre></div></div>

<p>I even compared it with the <strong>working</strong> .dll I created with GCC (see above), and it looks the same! But it doesn&#8217;t work, still getting the same error!</p>
]]></content:encoded>
			<wfw:commentRss>http://witte-consulting.com/blog/jni-java-native-interface-exception-in-thread-main-javalangunsatisfiedlinkerror-can-t-find-dependent-libraries/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>uCertify review</title>
		<link>http://witte-consulting.com/blog/ucertify-review/</link>
		<comments>http://witte-consulting.com/blog/ucertify-review/#comments</comments>
		<pubDate>Fri, 25 Jul 2008 09:08:20 +0000</pubDate>
		<dc:creator>Kai Witte</dc:creator>
				<category><![CDATA[Computers]]></category>

		<guid isPermaLink="false">http://witte-consulting.com/blog/?p=36</guid>
		<description><![CDATA[Recently the PR department of uCertify approached me and asked me to blog a review about their exam preparation kit. Since this is an interesting topic to me (see my posts Whizlabs vs. Enthuware, and Effective Enthuware) and since I would get a free simulator, I agreed. uCertify produces preparation kits for many different IT [...]]]></description>
			<content:encoded><![CDATA[<p>Recently the PR department of <a href="http://www.ucertify.com/">uCertify</a> approached me and asked me to blog a review about their exam preparation kit. Since this is an interesting topic to me (see my posts <a href="http://witte-consulting.com/blog/whizlabs-vs-enthuware-vs-whizlabs/">Whizlabs vs. Enthuware</a>, and <a href="http://witte-consulting.com/blog/effective-enthuware/">Effective Enthuware</a>) and since I would get a free simulator, I agreed.</p>
<p>uCertify produces preparation kits for many different IT certifications, including SCJA, SCJP, SCJD, SCWCD, SCBCD, SCMAD and SCDJWS. I got the one for SCBCD 5.0 (Sun Certified Business Component Developer for the Java Platform, Enterprise Edition 5, CX-310-091), which costs USD 59.99, to test it. I used the uCertify PrepEngine Version No: 12.21.05.</p>
<p><a href='http://witte-consulting.com/blog/wp-content/uploads/2008/07/ucertify-mainscreen.png'><img src="http://witte-consulting.com/blog/wp-content/uploads/2008/07/ucertify-mainscreen.png" alt="" title="ucertify-mainscreen" width="300" height="199" class="aligncenter size-medium wp-image-37" /></a></p>
<h4>Strengths</h4>
<ul>
<li>A nice looking <strong>user interface</strong> with good usability, especially regarding all the little things. For example it is possible to click on the answer itself, not only on the checkbox next to it. Several keyboard shortcuts are available.</li>
<li>It has an optional <strong>study mode</strong> for every kind of test. When enabled, it says immediately which answers were wrong, rather than evaluate all answers only after they have been given. This provides a more harmonic way of learning and measuring progress.</li>
<li>It automatically <strong>shuffles</strong> the order of the answers. That&#8217;s an awesome feature that I miss in Enthuware and Whizlabs! It prevents me from remembering the position of the right answer instead of really learning the right answer.</li>
<li>The <strong>explanations to answers</strong> are good and include diagrams where it makes sense.</li>
<li>Huge amounts of <strong>study material</strong> are <strong>included</strong>! It is not only a simulator, it is a full preparation kit, just as promised.</li>
<li>Aside from the option to study the topics using small articles in the style &#8220;What is the PreDestroy method?&#8221; and larger articles about complex topics, there is an <strong>interactive mentor</strong> that almost provides the feeling of having a real private teacher. In small chunks it presents the exam topic as specified by Sun, then explains it, and afterwards asks me a question about it to check whether I understood it.</li>
<li>There is a feature to <strong>discuss</strong> any single question with others, similar to a forum thread. Once there are more users this can be very useful. I tried it a few times, and it took more than a day to get my comments &#8220;approved&#8221;. Hope that gets better.</li>
<li>Questions can be assigned a custom <strong>tag</strong>. For example I can give several questions the tag &#8220;unsure&#8221; or &#8220;do again before exam&#8221; and then create a custom test based on the tag. I would highly recommend to use this feature to assign box IDs according to the <a href="http://en.wikipedia.org/wiki/Leitner_System">Leitner System</a>, similar to how I described it for Enthuware in <a href="http://witte-consulting.com/blog/effective-enthuware/">Effective Enthuware</a>. (Note that numbers and short names are problematic, so use for example &#8220;bbbb&#8221; for box 2.)
<p><a href='http://witte-consulting.com/blog/wp-content/uploads/2008/07/ucertify-custom-test.png'><img src="http://witte-consulting.com/blog/wp-content/uploads/2008/07/ucertify-custom-test.png" alt="uCertify custom test screen" title="uCertify custom test screen" width="300" height="196" class="aligncenter size-medium wp-image-38" /></a></p>
</li>
<li>There are <strong>lots of features</strong> which I didn&#8217;t cover in this review, because there are so many. I covered the ones I considered important to my way of learning, but one of the other ones might just be the feature you always wanted.</li>
<li><strong>Question quality and exam topic coverage</strong>: I trained for a section using Enthuware until I was able to answer all questions in Enthuware corectly. After that I tried questions for the same topic in the uCertify simulator. I passed on the first try, but there were some exam-relevant topics that had not been covered enough in Enthuware! (Concrete example: It is possible to get through the Enthuware questions without fully understanding MEMBER [OF] in JPQL. uCertify did not let me get away with that.) Nothing against Enthuware &#8211; it is possible that this test would have worked the other way round in the same way. Simulators have different strengths and weaknesses.</li>
</ul>
<h4>Weaknesses</h4>
<ul>
<li>It doesn&#8217;t have a direct way of selecting a <strong>range of questions</strong>. For example I can&#8217;t easily create a test with questions 1 &#8211; 6 of topic X and later questions 7 &#8211; 12 of topic X. (To do that, I have to add all questions to the pool, sort by ID, then delete some of them, remember which ones I deleted, do the others later.)</li>
<li><strong>Support</strong>. I used the general support, not the one for paying customers, because I am not really a paying customer. My questions were answered only partially sometimes, and one of three support requests was ignored completely. Let&#8217;s just hope they provide better support for normal customers.</li>
<li>The <strong>license</strong> is complicated. I asked the support about it, but still don&#8217;t understand if I can install the product years later on different hardware. An on-line activation is required. I wouldn&#8217;t recommend buying it if you are planning to use it for longer than a year, unless you sort this out.</li>
<li>Getting the custom tags, an important feature (see above), to work was a challenge. First I tried tags like &#8220;1&#8243;, or &#8220;2&#8243;, and they just didn&#8217;t show up in the custom test dialogue. Then I tried &#8220;a&#8221; and &#8220;b&#8221;, still no success. So I tried &#8220;11111&#8243; (maybe it&#8217;s a length issue?). Then it showed up, but when I tried to add the questions with that tag, only two or three, it added more than 100 to the question pool. In brief, my impression is that there are certain rules for tags: 1. At least 3 or 4 chars; 2. no numbers (or not only numbers?).</li>
<li>Portability &#8211; <strong>requires Windows</strong>. Maybe one of the thin emulators like Wine can handle it? VMware certainly can.</li>
<li>The <strong>integrated help</strong> is a single, huge page.</li>
</ul>
<h4>Conclusion</h4>
<p>uCertify provides more than Enthuware or Whizlabs. I cannot answer the very important question of which simulator provides the most relevant questions regarding the real exam, and if someone who uses the complete preparation kit of uCertify will get a better result in the real exam than a low budget learner with Enthuware plus free study material. More fun with uCertify &#8211; well, that&#8217;s indeed possible due to the nice user interface and the interactive mentor. The complicated license and poor support are a problem.</p>
]]></content:encoded>
			<wfw:commentRss>http://witte-consulting.com/blog/ucertify-review/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>Glassfish: WebService in Session EJB</title>
		<link>http://witte-consulting.com/blog/glassfish-webservice-in-session-ejb/</link>
		<comments>http://witte-consulting.com/blog/glassfish-webservice-in-session-ejb/#comments</comments>
		<pubDate>Sun, 13 Jul 2008 15:08:44 +0000</pubDate>
		<dc:creator>Kai Witte</dc:creator>
				<category><![CDATA[Computers]]></category>

		<guid isPermaLink="false">http://witte-consulting.com/blog/?p=28</guid>
		<description><![CDATA[I just got the strangest error message when trying to use a stateless session EJB as a WebService in Glassfish v2 u1: [#2008-07-13T16:41:25.366+0200SEVEREsun-appserver-pe9.0javax.enterprise.system.tools.deployment_ThreadID=12_ThreadName=Thread-31_RequestID=d816d64c-543d-47ac-b339-2231f346754eException occured in J2EEC Phase com.sun.enterprise.deployment.backend.IASDeploymentException at com.sun.enterprise.webservice.WsUtil.runWsGen(WsUtil.java:1817) at com.sun.enterprise.webservice.WsUtil.genWSInfo(WsUtil.java:2089) at com.sun.enterprise.deployment.backend.AppDeployerBase.loadDescriptors(AppDeployerBase.java:328) at com.sun.enterprise.deployment.backend.AppDeployer.deploy(AppDeployer.java:200) at com.sun.enterprise.deployment.backend.AppDeployer.doRequestFinish(AppDeployer.java:129) at com.sun.enterprise.deployment.phasing.J2EECPhase.runPhase(J2EECPhase.java:169) at com.sun.enterprise.deployment.phasing.DeploymentPhase.executePhase(DeploymentPhase.java:95) at com.sun.enterprise.deployment.phasing.PEDeploymentService.executePhases(PEDeploymentService.java:871) at com.sun.enterprise.deployment.phasing.PEDeploymentService.deploy(PEDeploymentService.java:266) at com.sun.enterprise.deployment.phasing.PEDeploymentService.deploy(PEDeploymentService.java:739) at com.sun.enterprise.management.deploy.DeployThread.deploy(DeployThread.java:174) at com.sun.enterprise.management.deploy.DeployThread.run(DeployThread.java:210) #] Apparently there [...]]]></description>
			<content:encoded><![CDATA[<p>I just got the strangest error message when trying to use a stateless session EJB as a WebService in Glassfish v2 u1:</p>

<div class="wp_syntax"><div class="code"><pre>[#<PIPE>2008-07-13T16:41:25.366+0200<PIPE>SEVERE<PIPE>sun-appserver-pe9.0<PIPE>javax.enterprise.system.tools.deployment<PIPE>_ThreadID=12<SEMI>_ThreadName=Thread-31<SEMI>_RequestID=d816d64c-543d-47ac-b339-2231f346754e<SEMI><PIPE>Exception occured in J2EEC Phase
com.sun.enterprise.deployment.backend.IASDeploymentException
	at com.sun.enterprise.webservice.WsUtil.runWsGen(WsUtil.java:1817)
	at com.sun.enterprise.webservice.WsUtil.genWSInfo(WsUtil.java:2089)
	at com.sun.enterprise.deployment.backend.AppDeployerBase.loadDescriptors(AppDeployerBase.java:328)
	at com.sun.enterprise.deployment.backend.AppDeployer.deploy(AppDeployer.java:200)
	at com.sun.enterprise.deployment.backend.AppDeployer.doRequestFinish(AppDeployer.java:129)
	at com.sun.enterprise.deployment.phasing.J2EECPhase.runPhase(J2EECPhase.java:169)
	at com.sun.enterprise.deployment.phasing.DeploymentPhase.executePhase(DeploymentPhase.java:95)
	at com.sun.enterprise.deployment.phasing.PEDeploymentService.executePhases(PEDeploymentService.java:871)
	at com.sun.enterprise.deployment.phasing.PEDeploymentService.deploy(PEDeploymentService.java:266)
	at com.sun.enterprise.deployment.phasing.PEDeploymentService.deploy(PEDeploymentService.java:739)
	at com.sun.enterprise.management.deploy.DeployThread.deploy(DeployThread.java:174)
	at com.sun.enterprise.management.deploy.DeployThread.run(DeployThread.java:210)
<PIPE>#]</pre></div></div>

<p>Apparently there is a problem in this Glassfish version that prevents it from showing the proper Exception as JAX-WS reports it. The verifier only barfed random shit at me, too.</p>
<p>I updated to the lastest Glassfish to get a better error message, but then it even worked without an error. Strange days.</p>
]]></content:encoded>
			<wfw:commentRss>http://witte-consulting.com/blog/glassfish-webservice-in-session-ejb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VMWare asynchronous TSCs on Opteron</title>
		<link>http://witte-consulting.com/blog/vmware-asynchronous-tsc-opteron/</link>
		<comments>http://witte-consulting.com/blog/vmware-asynchronous-tsc-opteron/#comments</comments>
		<pubDate>Sat, 05 Jul 2008 16:36:19 +0000</pubDate>
		<dc:creator>Kai Witte</dc:creator>
				<category><![CDATA[Computers]]></category>

		<guid isPermaLink="false">http://witte-consulting.com/blog/?p=25</guid>
		<description><![CDATA[A rare VMWare error message is this one, occuring when the virtual machine is being launched: Your host does not have synchronized TSCs. Please read VMware Knowledge Base article 2041. When that error message pops up it is likely that all sorts of time-related things will go wrong in the guest system: Video playback, audio [...]]]></description>
			<content:encoded><![CDATA[<p>A rare VMWare error message is this one, occuring when the virtual machine is being launched:<br />
<a href='http://witte-consulting.com/blog/wp-content/uploads/2008/07/vmware-error.png'><img src="http://witte-consulting.com/blog/wp-content/uploads/2008/07/vmware-error.png" alt="Your host does not have synchronized TSCs. Please read VMware Knowledge Base article 2041." title="vmware-error" width="500" height="164" class="alignnone size-full wp-image-26" /></a></p>
<blockquote><p>
Your host does not have synchronized TSCs. Please read VMware Knowledge Base article 2041.
</p>
</blockquote>
<p>When that error message pops up it is likely that all sorts of time-related things will go wrong in the guest system: Video playback, audio for the video, double-clicks.</p>
<p>An example environment where this can occur:</p>
<ul>
<li>Host system Windows XP</li>
<li>CPU AMD Opteron for socket 939 (175, 180, 185, 190)</li>
<li>Certain drivers, such as those installed by MSI Live Monitor (AMD CPU Driver 1.3.2.16?)</li>
</ul>
<h3>Fix</h3>
<p>I fixed the problem by adding these lines on the bottom of the <code>.vmx</code> file:</p>

<div class="wp_syntax"><div class="code"><pre>processor0.use = TRUE
processor1.use = FALSE
host.noTSC = &quot;TRUE&quot;
ptsc.noTSC = &quot;TRUE&quot;
host.TSC.noForceSync = &quot;TRUE&quot;</pre></div></div>

<p>That way the guest system only has a single core CPU and only one core of the Opteron helps to emulate it, but that seems to be the only disadvantage.</p>
]]></content:encoded>
			<wfw:commentRss>http://witte-consulting.com/blog/vmware-asynchronous-tsc-opteron/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Whizlabs vs. Enthuware</title>
		<link>http://witte-consulting.com/blog/whizlabs-vs-enthuware-vs-whizlabs/</link>
		<comments>http://witte-consulting.com/blog/whizlabs-vs-enthuware-vs-whizlabs/#comments</comments>
		<pubDate>Fri, 04 Jul 2008 18:31:18 +0000</pubDate>
		<dc:creator>Kai Witte</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Enthuware]]></category>
		<category><![CDATA[Entuware versus Whizlabs]]></category>
		<category><![CDATA[mock exam simulators]]></category>
		<category><![CDATA[SCBCD]]></category>
		<category><![CDATA[SCDJWS]]></category>
		<category><![CDATA[SCEA]]></category>
		<category><![CDATA[SCJA]]></category>
		<category><![CDATA[SCJD]]></category>
		<category><![CDATA[SCJP]]></category>
		<category><![CDATA[SCWCD]]></category>
		<category><![CDATA[Whizlabs]]></category>
		<category><![CDATA[Whizlabs versus Enthuwre]]></category>

		<guid isPermaLink="false">http://witte-consulting.com/blog/?p=23</guid>
		<description><![CDATA[I bought several exam simulators for mock exams: The one for SCJP 5.0 (CX-310-055) from Whizlabs The one for SCWCD 1.4 (CX-310-081) from Whizlabs The one for SCBCD 1.3 (CX-310-090) from Whizlabs The one for SCDJWS (CX-310-220) from Whizlabs The one for SCEA (CX-310-051) from Whizlabs More recently: The one for SCBCD 5.0 from Enthuware [...]]]></description>
			<content:encoded><![CDATA[<p>I bought several exam simulators for mock exams:</p>
<ul>
<li>The one for <a href="http://www.sun.com/training/certification/java/scjp.xml">SCJP 5.0</a> (CX-310-055) from Whizlabs</li>
<li>The one for <a href="http://www.sun.com/training/certification/java/discontinued.html">SCWCD 1.4</a> (CX-310-081) from Whizlabs</li>
<li>The one for <a href="http://www.sun.com/training/certification/java/discontinued.html">SCBCD 1.3</a> (CX-310-090) from Whizlabs</li>
<li>The one for <a href="http://www.sun.com/training/certification/java/scdjws.xml">SCDJWS</a> (CX-310-220) from Whizlabs</li>
<li>The one for <a href="http://www.sun.com/training/certification/java/discontinued.html">SCEA</a> (CX-310-051) from Whizlabs</li>
<li>More recently: The one for <a href="http://www.sun.com/training/certification/java/scbcd.xml">SCBCD 5.0</a> from Enthuware</a>
</ul>
<h4>License</h4>
<p>Enthuware uses a pretty normal end user software license, while Whizlabs plagues the user with a complicated activation procedure, only to limit the use to three CPUs! So when the user upgrades the CPU or gets a new computer, the license is lost. The three CPUs for which it works have to be chosen within 6 months after the purchase. That makes it pretty much useless for what I bought it, which is to keep my knowledge about topics that I currently don&#8217;t need at work up to date. Whizlabs simulators <strong>cannot</strong> be used for that. This is not much of an issue when the user wants to learn for a certificate and will never need the simulator again afterwards.</p>
<h4>Learning process, repetition scheme</h4>
<p>Whizlabs simulators have certain features which try to adept to the user (&#8220;adaptive testing&#8221;). As far as I know they do not follow proven methods from the field of education science, though.</p>
<p>Enthuware&#8217;s direct support for such features is limited. However, its comment system provides great flexibility for custom systems. My article <a href="http://witte-consulting.com/blog/effective-enthuware/">Effective Enthuware</a> describes how to use the <a href="http://en.wikipedia.org/wiki/Leitner_System">Leitner System</a> in the Enthuware Test Studio. That is <strong>the</strong> system for this type of learning.</p>
<h4>Supported Platforms</h4>
<p>Enthuware Test Studio requires JRE 5.0. The Whizlabs simulators support all common Microsoft Windows versions.</p>
<h4>Errata</h4>
<p>Enthuware Test Studio provides a direct link to the Enthuware forum post in which that question is being discussed. That can be helpful to find out if the proposed answer is incorrect, but recently I was usually the first one to check that out, so there were no other comments about that question.</p>
<h4>Useability</h4>
<p>Whizlabs has a Flash based GUI. It works well, but most things must be done with the mouse.<br />
Enthuware uses the common key and mouse bindings for GUIs (Swing with system&#8217;s default L&#038;F).</p>
<h4>Price</h4>
<p>For most exams the Whizlabs products are a little more expensive than the Enthuware products. For example <a href="http://www.whizlabs.com/scbcd/scbcd5.0-details.html">Whizlabs SCBCD 5.0 Preparation Kit</a> for USD 74.95, <a href="http://www.enthuware.com/alletsbanks.html">Enthuware EJB+ Full Version </a> for USD 29.00. </p>
<h4>Question Quality</h4>
<p>The big unknown. I do not know anything about a conclusive study regarding the question qualities. They are both at least okay.</p>
<h4>Question Quantity</h4>
<p>Untransparent for Whizlabs products, and varies from product to product.</p>
<h4>Conclusion</h4>
<p>I recommend the Enthuware products. The knock-out arguments are the license and the Leitner System support. A really nice objective test from a huge organisation would help, like the tests we have for cars and such, a test which would also examine question quality and study time / exam result ratio. But this market is just too small, so you have to do with subjective reports like mine.</p>
<p>See also the <a href="http://witte-consulting.com/blog/effective-enthuware/">Effective Enthuware</a> article.</p>
]]></content:encoded>
			<wfw:commentRss>http://witte-consulting.com/blog/whizlabs-vs-enthuware-vs-whizlabs/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
