<?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>creatified.com &#187; development</title>
	<atom:link href="http://creatified.com/blog/category/development/feed/" rel="self" type="application/rss+xml" />
	<link>http://creatified.com/blog</link>
	<description>code creative.</description>
	<lastBuildDate>Fri, 05 Mar 2010 15:42:58 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Google Wave and IE-Support</title>
		<link>http://creatified.com/blog/2009/09/google-wave-and-ie-support/</link>
		<comments>http://creatified.com/blog/2009/09/google-wave-and-ie-support/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 15:37:52 +0000</pubDate>
		<dc:creator>mat.i.am</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[standards]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[google wave]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[web apps]]></category>
		<category><![CDATA[Webkit]]></category>

		<guid isPermaLink="false">http://creatified.com/blog/?p=281</guid>
		<description><![CDATA[So after all Google has developed its Chrome Frame plugin for Internet Explorer for a good reason: enabling the majority of users &#8211; which are unfortunately still using Internet Explorer (6,7 AND 8) to have a better experience with HTML5-based websites.
Lars Rasmussen posted on the Google Wave Developer Blog that Wave will inform Internet Explorer [...]]]></description>
			<content:encoded><![CDATA[<p>So after all Google has developed its <a href="http://code.google.com/intl/de-DE/chrome/chromeframe/" target="_blank">Chrome Frame plugin for Internet Explorer</a> for a good reason: enabling the majority of users &#8211; which are unfortunately still using Internet Explorer (6,7 AND 8) to have a better experience with HTML5-based websites.</p>
<p>Lars Rasmussen posted on the <a href="http://googlewavedev.blogspot.com/2009/09/google-wave-in-internet-explorer.html" target="_blank">Google Wave Developer Blog</a> that Wave will inform Internet Explorer users to install Chrome Frame for a better user experience. Reason being that Internet Explorer is just too slow at interpreting JavaScript and DOM Manipulations &#8211; features Wave heavily relies on. IE&#8217;s support of modern web standards such as HTML5 is pretty poor, too.</p>
<p>I&#8217;ve been experiencing the same issues with IE over and over for myself &#8211; yet in a smaller dimension: Every hour (and it have been many hours) a developer spends on the specific quirks on IE (which of course are different per each version) and to fix them for their application is not spent on adding cool new features or bug fixes which affect general issues.</p>
<p>Since this has been a problem for so a long time I hope this finally helps to fix this issue.</p>
]]></content:encoded>
			<wfw:commentRss>http://creatified.com/blog/2009/09/google-wave-and-ie-support/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>J2ME/MIDP: The hard parts (1)</title>
		<link>http://creatified.com/blog/2009/09/j2me-midp-the-hard-parts-1/</link>
		<comments>http://creatified.com/blog/2009/09/j2me-midp-the-hard-parts-1/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 16:33:41 +0000</pubDate>
		<dc:creator>mat.i.am</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[J2ME]]></category>
		<category><![CDATA[MIDP]]></category>

		<guid isPermaLink="false">http://creatified.com/blog/?p=265</guid>
		<description><![CDATA[This is going to be a series of articles about things that don&#8217;t go smooth when moving from J2SE to developing for J2ME in my case especially MIDP. It&#8217;s not intended to blame the guys behind J2ME and the MIDP APIs for what they&#8217;ve done &#8211; instead it&#8217;s intended to be a collection of common [...]]]></description>
			<content:encoded><![CDATA[<p>This is going to be a series of articles about things that don&#8217;t go smooth when moving from J2SE to developing for J2ME in my case especially MIDP. It&#8217;s not intended to blame the guys behind J2ME and the MIDP APIs for what they&#8217;ve done &#8211; instead it&#8217;s intended to be a collection of common problems or traps developers used to J2SE could fall in.</p>
<p>First up: Simple often-used utility functions:</p>
<p><strong>static boolean Boolean.parseBoolean(String s) missing</strong></p>
<p>The lack of this method is really annoying once you have to cope with reading in configuration values. Many of them will be in boolean-like format but you will have no method to parse them into booleans.</p>
<p>A very simple re-write of this method could look like that:</p>
<blockquote><p>public static boolean parseBoolean(String s) {<br />
return s.equalsIgnoreCase(&#8220;true&#8221;) || s.equalsIgnoreCase(&#8220;yes&#8221;);<br />
}</p></blockquote>
<p>Since it could be so easy to write this function (and Integer.parseInt() still exists which seems more complex to me) I don&#8217;t understand why it has not been included.</p>
<p><strong>String[] String.split() missing</strong></p>
<p>Every now and then one will have to parse some input &#8211; and this is where split() comes in handy. Would have come. Luckily String.indexOf() exists which allows for the following re-implementation of String.split():</p>
<blockquote><p>public static String[] split(String source, String separator) {<br />
Vector nodes = new Vector();</p>
<p>int index = source.indexOf(separator);<br />
while(index &gt;= 0) {<br />
nodes.addElement(source.substring(0, index));<br />
source = source.substring(index + separator.length());<br />
index = source.indexOf(separator);<br />
}<br />
nodes.addElement(source);</p>
<p>String[] result = new String[nodes.size()];<br />
if(nodes.size() &gt; 0) {<br />
for(int i = 0; i &lt; nodes.size(); i++) {<br />
result[i] = (String)nodes.elementAt(i);<br />
}<br />
}</p>
<p>return result;<br />
}</p></blockquote>
<p>All in all this might not sound too bad since both &#8220;re-implementations&#8221; were pretty easy to write. But: Since Boolean and String are declared abstract you can&#8217;t subclass and by that extend those. So you will have to declare a &#8220;tool&#8221;-class for them &#8211; not the most elegant way in my opinion.</p>
<p>So these are methods I think many developers will use very regularly but J2ME/MIDP doesn&#8217;t provide them.</p>
]]></content:encoded>
			<wfw:commentRss>http://creatified.com/blog/2009/09/j2me-midp-the-hard-parts-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Team. New Challenges.</title>
		<link>http://creatified.com/blog/2009/09/new-team-new-challenges/</link>
		<comments>http://creatified.com/blog/2009/09/new-team-new-challenges/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 20:19:15 +0000</pubDate>
		<dc:creator>mat.i.am</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[common]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Blackberry]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://creatified.com/blog/?p=255</guid>
		<description><![CDATA[In early September I started working in a new team. The main reason for this step was change itself. Since I&#8217;m still in training it&#8217;s always great to see something different and new. This helps me complete my picture of software development and also takes me to another company with business processes slightly different from [...]]]></description>
			<content:encoded><![CDATA[<p>In early September I started working in a new team. The main reason for this step was change itself. Since I&#8217;m still in training it&#8217;s always great to see something different and new. This helps me complete my picture of software development and also takes me to another company with business processes slightly different from those I&#8217;m used to.</p>
<p>I&#8217;m still a software developer. But the kind of software I&#8217;m developing has changed and so have my experiences and learnings. Of course they did not change completely &#8211; but they changed focus. For the last year I&#8217;ve mostly been developing server side applications combined with HTML/CSS/JavaScript. Although I would not see them as very large they were certainly more complex and more demanding on hardware than what I&#8217;m developing now. That thing which I&#8217;m entirely new to is development for mobile. This basically means developing for devices like the iPhone, Blackberry or Android. For me, this is a great opportunity. It&#8217;s helping me a lot to fine-tune my programming skills. Here are some examples of things I had already expected and some things I just experienced:</p>
<ul>
<li>memory and processing power is so limited compared to desktop or even server environments (iPhone 3G: ~400MHz, 128MB of RAM, no swap! &#8211; Desktop: multi-core 1-2GHz, GB&#8217;s of RAM)</li>
<li>(only for the iPhone) memory management can be a tricky if you&#8217;ve always been developing in a garbage collected environment like the Java platform</li>
<li>SDKs like the iPhone SDK or Android SDK rely heavily on software design patterns. A developer using those SDks is at a loss if he&#8217;s does not only understand those but is also able to extend and re-use them</li>
</ul>
<p>There are many things that come with this change for developers. First: one must be very careful with creating objects. Very careful! Even if you&#8217;re on platforms like Android or Blackberry which feature Java and by thus automatic Garbage Collection! Every object counts.</p>
<p>Those limitations and the way you deal with them really help developers get more experienced. By that it&#8217;s a great deal for both the company and me.</p>
<p>I&#8217;m looking forward to what comes next &#8211; and rest assured I will keep you updated about any further developments.</p>
]]></content:encoded>
			<wfw:commentRss>http://creatified.com/blog/2009/09/new-team-new-challenges/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SpringSource: A Groovier Eclipse experience</title>
		<link>http://creatified.com/blog/2009/08/springsource-a-groovier-eclipse-experience/</link>
		<comments>http://creatified.com/blog/2009/08/springsource-a-groovier-eclipse-experience/#comments</comments>
		<pubDate>Wed, 12 Aug 2009 17:48:10 +0000</pubDate>
		<dc:creator>mat.i.am</dc:creator>
				<category><![CDATA[Grails]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://creatified.com/blog/?p=249</guid>
		<description><![CDATA[For a very long time developing Grails applications in Eclipse using the Groovy-Eclipse-Plugin was everything but enjoyable for me. Matthias Käppler summed it up best when he wrote:
Grails and Eclipse: Not So Groovy
In fact I struggled to get the Groovy-Eclipse-Plugin installed those days, and after finally having done that I found out that developing Grails [...]]]></description>
			<content:encoded><![CDATA[<p>For a very long time developing Grails applications in Eclipse using the Groovy-Eclipse-Plugin was everything but enjoyable for me. <a href="http://brainflush.wordpress.com/2008/05/03/grails-and-eclipse-not-so-groovy/">Matthias Käppler</a> summed it up best when he wrote:</p>
<blockquote><p>Grails and Eclipse: Not So Groovy</p></blockquote>
<p>In fact I struggled to get the Groovy-Eclipse-Plugin installed those days, and after finally having done that I found out that developing Grails applications in Eclipse was really painful for me.</p>
<p>But now with the <a href="http://blog.springsource.com/2009/07/30/a-groovier-eclipse-experience/">first pre-M1 release</a> of the next version of the Groovy-Eclipse plugin many things are better than ever. I finally got around using Grails and Eclipse for some of my projects at work but on the Mac at home I still prefer the combination of TextMate and Console.app. I&#8217;m looking forward to the final release which should improve UI performance in Eclipse, especially when using Code Assist.</p>
]]></content:encoded>
			<wfw:commentRss>http://creatified.com/blog/2009/08/springsource-a-groovier-eclipse-experience/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jacqueline &#8211; parallelized.</title>
		<link>http://creatified.com/blog/2009/07/jacqueline-parallelized/</link>
		<comments>http://creatified.com/blog/2009/07/jacqueline-parallelized/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 10:02:13 +0000</pubDate>
		<dc:creator>mat.i.am</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[benchmark]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[Jacqueline]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://creatified.com/blog/?p=241</guid>
		<description><![CDATA[Jacqueline now features a development branch containing the latest changes to check multiple documents in a parallel fashion.
My first performance tests show that this boosts overall performance when checking large amounts of CSS selectors on multiple HTML documents. The next big step will be trunk-integration of this feature.
In the meantime check the dev-branch at http://code.google.com/p/jacqueline/source/browse/#svn/branches/threaded
]]></description>
			<content:encoded><![CDATA[<p>Jacqueline now features a development branch containing the latest changes to check multiple documents in a parallel fashion.</p>
<p>My first performance tests show that this boosts overall performance when checking large amounts of CSS selectors on multiple HTML documents. The next big step will be trunk-integration of this feature.</p>
<p>In the meantime check the dev-branch at <a href="http://code.google.com/p/jacqueline/source/browse/#svn/branches/threaded" target="_blank">http://code.google.com/p/jacqueline/source/browse/#svn/branches/threaded</a></p>
]]></content:encoded>
			<wfw:commentRss>http://creatified.com/blog/2009/07/jacqueline-parallelized/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing Jacqueline: unused CSS Selectors in Java</title>
		<link>http://creatified.com/blog/2009/06/introducing-jacqueline-unused-css-selectors-in-java/</link>
		<comments>http://creatified.com/blog/2009/06/introducing-jacqueline-unused-css-selectors-in-java/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 18:13:20 +0000</pubDate>
		<dc:creator>mat.i.am</dc:creator>
				<category><![CDATA[1&1]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[standards]]></category>
		<category><![CDATA[benchmark]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[Selectors API]]></category>

		<guid isPermaLink="false">http://creatified.com/blog/?p=225</guid>
		<description><![CDATA[Back in 2008 I wrote some articles about the proposed Selectors API for the DOM. Now, in 2009, it&#8217;s still &#8220;only&#8221; a working draft of the W3C. I&#8217;ve been exploring this topic for a long time, now I will finally have time to write about what I&#8217;ve been working on for several months.
Jacqueline is a [...]]]></description>
			<content:encoded><![CDATA[<p>Back in 2008 I wrote some articles about the <a href="http://www.w3.org/TR/selectors-api/" target="_blank">proposed Selectors API</a> for the DOM. Now, in 2009, it&#8217;s still &#8220;only&#8221; a working draft of the W3C. I&#8217;ve been exploring this topic for a long time, now I will finally have time to write about what I&#8217;ve been working on for several months.</p>
<p>Jacqueline is a library which will help you to find unused CSS Selectors in multiple HTML documents. This is a very important feature when you want to check a complete website: it will be almost certain that you have some CSS selectors used on page &#8220;A&#8221; but not on page &#8220;B&#8221; whereas &#8220;B&#8221; uses some CSS selectors which &#8220;A&#8221; doesn&#8217;t use.</p>
<p>Jacqueline is completely written in Java &#8211; this was necessary because we wanted to run it in our Java based infrastructure. This brings some other problems Jacqueline has to face: the DOM implementation in Java doesn&#8217;t feature the Selectors API. So I wrote a CSS-to-XPath engine &#8211; inspired by <a href="http://www.domassistant.com/" target="_blank">DOMAssistant.</a> What this basically does is: it transforms CSS2.1 selectors into XPath queries which can then be used for node tests (since XPath support is included in the JDK) on the DOM tree of the HTML document.</p>
<p>Because our documents are still using HTML 4.0 (due to several problems when switching to XHTML 1.0) I had to use <a href="http://jtidy.sourceforge.net/" target="_blank">JTidy</a> for building DOMs.</p>
<p>Jacqueline also uses <a href="http://xmlgraphics.apache.org/batik/" target="_blank">Apache Batik</a> to retrieve all the CSS rules and CSS selectors from a document &#8211; it was the only implementation of the <a href="http://www.w3.org/Style/CSS/SAC/" target="_blank">SAC (Simple API for CSS)</a> I got to run &#8211; and which had some special features. These include locator information of the found tokens for example.</p>
<p>At the moment Jacqueline only works single-threaded, but because this includes many cpu-intensive operations which could definitely be fastened by using the power of multiple cores I&#8217;m also dreaming of a multi-threaded version. Since most operations of Jacqueline could be executed in a parallel fashion this could bring a major speed-up.</p>
<p>The main thing of Jacqueline is that it&#8217;s one of the first pieces to the lately mentioned <a href="http://creatified.com/blog/2009/06/the-project-mess-tool/" target="_blank">Project Mess Tool</a>. We&#8217;ll be using the power of Jacqueline to detect unused CSS selectors in our web projects.</p>
<p>Finally, that stupid name: Jacqueline is named after <a href="http://simpsonspedia.net/index.php?title=Jacqueline_Bouvier" target="_blank">Jacqueline Bouvier</a> from my favorite TV show the Simpsons. See this poster in our office:</p>
<div id="attachment_229" class="wp-caption alignnone" style="width: 235px"><a href="http://creatified.com/blog/wp-uploads/2009/06/jacqueline.jpg"><img class="size-medium wp-image-229" title="jacqueline" src="http://creatified.com/blog/wp-uploads/2009/06/jacqueline-225x300.jpg" alt="Jacqueline - Poster" width="225" height="300" /></a><p class="wp-caption-text">Jacqueline - Poster</p></div>
]]></content:encoded>
			<wfw:commentRss>http://creatified.com/blog/2009/06/introducing-jacqueline-unused-css-selectors-in-java/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>creatified.com now with a wide layout, slight changes</title>
		<link>http://creatified.com/blog/2009/06/creatified-com-now-with-a-wide-layout-slight-changes/</link>
		<comments>http://creatified.com/blog/2009/06/creatified-com-now-with-a-wide-layout-slight-changes/#comments</comments>
		<pubDate>Sun, 14 Jun 2009 12:10:56 +0000</pubDate>
		<dc:creator>mat.i.am</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[creatified]]></category>
		<category><![CDATA[website]]></category>

		<guid isPermaLink="false">http://creatified.com/blog/?p=221</guid>
		<description><![CDATA[I updated creatified.com to now use a wider layout (960px), this will give more space for whatever is coming next.
I also included a lightbox effect for images because there were quite many of them.
And there are some fixes here and there&#8230;
]]></description>
			<content:encoded><![CDATA[<p>I updated creatified.com to now use a wider layout (960px), this will give more space for whatever is coming next.<br />
I also included a lightbox effect for images because there were quite many of them.<br />
And there are some fixes here and there&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://creatified.com/blog/2009/06/creatified-com-now-with-a-wide-layout-slight-changes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Grails Instruments in public SVN now</title>
		<link>http://creatified.com/blog/2009/06/grails-instruments-in-public-svn-now/</link>
		<comments>http://creatified.com/blog/2009/06/grails-instruments-in-public-svn-now/#comments</comments>
		<pubDate>Sun, 14 Jun 2009 09:53:19 +0000</pubDate>
		<dc:creator>mat.i.am</dc:creator>
				<category><![CDATA[Grails]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[benchmark]]></category>
		<category><![CDATA[flot]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Instruments]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://creatified.com/blog/?p=209</guid>
		<description><![CDATA[This weekend I've been very busy on Instruments again.
Instruments now sports a core Java library which takes care of caching the states of system usage for the last time. This is included in an all new "InstrumentsService" which will provide the necessary methods to controllers.
At the moment this is all trimmed for using flot. There are no other "export options" for now.
I decided to make this publicly available in my Subversion repository. ]]></description>
			<content:encoded><![CDATA[<p>This weekend I&#8217;ve been very busy on Instruments again.</p>
<p>Instruments now sports a core Java library which takes care of caching the states of system usage for the last time. This is included in an all new &#8220;InstrumentsService&#8221; which will provide the necessary methods to controllers.</p>
<p>At the moment this is all trimmed for using flot. There are no other &#8220;export options&#8221; for now.</p>
<p>I decided to make this publicly available in my Subversion repository. You can checkout the source tree of the Grails application here:</p>
<p><a href="http://creatified.com/svn/creatified/Instruments/" target="_blank">http://creatified.com/svn/creatified/Instruments/</a></p>
<p>The trunk includes the latest development version. Don&#8217;t forget the &#8220;grails upgrade&#8221;-command after checking out the source tree.</p>
<p>When you run the app, all you&#8217;ll find there for the moment is the following site which will be located unter http://localhost:8080/instruments/</p>
<p>You will then be able to see something like this:</p>
<p><a href="http://creatified.com/blog/wp-uploads/2009/06/Instruments-CPU.png"><img class="alignnone size-medium wp-image-211" title="Instruments - CPU" src="http://creatified.com/blog/wp-uploads/2009/06/Instruments-CPU-300x147.png" alt="Instruments - CPU" width="300" height="147" /></a></p>
<p>for the CPU usage and this:</p>
<p><a href="http://creatified.com/blog/wp-uploads/2009/06/Instruments-Memory.png"><img class="alignnone size-medium wp-image-212" title="Instruments - Memory" src="http://creatified.com/blog/wp-uploads/2009/06/Instruments-Memory-300x129.png" alt="Instruments - Memory" width="300" height="129" /></a></p>
<p>for the Memory usage</p>
<p>This will be all for now, be sure to check out your own version &#8211; I&#8217;ll also be testing this on the Google AppEngine soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://creatified.com/blog/2009/06/grails-instruments-in-public-svn-now/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Eclipse and Grails</title>
		<link>http://creatified.com/blog/2009/06/eclipse-and-grails/</link>
		<comments>http://creatified.com/blog/2009/06/eclipse-and-grails/#comments</comments>
		<pubDate>Sat, 13 Jun 2009 21:18:27 +0000</pubDate>
		<dc:creator>mat.i.am</dc:creator>
				<category><![CDATA[Grails]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Groovy]]></category>

		<guid isPermaLink="false">http://creatified.com/blog/?p=206</guid>
		<description><![CDATA[In the last weeks I&#8217;ve been working on quite some different Grails applications. In my opinion Grails is really a great framework.
But one aspect that&#8217;s often annoying me is the Eclipse integration. Like many other guys I&#8217;d like to use Eclipse because for me TextMate is no full-blown IDE. But the default integration into Eclipse [...]]]></description>
			<content:encoded><![CDATA[<p>In the last weeks I&#8217;ve been working on quite some different Grails applications. In my opinion Grails is really a great framework.</p>
<p>But one aspect that&#8217;s often annoying me is the Eclipse integration. Like many other guys I&#8217;d like to use Eclipse because for me TextMate is no full-blown IDE. But the default integration into Eclipse is &#8220;incomplete&#8221; at best.</p>
<p>Here are some things I encountered with some possible solutions:</p>
<p>Unfortunately the generated Eclipse project files do not include a source link to the plugins directory of your project. Since Grails 1.1 this will be in your home-directory (at least on Unix-based systems) like ~/.grails/{GRAILS_VERSION}/projects/{PROJECT}/plugins, you will have to link this as a source folder when you&#8217;re using any plugins (which will often be the case)</p>
<p>The other thing is: if you&#8217;re including jars in the &#8220;lib&#8221; directory under your Grails project you will either add these jars manually to your build path or once again add this folder as a linked source folder.</p>
<p>I hope these issues will be addressed in a future release of Grails, hopefully as soon as 1.1.2 since these should not be too complicated to fix.</p>
]]></content:encoded>
			<wfw:commentRss>http://creatified.com/blog/2009/06/eclipse-and-grails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Project Mess Tool [updated]</title>
		<link>http://creatified.com/blog/2009/06/the-project-mess-tool/</link>
		<comments>http://creatified.com/blog/2009/06/the-project-mess-tool/#comments</comments>
		<pubDate>Sat, 13 Jun 2009 20:55:15 +0000</pubDate>
		<dc:creator>mat.i.am</dc:creator>
				<category><![CDATA[1&1]]></category>
		<category><![CDATA[Grails]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[study]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[PMT]]></category>

		<guid isPermaLink="false">http://creatified.com/blog/?p=198</guid>
		<description><![CDATA[At the moment I&#8217;m working on my second project thesis for my studies. The topic I have chosen in accordance with my company is the &#8220;Project Mess Tool&#8221; (PMT) as we named it.
So what&#8217;s this about? In a few words: The PMT is a tool which will allow us to keep track of many quality-relevant [...]]]></description>
			<content:encoded><![CDATA[<p>At the moment I&#8217;m working on my second project thesis for my studies. The topic I have chosen in accordance with my company is the &#8220;Project Mess Tool&#8221; (PMT) as we named it.</p>
<p>So what&#8217;s this about? In a few words: The PMT is a tool which will allow us to keep track of many quality-relevant metrics our company-website &#8220;produces&#8221; every day.</p>
<h3>Problem</h3>
<p>The sites we use for selling products are changed very often due to marketing campaigns. Not only do we have to change some images for that instead these are huge changes to the affected frontends. This of course results in the fact that many parts of our codebase are from older versions which may not be needed anymore.</p>
<p>At the moment we&#8217;re in the uncomfortable situation that we often don&#8217;t know how our pages really perform e.g. how many of the resources we deliver or keep are really necessary. We don&#8217;t know how many kilobytes (or even megabytes?) the average page weighs nor do we know where we could optimize easily.</p>
<h3>Possible solution: the PMT</h3>
<p>The PMT is designed as flexible as we think it can be. All it basically does is receive data from all different kinds of sources by offering a defined interface (a webservice). This will include information from</p>
<ul>
<li><a href="http://nicosteiner.de/archives/105-Einheitliche-Auslieferung-von-CSS-und-JavaScript.html">the Jasmin servlet</a> as mentioned by my <a href="http://nicosteiner.de/archives/140-Jasmin-Servlet-Performance-Optimierungen.html">colleague Nico Steiner</a> (both in German)</li>
<li>our <a href="http://pustefix-framework.org/">Pustefix framework</a> which renders the sites</li>
<li>some other emerging projects we will use to make our websites even faster</li>
</ul>
<p>In the end we will have information not only like &#8220;how many of the CSS selectors we deliver are really used by our pages?&#8221; but also &#8220;how does this change over time&#8221;. So we will be able to track quality with our predefined metrics and check back every week or so whether we have improved in those fields.</p>
<h3>Architecture</h3>
<p>I chose Grails to build this application &#8211; which I&#8217;m already pretty familiar with &#8211; but we&#8217;re also using some core Java libraries to add some features specific to the frameworks and technologies we use. Grails seemed like an ideal candidate for me because it already ships with the really powerful GORM abstraction layer. There are also plugins for other enterprise applications like the <a href="http://www.opensymphony.com/quartz/">Quartz enterprise job scheduler</a>. Grails makes it very easy to run all this stuff so I got done with the first steps pretty soon.</p>
<h3>Frontend</h3>
<p>At the moment I&#8217;m also drawing the first drafts of how the user interface of the PMT will look like. It will probably use <a href="http://code.google.com/p/flot/">Flot</a> which I also mentioned several times.</p>
<h3>Conclusion</h3>
<p>For me this is a really great project. Not only in its size &#8211; it&#8217;s definitely the biggest project I&#8217;ve been working on until today. But its also a project in which I spend all my effort and time of work this time. I think it will help a lot to improve the overall technical quality of our web frontends.</p>
<p>I&#8217;ll keep you updated with all major changes and milestones to the PMT. So what do you think of our idea?</p>
]]></content:encoded>
			<wfw:commentRss>http://creatified.com/blog/2009/06/the-project-mess-tool/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
