<?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>dow.ngra.de &#187; rant</title>
	<atom:link href="http://dow.ngra.de/category/rant/feed/" rel="self" type="application/rss+xml" />
	<link>http://dow.ngra.de</link>
	<description>no buzzwords allowed</description>
	<lastBuildDate>Sun, 22 Jan 2012 14:52:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>MailChimp &#8211; No More Bananas for You</title>
		<link>http://dow.ngra.de/2011/06/03/mailchimp-no-more-bananas-for-you/</link>
		<comments>http://dow.ngra.de/2011/06/03/mailchimp-no-more-bananas-for-you/#comments</comments>
		<pubDate>Fri, 03 Jun 2011 15:05:52 +0000</pubDate>
		<dc:creator>Toomas Römer</dc:creator>
				<category><![CDATA[rant]]></category>
		<category><![CDATA[review]]></category>

		<guid isPermaLink="false">http://dow.ngra.de/?p=1437</guid>
		<description><![CDATA[I have not ranted for some time but I just heard and saw so much crap about MailChimp that I just had to open up a draft here and let some steam out. MailChimp was my choice of newsletter software years ago and it worked fine if you leave out some quirks here and there. [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://dow.ngra.de/wp-content/uploads/2011/06/noMoreBananas.jpg" alt="" title="No More Bananas" width="238" height="136" class="alignright size-full wp-image-1440" style="margin-left:10px"/>I have not ranted for some time but I just heard and saw so much crap about <a href="http://mailchimp.com/">MailChimp</a> that I just had to open up a draft here and let some steam out. MailChimp was my choice of newsletter software years ago and it worked fine if you leave out some quirks here and there. As the usage has grown it has been brought to my attention that this software does not scale. Throughout the conversations I’ve also discovered a way how to block any account on MailChimp. So lets start.<br />
<span id="more-1437"></span></p>
<h2>Scaling</h2>
<p>Throughout the years you’ve built multiple lists. Your data has grown. You have a big announce to make and you would like to send everyone a message. You make a campaign, duplicate this to the lists and hit send on all of them. You get couple of angry replies that they received multiple messages. Oh, okay, they were on multiple lists, I&#8217;m sure there is a solution for this.</p>
<p>The chimp says that use groups instead of lists. Have a master list with multiple groups and then you won&#8217;t have the problem of people receiving multiple emails of the campaign. Okay, lets give it a try. You create the list, you create the groups, you populate the groups. Some people are on a single group, some are on multiple groups. You send out a master campaign and you see that couple of people unsubscribed.  Thats cool. Then you find out that they were unsubscribed from all the groups and unsubscription did not even let them choose a group. WTF?</p>
<p>You ask the chimp for help and they say that this is a feature. Choose one, a granular approach or bazooka but not both. </p>
<h2>Blocking Any Account at MailChimp</h2>
<p>Scenario: you are a happy chimp and sending out campaigns, everything is fun and cool until one day you are unable to log into your account. You get a message that your account has been blocked because you’re most probably a spammer. Wow, how did that happen?</p>
<p>You send an email to their support and find out that they found your address from <a href="http://www.stopforumspam.com/">stopforumspam.com</a> and they block your account automatically. It does not matter how you ended up on that website ( in this case you have not even registered a forum account with this email address for ages ). You send them one more email and ask what provider do they recommend to use now that this bad luck hit you. They kindly reinstate your account. Weeehah!</p>
<p>So if you want to block somebody from MailChimp, get their email address to one of these stop spam sites.  For quickest results see <a href="http://www.stopforumspam.com/add">stopforumspam.com/add</a> You can be sure that they can’t do anything for 48 hours.</p>
<h2>Conclusions</h2>
<p>Besides the two scenarios that I’ve mentioned I’ve had many more smaller issues with MailChimp. From not being able to call them, not being able to bulk delete people from large groups, not being able to remove email header images, not seeing email addresses of shared accessees etc. </p>
<p>The lists are dumb and cannot talk to each other without extensive scripts from infra wizards. Likewise, even if you are a dummy yourself, you cannot actually communicate with anyone at MC (they do not use telephone technology at all) except via email or Live Chat. Also, you frequently get signed out every 30 minutes whether you are in the middle of typing an email campaign or just sitting there wondering why you chose MC all those years ago&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://dow.ngra.de/2011/06/03/mailchimp-no-more-bananas-for-you/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>I fought the F.A.S.T. and I won</title>
		<link>http://dow.ngra.de/2011/03/15/i-fought-the-f-a-s-t-and-i-won/</link>
		<comments>http://dow.ngra.de/2011/03/15/i-fought-the-f-a-s-t-and-i-won/#comments</comments>
		<pubDate>Tue, 15 Mar 2011 10:33:53 +0000</pubDate>
		<dc:creator>Vladimir Šor</dc:creator>
				<category><![CDATA[rant]]></category>

		<guid isPermaLink="false">http://dow.ngra.de/?p=1407</guid>
		<description><![CDATA[Editor note: You probably would want to write a rant or downgrade something when a migration wizard fails and you lose your migrated files? Yes, yes, yes! This is what happened to Volli, he was able to partially save his files but read on for the details&#8230; Introduction My current Lenovo T60 laptop is at [...]]]></description>
			<content:encoded><![CDATA[<p><em>Editor note: You probably would want to write a rant or downgrade something when a migration wizard fails and you lose your migrated files? Yes, yes, yes! This is what happened to Volli, he was able to partially save his files but read on for the details&#8230;</em></p>
<h3>Introduction</h3>
<p>My current Lenovo T60 laptop is at least 4 years old (nobody at my company knows anymore how old it is, as even support department doesn&#8217;t have any records about it) and is waiting for the replacement. It was running Windows XP pretty fine, if one doesn&#8217;t count some sporadic hangs and reboots. Around 1 month ago I started to experiment with different operating systems to see what&#8217;s happening in modern operating systems world.<br />
<span id="more-1407"></span><br />
At first I tried Ubuntu with it&#8217;s smart installer which installs the system somewhere in the existing NTFS file system which is pretty cool. except that laptop hung every other sleep&#8230;</p>
<p>Then I managed to install MacOS X on a separate hard drive, but I couldn&#8217;t find any hackintosh drivers for my particular wireless card (Intel PRO/Wireless 3945ABG).</p>
<p>Then I was back to Windows, which has Windows 7 as it&#8217;s most modern version. Well, it&#8217;s considered to be good practice to reinstall windows time after time so I decided to make a backup and do a clean install. For the first time in my more than 15 year experience with MS software I decided to use it&#8217;s own user state migration tool rather than manually copy all needed files and settings from &#8216;Documents and Settings&#8217; folder. I don&#8217;t usually keep there much because of spaces in the folder names and all sorts of problems because of that, but still I got there some assorted important documents.</p>
<h3>Fail F.A.S.T.</h3>
<p>I happily selected &#8216;Files and Settings Transfer wizard&#8217; (F.A.S.T.) from the Start menu, clicked next-next-next, let windows show me some progress bars and in ended up with a folder with a magic name <code>USMT2.UNC</code> and 2 files inside it: <code>IMG00000001.DAT</code> (with 1.2Gb size) and file called <code>status</code> (with a size of 16 bytes). Somehow I thought that exporting files from windows xp using it&#8217;s migration tool and then importing these settings in windows 7 sounds like a pretty normal usage pattern, but how wrong was I!</p>
<p>I copied all my backups to external hard drive, dropped all partitions and installed windows 7. (In the meantime I managed to fry that hard drive with everything on it, but that&#8217;s another story.) Now it was time to restore files from the backup! </p>
<p>So I went to Accessories menu to find something called &#8216;Easy Transfer&#8217;. Sounds promising&#8230; Except that it doesn&#8217;t know how to handle Windows XP FAST archive, that I had. Hmm. That&#8217;s weird. Searching on MS KB gave no pointers except that if I wanted to migrate files from an old computer I should have installed Windows 7 on a new machine, then created some magic disk for the old system, transferred files with it and then would import stuff back on Win7. How sick is that!? How the hell I&#8217;m supposed to to a clean upgrade if I must have 2 machines to transfer my stuff?</p>
<p>I googled for the magic folder name: <code>USMT2.UNC</code>. This time I found some command-line app called User State Migration Tool, which can be downloaded from MS, but unfortunately its <code>loadstate.exe</code> still couldn&#8217;t do anything with that poor folder. Another bit of information was that I should use exactly the same version of windows xp to restore files from such archive. (What&#8217;s the point of such transfer?) Anyhow, I installed Windows XP in a VirtualBox and was hoping to run restore procedure and then just copy files manually as I have done tens of times so far. Yeah&#8230; FAST said that I have insufficient space on my disk. How&#8217;s that &#8211; I had around 4Gigs of free space there and this stupid archive is only 1,2Gb?! So, even with the same Windows XP my &#8216;backup&#8217; was useless.</p>
<p>Further search revealed a lot of complaining people who found themselves with such useless &#8216;backup&#8217;:</p>
<ul>
<li><a href="http://www.bleepingcomputer.com/forums/topic1153.html">http://www.bleepingcomputer.com/forums/topic1153.html</a></li>
<li><a href="http://answers.microsoft.com/en-us/windows/forum/windows_xp-files/great-yet-very-disappointing/f0d53c52-1c00-483f-bec6-b5e072bb898a">microsoft&#8217;s own forums</a>
</ul>
<p>However, this time I found a link to a tool called <code>fastconv</code>. </p>
<p>Here is a page with lengthy description:<br />
<a href="http://windowsxp.mvps.org/fast.htm">http://windowsxp.mvps.org/fast.htm</a></p>
<p>Ok, let&#8217;s give it a try. At the first try fastconv log said to me: <br />
<code>Error Source store is invalid. [ERROR=13 (Dh)]</code></p>
<p>Along with the fastconv there was one more utility called <code>rmv2opq.exe</code> and it was said that it</p>
<blockquote><p><em>converts a removable media store into a normal compressed store</em></p></blockquote>
<p>Whatever it means. Anyway, I ran it. The result was &#8216;astonishing&#8217; &#8211; target folder contained the same <code>.dat</code> file and <code>status</code> file, but this time status file was 12, rather than 16 bytes! What a progress! However, this time, running <code>fastconv.exe</code> on these &#8216;new&#8217; files gave more information &#8211; it started listing a lot of <code>.dat</code> files but crashed in the end. Fortunately, <code>fastconv</code> had a switch to keep temporary files. When I used that, it generated 2 folders: <code>0000/</code> and <code>TRANS/</code>. </p>
<p>Folder <code>0000/</code> contained 2255 files with names from <code>001.DAT</code> to <code>8CF.DAT</code>. When I looked inside these files I could see that these were extracted original files but with wrong names. <code>TRANS/</code> folder had a binary file <code>DB.DAT</code>. However, when I looked inside I could see both .DAT file names mixed with original file names and all that in unicode, meaning that simple grepping wouldn&#8217;t help as unicode uses 2 bytes per symbol so all names had 0&#215;00 between characters and everything was again mixed with binary data. Fiddling with the fastconv didn&#8217;t give any results as it kept crashing after generating temporary and database files. </p>
<h3>Getting hands dirty</h2>
<p>Ok, lets explore what we have. <code>DB.DAT</code> file&#8217;s header said: &#8216;<code>m e m d b   d a t   f i l e   v 9   n o d b g</code>&#8216;. Couldn&#8217;t find anything reasonable for neither opening it nor format description to write my own parser.</p>
<p>Then I started looked for something to extract unicode text from binary files. And found an application called <a href="http://www.mcafee.com/us/downloads/free-tools/bintext.aspx">BinText</a> from McAfee, that was doing exactly what I needed. From the <code>DB.DAT</code> file it generated me a listing like this: <br />
<a href="http://dow.ngra.de/wp-content/uploads/2011/03/BinText.png"><img src="http://dow.ngra.de/wp-content/uploads/2011/03/BinText-300x257.png" alt="" title="BinText window" width="300" height="257" class="alignnone size-medium wp-image-1413" /></a></p>
<p>At some point I saw such pattern:</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">00000002CCB6   00000002CCB6      0   0000002E.DAT
00000002CD3A   00000002CD3A      0   arrow_l.cur
00000002CDB8   00000002CDB8      0   arrow_l.cur
00000002D002   00000002D002      0   arrow_m.cur
00000002D056   00000002D056      0   0000002F.DAT
00000002D0DA   00000002D0DA      0   arrow_m.cur
00000002D158   00000002D158      0   arrow_m.cur
00000002D3A2   00000002D3A2      0   arrow_r.cur
00000002D3F6   00000002D3F6      0   00000030.DAT
00000002D47A   00000002D47A      0   arrow_r.cur
00000002D4F8   00000002D4F8      0   arrow_r.cur</pre></div></div>

<p>Which could be interpreted like this:</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">&lt;original file name&gt;
&lt;corresponding .dat file&gt;
&lt;original file name in 8.3 format&gt;
&lt;original file name again in some other format&gt;</pre></div></div>

<p>Following was simple &#8211; clean up the log and leave only original file and .dat file:</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">$&gt; grep -B 1 DAT trans.txt &gt; files.log</pre></div></div>

<p>Which resulted in a file that looked like this:</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">00000002F0A2   00000002F0A2      0   beam_r.cur
00000002F0F6   00000002F0F6      0   00000038.DAT
--
00000002F442   00000002F442      0   beam_rl.cur
00000002F496   00000002F496      0   00000039.DAT
--
00000002F7E2   00000002F7E2      0   beam_rm.cur
00000002F836   00000002F836      0   0000003A.DAT
--</pre></div></div>

<p>Then I wrote a small program to parse this log and rename files (handling of duplicates was important as I couldn&#8217;t restore directory structure). Before final renaming I ran it several times with writing logs to spot all problems in the log file.</p>
<p>Ok, I lost the directory structure and some file names are still broken, but at least I got my files back and I can fix these small issues by hand.</p>
<p>Lessons learned? Don&#8217;t blindly trust &#8216;migration&#8217; software and keep good ol&#8217; files handy.</p>
<p>P.S. Post named after the song <a href="http://www.youtube.com/watch?v=jbCqwl2geQg">&#8216;I fought the law&#8217;</a> by Dead Kennedys.</p>
]]></content:encoded>
			<wfw:commentRss>http://dow.ngra.de/2011/03/15/i-fought-the-f-a-s-t-and-i-won/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>JEE OSS Container Startup Times &#8211; Apples vs Oranges</title>
		<link>http://dow.ngra.de/2010/12/14/jee-oss-container-startup-times-apples-vs-oranges/</link>
		<comments>http://dow.ngra.de/2010/12/14/jee-oss-container-startup-times-apples-vs-oranges/#comments</comments>
		<pubDate>Tue, 14 Dec 2010 14:39:01 +0000</pubDate>
		<dc:creator>Toomas Römer</dc:creator>
				<category><![CDATA[opinion]]></category>
		<category><![CDATA[rant]]></category>

		<guid isPermaLink="false">http://dow.ngra.de/?p=1325</guid>
		<description><![CDATA[NOTE: This is the first part of a series (hopefully) that we&#8217;re trying out to see if you like it, find it interesting, helpful, whatever. Doing timings actually consumes a lot of time so we would really appreciate any feedback. I still have vivid memories of the time when JBoss 4 started for 26s on [...]]]></description>
			<content:encoded><![CDATA[<p><em>NOTE: This is the first part of a series (hopefully) that we&#8217;re trying out to see if you like it, find it interesting, helpful, whatever. Doing timings actually consumes a lot of time so we would really appreciate any feedback.</em></p>
<p>I still have vivid memories of the time when JBoss 4 started for 26s on my devel machine with only its vanilla apps deployed (JBoss 5 was twice as slow). I then thought that I&#8217;ll rant about it but for no apparent reason I did not.</p>
<p>Time has passed and I got some extra motivation to do a startup timings for containers with their default configurations. The motivation came from a colleague of mine, <a href="http://arhipov.blogspot.com/">Anton Arhipov</a> who also helped me time the containers and write this post.</p>
<h3>Our plan</h3>
<p>Take all containers and app servers out there and compare apples to oranges. Startup a AWS Large Instance (4 EC2 compute units, high I/O performance, 7.5GB of memory) and time the startup of vanilla containers with the latest JDK (1.6.0_22 at the time of running the tests). You can check out the configuration of Ubuntu and run your own tests via launching the ami-84fd0bed at <a href="http://aws.amazon.com/">Amazon AWS</a>.</p>
<h3>WTF, why? Don&#8217;t you have anything better to do?</h3>
<p>Well, hopefully this will be a start of something bigger. Actually Anton&#8217;s idea was to make something similar to Matt Raible&#8217;s <a href="http://raibledesigns.com/rd/entry/my_comparing_jvm_web_frameworks">web framework comparison</a>. Of course for a similar comparison of containers a lot more is needed than just startup time timings. Clustering, session replication, availability of services comes to mind at the moment. See <a href="http://en.wikipedia.org/wiki/Comparison_of_application_servers">comparison of application servers</a> from Wikipedia.</p>
<p>I&#8217;m personally interested in the startup times because there are developers out there who don&#8217;t know that the startup times can have an order of magnitudes differences and vendors don&#8217;t care too much about developers&#8217; productivity as just pushing out new features.</p>
<p>And we do have better stuff to do but we do need time off from our regular activities.</p>
<h3>Results</h3>
<p>Let&#8217;s start by observing the overall results of the startup times. As we can see on the graph below, the pure servlet containers, Tomcat and Jetty, are way ahead of the full blown containers, which is obvious (<em>remember, we&#8217;re comparing apples to oranges here!</em>). Maybe this data doesn&#8217;t help you very much, but actually you can make some conclusions out of it: <strong>try to implement your application in a way that it doesn&#8217;t depend on a heavyweight container with the slow startup time!</strong> Obviously, this is not always possible, but it is worth trying.</p>
<p style="text-align: center;"><a href="http://dow.ngra.de/wp-content/uploads/2010/12/containers-all.png"><img class="aligncenter size-full wp-image-1335" title="containers-all" src="http://dow.ngra.de/wp-content/uploads/2010/12/containers-all.png" alt="" width="497" height="326" /></a></p>
<p>Next, lets see how the winners compare. Tomcat seems to be a fraction of a second faster than Jetty with Tomcat 7 being the fastest with under a second for the startup time. Comparing Tomcat to Jetty is pretty fair but not very reasonable as both are very fast. The only area where Tomcat really beats Jetty is the shutdown time. Jetty executes a shutdown hook when you try to stop it, and it takes almost as much as it takes to start the container. Tomcat, in opposite shuts down immediately.</p>
<p><a href="http://dow.ngra.de/wp-content/uploads/2010/12/containers-tomcat-vs-jetty.png"><img class="aligncenter size-full wp-image-1339" title="containers-tomcat-vs-jetty" src="http://dow.ngra.de/wp-content/uploads/2010/12/containers-tomcat-vs-jetty.png" alt="" width="480" height="330" /></a></p>
<p><a href="http://dow.ngra.de/wp-content/uploads/2010/12/containers-tomcat-vs-jetty.png"></a>The next chart shows the startup times for the heavyweight guys. We&#8217;re missing Geronimo in our test, this will be corrected later.</p>
<p><a href="http://dow.ngra.de/wp-content/uploads/2010/12/containers-jee.png"><img class="aligncenter size-full wp-image-1347" title="containers-jee" src="http://dow.ngra.de/wp-content/uploads/2010/12/containers-jee.png" alt="" width="606" height="421" /></a></p>
<p>Let&#8217;s have a look at the outsider of the shootout &#8211; JBoss. We have to mention here is that the measurements we&#8217;re done with the default profile. JBoss is a very configurable application server in terms of services it runs, but we measured the default profile just because it seems that it is the most commonly used by developers (our wild guess, do comment if we&#8217;re way off).</p>
<p><a href="http://dow.ngra.de/wp-content/uploads/2010/12/containers-jboss.png"><img class="aligncenter size-full wp-image-1343" title="containers-jboss" src="http://dow.ngra.de/wp-content/uploads/2010/12/containers-jboss.png" alt="" width="507" height="310" /></a></p>
<p>You can notice a bad tendency for the startup times starting from JBoss 4.2 and growing until JBoss 5.1. We can see an improvement for JBoss 6.0, and there&#8217;s a remarkable improvement in startup time for JBoss 7.0 You might wonder what has changed for JBoss 7.0 so that the time improved an order of magnitude? The answer is that JBoss 7.0 is <s>OSGi-enabled and it seems that it is not starting all its services on the startup</s> modular! Again, this is what happens when you compare apples to oranges! To make the results look more real, we&#8217;d have to deploy a mid-size application to the container which would enable some of the services on the startup. We&#8217;ll do that in our upcoming tests.</p>
<p>Besides the graphs we&#8217;ve also have the data in a <a href="https://spreadsheets.google.com/pub?key=0Aktg9dD42faNdHFlX09Wb0lmdktaSGhLdEpFWEJKNmc&amp;hl=en&amp;single=true&amp;gid=0&amp;output=html">spreadsheet</a>.</p>
<h3>What next?</h3>
<p>We see that OSGI containers are really fast to startup. We&#8217;re thinking of running the tests with an app deployed so that more modules are started up on startup (read: real life tests). Also we&#8217;ve left out commercial containers at the moment. This is due to we wanting to release the Amazon AMIs and not deal with licensing issues. We&#8217;ll definitely run tests with commercial containers if there is interested out there (please comment which container would you like to see in the shootout).</p>
]]></content:encoded>
			<wfw:commentRss>http://dow.ngra.de/2010/12/14/jee-oss-container-startup-times-apples-vs-oranges/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>How to waste couple of hours with the Play! Framework</title>
		<link>http://dow.ngra.de/2010/10/26/how-to-waste-couple-of-hours-with-the-play-framework/</link>
		<comments>http://dow.ngra.de/2010/10/26/how-to-waste-couple-of-hours-with-the-play-framework/#comments</comments>
		<pubDate>Tue, 26 Oct 2010 12:33:02 +0000</pubDate>
		<dc:creator>Toomas Römer</dc:creator>
				<category><![CDATA[rant]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://dow.ngra.de/?p=1298</guid>
		<description><![CDATA[Quick rant (downgrade) of the Play! Framework, just wasted another hour trying to find out why my configuration is not applied. This is the second time this month so I need to let out some steam. Generally I&#8217;m a big fan of Play! It is easy to use, easy to setup and fast to develop [...]]]></description>
			<content:encoded><![CDATA[<p><em>Quick rant (downgrade) of the <a href="http://www.playframework.org/">Play! Framework</a>, just wasted another hour trying to find out why my configuration is not applied. This is the second time this month so I need to let out some steam.</em></p>
<p>Generally I&#8217;m a big fan of Play! It is easy to use, easy to setup and fast to develop with. Its like Struts with JRebel but feels more fresh. Okay, back to the rant.</p>
<blockquote><p>
Lets say you want to make sure that each time you run your application, the HSQLDB is initialized into the same location.
</p></blockquote>
<p>Well, you go to <code>application.conf</code>. Find the <code>db.url</code> field, comment it in, change it to</p>

<div class="wp_syntax"><div class="code"><pre class="ant" style="font-family:monospace;">db.url=jdbc:hsqldb:file:my/fav/static/location</pre></div></div>

<p> Done! 10 minutes you notice that</p>

<div class="wp_syntax"><div class="code"><pre class="ant" style="font-family:monospace;">/private/var/folders/Em/EmtX3-Q+EgOCv9GUy0k8dU+++TI/-Tmp-/Jetty_0_0_0_0_8080_webapp____.7fbo9s/webapp/WEB-INF/application/db/db</pre></div></div>

<p> is used as the DB location. After grepping, doublechecking, debugging and swearing you find in the internals of play that db.url, db.pass, db.user, db.driver are ignored if <code>db=fs</code> is set. WTF? No warning, no nothing that your configuration gets overwritten, aaargh!</p>
<blockquote><p>
Lets say your deployment is not Play! (they advise you to use <code>play run</code> to run apps written using Play! instead of a classic servlet container). Lets say you target Jetty instead.
</p></blockquote>
<p>Well, you deploy your WAR archive to Jetty and develop as you would before but then you discover that your files are no longer reloaded. You also discover that you get tons of database exceptions. After grepping, doublechecking, debuggin and swearing you find in the internals of play that once you ditch the <code>play run</code> and move to a classic container Play! will presume that you must have been smoking crack when you wrote <code>application.mode=dev</code> in your configuration file. It will just override it and make sure that you run in production mode this time. WTF? No warning, no nothing that your configuration gets overwritten, aaargh.</p>
<p>So next time you&#8217;re having problems with Play!, do some grepping, doublechecking, debuggin and swearing and find the location where your configuration options are overwritten by some Java code inside play.jar.</p>
]]></content:encoded>
			<wfw:commentRss>http://dow.ngra.de/2010/10/26/how-to-waste-couple-of-hours-with-the-play-framework/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Configuring Eclipse – &#8220;fail fast&#8221;</title>
		<link>http://dow.ngra.de/2009/11/27/configuring-eclipse-fail-fast/</link>
		<comments>http://dow.ngra.de/2009/11/27/configuring-eclipse-fail-fast/#comments</comments>
		<pubDate>Fri, 27 Nov 2009 10:33:21 +0000</pubDate>
		<dc:creator>Ivo Mägi</dc:creator>
				<category><![CDATA[cool]]></category>
		<category><![CDATA[rant]]></category>

		<guid isPermaLink="false">http://dow.ngra.de/?p=1139</guid>
		<description><![CDATA[Another guest post from our favorite PHB. I don&#8217;t have the slightest idea why he has Eclipse installed or better yet, why is he trying to run it. Probably overheard something from devs at the water-cooler and wants some free time from PowerPoint. My Eclipse instance starts with a warning popup. Well, most likely it [...]]]></description>
			<content:encoded><![CDATA[<p><em>Another guest post from our favorite PHB. I don&#8217;t have the slightest idea why he has Eclipse installed or better yet, why is he trying to run it. Probably overheard something from devs at the water-cooler and wants some free time from PowerPoint.</em></p>
<p>My Eclipse instance starts with a warning popup. Well, most likely it picked up a JRE instead of the usual JDK specified in my environment variables. But hey, I know how to handle property files (ed: seriously?), and they are actually pointing me towards the <code>eclipse.ini</code>.</p>
<p><img src="http://dow.ngra.de/wp-content/uploads/2009/11/image002.jpg" alt="JDK vs JRE" title="JDK vs JRE" width="441" height="190"/></p>
<p>Clicking the link on the warning popup does not open the file itself though, so I have to manually navigate to the C:\Programs\eclipse folder and find <code>eclipse.ini</code> from there containing:<br />
[code]<br />
-showsplash<br />
org.eclipse.platform<br />
--launcher.XXMaxPermSize<br />
256M<br />
-framework<br />
plugins\org.eclipse.osgi_3.4.2.R34x_v20080826-1230.jar<br />
-vmargs<br />
-Dosgi.requiredJavaVersion=1.5<br />
-Xms40m<br />
-Xmx256m<br />
[/code]</p>
<p>Adding <code>–vm C:\Program Files\Java\jdk1.6.0_14</code> to the end of the configuration and restarting. Well – nothing has changed. OK, let’s open up Google.</p>
<p>Proposed solution: <code>-vm</code> option has to be specified before the <code>–vmargs</code> option. Still no help, Eclipse will start with the previously mentioned warning.</p>
<p>Second solution – there has to be a line break between <code>–vm</code> and the value specified – BINGO. We are getting somewhere –</p>
<p><img src="http://dow.ngra.de/wp-content/uploads/2009/11/image001.jpg" alt="Trainwreck" title="Trainwreck" width="344" height="172"/></p>
<p>Now let’s just change it to:<br />
[code]<br />
-showsplash<br />
org.eclipse.platform<br />
--launcher.XXMaxPermSize<br />
256M<br />
-framework<br />
plugins\org.eclipse.osgi_3.4.2.R34x_v20080826-1230.jar<br />
-vm<br />
C:\Program Files\Java\jdk1.6.0_14\bin\javaw.exe<br />
-vmargs<br />
-Dosgi.requiredJavaVersion=1.5<br />
-Xms40m<br />
-Xmx256m<br />
[/code] </p>
<p>And it just works. But for heaven’s sake – why on earth do I have to figure out</p>
<ul>
<li>where is the configuration I have to change</li>
<li>in which order do I have to specify the parameters</li>
<li>that the key-value options must be separated with the line break</li>
</ul>
<p>Considering the last warning dialog – why cannot the whole configuration be validated and initialization failed properly? If this were a tool used in-house or only by small number of freaks, then – let it be. But this is Eclipse we are speaking about – there are millions of people working their asses off on a daily bases with this tool. Can’t imagine the time wasted for problems like this …</p>
]]></content:encoded>
			<wfw:commentRss>http://dow.ngra.de/2009/11/27/configuring-eclipse-fail-fast/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>1st of April Joke Gone Wild (updated)</title>
		<link>http://dow.ngra.de/2009/10/26/1st-of-april-joke-gone-wild/</link>
		<comments>http://dow.ngra.de/2009/10/26/1st-of-april-joke-gone-wild/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 11:59:19 +0000</pubDate>
		<dc:creator>Toomas Römer</dc:creator>
				<category><![CDATA[humour]]></category>
		<category><![CDATA[rant]]></category>

		<guid isPermaLink="false">http://dow.ngra.de/?p=1055</guid>
		<description><![CDATA[1st of April is a great day, lots of cool hoaxes all day around. We at ZeroTurnaround have contributed with DNArebel &#8211; Improve Yourself Today and JavaRebel Goes AI. Usually everything ends once the day is over. This year&#8217;s dow.ngra.de hoax, Microsoft acquires ZeroTurnaround for undisclosed amount has amused us even months later. Couple of [...]]]></description>
			<content:encoded><![CDATA[<p>1st of April is a great day, lots of <a href="http://en.wikipedia.org/wiki/Google's_hoaxes">cool</a> <a href="http://www.museumofhoaxes.com/hoax/aprilfool/">hoaxes</a> all day around. We at <a href="http://www.zeroturnaround.com">ZeroTurnaround</a> have contributed with <a href="http://www.zeroturnaround.com/blog/dnarebel-improve-yourself-today/">DNArebel &#8211; Improve Yourself Today</a> and <a href="http://www.zeroturnaround.com/blog/javarebel-goes-ai/">JavaRebel Goes AI</a>. Usually everything ends once the day is over.</p>
<p>This year&#8217;s <strong>dow.ngra.de</strong> hoax, <a href="http://dow.ngra.de/2009/04/01/microsoft-acquires-zeroturnaround-for-undisclosed-amount/">Microsoft acquires ZeroTurnaround for undisclosed amount</a> has amused us even months later. Couple of weeks ago we spotted a Chinese article that listed all the acquisitions of Microsoft during the past year. And we made the list!</p>
<p>Today we found the news from a business systems news &#038; analysis page, <a href="http://www.fsn.co.uk">FSN</a>.</p>
<blockquote><p>FSN provides finance professionals around the globe with independent news, <strong>vital analysis</strong> and <strong>deep insight</strong> about key developments in the world of business and accounting systems.  We <strong>debunk the technical jargon of the IT world</strong> and present leading-edge issues in a way that is accessible and relevant to business decision makers.</p></blockquote>
<p>We&#8217;re in the article <a href="http://www.fsn.co.uk/channel_enterprise_financials/shifting_sands">Shifting Sands</a> (<b>EDIT:</b> link is dead now) with players like Salesforce, Digita, Google, Oracle, Microsoft and HP :)</p>
<p>A fact taken from a blog post on 1st of April, not confirmed from either parties and presented in an article with <strong>vital analysis</strong> and <strong>deep insight</strong>.</p>
<p>Of course there is an easy fix. Either Microsoft acquires the Java productivity tooling company ZeroTurnaround or FSN notices a referrer from this blog and makes changes. I&#8217;ll keep you posted on who wins the race.</p>
<p><a href="http://dow.ngra.de/wp-content/uploads/2009/10/microsoftacquireszeroturnaround.png"><img src="http://dow.ngra.de/wp-content/uploads/2009/10/microsoftacquireszeroturnaround-300x122.png" alt="Microsoft acquired ZeroTurnaround by FSN" title="Microsoft acquired ZeroTurnaround by FSN" width="300" height="122" class="size-medium wp-image-1070" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://dow.ngra.de/2009/10/26/1st-of-april-joke-gone-wild/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Netbeans &#8211; running programs the easy way</title>
		<link>http://dow.ngra.de/2009/03/31/netbeans-running-programs-the-easy-way/</link>
		<comments>http://dow.ngra.de/2009/03/31/netbeans-running-programs-the-easy-way/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 12:10:48 +0000</pubDate>
		<dc:creator>Toomas Römer</dc:creator>
				<category><![CDATA[rant]]></category>
		<category><![CDATA[netbeans]]></category>

		<guid isPermaLink="false">http://dow.ngra.de/?p=842</guid>
		<description><![CDATA[I have not been so angry at an IDE for a while, arrrrrrrghhh, rant follows. How hard can it be to add JVM arguments to the run configuration of an application when running it from an IDE? Lets say I want to add -Dsuperboost=true or just ~/myconf/.myconf to the Java application? Eclipse has a green [...]]]></description>
			<content:encoded><![CDATA[<p><em>I have not been so angry at an IDE for a while, arrrrrrrghhh, rant follows.</em></p>
<p>How hard can it be to add JVM arguments to the run configuration of an application when running it from an IDE? Lets say I want to add <code>-Dsuperboost=true</code> or just<code> ~/myconf/.myconf</code> to the Java application?</p>
<p>Eclipse has a <font color="green"><strong>green</strong></font> button and <em>Run configurations</em> under it, there you can specify <em>Program arguments</em> and <em>VM arguments</em>. Easy.</p>
<p>IntelliJ Idea has a <font color="green"><strong>green</strong></font> button and <em>Edit Configurations</em> under it, there you can specify <em>Program parameters</em> and <em>VM parameters. Easy</em>.</p>
<p>Netbeans has a <font color="green"><strong>green</strong></font> button. Thats it. Where are the options? When you check <strong>project</strong> <em>Properties</em> there is <em>Build</em> &raquo; <em>Compiling &#038; Packaging</em> but no run. Googling for such a generic topic does not help me much, just aggrevates more.</p>
<p>Finally I realize, everything is ANT based, I&#8217;ll just modify the <code>build.xml</code> files used. The toplevel <code>build.xml</code> includes <code>project/nbproject/build-impl.xml</code>, this includes some NetBeans bundled <code>build.xml</code>. Okay, this is not the best place.</p>
<p>I find a file named <code>project.properties</code> with two options in it, <code>javac.compilerargs</code> and <code>javac.source</code>. <strong>Jackpot</strong>, I&#8217;ve found the hidden settings, I just need to figure out the magic names that I could add. Some more googling and trying out different flags from different NetBeans versions I&#8217;m still out of luck, I&#8217;m unable to guess the names.</p>
<p>Finally I went through <code>NetBeans/harness/build.xml</code> &raquo; <code>common.xml</code> &raquo; <code>run.xml</code> and the magic secret hidden flags follow:</p>
<ul>
<li><code>run.jdkhome</code></li>
<li><code>run.args.common</code></li>
<li><code>run.args.prepared</code></li>
<li><code>run.args</code></li>
<li><code>run.args.extra</code></li>
</ul>
<p>Weeehah! Now I need only to add &#8220;-noverify&#8221;. No, more like &#8220;-J-Xverify:none&#8221;, argghh.</p>
]]></content:encoded>
			<wfw:commentRss>http://dow.ngra.de/2009/03/31/netbeans-running-programs-the-easy-way/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>When &#8220;Do no evil&#8221; becomes &#8220;Hear no evil&#8221;</title>
		<link>http://dow.ngra.de/2009/03/18/when-do-no-evil-becomes-hear-no-evil/</link>
		<comments>http://dow.ngra.de/2009/03/18/when-do-no-evil-becomes-hear-no-evil/#comments</comments>
		<pubDate>Wed, 18 Mar 2009 13:06:28 +0000</pubDate>
		<dc:creator>Toomas Römer</dc:creator>
				<category><![CDATA[rant]]></category>
		<category><![CDATA[rant google]]></category>

		<guid isPermaLink="false">http://dow.ngra.de/?p=767</guid>
		<description><![CDATA[After 4 cancellation requests, 2 forum requests, 1 billing support request and 2 months of waiting I&#8217;m posting this blog post to let out some steam and hopefully one day get my money back. A story of what happens when the same company offers the service and the payment but no support. It all started [...]]]></description>
			<content:encoded><![CDATA[<p><em>After 4 cancellation requests, 2 forum requests, 1 billing support request and 2 months of waiting I&#8217;m posting this blog post to let out some steam and hopefully one day get my money back. A story of what happens when the same company offers the service and the payment but no support.</em></p>
<p>It all started out as a cool infrastructure task. Migrating email to Google Apps. Its easy, quick and on top of that there is a 30 day FREE trial.  Wow!</p>
<p>I started with the task in the beginning of January. I created an account at Google Apps, paid for the number of users and was off. 10 minutes later I noticed that I should have used a shorter URL for the domain, so I thought I&#8217;ll ditch the <em>mail</em> prefix from the domain.</p>
<p>FAQ says I have to create a new account. Bummer. I created a new account, paid for the number of users again, twiddled with settings and email was working! Easy. I told you so! All I had to do now was cancel the premium service for the longer domain version and I would be all done.</p>
<p>From this point on things got hairy. Firstly as I had tons of tabs open in my browser, I managed to cancel the premium service for the shorter domain. Ok, happens. I&#8217;ll just upgrade later on again. Then I cancelled the long URL. Two premium accounts downgraded, one deleted and other running in free edition now.</p>
<p>Of course Google Checkout can&#8217;t follow this kind of stuff in real time and I had been charged for both of the services. I contacted the seller from Google Checkout and sent them a message to make my fiddling clear.</p>
<p>Nothing happened. A week later as the funds were still charged I contacted them again via Google Checkout. No luck.</p>
<p>Maybe I&#8217;ll have to wait the 30 day for it to be paid back because the free period was also 30 days? Sure thing. Waited couple of more weeks, nothing changed.</p>
<p>Things are getting scary. There is no support if you don&#8217;t have a premium account and I&#8217;ve just cancelled my two premiums. It seems that the only way to get them talking to me is pay them money, but they already owe me money!</p>
<p>I write to their support forum, twice! Not a single answer during the months. Okay, this is weird already.</p>
<p>I&#8217;m able to find a link, that says that one can ask for real support if the question is concerned with billing. Weeehaah, I&#8217;m sure I&#8217;m saved now! Nope. I made my case using their web form and you know what? No answer!</p>
<p>Usually I would take a step back and talk to the payment mediator, either PayPal or Moneybookers but you know what, Google is handling my payment also (via Google Checkout) and I can&#8217;t find a way to report to Google that Google stole my money.</p>
]]></content:encoded>
			<wfw:commentRss>http://dow.ngra.de/2009/03/18/when-do-no-evil-becomes-hear-no-evil/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

