<?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>SYNFORMATION</title>
	<atom:link href="http://blog.synformation.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.synformation.com</link>
	<description>About a Java framework and other things</description>
	<lastBuildDate>Thu, 27 Oct 2011 10:13:21 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>ForzaDroid for mobile devices</title>
		<link>http://blog.synformation.com/2010/09/22/forzadroidmobile/</link>
		<comments>http://blog.synformation.com/2010/09/22/forzadroidmobile/#comments</comments>
		<pubDate>Wed, 22 Sep 2010 20:00:56 +0000</pubDate>
		<dc:creator>Thomas Weitzel</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://blog.synformation.com/?p=204</guid>
		<description><![CDATA[It has been a while since I played Forza Motorsport 3 the last time. Today, I visited the Online Forums there and recognized that with the exception of ForzaTune for the iOS platform and ForzaDroid for Android, there are no other suspension calculators for all the other mobile devices. Some have asked to find out [...]]]></description>
				<content:encoded><![CDATA[<p>
It has been a while since I played Forza Motorsport 3 the last time. Today, I visited the Online Forums there and recognized that with the exception of <a href="http://forzatune.com" title="iPhone Suspension Calculator for Microsoft's Forza Motorsport Series">ForzaTune</a> for the iOS platform and <a href="http://blog.synformation.com/2010/01/13/forzadroid" title="ForzaDroid, Forza Motorsport 3 suspension calculator for Android">ForzaDroid for Android</a>, there are no other suspension calculators for all the other mobile devices. Some have asked to find out if there&#8217;s demand, but nobody has actually implemented one.
</p>
<p>
Since I don&#8217;t have the time nor any motivation to port ForzaDroid to another platform, I will not do it either. But I&#8217;ve already implemented ForzaDroid for the Android platform, and everything I need for a web application is there. So I spend a couple of hours and made a web application that&#8217;s optimized for smartphones. It should run at least on the following platforms/browsers without a problem: Safari, Android, Symbian/S60, Nokia Series 40, webOS, BlackBerry (3.8+), NetFront, Motorola Internet Browser, Opera Mobile. You need to have JavaScript enabled.
</p>
<p>
<strong><a href="http://synformation.com/m/forzadroidmobile" title="Start ForzaDroid for mobile right now">Click on the image to start the ForzaDroid for mobile application:</a></strong>
</p>
<p>
<a href="http://synformation.com/m/forzadroidmobile"><img src="http://blog.synformation.com/wp-content/uploads/forzadroidmobile.png" alt="Screenshot of ForzaDroid for mobile devices" title="ForzaDroid for mobile devices" width="320" height="380" class="alignnone size-full wp-image-205" /></a>
</p>
<p><span id="more-204"></span></p>
<p>
It has exactly the same functionality as <a href="http://blog.synformation.com/2010/01/13/forzadroid" title="ForzaDroid, Forza Motorsport 3 suspension calculator for Android">ForzaDroid for Android</a>, supports the English and German language, and is free. If you like to have the user interface in another language, fine: just send me the translated <a href="http://synformation.com/m/forzadroidmobile/resources.txt" title="The ForzaDroid resource file in English">resource file</a>. Translate only the right side &#8212; right of the equal sign. I&#8217;ll add the language to the application as soon as my time permits.
</p>
<p>
Here are a few technical details on how it was done: the actual calculations were implemented in Java for ForzaDroid. I reused these Java classes with the help of the <a href="http://code.google.com/webtoolkit" title="GWT is a development toolkit for building and optimizing complex browser-based applications">Google Web Toolkit (GWT)</a> and just rebuilt the user interface. The actual calculations are not made on the server, but on the client side, which is your web browser. So once the application is loaded into your browser window, you&#8217;ll see no more requests to the server &#8212; all runs on your phone now.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.synformation.com/2010/09/22/forzadroidmobile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Virtual Private Network (VPN) as a safety belt</title>
		<link>http://blog.synformation.com/2010/05/24/post-vpn-android/</link>
		<comments>http://blog.synformation.com/2010/05/24/post-vpn-android/#comments</comments>
		<pubDate>Mon, 24 May 2010 22:55:38 +0000</pubDate>
		<dc:creator>Thomas Weitzel</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[Politics]]></category>
		<category><![CDATA[Thoughts]]></category>

		<guid isPermaLink="false">http://blog.synformation.com/?p=164</guid>
		<description><![CDATA[While my daughter was working on a school project, she was looking for a fully searchable text of &#8220;Animal Farm&#8221; from George Orwell and found it on the Australian web site Project Gutenberg Australia. The offer was legal, but had she downloaded the text, she would have committed a serious crime, a copyright violation. Two [...]]]></description>
				<content:encoded><![CDATA[<p>
While my daughter was working on a school project, she was looking for a fully searchable text of &#8220;Animal Farm&#8221; from George Orwell and found it on the Australian web site <a href="http://gutenberg.net.au" title="Project Gutenberg, Australia | gutenberg.net.au">Project Gutenberg Australia</a>. The offer was legal, but had she downloaded the text, she would have committed a serious crime, a copyright violation. Two more, and our entire family would be eligible for disconnection from the Internet &#8211; at least in some European countries.
</p>
<p>
A little background: prior to the US-Australian Free Trade Agreement from 2005, copyright in Australia expired 50 years after the authors death. After the FTA was signed in 2005, copyright now expires 70 years after the authors death. That&#8217;s how it is in Europe, too.
</p>
<p>
George Orwell, the author of &#8220;Animal Farm&#8221;, &#8220;Nineteen Eighty-Four&#8221;, and four other novels, died January 21st, 1950. So in Australia, his works where in the public domain since 2001. And that didn&#8217;t change with the FTA from 2005. While George Orwell&#8217;s novels are not in the public domain and are still under copyright in Europe, the opposite is true for Australia. That&#8217;s why Australian web sites like Project Gutenberg Australia can legally offer George Orwell&#8217;s works for download. George Orwell&#8217;s works are also in the public domain in Russia and Canada. In Europe, his works will be in the public domain in 2021, and even later in the US.
</p>
<p><span id="more-164"></span></p>
<p>
Who does expect a kid to know that? If I buy a book, I can legally lend it to as many people as I like. That I can lend it to only one person at a time is a technical limitation of the thing called &#8220;book&#8221;. Files containing text, music, or film don&#8217;t have that technical limitation. Copying and giving it to as many people simultaneously is possible and intuitive. That&#8217;s why kids do it all the time. That copyright violations by copying files are described as &#8220;stealing&#8221; is also counter-intuitive. After you copy a file, it&#8217;s not taken away from the original owner, but you&#8217;ve made one thing more. If a kid finds something useful on the Internet it will probably use it in intuitive ways: copy it, share it &#8211; and thereby potentially breaking the law.
</p>
<p>
Ok, you can educate the kid in order to minimize copyright violations, but &#8211; as shown with &#8220;Animal Farm&#8221; &#8211; you cannot eliminate them completely without making your kid a copyright lawyer. Other options are removing access to the Internet or supervising your kid all the time.
</p>
<p>
Accessing the Internet via a trustworthy VPN (virtual private network) service provider is another option. My VPN service provider is <a href="http://ipredator.se" title="Ipredator | ipredator.se">Ipredator</a>. How to set it up on Windows and OSX is shown on their web site. Instructions for Ubuntu Linux can be found <a href="http://christianengstrom.wordpress.com/2010/03/07/installing-ipredator-under-ubuntu-linux-9-10" title="Christian Engström, Pirate Member of the European Parliament | wordpress.com">here</a>. I&#8217;ll now show you how to set it up under Android 1.6:
</p>
<p>
Go to &#8220;Settings > Wireless controls > VPN settings&#8221; and add a new VPN with &#8220;Add VPN > Add PPTP VPN&#8221;.
</p>
<p>
<img src="http://blog.synformation.com/wp-content/uploads/add-vpn.png" alt="" title="Add a VPN" width="240" height="105" class="alignnone size-full wp-image-171" />
</p>
<p>
Enter the following information:</p>
<pre>
VPN name: Ipredator
Set VPN server: vpn.ipredator.se
PPT encryption is enabled
</pre>
</p>
<p>
<img src="http://blog.synformation.com/wp-content/uploads/vpn-settings.png" alt="" title="VPN settings page" width="240" height="233" class="alignnone size-full wp-image-178" />
</p>
<p>
Now, you&#8217;re ready to connect to the VPN. Tap on &#8220;Ipredator&#8221; to connect.
</p>
<p>
<img src="http://blog.synformation.com/wp-content/uploads/before-connect.png" alt="" title="Before connecting to VPN" width="240" height="155" class="alignnone size-full wp-image-172" />
</p>
<p>
Fill in the required account information (user name and password). Hit &#8220;Connect&#8221;.
</p>
<p>
<img src="http://blog.synformation.com/wp-content/uploads/connect.png" alt="" title="Connect to the VPN" width="240" height="309" class="alignnone size-full wp-image-173" />
</p>
<p>
You&#8217;re now connected to your VPN service provider &#8211; see the key in the status bar marked red (I added the marks with Gimp)?
</p>
<p>
<img src="http://blog.synformation.com/wp-content/uploads/connected.png" alt="" title="Connected to the VPN" width="240" height="155" class="alignnone size-full wp-image-174" />
</p>
<p>
Safely surf the Internet.
</p>
<p>
<img src="http://blog.synformation.com/wp-content/uploads/surf-save.png" alt="" title="Surfing the web savely with VPN enabled" width="240" height="137" class="alignnone size-full wp-image-177" />
</p>
<p>
While surfing the web, you can get information on the VPN connection.
</p>
<p>
<img src="http://blog.synformation.com/wp-content/uploads/info.png" alt="" title="Information about VPN connection" width="240" height="125" class="alignnone size-full wp-image-176" />
</p>
<p>
To Disconnect from your VPN service provider, go to &#8220;Settings > Wireless controls > VPN settings&#8221; again.
</p>
<p>
Tap on the VPN named &#8220;Ipredator&#8221; to disconnect.
</p>
<p>
<img src="http://blog.synformation.com/wp-content/uploads/disconnected.png" alt="" title="Disconnected from the VPN" width="240" height="155" class="alignnone size-full wp-image-175" />
</p>
<p>
If you switch from 3G network to WLAN, you&#8217;ll be disconnected from Ipredator. Just reconnect.
</p>
<p>
I know that PPTP is vulnerable to some sorts of attacks, but using VPN with Ipredator (or other VPN service providers) that way is more of a political statement: we need to change copyright law! All non-commercial copying and sharing of files needs to be legal. Otherwise it&#8217;s done anyway and as safely as possible. Trying to prevent people from doing it is like trying to prevent people from Iran or China to access certain parts of the Internet: it will not work.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.synformation.com/2010/05/24/post-vpn-android/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>ForzaDroid, Forza Motorsport 3 suspension calculator for Android</title>
		<link>http://blog.synformation.com/2010/01/13/forzadroid/</link>
		<comments>http://blog.synformation.com/2010/01/13/forzadroid/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 19:50:01 +0000</pubDate>
		<dc:creator>Thomas Weitzel</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.synformation.com/?p=120</guid>
		<description><![CDATA[When Turn 10 offered Forza Motorsport 2, I bought an XBOX360 just to play this game. And I didn&#8217;t regret it. During more than two years I played approximately 3.000 games online, most of them in the public lobby system that Forza Motorsport had. I&#8217;m not a good racer, but I improved over time. I [...]]]></description>
				<content:encoded><![CDATA[<p>
When Turn 10 offered Forza Motorsport 2, I bought an XBOX360 just to play this game. And I didn&#8217;t regret it. During more than two years I played approximately 3.000 games online, most of them in the public lobby system that Forza Motorsport had. I&#8217;m not a good racer, but I improved over time. I primarily try to have fun while racing clean.
</p>
<p>
<img src="http://blog.synformation.com/wp-content/uploads/results-e1263601795310.png" alt="Screen from the Android application ForzaDroid" title="ForzaDroid calculation results" width="200" height="300" class="alignnone size-full wp-image-132" />
</p>
<p>
During the first month of Forza Motorsport 2 online gaming, one of my new online friends I met in the public lobbies tuned one of my cars for me. Wow, what a difference that was compared to the not tuned car. It handled much better and was faster, too. Armed with the knowledge that tuned cars can have better handling and can be faster, I tried tuning some of my other cars myself. Hmm, was much more difficult than I had thought. Most of it was trial and error, and I got tired fast.
</p>
<p><span id="more-120"></span></p>
<p>
But I really wanted my cars to be and behave better. So I turned to the theory necessary to understand what was needed to be successful with that. It was complicated, and although I understood the interaction of the various settings better, the quality of the results was only slightly better than before.
</p>
<p>
And then, I found FEUERDOGs suspension calculator for Forza Motorsport 2. The settings it produced were much better than those of my own efforts. And to be honest, I wanted to race. You have to like tuning in order to like it &#8211; haha! It&#8217;s not my thing. But by trying to tune cars in Forza Motorsport 2 myself, I got a glimpse of what it means to become a successful tuner.
</p>
<p>
Then came <a href="http://forzamotorsport.net" title="Forza Motorsport by Turn 10 | forzamotorsport.net">Forza Motorsport 3</a>, and I was eager to get it. I used the same tuning calculator for the new version of the game, and it still produced better tuning setups than I was able to come up with myself. FEUERDOG started working on a version for Forza Motorsport 3 and eventually he released it to the public.
</p>
<p>
I have no idea how many hours FEUERDOG spent to create the tuning calculators he did create. He might have spend more hours on it than I was spending on racing. Maybe he had as much fun doing the tuning calculator as I had during racing. But his work alone made it much more fun for me.
</p>
<p>
So today, I&#8217;m releasing ForzaDroid, the implementation of FEUERDOGs tuning calculator <a href="http://spreadsheets.google.com/ccc?key=0AtBDxiC-oePkdE1kSXlpV3pwa1BFWVJDLWVDWTNJR2c" title="FEUERDOGs tuning calculator as spreadsheet | google.com">FM3-December Update-4</a> as an Android application on the <a href="http://www.android.com/market" title="You cannot download ForzaDroid from here, you have to use your Android mobile phone | android.com">Android market</a> for free. There can be no other way, because I&#8217;m <a href="http://en.wikipedia.org/wiki/Standing_on_the_shoulders_of_giants" title="Standing on the Shoulder of Giants | wikipedia.org">standing on the shoulders of giants</a> here.
</p>
<p>
What does it offer? Well, here&#8217;s a list:
</p>
<ul>
<li>based entirely on FEUERDOGs <a href="http://spreadsheets.google.com/ccc?key=0AtBDxiC-oePkdE1kSXlpV3pwa1BFWVJDLWVDWTNJR2c" title="FEUERDOGs tuning calculator as spreadsheet | google.com">FM3-December Update-4</a> spreadsheet, you&#8217;ll get the same results</li>
<li>added &#8220;Transmission&#8221; selection for RWD differential settings (see FEUERDOGs remark in the spreadsheet for details)</li>
<li>available in English and German</li>
<li>it&#8217;s available at the Android Market and free (as in beer)</li>
<li>it&#8217;s simple and fast (hey, I&#8217;m not a designer, I&#8217;m a programmer)</li>
<li>no gear spreader &#8211; yet</li>
</ul>
<p>
To download ForzaDroid, visit the Android Market and search for it (search term <em>forzadroid</em>, but <em>forza</em> might work as well), or just scan the following QR Code with your Android powered mobile phone. It will take you directly to the Android Market:
</p>
<p>
<a href="http://blog.synformation.com/wp-content/uploads/forzadroid-qr.png"><img src="http://blog.synformation.com/wp-content/uploads/forzadroid-qr.png" alt="Android Market QR Code for ForzaDroid" title="Android Market QR Code for ForzaDroid" width="132" height="132" class="alignnone size-full wp-image-153" /></a>
</p>
<p>
If you have never tuned a car in Forza Motorsport 3 before, you can head over to <a href="http://forzatune.com" title="Forza Motorsport 3 suspension calculator for the iPhone | forzatune.com">ForzaTune</a> were you can find more information. They&#8217;re offering an iPhone application that does roughly the same thing – even more, it supports Forza Motorsport 2 – as ForzaDroid. It&#8217;s also based on FEUERDOGs work. But it has been around much longer.
</p>
<p>
If you like the Android application ForzaDroid, find a bug or have some suggestions, feel free to contact me. I won&#8217;t promise anything, but at least I&#8217;ll listen.
</p>
<p>
<strong>Update 2011-10-25</strong><br />
Since many of you are asking, if there will be an update for Forza 4: yes, I&#8217;m planning to make one. I&#8217;ve some time starting end of December 2011, so it&#8217;s most likely that the update will be ready in the first week of January 2012. The calculations will be most likely based on the work of Slave Munky et al. The Android version will be free and will be without ads of any kind. No promisses, but that&#8217;s what I plan to do.</p>
<p>There is a web-based version of ForzaDroid for other mobile devices, that can be used on a PC with a JavaScript enabled browser, too: <a href="http://synformation.com/m/forzadroidmobile" title="">Try out the web-based version of ForzaDroid</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.synformation.com/2010/01/13/forzadroid/feed/</wfw:commentRss>
		<slash:comments>30</slash:comments>
		</item>
		<item>
		<title>instantOLAP: The ROWNUM() function and grouping</title>
		<link>http://blog.synformation.com/2009/10/14/grouping-in-instantolap/</link>
		<comments>http://blog.synformation.com/2009/10/14/grouping-in-instantolap/#comments</comments>
		<pubDate>Wed, 14 Oct 2009 21:35:17 +0000</pubDate>
		<dc:creator>Thomas Weitzel</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://blog.synformation.com/?p=99</guid>
		<description><![CDATA[InstantOLAP is a lightweight reporting and OLAP system. It&#8217;s made for OLAP reports. But if we have a non-aggregating query, we can still list all the rows by using the ROWNUM() function, which helps iterating over the result set. But we&#8217;re not able to use a dimension for grouping the rows of the result set. [...]]]></description>
				<content:encoded><![CDATA[<p>
<a href="http://instantolap.com" title="instantolap.com | Lightweight and scalable Reporting- and OLAP-system">InstantOLAP</a> is a lightweight reporting and OLAP system. It&#8217;s made for OLAP reports. But if we have a non-aggregating query, we can still list all the rows by using the ROWNUM() function, which helps iterating over the result set. But we&#8217;re not able to use a dimension for grouping the rows of the result set.
</p>
<p>
I&#8217;ll give an example: imagine we have rows describing some customers. Each customer is in exactly one customer category. What we now want to have is a list of all these customers, but grouped by customer category. And because we have a dimension for the customer category, we want a separate table for each category. The naive solution seems to put the customer category dimension as an iteration into the outer block of the pivot table. But this will not work because ROWNUM() &#8211; an thereby the LINE_DIMENSION &#8211; is the only dimension used for iteration.
</p>
<p><span id="more-99"></span></p>
<p>
<img src="http://blog.synformation.com/wp-content/uploads/iolap_customertable.png" alt="Customer tables preview" title="How the tables should look like in the report" width="212" height="281" />
</p>
<p>
But there&#8217;s at least one way to achive that. It&#8217;s probably not the most elegant way and I&#8217;m eager to hear of other solutions, but it works for reports that are not too big.
</p>
<p>
We create a pivot table and in the outer block where we&#8217;ve put the table, we iterate over the customer category dimension. Set the iteration property to <code>{CUST_CAT::'CAT'}</code>. To see the current iteration in the title of the pivot table, put a text into the title property of the table, e.g. <code>"Customer category: " + {CUST_CAT::'CAT'}</code>.
</p>
<p>
Now, put the fact that holds the information about the customer category in the table. I&#8217;ve put <code>Fact:'CUSTOMER_CATEGORY'</code> as the first column. We don&#8217;t need to see it, so we can set it invisible. And here&#8217;s the trick: for the iteration over ROWNUM(), set the property Visible like this: <code>TONUMBER(CUST_CAT::'CAT') = TONUMBER(MATRIX(1))</code>, where the argument into the MATRIX() function is the position of your fact for the customer category.
</p>
<p>
<img src="http://blog.synformation.com/wp-content/uploads/iolap_tablelayout.png" alt="Layout of table in the report" title="Put a fact in the table that can be invisible" width="648" height="38" />
</p>
<p>
Because we have the dimension and level CUST_CAT::&#8217;CAT&#8217; as an iteration in the outer block, we basically create as many identical tables as the dimensions level has keys. If there&#8217;re 10 keys in the level, we have 10 tables with all the rows from our result set. But only those rows are visible where our fact matches the current key of the dimension, which basically allows us to group the customer rows by the dimension.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.synformation.com/2009/10/14/grouping-in-instantolap/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Google Chrome phenomenon</title>
		<link>http://blog.synformation.com/2008/09/07/the-google-chrome-phenomenon/</link>
		<comments>http://blog.synformation.com/2008/09/07/the-google-chrome-phenomenon/#comments</comments>
		<pubDate>Sun, 07 Sep 2008 22:45:47 +0000</pubDate>
		<dc:creator>Thomas Weitzel</dc:creator>
				<category><![CDATA[Politics]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://blog.synformation.com/?p=48</guid>
		<description><![CDATA[I have heard of Google Chrome for the first time on September 1st. A comic strip about Chrome was leaked on the Internet. At that time, there was no software download available. Rumors soon followed about the early availability of a beta version and a Google press conference the next day. This press conference actually [...]]]></description>
				<content:encoded><![CDATA[<p>
I have heard of <a href="http://www.google.com/chrome" title="Google Chrome (BETA) for Windows | google.com">Google Chrome</a> for the first time on September 1st. A <a href="http://www.google.com/googlebooks/chrome/index.html" title="Google Chrome comic by Scott McCloud | google.com">comic strip</a> about Chrome was leaked on the Internet. At that time, there was no software download available. Rumors soon followed about the early availability of a beta version and a Google press conference the next day. This <a href="http://www.youtube.com/watch?v=1d1_ool4r7s" title="Google Chrome announcement | google.com">press conference</a> actually took place and the software was then available for download in a beta version.
</p>
<p>
In the tech-oriented area of the internet, Google Chrome caused more heavy waves than any comparable event before. Reports and discussions surfaced everywhere. According to one source, Google Chrome already had a <a href="http://getclicky.com/global-marketshare-statistics" title="Global Marketshare Statistics | getclicky.com">market share of over 1%</a> after only a few hours &#8211; probably caused by curiosity like mine.
</p>
<p><span id="more-48"></span></p>
<p>
<img src="http://blog.synformation.com/wp-content/uploads/googlechrome.jpg" alt="Google Chrome about box" title="About box of Google Chrome 0.2.149.29" width="400" height="240" />
</p>
<p>
Here are some topics &#8211; some with a link &#8211; I find interesting:
</p>
<ul>
<li><a href="http://www.heise-online.co.uk/open/A-First-Glint-Of-Chrome--/features/111450" title="A First Glint Of Chrome | heise-online.co.uk">First impressions</a></li>
<li><a href="http://www.niallkennedy.com/blog/2008/09/google-chrome.html" title="The story behind Google Chrome | niallkennedy.com">Why Google releases a browser of its own</a></li>
<li>What Chrome can do the others cannot</li>
<li><a href="http://www.informationweek.com/news/internet/google/showArticle.jhtml?articleID=210500375" title="Google Chrome Reflects A Desktop In Decline | informationweek.com">Chrome&#8217;s effect not only on the browser market</a></li>
<li><a href="http://www.infoworld.com/article/08/09/03/Early_security_issues_tarnish_Googles_Chrome_1.html" title="Early security issues tarnish Google's Chrome | infoworld.com">Security issues of the beta</a></li>
<li><a href="http://shadowbird.wordpress.com/2008/09/07/google-chrome-under-the-hood-connections" title="Google chrome under the hood connections | wordpress.com">Chrome is calling home</a></li>
<li><a href="http://www.golem.de/0809/62216.html" title="Eindeutige Nummer des Browsers abschalten (in German) | golem.de">How to prevent Chrome from transmitting data to Google</a> (in German)</li>
<li><a href="http://blogs.zdnet.com/hardware/?p=2507" title="Google Chrome is insanely fast | zdnet.com">How fast is Chrome really</a></li>
<li><a href="http://code.google.com/chromium" title="Chromium is the open-source project behind Google Chrome | google.com">Are all of Chrome&#8217;s components open source</a></li>
<li>Where&#8217;re the Mac and Linux versions</li>
<li>Is the beta of Google Chrome suited for Joe Average</li>
<li><a href="http://discuss.joelonsoftware.com/default.asp?joel.3.674195.47" title="Google Chrome | joelonsoftware.com">Lots of opinions on Chrome</a></li>
<li><a href="http://www.heise.de/newsticker/Google-ein-100-000-Dollar-Missverstaendnis--/meldung/115569" title="Google, ein 100.000-Dollar-Missverständnis (in German) | heise.de">Google, a $100,000 misunderstanding</a> (in German)</li>
</ul>
<h3>Installation and setup</h3>
<p>
Of course, I was curious too and have tried to download the software. I was able to download ChromeSetup.exe thru a proxy that required authentication, but the subsequent download of the software proper failed due to the fact, that ChromeSetup wasn&#8217;t able to handle a proxy that required authentication. It worked with a proxy that didn&#8217;t require authentication though. Strange enough, after installation Chrome is able to handle a proxy with authentication.
</p>
<p>
What I really don&#8217;t like is that Chrome is transmitting a unique Id back to Google, so that&#8217;s easy to track where the user has been on the internet. To prevent this, <a href="http://www.ghacks.net/2008/09/07/google-chrome-anonymizer" title="Google Chrome Anonymizer | ghacks.net">change two entries</a> in the file <code>Local State</code> of the Google Chrome installation. Although I can understand Google&#8217;s motivation for this, a complete user profile is not something I want Google to have, as I don&#8217;t have any control over it.
</p>
<h3>Bug fixes and more from Google</h3>
<p>
Google has already addressed some concerns about the <a href="http://arstechnica.com/news.ars/post/20080903-google-on-chrome-eula-controversy-our-bad-well-change-it.html" title="Google on Chrome EULA controversy | arstechnica.com">EULA</a> and a <a href="http://security.bkis.vn/?p=119" title="Chrome 'Save As' Function Buffer Overflow | bkis.vn">security problem</a> within a very short period of time, so I hope they will be equally fast fixing new problems as they occur. What they really should address before the first official release is the ability of the user to control in an easy way, what data he wants Google to receive about his surfing habits. If in doubt, don&#8217;t send anything. They should not only explain what data is stored on their servers, but give the users a choice.
</p>
<p>
On the same page, I don&#8217;t like how they handle the installation of GoogleUpdate.exe as a service, even though it&#8217;s mentioned in section 12 of the <a href="http://www.google.com/accounts/TOS" title="Google Terms of Service | google.com">Google Terms of Service</a>. It&#8217;s not mentioned during the installation of Chrome, that it doesn&#8217;t go away after I&#8217;ve uninstalled Chrome. It simply stays there and is started every time I log into my computer. <a href="http://antivirus.about.com/od/windowsbasics/ht/googleupdate.htm" title="How to Remove GoogleUpdate.exe | about.com">Manually editing the Windows registry</a> seems to be required if you want to get rid of the GoogleUpdate service. GoogleUpdate is installed and used by a lot of other Google software too.
</p>
<h3>It&#8217;s fast</h3>
<p>
After a couple of days using Chrome I&#8217;ve to say that I&#8217;m impressed by its speed. This doesn&#8217;t come from the benchmarks saying that it&#8217;s mostly faster than the competition, but from my experiences working with it. It&#8217;s not only starting up faster than Firefox 3.0.1, but feels a lot snappier too. Browsing the internet with Chrome is definitely fun.
</p>
<h3>It&#8217;s beta software and not finished yet</h3>
<p>
The current version of Chrome is an early beta version, so don&#8217;t expect that it will not have problems. It&#8217;s something you should use only if you&#8217;re aware of the risks involved in using beta software. It might have security problems and bugs that can lead to lost data. It shouldn&#8217;t be used in production environments.
</p>
<p>
It&#8217;s also missing a lot of features I&#8217;m used to expect from other browser like Mozilla Firefox. All the nice little ad-ons are still missing. Especially <a href="https://addons.mozilla.org/en-US/firefox/addon/1865" title="Get rid of annoying ads and banners | mozilla.org">Adblock Plus</a> is missed here, because only without it I&#8217;ve realized how ugly the internet really is. And have you tried to read a RSS feed? It doesn&#8217;t work yet.
</p>
<h3>Conclusion</h3>
<p>
Google Chrome looks like one piece of software I might love to use one day. Most features present today are impressive already. It will then be added to the list of software from Google I&#8217;m using on a regular basis today. I&#8217;m using Google software for:
</p>
<ul>
<li>developing AJAX applications in Java with <a href="http://code.google.com/webtoolkit" title="Faster AJAX than you'd write by hand | google.com">Google Web Toolkit</a></li>
<li>wiring dependencies with the dependency injection framework <a href="http://code.google.com/p/google-guice" title="A Lightweight dependency injection framework | google.com">Google Guice</a></li>
<li>extending the Java Collections Framework with <a href="http://code.google.com/p/google-collections" title="A suite of new collections and more for Java 5.0 | google.com">Google Collections</a></li>
</ul>
<p>
These software products I use that come from Google are great, and I like to use them. Chrome is a little bit different as it comes with a price, that not everybody is willing to pay: you give Google the ability to create a user profile of you and you can&#8217;t control what they are doing with it. If Chrome has the ability to turn this off, then it might be for me.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.synformation.com/2008/09/07/the-google-chrome-phenomenon/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Enough Talend for the job?</title>
		<link>http://blog.synformation.com/2008/05/26/post-enough-talend/</link>
		<comments>http://blog.synformation.com/2008/05/26/post-enough-talend/#comments</comments>
		<pubDate>Mon, 26 May 2008 21:55:49 +0000</pubDate>
		<dc:creator>Thomas Weitzel</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://blog.synformation.com/?p=44</guid>
		<description><![CDATA[I&#8217;m part of a team that builds a data warehouse for our client, an international recognized car and motorcycle manufacturer. Right now, the data comes from various sources, most of it is provided in CSV files. As a first step, these files are loaded into a staging area. It has been decided to accomplish this [...]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;m part of a team that builds a data warehouse for our client, an international recognized car and motorcycle manufacturer. Right now, the data comes from various sources, most of it is provided in CSV files. As a first step, these files are loaded into a staging area. It has been decided to accomplish this task with the help of an <a href="http://en.wikipedia.org/wiki/Extract,_transform,_load" title="Extract, Transform, and Load | wikipedia.org">ETL</a> tool. The tool that has been selected is <a href="http://www.talend.com/products-data-integration/talend-open-studio.php" title="Talend Open Studio tries to improve the data integration job process | talend.com">Talend Open Studio</a> (TOS).</p>
<p><span id="more-44"></span></p>
<h3>The tool</h3>
<p>Although I wasn&#8217;t involved in the selection process, there&#8217;re good reasons for TOS, some were decisive:</p>
<ul>
<li>it&#8217;s an Open Source solution</li>
<li>there&#8217;s a branch office in our country</li>
<li>based on the Java and Eclipse platform</li>
<li>active community</li>
<li>training and support offerings</li>
</ul>
<p>I&#8217;ve had really good experiences with our <a href="http://www.talend.com/press/talend-open-a-new-office-in-germany.php" title="New office in Germany | talend.com">main Talend contact</a> over here. Based on a couple of workshops and support cases I have to say that he was of great help for our project.</p>
<p>Depending on where you come from and what you need, some of the points speaking in favor of TOS for us might speak against it for you. The good thing is, there&#8217;re <a href="http://en.wikipedia.org/wiki/Category:ETL_tools" title="List of ETL tools | wikipedia.org">enough solutions/products</a> out there, maybe even one for you. But it might not be TOS. If you&#8217;re not sure if an ETL solution is right for you, maybe <a href="http://www.intelligententerprise.com/channels/information_management/showArticle.jhtml?articleID=207002081" title="Should You Use An ETL Tool | intelligententerprise.com">this article by J. Mundy</a> helps.</p>
<h3>The staging area</h3>
<p>The database system used for the staging area is <a href="http://www-306.ibm.com/software/data/db2/9/edition-express-c.html" title="DB2 Express-C is a full function DB2 data server at no charge | ibm.com">IBM DB2 Express-C</a>. The staging area is cleared before every import and has two stages itself:</p>
<ol>
<li>data is loaded into tables that reflect the schemas of the CSV files; all fields are VARCHAR fields</li>
<li>then, the data is converted into the proper types, e.g. DECIMAL(15,2), DATE, INTEGER, &#8230;</li>
</ol>
<p>The table schemas for the tables in stage one and stage two have a couple more fields than the CSV schemas:</p>
<ul>
<li>ID_ROW identifies the data row from the CSV file</li>
<li>STATUS holds information regarding the correctness of the data (and thus if it has been successfully written to the stage-two table)</li>
<li>ERRMSG contains a detailed description on the problem (if any)</li>
</ul>
<p>There&#8217;re many CSV files to import into the staging area, but the basic process is the same for all. The TOS job that does the work looks like this:</p>
<p><a href='http://blog.synformation.com/wp-content/uploads/talend.png'><img src="http://blog.synformation.com/wp-content/uploads/talend.png" alt="A Talend job as image" title="Talend job fills IBM DB2 staging area" class="alignnone size-medium wp-image-45" /></a></p>
<p>I&#8217;ll give you a short description of the process:</p>
<ul>
<li>first line imports the CSV data into the stage-one table
<ul>
<li>the CSV file is read in</li>
<li>because the CSV schema and the stage-one table schema differ (more fields, see above) we map the CSV schema to the table schema</li>
<li>each row gets the additional ID_ROW field filled</li>
<li>the data is written to the stage-one table</li>
</ul>
</li>
<li>the data now residing in the stage-one table is converted and written to the stage-two table
<ul>
<li>stage-one table data is read in</li>
<li>the conversion to the proper types takes place; the status and the error messages are generated here</li>
<li>all problem rows are sorted out, based on the content in STATUS</li>
<li>the rows without problems are written to the stage-two table</li>
</ul>
</li>
<li>error logging and reporting
<ul>
<li>all rows that didn&#8217;t make it to the stage-two table are updated in the stage-one table to have the correct STATUS and ERRMSG set</li>
<li>problematic rows are written to the console for this example</li>
</ul>
</li>
</ul>
<h3>TOS components</h3>
<p>TOS basically lets you work with components. You place them on the screen and connect them, enter some information into the properties of these components, and then TOS generates Java source code ready to compile and run. Once generated, you cannot alter the Java source code directly. You have to do it by altering the components properties. Some informations like schemas for CSV files and database tables, database connection info, etc. can be stored in a repository and you can connect them with components. That&#8217;s nice if you need the same information in more than one place.</p>
<p>For the type conversions, we use a component called tJavaRow. It has two main properties (called settings in TOS):</p>
<ul>
<li>the input and output schemas</li>
<li>a text area that contains the Java source code executed by this component</li>
</ul>
<p>I&#8217;ll explain later, why we use this really basic component instead of a more fancy one like tMap that seems to do the job more nicely. It doesn&#8217;t. Anyhow, the Java source code looks like this:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="java" style="font-family:monospace;">C_OUT.<span style="color: #006633;">STATUS</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;OK&quot;</span><span style="color: #339933;">;</span>
C_OUT.<span style="color: #006633;">ERRMSG</span> <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #339933;">;</span>
convert<span style="color: #009900;">&#40;</span>C_IN, C_OUT, <span style="color: #0000ff;">&quot;ID_ROW&quot;</span>, <span style="color: #0000ff;">&quot;toField&quot;</span>, <span style="color: #0000ff;">&quot;ID_ROW&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
convert<span style="color: #009900;">&#40;</span>C_IN, C_OUT, <span style="color: #0000ff;">&quot;FIELD_ONE&quot;</span>, <span style="color: #0000ff;">&quot;toNumber&quot;</span>, <span style="color: #0000ff;">&quot;SignedNumber&quot;</span>, <span style="color: #0000ff;">&quot;,&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
convert<span style="color: #009900;">&#40;</span>C_IN, C_OUT, <span style="color: #0000ff;">&quot;FIELD_TWO&quot;</span>, <span style="color: #0000ff;">&quot;toNormString&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
convert<span style="color: #009900;">&#40;</span>...<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>A central conversion routine written in Java is used for all conversions. It does the exception handling in case of a problem (e.g. sets the fields STATUS and ERRMSG) and controls the conversion. The input and output Java data objects are passed in as well as the field names, the name of the conversion routine, and additional parameters. The convert method does the work by using the Java Reflection API to look up fields and methods. The advantage is that it simplifies the exception handling, but it comes with a price: there&#8217;s no type safety anymore, i.e. problems are reported at run time, not compile time. We automatically generate the calls from a repository that contains all necessary information. The Java source code is simply copied, not written by hand.</p>
<p>The tMap component on the other hand is nice for ad-hoc mapping and conversion of a few fields, but isn&#8217;t really fit for the task otherwise. It might look good during a presentation/sale pitch, but it&#8217;s just too painful to work with. That&#8217;s because you have to select every field where you want to enter some functionality. It&#8217;s just too many clicks. And guess what, if you have to refactor you code, you&#8217;ll start all over again, i.e. go to every output field and do the refactoring manually. Imagine a schema with couple of hundred fields and you go nuts.</p>
<h3>What I think so far</h3>
<p>I&#8217;ve only written about a small number of things regarding TOS, but they were important for this part of the project. The import of data from CSV files into the DB2 database is possible within the requirements given above. I didn&#8217;t have performance issues related to TOS. The visual components are nice, but sometimes get in the way of working efficiently. What I really want to see is the possibility to edit the components settings with a text editor as a whole in addition to the form based entry.</p>
<p>This information is based on TOS 2.3.2.r12707. Things that were broken in this release were</p>
<ul>
<li>HTML documentation was not generated at all</li>
<li>given exception locations weren&#8217;t in sync with generated source code</li>
<li>export project didn&#8217;t work without refreshing project in navigator view (F5)</li>
</ul>
<p>These things will be fixed in the next releases I&#8217;m sure.</p>
<p>Two last things I want to say:</p>
<ul>
<li>if you don&#8217;t have someone on the team who is sufficiently fluent in Java, you&#8217;ll have a hard time to implement non-trivial solutions; depends on your or my definition of &#8216;non-trivial&#8217; of course ;-)</li>
<li>after working with TOS for some time now, I have the feeling that it can solve nearly any problem that might occur in such a project</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.synformation.com/2008/05/26/post-enough-talend/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Wicket first contact</title>
		<link>http://blog.synformation.com/2008/01/06/post-wicket-first-contact/</link>
		<comments>http://blog.synformation.com/2008/01/06/post-wicket-first-contact/#comments</comments>
		<pubDate>Sun, 06 Jan 2008 19:45:17 +0000</pubDate>
		<dc:creator>Thomas Weitzel</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://blog.synformation.com/index.php/2008/01/06/post-wicket-first-contact/</guid>
		<description><![CDATA[While working on an AJAX web application a couple of weeks ago, a co-worker asked me what I know about Wicket. Not much at that time. I knew it was some kind of component based web framework, but only in the sense like everybody knows that Porsche is a German car brand. During the recent [...]]]></description>
				<content:encoded><![CDATA[<p>While working on an AJAX web application a couple of weeks ago, a co-worker asked me what I know about <a href="http://wicket.apache.org" title="Apache Wicket home page | http://apache.org">Wicket</a>. Not much at that time. I knew it was some kind of component based web framework, but only in the sense like everybody knows that Porsche is a German car brand.</p>
<p>During the recent holidays I spent the entire time away from work and with my family. As most of the time when I&#8217;m away from work I made a list of things to look at. Wicket was not on that list. I seldom make it at least half way thru that list anyway. It was the same this time. But then I saw <a href="http://www.theserverside.com/news/thread.tss?thread_id=47979" title="Apache Wicket 1.3 released | http://theserverside.com">this article</a> on <a href="http://www.theserverside.com" title="TheServerSide.com is an online community for enterprise Java architects and developers | http://theserverside.com">TheServerSide</a> about the release of Wicket 1.3. The big amount of comments caught my interest. Suddenly, Wicket was on that list.</p>
<p><span id="more-42"></span></p>
<p>Today, I downloaded and installed Wicket, and then looked for documentation and tutorials. Besides some interesting online resources, I found the combination of two books on Wicket the most helpful:</p>
<ul>
<li>
The first ten available chapters of <a href="http://www.manning.com/dashorst" title="An authoritative, comprehensive guide for Java developers building Wicket-based web applications | http://manning.com">Wicket in Action (MEAP &#8211; Manning Early Access Program)</a> by Martijn Dashorst and Eelco Hillenius, published by Manning Publications Co.
</li>
<li>
<a href="http://www.agileskills2.org/EWDW" title="A book in tutorial style that walks you thru in a step-by-step manner | http://www.agileskills2.org/EWDW">Enjoying Web Development with Wicket</a> by Ka Iok Kent Tong, published as PDF only, with <a href="http://www.agileskills2.org/EWDW/chapters1-3.pdf" title="The first three chapters are freely available | http://agileskills2.org">freely available first three chapters</a>
</li>
</ul>
<p>The first book seems a little more verbose than the second book and covers more background, while the second book (besides being more complete right now) has much more source code examples. They complement each other perfectly in my opinion. So I got them both.</p>
<p>After reading thru the first three freely available chapters of &#8220;Enjoying Web Development with Wicket&#8221;, I got interested in chapter 6 (Supporting Other Languages). I was really impressed to see how I18N is a first class citizen in Wicket.</p>
<p><a href="http://blog.synformation.com:8080/wicket/cheesr" title='Screenshot from the Cheesr sample application'><img src="http://blog.synformation.com/wp-content/uploads/cheesr.png" alt="Screenshot from the Cheesr sample application" /></a></p>
<p>I then turned to &#8220;Wicket in Action&#8221;. Right now it is not completed and contains many errors, but none of this is really a problem. I made it thru the chapters 1-4 and implemented <a href="http://blog.synformation.com:8080/wicket/cheesr" title="Cheesr sample application | http://synformation.com">the Cheesr sample application</a> (from chapter 4) along the way.</p>
<p>I really like what I&#8217;ve seen so far from Wicket:</p>
<ul>
<li>It&#8217;s component based and encapsulates the request/response cycle</li>
<li>Components seem easy to write</li>
<li>Good internationalisation concept</li>
<li>Separation from logic and presentation</li>
</ul>
<p>Right, I&#8217;ve barely scratched the surface yet, but Wicket as a web framework looks promising.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.synformation.com/2008/01/06/post-wicket-first-contact/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why I upgraded to GWT 1.4.61</title>
		<link>http://blog.synformation.com/2007/11/08/post-gwt-1461/</link>
		<comments>http://blog.synformation.com/2007/11/08/post-gwt-1461/#comments</comments>
		<pubDate>Thu, 08 Nov 2007 20:05:01 +0000</pubDate>
		<dc:creator>Thomas Weitzel</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://blog.synformation.com/index.php/2007/11/08/post-gwt-1461/</guid>
		<description><![CDATA[The previous version GWT 1.4.60 came out on August 27th, 2007. A couple of days later I had upgraded all my applications, the expression calculator demo too. None of the applications suffered from a strange bug except the demo. It appeared only when Microsoft&#8217;s Internet Explorer was used. A message box was displayed that told [...]]]></description>
				<content:encoded><![CDATA[<p>The previous version GWT 1.4.60 came out on August 27th, 2007. A couple of days later I had upgraded all my applications, the <a href="http://blog.synformation.com/index.php/2007/02/10/post-gwt-application" title="GWT application">expression calculator demo</a> too. None of the applications suffered from a strange bug except the demo. It appeared only when Microsoft&#8217;s Internet Explorer was used. A message box was displayed that told the user: &#8220;operation aborted&#8221;. The page wasn&#8217;t shown at all, the user only saw a blank page. I had to remove the demo, at least from the home page. Since only the demo was affected, I didn&#8217;t go back to GWT 1.4.59.</p>
<p><span id="more-40"></span></p>
<p>Three days after GWT 1.4.60 came out, <a href="http://code.google.com/p/google-web-toolkit/issues/detail?id=1578" title="'operation aborted' error in Microsoft Internet Explorer | http://google.com">the issue</a> was reported, approximately at the same time I was experiencing it. I was hoping for a quick fix, but it didn&#8217;t come.</p>
<p>Several month later, Google&#8217;s Scott Blum wrote in the GWT forum about <a href="http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/bfb56b0f24bea849/4210aa5b7faca7d5#4210aa5b7faca7d5">an updated GWT 1.4 release</a>. Although I read the forum quite regularly, I nearly missed his posting. He talks about the new release fixing the problem, and he also provides a <a href="http://code.google.com/p/google-web-toolkit/downloads/list" title="Google Web Toolkit Downloads | http://google.com">download link for GWT 1.4.61</a>. I&#8217;ve downloaded it and upgraded all my application without a problem so far.</p>
<p><img src="http://blog.synformation.com/wp-content/uploads/gwt-1461.png" alt="Google Web Toolkit 1.4.61 is available for download" /></p>
<p>Since it fixes a very serious problem, you should upgrade also. Problem is, you will not see the new version on the <a href="http://code.google.com/webtoolkit/download.html" title="Google Web Toolkit Downloads | http://google.com">GWT download page</a>. At least not yet, but I bet you will see it there shortly. In the meantime, just use <a href="http://code.google.com/p/google-web-toolkit/downloads/list" title="Google Web Toolkit Downloads | http://google.com">this link</a>.</p>
<p><strong>Update:</strong> It took a little bit longer than I expected, but the GWT Team has just <a href="http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/6fef00f60eaa895c/2a1dc409ce60d9f3" title="GWT version 1.4.61 now officially released | http://google.com">officially released GWT 1.4.61</a>, which takes care of some minor bugs in the previous release of GWT 1.4.60. The two main issues that were addressed are the &#8220;operation aborted&#8221; startup error on IE and a potential XSS vulnerability in hosted mode.</p>
<p>There are no differences between the 1.4.61 version released on December 12th, 2007 and the 1.4.61 version released on November 3rd, 2007. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.synformation.com/2007/11/08/post-gwt-1461/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Trac for a team of one</title>
		<link>http://blog.synformation.com/2007/09/10/post-trac-for-one/</link>
		<comments>http://blog.synformation.com/2007/09/10/post-trac-for-one/#comments</comments>
		<pubDate>Mon, 10 Sep 2007 21:50:13 +0000</pubDate>
		<dc:creator>Thomas Weitzel</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://blog.synformation.com/index.php/2007/09/10/post-trac-for-one/</guid>
		<description><![CDATA[Even the smallest development team (one developer) needs a source code repository with versioning like Subversion to track all the changes made to the source code over time, and to reproduce the revisions software releases were based on. The ability to create branches is necessary to maintain software releases in the field, while continuing with [...]]]></description>
				<content:encoded><![CDATA[<p>Even the smallest development team (one developer) needs a source code repository with versioning like Subversion to track all the changes made to the source code over time, and to reproduce the revisions software releases were based on. The ability to create branches is necessary to maintain software releases in the field, while continuing with development at the same time. If you think you don&#8217;t need it, you probably don&#8217;t know enough about it (in a couple of really rare cases, you might indeed not need it, but even then it really doesn&#8217;t hurt). For most developers, working with a source code repository is as natural as working with an IDE like <a href="http://www.eclipse.org" title="The Eclipse community is focused on building an open development platform">Eclipse</a>.</p>
<p><span id="more-39"></span></p>
<p>Even though small development teams use a version system in many cases, an issue tracking system is used to a lot lesser extend. But I believe that it&#8217;s quite as important as having something like Subversion, because it makes the developers life so much easier. I have just experienced it while working in a small team during my current project. And there are solutions out there, that are easy to install and maintain. One (and one of the easiest and best) is <a href="http://trac.edgewall.org" title="Trac is an enhanced wiki and issue tracking system">Trac</a>: Trac is an integrated software configuration (and project) management system (SCM). It&#8217;s an issue tracking system for software development projects with an integrated wiki. Basically, it&#8217;s a project management suite which includes a wiki, a bug/issue tracking system, and a source control viewer that accesses a <a href="http://subversion.tigris.org" title="Subversion is a version control system">Subversion</a> repository.</p>
<p><img src="http://blog.synformation.com/wp-content/uploads/tracxmlrpc.png" alt="Screenshot of Trac XML-RPC plugin working with Eclipse and Mylyn" /></p>
<p>Since developers always tend to try out the newest and latest (I&#8217;m no exception to this rule, nor do I want to disappoint you), I&#8217;ve installed the Trac version currently under development (0.11dev). The integration with the Eclipse development environment also requires the latest development version of the Trac XML-RPC plugin. This is what you should have installed already:</p>
<ul>
<li>Eclipse development platform with Mylyn Trac Connector.</li>
<li>Working Subversion (SVN) installation.</li>
<li><a href="http://www.python.org" title="Python is a dynamic object-oriented programming language">Python</a> is installed on your system (Trac is written in Python).</li>
<li><a href="http://peak.telecommunity.com/DevCenter/EasyInstall" title="Easy Install lets you automatically download, build, install, and manage Python packages">easy_install</a> is available.</li>
<li>It helps if you have installed an older version of Trac (e.g. 0.10.4) once. If you don&#8217;t have any experience with Trac, you should go <a href="http://trac.edgewall.org" title="Trac SCM">there</a> and read their documentation.</li>
</ul>
<p>Now install Trac and the Trac XML-RPC plugin:</p>
<ul>
<li>Checkout the latest development sources from Trac: <code>http://svn.edgewall.org/repos/trac/trunk</code>.</li>
<li>Install/update Trac from the <code>trunk</code> directory: <code>$ python setup.py install</code>.</li>
<li>Checkout the sources from the Trac XML-RPC plugin: <code>http://trac-hacks.org/svn/xmlrpcplugin</code>.</li>
<li>Install/update the Trac XML-RPC plugin as decribed <a href="http://trac-hacks.org/wiki/XmlRpcPlugin" title="The Trac XML-RPC Plugin">here</a>: <code>$ easy_install trunk</code>.</li>
<li>Edit <code>trac.ini</code> and add (under <code>[components]</code>) <code>tracrpc.* = enabled</code>.</li>
<li>Start (or restart) Trac, e.g. via <code>tracd</code>.</li>
</ul>
<p>You can now access and create your Trac tickets from within Eclipse with the help of the Mylyn Trac Connector.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.synformation.com/2007/09/10/post-trac-for-one/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A small GWT application</title>
		<link>http://blog.synformation.com/2007/02/10/post-gwt-application/</link>
		<comments>http://blog.synformation.com/2007/02/10/post-gwt-application/#comments</comments>
		<pubDate>Sat, 10 Feb 2007 15:35:31 +0000</pubDate>
		<dc:creator>Thomas Weitzel</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://blog.synformation.com/index.php/2007/02/10/post-gwt-application/</guid>
		<description><![CDATA[I had some time today, so I built a little AJAX application for this blog. It&#8217;s an expression calculator. The world really doesn&#8217;t need another one, but it was the easiest thing that includes ANTLR for building a lexer/parser/AST and the Google Web Toolkit for building the client. Why? Because it&#8217;s fun &#8230; This is [...]]]></description>
				<content:encoded><![CDATA[<p>I had some time today, so I built a little <a href="http://en.wikipedia.org/wiki/Ajax_(programming)" title="Wikipedia article on Asynchronous JavaScript and XML | http://wikipedia.org">AJAX</a> application for this blog. It&#8217;s an expression calculator. The world really doesn&#8217;t need another one, but it was the easiest thing that includes <a href="http://antlr.org" title="Homepage of ANother Tool for Language Recognition | http://antlr.org">ANTLR</a> for building a lexer/parser/AST and the <a href="http://code.google.com/webtoolkit" title="Google Web Toolkit - Build AJAX apps in the Java language | http://google.com">Google Web Toolkit</a> for building the client. Why? Because it&#8217;s fun &#8230;</p>
<p><span id="more-29"></span></p>
<div id="gwt-container">
<h2><script type="text/javascript">document.write("Loading...");</script></h2>
<h2><object><br />
<noscript>This is a rich browser application that requires JavaScript. Please activate JavaScript within your browser.</noscript>
<p></object></h2>
</div>
<div><script src="/gwt/modules/gwtcalc/gwtcalc.nocache.js" type="text/javascript"></script></div>
<p><em>If the application doesn&#8217;t load, please click <a href="http://blog.synformation.com/index.php/2007/02/10/post-gwt-application" title="Writing a small GWT application with ANTLR Studio and GWT Designer | http://synformation.com">here</a>!</em></p>
<p>Before I was able to include a GWT application within a post in this <a href="http://wordpress.org" title="WordPress is a state-of-the-art semantic personal publishing platform | http://wordpress.org">WordPress</a> powered blog, I had to <a href="http://blog.synformation.com/index.php/2007/02/10/post-gwt-plugin" title="Creating a WordPress Plugin to generate gwt:module meta tags | http://synformation.com">create a WordPress plugin</a> that generates the necessary meta tags. GWT applications only work, when those meta tags are present.</p>
<p>The actual calculation of the expression is done on the server with the help of <a href="http://blog.synformation.com/index.php/page-synformation" title="What is synformation? | http://synformation.com">my Java based framework</a>. The expression is sent to the server asynchronously as a <a href="http://json.org" title="JavaScript Object Notation | http://json.org">JSON</a> data packet. The server logic evaluates the expression and sends back either the result, or an error message. If you want to see an error message, try a division by 0. The response is sent also in the JSON format back to the browser, where the GWT application takes it and displays it without refreshing the whole page.</p>
<p>The server side logic is built with the help of <a href="http://antlr.org" title="Homepage of ANother Tool for Language Recognition | http://antlr.org">ANTLR</a> and <a href="http://www.placidsystems.com/antlrstudio.aspx" title="ANTLR Studio for Eclipse | http://placidsystems.com">ANTLR Studio for Eclipse</a>. Instead of writing a lexer and parser for evaluation of the expressions myself, I&#8217;ve used a grammar to let these tools do it for me. The following screenshot shows <a href="http://www.placidsystems.com/antlrstudio.aspx" title="ANTLR Studio for Eclipse | http://placidsystems.com">ANTLR Studio for Eclipse</a> in action:</p>
<p><img src="http://blog.synformation.com/wp-content/uploads/antlrstudio.png" alt="Eclipse screenshot with ANTLR Studio" /></p>
<p>If you want to know what ANTLR is, here is a quote from Terence Parr, the primary author of ANTLR. He has been working on translation tools since the late 80s:</p>
<blockquote><p>ANTLR, ANother Tool for Language Recognition, (formerly PCCTS) is a parser and translator generator tool, akin to the venerable lex/yacc duo, that lets you construct recognizers, compilers, and source-to-source translators from grammatical descriptions containing C++ or Java actions. You can build translators for database formats, graphical data files (e.g., PostScript, AutoCAD), text processing files (e.g., HTML, SGML), etc. ANTLR is designed to handle all of your translation tasks. ANTLR is recommended by the co-inventor of LL(k) parsers and by the inventor of SLR(k) and LALR(k) parser.</p></blockquote>
<p>Another tool makes generation of GWT clients easier. It&#8217;s the <a href="http://www.instantiations.com/gwtdesigner/index.html" title="GWT Designer is a GUI creator that supports Google's Web Toolkit | http://instantiations.com">GWT Designer</a> from Instantiations. I&#8217;m having a few problems with it, but it still helps a lot. See the following screenshot for an impression:</p>
<p><img src="http://blog.synformation.com/wp-content/uploads/gwtdesigner.png" alt="Eclipse screenshot with GWT Designer" /></p>
<p>If you&#8217;re interested in this example built with GWT, ANTLR, JSON, etc., and you want to look at the source code, just download it from <a href="http://blog.synformation.com/wp-content/uploads/gwtcalc.zip" title="Download Eclipse GWTCalc project with source code | http://synformation.com">here</a>.</p>
<p>Do you remember the little problem from the <a href="http://blog.synformation.com/index.php/2007/02/10/post-kids-geometry" title="Solving a problem geometrically | http://synformation.com">Geometry for kids</a> post earlier today? With the calculator, you can verify if the solution is correct: <code>d = sqrt(3)*5.3</code>.</p>
<p><strong>Update 1:</strong> As of GWT 1.4, a new application-loading mechanism has been introduced, that doesn&#8217;t require a meta tag in the page header. It&#8217;s still supported for legacy applications. But now, the applications HTML code can directly reference the JavaScript file. I&#8217;ve changed the example above accordingly.</p>
<p><strong>Update 2:</strong> The calculator has been updated to GWT 2.0. The project available for <a href="http://blog.synformation.com/wp-content/uploads/gwtcalc.zip" title="Download Eclipse GWTCalc project with source code | http://synformation.com">download</a> has been updated as well.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.synformation.com/2007/02/10/post-gwt-application/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
