<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5335810078566775677</id><updated>2012-01-23T18:28:01.816+01:00</updated><category term='p2'/><category term='OSGi'/><category term='OFMP'/><category term='misterhouse'/><category term='ese2009'/><category term='JBI'/><category term='process'/><category term='ece2011'/><category term='SCA'/><category term='OOD'/><category term='SOA'/><category term='demo camp'/><category term='BPEL'/><category term='versioning'/><category term='EJB'/><category term='knx'/><category term='agile'/><category term='Maven'/><category term='TSSJS'/><category term='EDA'/><category term='xtext'/><category term='xbase'/><category term='eclipse'/><category term='Spring'/><category term='openremote'/><category term='openhab'/><category term='tycho'/><title type='text'>Kai Kreuzer</title><subtitle type='html'>I am a Software Architect interested in the Java Enterprise world, currently especially Eclipse RCP and Model Driven Development. Furthermore I am the founder of the openHAB project.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://kaikreuzer.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://kaikreuzer.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Kai Kreuzer</name><uri>http://www.blogger.com/profile/14948351445882697259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-BHZHlfi45dg/Tvn3WfSkNEI/AAAAAAAAA2M/5SvSUKYUMCk/s1600/kaikreuzer.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>27</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5335810078566775677.post-7268767773974877751</id><published>2011-10-31T13:39:00.000+01:00</published><updated>2011-10-31T13:39:08.693+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ece2011'/><category scheme='http://www.blogger.com/atom/ns#' term='openhab'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>This Is Not Your Father's House!</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.eclipsecon.org/europe2011/sites/default/files/130x100_speaking.gif?1307137694" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://www.eclipsecon.org/europe2011/sites/default/files/130x100_speaking.gif?1307137694" /&gt;&lt;/a&gt;&lt;/div&gt;To continue the "Not your father's" series (see &lt;a href="http://blog.efftinge.de/2011/10/this-is-not-your-fathers-java.html"&gt;Sven's blog&lt;/a&gt; and &lt;a href="http://code-recommenders.blogspot.com/2011/10/its-even-not-your-fathers-ide.html"&gt;Marcel's blog&lt;/a&gt;) you can imagine that if even Java and IDEs have evolved over the years, the way that people want to use and operate their houses has tremendously changed as well!&lt;br /&gt;&lt;br /&gt;As many EclipseCon attendees are likely to spend more time with their IDE and Java than with their families at home, they might find the idea appealing to also use Eclipse technologies for remotely adjusting the heating, turning off the lights, checking if the latest internet shopping has arrived or telling&amp;nbsp;their spouses&amp;nbsp;"I love you" through XMPP and text-to-speech, while staying late in the office another time ;-)&lt;br /&gt;&lt;br /&gt;So if you are a geek and are interested in hardware, do not miss&amp;nbsp;&lt;a href="http://www.eclipsecon.org/europe2011/sessions/eclipsehome-%E2%80%93-home-automation-practice"&gt;my talk at EclipseCon Europe&lt;/a&gt; this Thursday, 11.30am. I am going to demonstrate you how easy it is to add new hardware devices to your home automation infrastructure as well - luckily a few sensors are &lt;a href="http://m2mcontest.eclipsecon.org/#general-description"&gt;spread out over the conference venue&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;You have not heard about the &lt;a href="http://m2mcontest.eclipsecon.org/"&gt;M2M contest&lt;/a&gt; at EclipseCon Europe yet? Go and prepare yourself for your participation then! And no worries - I won't compete with you in the programming contest as I will be a member of the jury :-) Looking forward to your submissions!&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5335810078566775677-7268767773974877751?l=kaikreuzer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaikreuzer.blogspot.com/feeds/7268767773974877751/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5335810078566775677&amp;postID=7268767773974877751' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/7268767773974877751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/7268767773974877751'/><link rel='alternate' type='text/html' href='http://kaikreuzer.blogspot.com/2011/10/this-is-not-your-fathers-house.html' title='This Is Not Your Father&apos;s House!'/><author><name>Kai Kreuzer</name><uri>http://www.blogger.com/profile/14948351445882697259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-BHZHlfi45dg/Tvn3WfSkNEI/AAAAAAAAA2M/5SvSUKYUMCk/s1600/kaikreuzer.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5335810078566775677.post-861642675862215061</id><published>2011-09-29T22:50:00.000+02:00</published><updated>2011-09-29T22:50:33.257+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openhab'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='xbase'/><category scheme='http://www.blogger.com/atom/ns#' term='xtext'/><title type='text'>Using Xbase for Home Automation Rules</title><content type='html'>Up to now&amp;nbsp;&lt;a href="http://www.openhab.org/"&gt;openHAB&lt;/a&gt; has embedded JBoss Drools as a rule engine for automation rules. Although Drools is very powerful, this solution also has a few problems: The Drools IDE is not&amp;nbsp;completely&amp;nbsp;working in the openHAB Designer, so that no code completion and syntax checks are available for the rules. This makes the creation and debugging unnecessarily difficult, especially as the Java syntax of the rules is not very intuitive.&lt;br /&gt;&lt;br /&gt;Although Drools offers an option to define tailored DSLs for rules, which could lower the syntax complexity, I personally feel that &lt;a href="http://www.eclipse.org/Xtext/#xbase"&gt;Xbase&lt;/a&gt; might be a better match for openHAB on the long run. This is why I have started with the development of an alternative rule engine for openHAB, which is fully based on Xbase. I would like to give you a brief summary of what exactly I have in mind:&lt;br /&gt;&lt;br /&gt;Being a part of Xtext, Xbase perfectly integrates with the item and sitemap definitions of openHAB (which are already based on Xtext). It will therefore be easy to reference items from within rules and to have full IDE support on them. The "execution" part of a rule would be basically an list of Xbase expressions, which leaves a lot of power to the user as he can do all actions he was able to do in a Java-syntax Drools rule.&lt;br /&gt;&lt;br /&gt;The main challenge is the "when" part of a rule, i.e. the triggering condition. Here lies the full power of Drools: Using a sophisticated RETE-algorithm it is possible to have relations between rules, where the triggering of one rule means the deactivation of others etc. This is indeed very powerful and necessary for expert systems and alike. For home automation use, my impression is that this rather confuses the normal user who still wants to be clear on what is executed when (and hence the defined rules usually use quite simple trigger statements).&lt;br /&gt;&lt;br /&gt;The idea is to provide different kind of triggers (of different categories) for the new engine:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Event-related triggers: "Item X was updated", "Item X changed to OFF" or "Item X received command UP"&lt;/li&gt;&lt;li&gt;State-related triggers: "State X == ON", "State X != 0" or "State X &amp;gt; 20"&lt;/li&gt;&lt;li&gt;System-related triggers: "System has started" or "System is shutting down"&lt;/li&gt;&lt;li&gt;Timer-related triggers: "Time is midnight" or "Timer cron(0 * * * *)"&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Obviously, one can think of many other trigger possibilities, but the list above should imho do for a start. Keep in mind that you can still do additional if-statements inside the "execution" part of your rule if these triggers do not suffice.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;An example rule could hence look like this:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #3d85c6; font-family: 'Courier New', Courier, monospace;"&gt;rule "Announce caller"&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #3d85c6; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; when&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #3d85c6; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Item IncomingCall was updated,&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #3d85c6; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; State Presence == ON&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #3d85c6; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; then&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #3d85c6; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; send MusicPlayer OFF&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #3d85c6; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;say &lt;/span&gt;&lt;span class="Apple-style-span" style="color: #3d85c6; font-family: 'Courier New', Courier, monospace;"&gt;IncomingCall&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #3d85c6; font-family: 'Courier New', Courier, monospace;"&gt;.newState + " is calling";&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #3d85c6; font-family: 'Courier New', Courier, monospace;"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #20124d; font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #20124d;"&gt;If you compare this example to the &lt;a href="http://code.google.com/p/openhab/source/browse/distribution/openhabhome/configurations/rules/demo.drl"&gt;current Drools syntax&lt;/a&gt; you will see that it is much more natural to read. Having full IDE support with code completion etc. also makes writing such rules much simpler than it is today.&lt;br /&gt;&lt;br /&gt;I am planning to show this new rule engine in action in &lt;a href="http://www.eclipsecon.org/europe2011/sessions/eclipsehome-%E2%80%93-home-automation-practice"&gt;my talk at EclipseCon Europe&lt;/a&gt; on November 3 in Ludwigsburg, so make sure you are there if you are interested in it!&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5335810078566775677-861642675862215061?l=kaikreuzer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaikreuzer.blogspot.com/feeds/861642675862215061/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5335810078566775677&amp;postID=861642675862215061' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/861642675862215061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/861642675862215061'/><link rel='alternate' type='text/html' href='http://kaikreuzer.blogspot.com/2011/09/using-xbase-for-home-automation-rules.html' title='Using Xbase for Home Automation Rules'/><author><name>Kai Kreuzer</name><uri>http://www.blogger.com/profile/14948351445882697259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-BHZHlfi45dg/Tvn3WfSkNEI/AAAAAAAAA2M/5SvSUKYUMCk/s1600/kaikreuzer.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5335810078566775677.post-2872964441148961003</id><published>2010-12-01T19:21:00.000+01:00</published><updated>2010-12-01T19:21:39.568+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openhab'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='tycho'/><title type='text'>Building p2-enabled products with Tycho</title><content type='html'>Working on the build and the packaging of&amp;nbsp;&lt;a href="http://www.openHAB.org/"&gt;openHAB&lt;/a&gt;, I had to undergo quite some efforts to get it done with Maven3/Tycho.&lt;br /&gt;&lt;br /&gt;My special challenge was to package a product which is p2-enabled &lt;b&gt;and&lt;/b&gt;&amp;nbsp;includes root files. If you just want to do the one or the other, it works quite straight forward: You can use the "eclipse-application" Tycho packaging type to build Eclipse RCP products, which will also nicely include any root files that you have defined on your features.&lt;br /&gt;&lt;br /&gt;Since version 0.10.0, Tycho also supports building p2-enabled products (&lt;a href="https://issues.sonatype.org/browse/TYCHO-188"&gt;TYCHO-188&lt;/a&gt;), but you will have to use the "eclipse-repository" packaging type to do so. Unfortunately, root file inclusion does not work with this packaging type (due to very complex reasons, see &lt;a href="https://issues.sonatype.org/browse/TYCHO-513"&gt;TYCHO-513&lt;/a&gt; and &lt;a href="https://issues.sonatype.org/browse/TYCHO-465"&gt;TYCHO-465&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;So what is the workaround to have both at the same time? I have chosen a combination of the "eclipse-repository" packaging and the "classic" Maven assembly plugin to do this job.&lt;br /&gt;&lt;br /&gt;The "eclipse-repository" packaging is used in a &lt;a href="https://code.google.com/p/openhab/source/browse/products/org.openhab.runtime.product/"&gt;Maven project that contains the RCP product definition&lt;/a&gt;. Using the "materialize-products" and "archive-products execution, makes sure that the p2 director is used to install and package a product from the repository (for all platforms that are listed in the configuration of the target-platform-configuration Maven plugin). Note that choosing Mac as a platform does not seem to be an option right now, at least I could not get it working...&lt;br /&gt;&lt;br /&gt;If you now run a &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;"mvn clean install"&lt;/span&gt;&lt;/span&gt; on this project, you will find the resulting zip files in the target folder. But how to add additional files (such as readmes, licenses, start scripts, additional libraries and folders, etc.) to it to make it your final distribution? That's where the Maven assembly plugin comes into play:&lt;br /&gt;&lt;br /&gt;You need to create a &lt;a href="https://code.google.com/p/openhab/source/browse/#hg/distribution%3Fstate%3Dclosed"&gt;Maven project that contains the files you want to add&lt;/a&gt;. The assembly plugin allows the inclusion of project dependencies in the assembly, so we need to define a dependency on our product project in our pom.xml. The problem here is that if you do this as usual, you will end up with the packaged p2 repository to be included in your assembly as this is the primary artifact built by the "eclipse-repository" packaging. Luckily, the product zips are attached as additional artifacts to the build result, so we can define a dependency like:&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;  &amp;lt;groupId&amp;gt;com.acme&amp;lt;/groupId&amp;gt;&lt;br /&gt;  &amp;lt;artifactId&amp;gt;com.acme.rcp.product&amp;lt;/artifactId&amp;gt;&lt;br /&gt;  &amp;lt;version&amp;gt;${project.version}&amp;lt;/version&amp;gt;&lt;br /&gt;  &amp;lt;type&amp;gt;zip&amp;lt;/type&amp;gt;&lt;br /&gt;  &amp;lt;classifier&amp;gt;win32.win32.x86&amp;lt;/classifier&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;In the&amp;nbsp;&lt;a href="https://code.google.com/p/openhab/source/browse/distribution/src/assemble/designer-win.xml"&gt;assembly descriptor&lt;/a&gt;, you then need to say that you want to unpack this dependency into your assembly. As Tycho often packages a bit to much into the zips, you can also take this opportunity to remove a few contents that you do not want in your final distribution:&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;dependencySets&amp;gt;&lt;br /&gt;  &amp;lt;dependencySet&amp;gt;&lt;br /&gt;    &amp;lt;useStrictFiltering&amp;gt;true&amp;lt;/useStrictFiltering&amp;gt;&lt;br /&gt;    &amp;lt;useProjectArtifact&amp;gt;false&amp;lt;/useProjectArtifact&amp;gt;&lt;br /&gt;    &amp;lt;useTransitiveDependencies&amp;gt;false&amp;lt;/useTransitiveDependencies&amp;gt;&lt;br /&gt;    &amp;lt;outputDirectory&amp;gt;/&amp;lt;/outputDirectory&amp;gt;&lt;br /&gt;    &amp;lt;unpack&amp;gt;true&amp;lt;/unpack&amp;gt;&lt;br /&gt;    &amp;lt;unpackOptions&amp;gt;&lt;br /&gt;      &amp;lt;excludes&amp;gt;&lt;br /&gt;        &amp;lt;exclude&amp;gt;**/org.eclipse.platform.doc*.jar&amp;lt;/exclude&amp;gt;&lt;br /&gt;        &amp;lt;exclude&amp;gt;**/org.eclipse.jdt.doc*.jar&amp;lt;/exclude&amp;gt;&lt;br /&gt;      &amp;lt;/excludes&amp;gt;&lt;br /&gt;    &amp;lt;/unpackOptions&amp;gt;      &lt;br /&gt;    &amp;lt;includes&amp;gt;&lt;br /&gt;      &amp;lt;include&amp;gt;*:org.openhab.designer.product:*:win32.win32.x86&amp;lt;/include&amp;gt;&lt;br /&gt;    &amp;lt;/includes&amp;gt;&lt;br /&gt;  &amp;lt;/dependencySet&amp;gt;&lt;br /&gt;&amp;lt;/dependencySets&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;Note the reference to include (only) the dependency to the zip for the Windows platform; this is necessary as you might have many dependencies for different platforms defined in your assembly pom.xml. This include tag makes sure that this assembly descriptor picks up the right dependency (you can have other assembly descriptors for other platforms in the same assembly project).&lt;br /&gt;&lt;br /&gt;This solution might not be the most elegant, especially if you are building packages for many different platforms (you need a separate assembly descriptor for each). But it works for me and I thought it could be helpful to others as well. If anybody knows a smarter solution or has a suggestion how to improve mine, I'll be more than happy to listen :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5335810078566775677-2872964441148961003?l=kaikreuzer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaikreuzer.blogspot.com/feeds/2872964441148961003/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5335810078566775677&amp;postID=2872964441148961003' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/2872964441148961003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/2872964441148961003'/><link rel='alternate' type='text/html' href='http://kaikreuzer.blogspot.com/2010/12/building-p2-enabled-products-with-tycho.html' title='Building p2-enabled products with Tycho'/><author><name>Kai Kreuzer</name><uri>http://www.blogger.com/profile/14948351445882697259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-BHZHlfi45dg/Tvn3WfSkNEI/AAAAAAAAA2M/5SvSUKYUMCk/s1600/kaikreuzer.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5335810078566775677.post-1929478738398446680</id><published>2010-11-29T18:22:00.000+01:00</published><updated>2010-11-29T18:22:22.431+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openhab'/><title type='text'>Binary builds for openHAB available!</title><content type='html'>As promised during my talks at the &lt;a href="http://www.eclipsecon.org/summiteurope2010/"&gt;Eclipse Summit Europe&lt;/a&gt; and the &lt;a href="http://germany.osgiusers.org/Main/OSGiUFGTreffen2010"&gt;OSGi Users' Forum Germany&lt;/a&gt;, I have finally fully automated the build of openHAB with Maven3/Tycho and uploaded the result to the openHAB homepage.&lt;br /&gt;You will find there a platform-independent runtime zip that should work out of the box on Windows, Linux and Mac. This is all you need to get started. If you prefer IDE support for the configuration and rule files, get the openHAB designer zip file as well.&lt;br /&gt;Besides these components, there are also optional bundles available in the download section, which you can add to your runtime if required for your setup. For all of this, simply follow these&amp;nbsp;&lt;a href="https://code.google.com/p/openhab/wiki/Installation"&gt;simple installation instructions&lt;/a&gt;.&lt;br /&gt;Please excuse that the documentation about the configuration files, formats and options is still very limited - please visit the discussion group if you are in any doubt of what you need to do. I'll take care to update the documentation on the website subsequently.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5335810078566775677-1929478738398446680?l=kaikreuzer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaikreuzer.blogspot.com/feeds/1929478738398446680/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5335810078566775677&amp;postID=1929478738398446680' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/1929478738398446680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/1929478738398446680'/><link rel='alternate' type='text/html' href='http://kaikreuzer.blogspot.com/2010/11/binary-builds-for-openhab-available.html' title='Binary builds for openHAB available!'/><author><name>Kai Kreuzer</name><uri>http://www.blogger.com/profile/14948351445882697259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-BHZHlfi45dg/Tvn3WfSkNEI/AAAAAAAAA2M/5SvSUKYUMCk/s1600/kaikreuzer.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5335810078566775677.post-425101140014040731</id><published>2010-07-27T18:56:00.002+02:00</published><updated>2010-07-27T19:00:36.546+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openhab'/><title type='text'>openHAB @ Eclipse DemoCamp in Darmstadt</title><content type='html'>&lt;p&gt;I had the pleasure to present my &lt;a href="http://www.openhab.org/"&gt;openHAB project&lt;/a&gt; at the &lt;a href="http://wiki.eclipse.org/Eclipse_DemoCamps_Helios_2010/Darmstadt"&gt;Eclipse Helios DemoCamp in Darmstadt&lt;/a&gt; on July 14, 2010. First of all, a big "thank you!" to Jochen Hiller and Marcel Bruch who have organized this great event and gave me the opportunity to do a short demo.&lt;/p&gt;&lt;p&gt;Altough most of my presentation was a live demo, I also had some slides that I have now &lt;a href="http://slidesharemailer.com/s/pzPAFPATTu-cMbgWoqCsHQ/h1"&gt;made available&lt;/a&gt; on SlideShare for anyone who is interested.&lt;/p&gt;&lt;br /&gt;&lt;div id="__ss_4843693" style="width: 425px;"&gt;&lt;object height="355" id="__sse4843693" width="425"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=eclipsedemocamp-openhab-100726133608-phpapp01&amp;stripped_title=openhab-eclipse-democamp-darmstadt" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse4843693" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=eclipsedemocamp-openhab-100726133608-phpapp01&amp;stripped_title=openhab-eclipse-democamp-darmstadt" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5335810078566775677-425101140014040731?l=kaikreuzer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaikreuzer.blogspot.com/feeds/425101140014040731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5335810078566775677&amp;postID=425101140014040731' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/425101140014040731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/425101140014040731'/><link rel='alternate' type='text/html' href='http://kaikreuzer.blogspot.com/2010/07/openhab-eclipse-democamp-in-darmstadt.html' title='openHAB @ Eclipse DemoCamp in Darmstadt'/><author><name>Kai Kreuzer</name><uri>http://www.blogger.com/profile/14948351445882697259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-BHZHlfi45dg/Tvn3WfSkNEI/AAAAAAAAA2M/5SvSUKYUMCk/s1600/kaikreuzer.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5335810078566775677.post-7492699426205034193</id><published>2010-04-09T12:24:00.002+02:00</published><updated>2010-04-09T12:33:18.901+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='p2'/><category scheme='http://www.blogger.com/atom/ns#' term='OSGi'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='tycho'/><category scheme='http://www.blogger.com/atom/ns#' term='Maven'/><title type='text'>Tycho Entering the Eclipse Space</title><content type='html'>Almost two years have passed since &lt;a href="http://kaikreuzer.blogspot.com/2008/04/its-all-about-dependencies.html"&gt;my blog post&lt;/a&gt; about the the discrepancy of OSGi/p2 on the one side and Maven on the other. At that time I was pessimistic that the two worlds would ever come together and the creation of the B3 project even reinforced that impression.&lt;br /&gt;&lt;br /&gt;Nonetheless I followed Sonatypes efforts on the Tycho front during the last year, which looked very promising. It actually already works so well that I recently changed the build of &lt;a href="http://openhab.org/"&gt;openHAB&lt;/a&gt; from Maven2/PaxConstruct to Maven3/Tycho - it's really cool (a blog post with details will follow soon).&lt;br /&gt;&lt;br /&gt;Seeing that Chris Aniszczyk has now also embraced &lt;a href="http://aniszczyk.org/2010/01/25/egit-and-jgit-builds-available/"&gt;Tycho for the JGit/EGit builds&lt;/a&gt; is a clear sign that Tycho (and thus Maven) is slowly being picked up in the Eclipse space.&lt;br /&gt;&lt;br /&gt;And the best news: Tycho has just been &lt;a href="http://www.eclipse.org/proposals/tycho/"&gt;proposed as an Eclipse project&lt;/a&gt;! As the proposal states, it "competes with these [Buckminster, B3, PDE Build and Athena] projects". But seeing its current stability, its ease-of-use and all its possible synergies with the existing Maven tooling, I am pretty sure that it will win the race for being the preferred future build infrastructure for Eclipse/OSGi projects.&lt;br /&gt;&lt;br /&gt;Kudos to Sonatype, who really put a lot of effort into this and who has torn down the barriers between the two worlds!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5335810078566775677-7492699426205034193?l=kaikreuzer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaikreuzer.blogspot.com/feeds/7492699426205034193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5335810078566775677&amp;postID=7492699426205034193' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/7492699426205034193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/7492699426205034193'/><link rel='alternate' type='text/html' href='http://kaikreuzer.blogspot.com/2010/04/tycho-entering-eclipse-space.html' title='Tycho Entering the Eclipse Space'/><author><name>Kai Kreuzer</name><uri>http://www.blogger.com/profile/14948351445882697259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-BHZHlfi45dg/Tvn3WfSkNEI/AAAAAAAAA2M/5SvSUKYUMCk/s1600/kaikreuzer.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5335810078566775677.post-962057598602529872</id><published>2010-03-09T19:32:00.002+01:00</published><updated>2010-03-09T19:36:16.100+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openhab'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='versioning'/><title type='text'>Choosing a Versioning Control System</title><content type='html'>When initiating an Open Source project like &lt;a href="http://code.google.com/p/openhab/"&gt;openHAB&lt;/a&gt;, one of the many questions you have to answer before you start is: &lt;i&gt;What VCS should I use?&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;In the beginning I did not really realize that this is an important question. Being a professional Java developer building commercial products with Eclipse, the use of Subversion with Subversive as an IDE integration just seemed natural to me and not worth any further considerations.&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;It was more by chance that I noticed &lt;a href="http://www.openremote.org/pages/viewpage.action?pageId=9601100"&gt;questions about using git&lt;/a&gt; on other OS projects that were using SVN as well as the activities in the Eclipse community around &lt;a href="http://www.eclipse.org/egit/"&gt;(E)git&lt;/a&gt;. When Ekkehard Gentz started &lt;a href="http://ekkescorner.wordpress.com/blog-series/git-mercurial/"&gt;a blog series about DVCS&lt;/a&gt;&amp;nbsp;and Eclipse, I eventually decided that I needed to have a closer look.&lt;br /&gt;&lt;br /&gt;After having grasped the great advantages of a DVCS, especially for Open Source projects, I then had to decide for one - to keep things simply, I only looked at the most popular ones, Git and Mercurial.&lt;br /&gt;&lt;br /&gt;As I am using OSGi and Eclipse, there were quite some strong arguments for Git:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;With JGit there is a pure Java implementation available&lt;/li&gt;&lt;li&gt;EGit is now under the Eclipse umbrella and actively developed by many gifted Eclipse committers.&lt;/li&gt;&lt;li&gt;It seems that Git is more hyped than Mercurial (at least that's my personal impression).&lt;/li&gt;&lt;li&gt;Git seems to be more powerful and flexible&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Hence I installed Git and EGit and gave it a try. After working with it a bit, I noticed that I didn't really feel comfortable with it. It is difficult to say why, but I made out the following reasons:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;I am a Mac and Windows user and Git somehow made me feel that its home is Linux. Although there is now a Windows version with&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;a href="http://code.google.com/p/msysgit/"&gt;msysgit&lt;/a&gt;, cygwin used to be the official way of using Git on Windows.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Coming from SVN, the Git vocabulary can be confusing - e.g. something like a svn revert is not done with &lt;a href="http://www.kernel.org/pub/software/scm/git/docs/git-revert.html"&gt;git-revert&lt;/a&gt;, but with &lt;a href="http://www.kernel.org/pub/software/scm/git/docs/git-reset.html"&gt;git-reset&lt;/a&gt;. Together with the abundance of commands and functionality of Git, this can easily make people feel lost if it's their first time with a distributed VCS.&lt;/li&gt;&lt;li&gt;The standard way for pushing and polling with Git is ssh - but this makes things much more difficult to use, if you are &lt;a href="http://groups.google.com/group/github/browse_thread/thread/de6c27b1a2014b27/c4299f941032d17a?pli=1"&gt;behind a firewall&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;EGit is still an incubation project and there's still some way to go until it reaches a level like Subversive: There is no support for the "Team Synchronization" view, which I use a lot. It also had some trouble with deletion and renaming of files. Last but not least - it is lacking icons on the context menus. Ha, I know,&amp;nbsp;this is only cosmetics and should not be relevant at all; but still it leaves the impression of being a version to early to be used.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Almost all of the above items felt better on Mercurial (and HgEclipse), so I finally decided to go for it. I guess on the long run, I might reconsider this, once EGit has matured, but for the time being I am happy with this situation. And it is very reassuring that there are plenty of tools around to convert a Mercurial repo into a Git repo and vice versa - so no decision needs to be taken for eternity!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now I am only waiting for Ekke to finish his series to eventually see to what conclusion he came and which DVCS is the one of his choice :-)&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5335810078566775677-962057598602529872?l=kaikreuzer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaikreuzer.blogspot.com/feeds/962057598602529872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5335810078566775677&amp;postID=962057598602529872' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/962057598602529872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/962057598602529872'/><link rel='alternate' type='text/html' href='http://kaikreuzer.blogspot.com/2010/03/choosing-versioning-control-system.html' title='Choosing a Versioning Control System'/><author><name>Kai Kreuzer</name><uri>http://www.blogger.com/profile/14948351445882697259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-BHZHlfi45dg/Tvn3WfSkNEI/AAAAAAAAA2M/5SvSUKYUMCk/s1600/kaikreuzer.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5335810078566775677.post-6462585497670449931</id><published>2010-02-23T18:44:00.001+01:00</published><updated>2010-02-25T10:15:02.522+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openhab'/><category scheme='http://www.blogger.com/atom/ns#' term='openremote'/><title type='text'>Positioning openHAB</title><content type='html'>As already mentioned &lt;a href="http://kaikreuzer.blogspot.com/2009/11/reinventing-wheel.html"&gt;before&lt;/a&gt;, I have started the openHAB project not because nothing on the market could have provided me the desired functionality, but because I want to build something robust, stable and open with a modern technology stack.&lt;br /&gt;&lt;br /&gt;If I were a pure user, I would still stick with &lt;a href="http://misterhouse.sourceforge.net/"&gt;Misterhouse&lt;/a&gt; as this has matured over the years so much that they are discussing on their mailing list already whether it's&lt;a href="https://sourceforge.net/mailarchive/message.php?msg_name=6.2.5.6.2.20100220225417.01f3fb98%40sinister.net"&gt; better to have a deer head or a magic mirror&lt;/a&gt; talking to you.&lt;br /&gt;&lt;br /&gt;Well, I am not, and so I take the challenge to build something equally useful on top of a JVM. After &lt;a href="https://www.blogger.com/comment.g?blogID=5335810078566775677&amp;amp;postID=7083932809703448482"&gt;Claude's comment&lt;/a&gt; I very much considered contributing to the &lt;a href="http://www.openremote.org/display/HOME/OpenRemote"&gt;openRemote project&lt;/a&gt;, tried to dive into the details of their code base and involved myself in technical discussion on their forum. But at the end, I decided against it, because all the main things that I would like to see covered are still on their todo list. That wouldn't be bad at all as it could have given me a good opportunity to contribute the missing things, but unfortunately - at least that is my impression - it would mean more or less a complete rewrite of openRemote...&lt;br /&gt;Just to give you a few examples of what openRemote IMHO lacks:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;No rule engine support yet&lt;/li&gt;&lt;li&gt;it has a "one-way" protocol, i.e. the client (e.g. iPhone App) is stateless -&amp;gt; it cannot show if lights are on or off, it cannot display values (e.g. temperatures), etc. Version 2.0 will bring a server push, but I am not sure when the client will support this?&lt;/li&gt;&lt;li&gt;No states are cached on the server which is definitely a problem for rules and stateful clients&lt;/li&gt;&lt;li&gt;No modularization / extension concept yet, it's one brick (the BOSS)&lt;/li&gt;&lt;li&gt;No easy protocol to implement for new extensions, see &lt;a href="http://www.openremote.org/display/forums/DIY+arduino+home+automation.?focusedCommentId=9601113#comment-9601113"&gt;discussion about arduino support&lt;/a&gt;&lt;/li&gt;&lt;li&gt;No simple way to build from latest sources, so people are &lt;a href="http://www.openremote.org/pages/viewpage.action?pageId=9601128"&gt;desperately waiting&lt;/a&gt; for an official build&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;I don't say that any of this is bad, I just want to highlight that their architectural approach obviously followed other priorities. I can imagine that openRemote and openHAB can cross-fertilize each other and maybe there is someday a possibility to integrate or even merge these projects - time will tell :-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5335810078566775677-6462585497670449931?l=kaikreuzer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaikreuzer.blogspot.com/feeds/6462585497670449931/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5335810078566775677&amp;postID=6462585497670449931' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/6462585497670449931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/6462585497670449931'/><link rel='alternate' type='text/html' href='http://kaikreuzer.blogspot.com/2010/02/positioning-openhab.html' title='Positioning openHAB'/><author><name>Kai Kreuzer</name><uri>http://www.blogger.com/profile/14948351445882697259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-BHZHlfi45dg/Tvn3WfSkNEI/AAAAAAAAA2M/5SvSUKYUMCk/s1600/kaikreuzer.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5335810078566775677.post-4650468355057784503</id><published>2010-02-21T22:11:00.001+01:00</published><updated>2010-02-21T22:12:27.360+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openhab'/><title type='text'>openHAB is out!</title><content type='html'>It took quite some preparation, but finally I can anounce that I have created the envisioned Open Source project for my (and others!) home automation needs!&lt;br /&gt;&lt;br /&gt;In order to avoid any brandmark violations, I have reconsidered the name of the project, so that it is now called the &lt;span style="font-size: small;"&gt;&lt;b style="font-family: Verdana,sans-serif;"&gt;open Home Automation Bus (openHAB)&lt;/b&gt;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;You will find the project hosted at Google Code at &lt;a href="http://openhab.org/"&gt;http://openhab.org&lt;/a&gt;, even an initial codebase is already available. Although it's not doing much at all yet, it should give interested persons an idea of its architecture and show that things are moving and the project is on its way.&lt;br /&gt;&lt;br /&gt;I will soon post further background information about the decisions taken, so stay tuned :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5335810078566775677-4650468355057784503?l=kaikreuzer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaikreuzer.blogspot.com/feeds/4650468355057784503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5335810078566775677&amp;postID=4650468355057784503' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/4650468355057784503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/4650468355057784503'/><link rel='alternate' type='text/html' href='http://kaikreuzer.blogspot.com/2010/02/openhab-is-out.html' title='openHAB is out!'/><author><name>Kai Kreuzer</name><uri>http://www.blogger.com/profile/14948351445882697259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-BHZHlfi45dg/Tvn3WfSkNEI/AAAAAAAAA2M/5SvSUKYUMCk/s1600/kaikreuzer.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5335810078566775677.post-7083932809703448482</id><published>2009-11-22T00:38:00.001+01:00</published><updated>2009-11-22T00:40:57.881+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='misterhouse'/><category scheme='http://www.blogger.com/atom/ns#' term='knx'/><title type='text'>Reinventing the Wheel</title><content type='html'>As announced, I would like to tell you some details about my latest private project: SmartKNX!&lt;br /&gt;I have spent quite some time in the past months with the Open Source project &lt;a href="http://misterhouse.sourceforge.net/"&gt;MisterHouse&lt;/a&gt; - a software for home automation. Initially, I have started using it, then I also engaged myself in the community and contributed some new features and bug fixes. Misterhouse really offers a lot functionality and it has quite a low learning curve for newbies. Especially, the iPhone interface is attractive, which has been mainly done by members of the german KNX community. See these screenshots to give you a rough idea, how it looks like:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_gZAEuWP8Ifc/Swh6W5s8ewI/AAAAAAAAAiQ/5rqsmfS0Fmo/s1600/IMG_0028.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_gZAEuWP8Ifc/Swh6W5s8ewI/AAAAAAAAAiQ/5rqsmfS0Fmo/s200/IMG_0028.jpg" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_gZAEuWP8Ifc/Swh6cdZZCfI/AAAAAAAAAiY/vT1Yy9eP0Ko/s1600/IMG_0029.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_gZAEuWP8Ifc/Swh6cdZZCfI/AAAAAAAAAiY/vT1Yy9eP0Ko/s200/IMG_0029.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;So although this all looks quite fancy and modern, being a professional software developer, I still do not feel completely satisfied with it. There are multiple reasons for it:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;MisterHouse more or less only consists out of a bunch of Perl scripts; the core dates from more than 10 years ago. Many parts are hard to read as the software is not modular and even things like the HTTP server are coded in Perl with a scary if-then-elsif-elsif-elsif... block for doing all request processing.&lt;/li&gt;&lt;li&gt;The standard web interface also dates from the 90s and thus is not really usable anymore. The iPhone interface has been plugged on-top, but is not really well integrated. Future additions like ajax-enabled features might become very awkward due to the reason above, the simple embedded HTTP server.&lt;/li&gt;&lt;li&gt;I do not want to think of what security wholes might be in these scripts, there has definitely never been any focus on securing the interfaces.&lt;/li&gt;&lt;li&gt;There is not really good IDE support for the whole thing; my tool of choice for the moment is 'vi', but as I am not 100% fluent in Perl, the regular expressions and the MisterHouse API, it is often a long trial&amp;amp;error session before things work the way I want. &lt;a href="http://www.epic-ide.org/"&gt;Eclipse Perl integration&lt;/a&gt; has helped me a bit now, but still it is far from being as nice as all the goodies of JDT.&lt;/li&gt;&lt;li&gt;Debugging is a nightmare for me as well; I can put some log messages here and there, but often it only helps to do educated guesses what might be wrong. This is tedious and not the way one expects software development today.&lt;/li&gt;&lt;/ul&gt;Taking all the issues above, I asked myself if this is really the framework that I want to work with for the next decades (well, a home automation project is really for a life-time, isn't it?). And I wondered what my sons will tell me if they grow up and see what I did there (and I have to ask them to learn Perl in order to maintain our house)...? So do not get me wrong - I really appreciate what has been done with MisterHouse and it is truely amazing. I just feel that time has moved on and that after more than 10 years it could be time for a "next generation" implementation.&lt;br /&gt;&lt;br /&gt;And this is what I would like to do: A complete rewrite of MisterHouse on basis of the very latest technologies - the temporary project name is SmartKNX, which also shows the focus on &lt;a href="http://www.knx.de/"&gt;KNX&lt;/a&gt; rather than &lt;a href="http://en.wikipedia.org/wiki/X10_%28industry_standard%29"&gt;X10&lt;/a&gt; (what MisterHouse is mainly focusing at). But of course, SmartKNX should be so modular and extensible that any other domostics standard can be supported as well. As technologies, I have things like Java, OSGi, XText, Maven, Scala etc. in mind... More details will follow - stay tuned!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5335810078566775677-7083932809703448482?l=kaikreuzer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaikreuzer.blogspot.com/feeds/7083932809703448482/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5335810078566775677&amp;postID=7083932809703448482' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/7083932809703448482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/7083932809703448482'/><link rel='alternate' type='text/html' href='http://kaikreuzer.blogspot.com/2009/11/reinventing-wheel.html' title='Reinventing the Wheel'/><author><name>Kai Kreuzer</name><uri>http://www.blogger.com/profile/14948351445882697259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-BHZHlfi45dg/Tvn3WfSkNEI/AAAAAAAAA2M/5SvSUKYUMCk/s1600/kaikreuzer.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_gZAEuWP8Ifc/Swh6W5s8ewI/AAAAAAAAAiQ/5rqsmfS0Fmo/s72-c/IMG_0028.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5335810078566775677.post-4755151551355393813</id><published>2009-11-20T20:30:00.007+01:00</published><updated>2009-11-20T22:07:26.356+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='demo camp'/><category scheme='http://www.blogger.com/atom/ns#' term='ese2009'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>Accumulated Distraction...</title><content type='html'>It's a long long time since my last post, but I swear that I haven't been lazy or without impulses. Usually, I like to blog while being at conferences and it is not long ago that I attended the last one: The &lt;a href="http://www.eclipsecon.org/summiteurope2009/"&gt;Eclipse Summit Europe 2009&lt;/a&gt;. As usual, it was a great event with many interesting people and lively discussions.&lt;br /&gt;&lt;br /&gt;But a few things detered me from directly blogging about my impressions this time. For example, the ESE2009 organizers did not provide any public Wifi access to the attendees this time. I am not sure whether this was because the Wifi used to be heavily overloaded in the past years or if they just wanted to draw attention to the talks; if latter, this might indeed have worked out as I have seen much fewer people typing on their Macs throughout all sessions... Another reason for not blogging at this occasion was that I was invited to an X-Box soccer competition by the Itemis guys until late at night; these chaps seem to always be prepared for everything ;-) Last but not least, I didn't find much time to blog on the last conference day as I was called to hospital for the birth of my second son - well, I hope that at least this can be accepted as an excuse.&lt;br /&gt;&lt;br /&gt;Despite all these distractions, I have been working quite eagerly on a new private project that I will very soon blog about; it is quite fascinating and if all goes well, I might present it on a future ESE - let's touch wood!&lt;br /&gt;&lt;br /&gt;One last remark: As I missed a few sessions at ESE due to my early departure, I am taking the opportunity to join the &lt;a href="http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Frankfurt"&gt;Eclipse Demo Camp in Frankfurt&lt;/a&gt; next Thursday. There are already more than 60 people registered for it, which is quite astonishing. So if you are around and don't have any other plans - join me there!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5335810078566775677-4755151551355393813?l=kaikreuzer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaikreuzer.blogspot.com/feeds/4755151551355393813/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5335810078566775677&amp;postID=4755151551355393813' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/4755151551355393813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/4755151551355393813'/><link rel='alternate' type='text/html' href='http://kaikreuzer.blogspot.com/2009/11/accumulated-distraction.html' title='Accumulated Distraction...'/><author><name>Kai Kreuzer</name><uri>http://www.blogger.com/profile/14948351445882697259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-BHZHlfi45dg/Tvn3WfSkNEI/AAAAAAAAA2M/5SvSUKYUMCk/s1600/kaikreuzer.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5335810078566775677.post-5108588242021087222</id><published>2008-04-27T15:57:00.004+02:00</published><updated>2010-02-25T10:09:48.676+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='Spring'/><title type='text'>It's All About Dependencies</title><content type='html'>Trying not to reinvent the wheel over and over again in software development, reusability has quickly become a strongly desired virtue. Object-orientation was once meant to deal with this, but it soon became obvious that objects are a much too small unit to be really reusable across projects or companies. So in today's world we ended up with modules all over the place - some call them libraries, plugins or bundles, but most often these are simple jar files; in general a module is just a bunch of classes and resources, sometimes enriched with some meta-data.&lt;br /&gt;&lt;br /&gt;As it is with objects, modules make only sense if there are dependencies between them. For objects, these dependencies were often hard-coded, but in the age of dependency injection they form rather meta-data that comes aside the classes (e.g. in a Spring application context xml).&lt;br /&gt;&lt;br /&gt;For modules, two main solutions have evolved over the past years to describe dependencies: Maven pom-files and OSGi manifest-files. Both have quite a lot things in common: They specify names and versions of modules and list their mandatory or optional dependencies. Of course there are many details where the one offers more and other things than the other, but in general, it is a very similar concept.&lt;br /&gt;&lt;br /&gt;The difference between Maven and OSGi is their use case: Maven targets the provisioning, build and distribution of modules, while OSGi is targeted at the development and - more importantly -&lt;br /&gt;the (dynamic) runtime of applications. Both are well established in their domain and have a big community of users - but slowly people realize that they actually want to have them both at the same time. On the one hand, OSGi is introduced into "classical" applications by &lt;a href="http://springframework.org/osgi"&gt;Spring Dynamic Modules&lt;/a&gt; where the build process is best left to Maven. The OSGi crowd on the other hand has noticed that it is a pain to collect all required dependencies and that there actually should be something like a repository infrastructure to easily retrieve and distribute modules.&lt;br /&gt;&lt;br /&gt;The OSGi Alliance has therefore set up the &lt;a href="http://www.osgi.org/Repository/HomePage"&gt;OSGi Bundle Repository (OBR)&lt;/a&gt; - which looks very similar to Maven repositories, I just doubt that it will be equally successful. The Eclipse Foundation, one of the foremost adopters of OSGi, went one step further and introduced &lt;a href="http://wiki.eclipse.org/Equinox_p2"&gt;p2&lt;/a&gt;, the new provisioning system that will come with Eclipse 3.4 aka Ganymede. p2 replaces the Eclipse Update Manager, brings a new infrastructure for bundle repositories and supports to dynamically install and manage bundles in a running application. In the next phase (after the release of Ganymede), it is planned to extend p2 towards the build process as well.&lt;br /&gt;&lt;br /&gt;Although competition is usually very welcome, it means some dilemma for the average configuration manager: Building dynamic applications does not mean that one can decide for the one option or another, but both approaches (Maven and OSGi) need to be combined. There are multiple tools and plugins available, which help converting Maven pom-files into OSGi manifests or vice versa or which allow calling the plugin build from Maven or to call Maven out of Eclipse.&lt;br /&gt;&lt;br /&gt;The problem is that with generation one descriptor file out of the other, some information is usually lost or at least the comfortable tools cannot be used that exist to maintain the files. So the right decision very much depends on your application: If you already use Maven for continuous integration, the pom-files will be the source of everything for you and you can introduce OSGi by generating manifest files from these. If you instead work on an Eclipse RCP application and are used to all the comfort that Eclipse offers you for editing the manifest or the plugin.xml, nobody will be able to convince you that you should instead manually put your changes in a pom-file and generate the rest again.&lt;br /&gt;&lt;br /&gt;Although p2 is a cool feature, it might make things worse, at least in the beginning: For OSGi-centric applications, its use will be very desirable, while not offering all flexibility of Maven. So if Maven is already in place, it is unlikely that it gets replaced by p2 soon. Instead there will be adapters, mapping Maven repositories or OBRs to p2 and having Maven builds pushing build artifacts back to them.&lt;br /&gt;&lt;br /&gt;I would not object to using different tools, if the integration would be smooth - but experience shows that both worlds do not really pay much attention to each other and leave the integration part out of their scope - so usually the integration is done by some annoyed people who actually want to use things productively and have to help themselves to sort out things. Unfortunately these kind of integrations are often only pursued until there is a version that is doing somewhat the expected thing - and then it is left to the depths of Sourceforge. Maybe I am too pessimistic, but the Equinox team already stated that they are not interested in any direct support of Maven, so the way ahead might be bumpy...&lt;br /&gt;&lt;br /&gt;Still, at some point in the far future when Spring Dynamic Modules have become a de-facto standard and p2 is stable and fully supports the build process, I am confident that building, integrating and deploying applications can be real fun :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5335810078566775677-5108588242021087222?l=kaikreuzer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaikreuzer.blogspot.com/feeds/5108588242021087222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5335810078566775677&amp;postID=5108588242021087222' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/5108588242021087222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/5108588242021087222'/><link rel='alternate' type='text/html' href='http://kaikreuzer.blogspot.com/2008/04/its-all-about-dependencies.html' title='It&apos;s All About Dependencies'/><author><name>Kai Kreuzer</name><uri>http://www.blogger.com/profile/14948351445882697259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-BHZHlfi45dg/Tvn3WfSkNEI/AAAAAAAAA2M/5SvSUKYUMCk/s1600/kaikreuzer.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5335810078566775677.post-4051463571999409724</id><published>2008-04-26T13:17:00.003+02:00</published><updated>2010-02-25T10:10:59.870+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>Some Goodies...</title><content type='html'>During the JAX'08, I learned about some helpful tools - some being older, some newer, but for Eclipse RCP programmers or Java programmers in general maybe helpful. So here's a short bullet list of what I came across:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The &lt;a href="http://www.eclipse.org/nebula/"&gt;Nebula Project&lt;/a&gt;: Pretty cool widgets to include into your Eclipse RCP applications. If you want to have something that does not look all normal, but with some wow-effect, that's the place for you to go.&lt;/li&gt;&lt;li&gt;Many people complain that RCP applications look to similar to the Eclipse IDE (and therefore too technical and not fancy enough), so here's another possibility to make something special out of your RCP app: Use Eclipse presentations! Kai Tödter provides an easy example how to do this with his &lt;a href="http://max-server.myftp.org/trac/mp3m"&gt;MP3 Manager&lt;/a&gt;. If you want to see how far you can go with these presentations, have a look at &lt;a href="http://blog.agileware.net/images/hannover.jpg"&gt;Lotus Notes Hannover&lt;/a&gt; - but make sure to employ some full-time resources just for developing your RCP skin...&lt;/li&gt;&lt;li&gt; The &lt;a href="http://www.eclipse.org/pde/incubator/spy/"&gt;Plugin Spy&lt;/a&gt; will come as a feature of Ganymede (Eclipse 3.4) and really makes life much easier to find out what you are looking at (which class, extension, id etc.).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The &lt;a href="http://wiki.eclipse.org/Core_Tools"&gt;Eclipse Core Tools&lt;/a&gt; can be very useful for debugging - they give you some insight into places that are otherwise hidden from your view.&lt;/li&gt;&lt;li&gt;Everybody who has problems with memory leaks in Java applications will very much enjoy the new contribution from SAP, the &lt;a href="http://www.eclipse.org/mat/"&gt;Memory Analyzer&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Something already quite old, but definitely useful, is &lt;a href="http://java.sun.com/j2se/1.5.0/docs/guide/deployment/deployment-guide/pack200.html"&gt;Pack200&lt;/a&gt;, a packager that is specialized on shrinking Jar files - which works very efficiently. Although jars are usually already zipped, their size can be reduced immensely by Pack200. This is useful for distribution, but you should be aware that you need to un-pack200 your jars before they can be read by the JVM. The new Eclipse provisioning system p2 will make use of Pack200, that's how I came across it. Apologies if you might now this tool since years already...&lt;/li&gt;&lt;li&gt;If you want to "patronize" your developers a bit more, you can use AspectJ to enforce your architectural rules that you define. A nice starting point to do so is the &lt;a href="http://patterntesting.sourceforge.net/05/whatis.html"&gt;PatternTesting project&lt;/a&gt;, which might give you an idea of how powerful AspectJ is for this purpose.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5335810078566775677-4051463571999409724?l=kaikreuzer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaikreuzer.blogspot.com/feeds/4051463571999409724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5335810078566775677&amp;postID=4051463571999409724' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/4051463571999409724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/4051463571999409724'/><link rel='alternate' type='text/html' href='http://kaikreuzer.blogspot.com/2008/04/some-goodies.html' title='Some Goodies...'/><author><name>Kai Kreuzer</name><uri>http://www.blogger.com/profile/14948351445882697259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-BHZHlfi45dg/Tvn3WfSkNEI/AAAAAAAAA2M/5SvSUKYUMCk/s1600/kaikreuzer.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5335810078566775677.post-3434648122724710618</id><published>2008-04-24T17:35:00.002+02:00</published><updated>2008-04-24T18:57:50.984+02:00</updated><title type='text'>Concurrency in the Java World</title><content type='html'>No this post is not about multi-core cpus or about making your code more thread-safe. It is instead about the latest trends in the Java universe. As Ted Neward says, Java was seen for a long time as the universal (God given) programming language that can and should be used for each and every (software) problem in the world. This ended up in a blown up JDK, an abundance of core APIs and an always busy JCP. Furthermore, Java has become an established programming language. As Rod Johnson notes "Nobody wants to date a Java developer." Java is now mainstream and not sexy anymore.&lt;br /&gt;&lt;br /&gt;Out of these two reasons, one could see a clear trend away from the "classical" Java.&lt;br /&gt;&lt;br /&gt;The very first step in this direction was IMHO already the rising of Eclipse - the chosen name already shows that it was intended to break the Sun monopoly in the Java world. All of a sudden, there was a "parallel" UI-widget-framework available than AWT/Swing that is an integral part of every JRE.&lt;br /&gt;&lt;br /&gt;The second step was an alternative to J2EE: Spring, as I have already mentioned in my last post.&lt;br /&gt;&lt;br /&gt;Then there followed the hype of dynamic languages, first of all Ruby with the web app development extension Rails, which many Java (web) developers turned to. The ones who didn't want to miss everything about the Java platform, chose the "light" version of turning Java the back and got on with JRuby or Groovy.&lt;br /&gt;&lt;br /&gt;It wasn't only dynamic languages that prospered on the JVM, but there were also new statically typed languages, such as Scala showing up and getting lots of attention and interest.&lt;br /&gt;&lt;br /&gt;The world was just seeking for something new and sexy again - the only common denominator was the JVM as everyone agreed on its great benefits of its write-once-run-anywhere concept.&lt;br /&gt;&lt;br /&gt;But then came Google around and used Java just the other way round: GWT and Android both let the developer use Java syntax, but their source code is compiled into something very different than Java bytecode: In the former case its Javascript, in the latter its classfiles for the Dalvik VM - an alternative VM with its own compiler.&lt;br /&gt;&lt;br /&gt;So has Suns battle to keep the Java community together failed? Despite of all of the above, I tend to say no. Obviously, the idea of an omnipotent programming language must be given up, but not because Java is bad, but because there simply is no one-size-fits-all in programming. In contrast to .NET, the Java community promotes its own freedom and all the movement in the market is a clear sign that this freedom is used to drive innovation and that things will evolve.&lt;br /&gt;&lt;br /&gt;The bad news is that you cannot rest on your knowledge of the Java language - the language itself will change in the upcoming years and there might be different favourable options, depending on the environment that you are working on. So stay informed and don't forget to learn at least one new language per year, before it's too late :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5335810078566775677-3434648122724710618?l=kaikreuzer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaikreuzer.blogspot.com/feeds/3434648122724710618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5335810078566775677&amp;postID=3434648122724710618' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/3434648122724710618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/3434648122724710618'/><link rel='alternate' type='text/html' href='http://kaikreuzer.blogspot.com/2008/04/concurrency-in-java-world.html' title='Concurrency in the Java World'/><author><name>Kai Kreuzer</name><uri>http://www.blogger.com/profile/14948351445882697259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-BHZHlfi45dg/Tvn3WfSkNEI/AAAAAAAAA2M/5SvSUKYUMCk/s1600/kaikreuzer.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5335810078566775677.post-3285480169470370690</id><published>2008-04-23T11:13:00.002+02:00</published><updated>2008-04-24T13:42:31.045+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EJB'/><category scheme='http://www.blogger.com/atom/ns#' term='Spring'/><title type='text'>The Emperor's New Clothes</title><content type='html'>I have been puzzled already many times about how complicated and difficult to understand some things are done in the software development world. For example, I never really fully understood the need for fully-flegded J2EE application servers for any kind of web applications. I have seen so many cases where EJBs were hardly used at all (because of their inherent complexity and their backdraws) and there existed only a set of stateless session EJBs, of course without any distribution or clustering needs.&lt;br /&gt;&lt;br /&gt;So from this background, I very much enjoyed a session with &lt;a href="http://it-republik.de/jaxenter/jax/speaker.php?language=#3087-chan-brian"&gt;Brian Chan&lt;/a&gt;, the CEO of the OS Enterprise Portal &lt;a href="http://www.liferay.com/web/guest/home"&gt;Liferay&lt;/a&gt;, who explained why and how the migrated their application from a pure J2EE application to a Spring-based web application running on Tomcat.&lt;br /&gt;&lt;br /&gt;Brian came up with a very striking analogy: He stated that the J2EE/EJB history very much resembles the tale of the &lt;a href="http://en.wikipedia.org/wiki/The_Emperor%27s_New_Clothes"&gt;Emperor's New Clothes&lt;/a&gt;: For years, whoever wanted to build "enterprise" applications automatically set on EJBs. There was no questioning about this - instead, it used to be a perfect selling point as nobody challanged the product's architecture; what was based on EJBs was automatically considered as good and professional. Nobody dared to admit that EJBs were bloody complex at that time and did not solve the real problems - as nobody didn't want to appear as a fool. Until Rod Johnson came around and told the world in 2004 that there are indeed ways to do enterprise applications without EJBs - he introduced Spring. So Brian rightly praised Rod for having the guts to play the child, stand up and point out that the emperor was indeed naked. This was really the advent of a big change in the people's mindset about enterprise applications. It does not mean that there is no right for J2EE applications servers to exist, but that there are many cases where there are actually better (i.e. simpler, cheaper and faster) solutions.&lt;br /&gt;&lt;br /&gt;Now I am just waiting for somebody pointing out that HTML is not at all the right technology for building enterprise user interfaces...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5335810078566775677-3285480169470370690?l=kaikreuzer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaikreuzer.blogspot.com/feeds/3285480169470370690/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5335810078566775677&amp;postID=3285480169470370690' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/3285480169470370690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/3285480169470370690'/><link rel='alternate' type='text/html' href='http://kaikreuzer.blogspot.com/2008/04/emperors-new-clothes.html' title='The Emperor&apos;s New Clothes'/><author><name>Kai Kreuzer</name><uri>http://www.blogger.com/profile/14948351445882697259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-BHZHlfi45dg/Tvn3WfSkNEI/AAAAAAAAA2M/5SvSUKYUMCk/s1600/kaikreuzer.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5335810078566775677.post-3436377252038392520</id><published>2008-04-21T18:07:00.004+02:00</published><updated>2008-04-21T19:20:33.041+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='process'/><title type='text'>Keeping Process Alive</title><content type='html'>New year, new conference, new blog entries - this time I am attending the &lt;a href="http://www.jax.de"&gt;JAX'08&lt;/a&gt; and I have just an interesting opening "Agile Day" behind me. This was all about agile development and management practices and how these can be introduced into an enterprise, which has no experience with them yet.&lt;br /&gt;&lt;br /&gt;There are many agility-oriented consultants that know how to enable the transformation of a team or company towards an agile player. This is not an easy path to follow, but with enough social skills, it should be possible to get things going. It is key to success to have full support from management as well as from the team members. If any side has doubts or does not welcome any change, the transformation project might be doomed before being started.&lt;br /&gt;&lt;br /&gt;Now imagine that despite all possible obstacles the transformation was a success and your department is now following appying agile practices. The external consultant leaves and you are left on your own. What happens? For a while, it is taken as normal that after such a big organisational change there is still some inclarity about one thing or another and one tries to figure out how to fill the gaps. Usually one fills the gaps with something that one is familiar with and so this will bend the agile process a bit towards the "old" style to do things in the department. As things are not smooth yet (to really "live" agile practices, people might need several months or years) and so no real improvement can be seen and only few people will be enthusiastically support it (now that the expert as a backing is missing). New people will arrive, others will leave the company. Spin this further for a couple of months to a few years and most of your agile process will have eroded. It is likely that all you will see that is left is continuous integration - that's the one practice that is so immensely successful, that nobody wants to miss it and so its wide acceptance is almost guaranteed.&lt;br /&gt;&lt;br /&gt;But what to do to avoid the erosion of the rest of your practices?&lt;br /&gt;From what I learned there are a few key things that you need to make sure on the long run:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;In each agile team, you must have at least one change agent that actively persues the agile way and continuously drives the team to follow the practices and to improve its adoption. "Supporters" of the agile way are not sufficient - if things start to slip, the change agent must take immediate action, so he plays a very active role.&lt;/li&gt;&lt;li&gt;New team members must be fully introduced into the practices - not by provided some Wiki pages with coding conventions to follow, but with an active mentor or foster parent during the initial weeks or months.&lt;/li&gt;&lt;li&gt;You need to pay special attention to your retrospectives - these really forces the whole team to think about the process, where it is not appropriate and what can be improved. Only by these retrospectives it can be achieved that team members identify themselves with the practices and see it as something that they really own (and therefore need to care about it).&lt;/li&gt;&lt;li&gt;Progress should be made visible (e.g. in burn-down-charts) and achievements should be celebrated - each successful iteration motivates the team members and it gives confidence in the ability of the team to the team itself as well as to the management. A positive effect is also that with each iteration, future estimations will become more precisely.&lt;/li&gt;&lt;/ul&gt;If you respect all of the above points my guess is that you have a good chance that your people really pick up the agile way, live it and improve it. That's what you should be striving for.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5335810078566775677-3436377252038392520?l=kaikreuzer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaikreuzer.blogspot.com/feeds/3436377252038392520/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5335810078566775677&amp;postID=3436377252038392520' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/3436377252038392520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/3436377252038392520'/><link rel='alternate' type='text/html' href='http://kaikreuzer.blogspot.com/2008/04/keeping-process-alive.html' title='Keeping Process Alive'/><author><name>Kai Kreuzer</name><uri>http://www.blogger.com/profile/14948351445882697259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-BHZHlfi45dg/Tvn3WfSkNEI/AAAAAAAAA2M/5SvSUKYUMCk/s1600/kaikreuzer.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5335810078566775677.post-5944737958481180042</id><published>2007-10-12T09:10:00.001+02:00</published><updated>2010-02-25T10:11:19.817+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>The Eclipse Plugin Build Nightmare</title><content type='html'>A couple of weeks ago, I was still naive. Having build an Eclipse RCP application it was easy to use the PDE tools "product export" or the "Build all" of an update site project to build and distribute our application. Ok, I had to fiddle around a bit with the right dependency settings for my product definition, but it was all no rocket science.&lt;br /&gt;&lt;br /&gt;Now all that was left was to include this build in our continuous integration server. My primitive belief was that there should be a simple API access to immitate the "button click" that I usually did manually. I could not have been more wrong.&lt;br /&gt;&lt;br /&gt;I had my first doubts after it took one of our most gifted developers a couple of weeks to perform this job for our proprietary environment. Clearly I blamed our environment and could have bet that it is all so much simpler with any common CI system.&lt;br /&gt;&lt;br /&gt;It was just until this week at the &lt;a href="http://eclipsesummit.org/summiteurope2007/"&gt;Eclipse Summit Europe&lt;/a&gt; that again had to revise my opinion on things: No matter who I talked to, nobody ever found a quick and easy solution for building their plugins. There is no stable solution for Maven, the PluginBuilder does not relief from intensive maintenance and even the official Eclipse projects do not have any common ground to "build" on. What explains why you can hardly find any snapshots published to an update site...&lt;br /&gt;&lt;br /&gt;The Eclipse Foundation has already identified this as a "pain point" and apparently at least the documentation has already improved with the Europa release. Let's hope that there will be also more improvements on the tools side to make this task something that does not hinder us from being productive for weeks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5335810078566775677-5944737958481180042?l=kaikreuzer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaikreuzer.blogspot.com/feeds/5944737958481180042/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5335810078566775677&amp;postID=5944737958481180042' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/5944737958481180042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/5944737958481180042'/><link rel='alternate' type='text/html' href='http://kaikreuzer.blogspot.com/2007/10/eclipse-plugin-build-nightmare.html' title='The Eclipse Plugin Build Nightmare'/><author><name>Kai Kreuzer</name><uri>http://www.blogger.com/profile/14948351445882697259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-BHZHlfi45dg/Tvn3WfSkNEI/AAAAAAAAA2M/5SvSUKYUMCk/s1600/kaikreuzer.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5335810078566775677.post-5838609265407592145</id><published>2007-10-11T16:57:00.000+02:00</published><updated>2007-10-11T17:12:23.225+02:00</updated><title type='text'>RAP as the next GWT?</title><content type='html'>One of the projects I recently got to know about is the &lt;a href="http://www.eclipse.org/proposals/rap/"&gt;Rich Ajax Platform&lt;/a&gt; (RAP). So far I was never very interested in frameworks around Ajax, but being an Eclipse RCP developer, RAP really caught my eye. It has a similar approach like the Google Web Toolkit (GWT): The application is developped purely in Java and it is automatically "converted" into a web application by the toolkit.&lt;br /&gt;&lt;br /&gt;One big difference is that RAP actually mimes the SWT API - so in principal, all you have to do to make your Eclipse RCP application a RAP application is to replace your dependency declaration from the standard Eclipse SWT bundles to the RAP bundles. Hence there is no new API to learn and code can be easily exchanged between SWT and RAP applications.&lt;br /&gt;&lt;br /&gt;While GWT produces lots of Javascript code to actually run most of the logic in the web browser, RAP keeps the logic inside Equinox on the server. The web browser mainly serves as a "terminal" to display the UI and to receive and send events. Although the project is still in an early stage, it is already working quite nicely as one can see at &lt;a href="http://eclipsediscovery.yoxos.com/discovery/rap"&gt;http://eclipsediscovery.yoxos.com/discovery/rap.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I am sure that this project can be of great help to quickly build complex and interactive user interfaces on the web. This can be so much more productive than working with classic web frameworks with Ajax packages on top...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5335810078566775677-5838609265407592145?l=kaikreuzer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaikreuzer.blogspot.com/feeds/5838609265407592145/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5335810078566775677&amp;postID=5838609265407592145' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/5838609265407592145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/5838609265407592145'/><link rel='alternate' type='text/html' href='http://kaikreuzer.blogspot.com/2007/10/rap-as-next-gwt.html' title='RAP as the next GWT?'/><author><name>Kai Kreuzer</name><uri>http://www.blogger.com/profile/14948351445882697259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-BHZHlfi45dg/Tvn3WfSkNEI/AAAAAAAAA2M/5SvSUKYUMCk/s1600/kaikreuzer.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5335810078566775677.post-248197399773873087</id><published>2007-10-10T22:40:00.001+02:00</published><updated>2010-02-25T10:16:06.427+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>Doing IT the Eclipse Way</title><content type='html'>Having joint a BoF session with Naci Dai (member of the WTP project mangement committee) tonight, I now have a clearer view on what is special about the Eclipe community. Being initiated by a big company like IBM obviously helped to provide a sustainable and solid foundation for the whole community. There are for example strictly enforced processes - like how to become a committer to an Eclipse project. Only developers who have proven to deliver quality code by regularly contributing to newsgroups or BugZilla are elligible to be suggested as a new contributer. Not even a company that sponsers a project has the right to bypass this process.&lt;br /&gt;&lt;br /&gt;Also, there is a long process for new project approvals - it usually takes several month before a project even gets into the incubator. All of this ensures that the community is composed of motivated AND talented people - which results in a pretty good quality of the Eclipse ecospace.&lt;br /&gt;&lt;br /&gt;Although there are strict processes to comply with, the internal project organisation is left to the projects and leaves a lot of flexibility. This is important for the agile self-organisation of the teams and clearly works out quite well - as long as the projects are kept small.&lt;br /&gt;&lt;br /&gt;The clear message is that Eclipse does not want to be SourceForge - nobody should simply come along and "dump" some code, but the contributors are expected to be sustainable - which might explain the fact that merely about 1% of the committers are students. An astonishingly low figure! So Eclipse is really backed by companies sponsoring the developments by dedicating staff members to the projects.&lt;br /&gt;&lt;br /&gt;Every employer of a committer must sign an IP agreement that the code that is contributed is automatically under the Eclipse license. Interestingly, Google is one of the few companies who does not sign these agreements, such that there are no Eclipse committers from Google. It seems that "don't be evil" does not automatically translate into "be good". At least it shows that Google sees the Eclipse community as some kind of competition to their own initiatives. Interestingly, at the Eclipse Summit you can find many flyers from google about the summer of code etc. How did they get there? Seems that Eclipse is not totally unimportant for Google...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5335810078566775677-248197399773873087?l=kaikreuzer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaikreuzer.blogspot.com/feeds/248197399773873087/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5335810078566775677&amp;postID=248197399773873087' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/248197399773873087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/248197399773873087'/><link rel='alternate' type='text/html' href='http://kaikreuzer.blogspot.com/2007/10/doing-it-eclipse-way.html' title='Doing IT the Eclipse Way'/><author><name>Kai Kreuzer</name><uri>http://www.blogger.com/profile/14948351445882697259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-BHZHlfi45dg/Tvn3WfSkNEI/AAAAAAAAA2M/5SvSUKYUMCk/s1600/kaikreuzer.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5335810078566775677.post-4832927579699808048</id><published>2007-10-10T21:15:00.001+02:00</published><updated>2010-02-25T10:18:04.738+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='OFMP'/><title type='text'>Some Thoughts on the Open Financial Market Platform</title><content type='html'>Yesterday I attended a Symposium about the &lt;a href="http://www.eclipse.org/proposals/ofmp/"&gt;Open Financial Market Platform&lt;/a&gt; (OFMP) at the Eclipse Summit Europe in Ludwigsburg. This platform is an Eclipse project proposal which is based on an inhouse solution that has been developped by a project team in a bank.&lt;br /&gt;&lt;br /&gt;The Symposium had an interesting setup - besides the project team that contributed about 25% of the participants, another 60% were committers of other projects or commercial products that partly offered to bring in their know-how and make sure that OFMP one day nicely integrates with their project. The rest of the crowd were about three people - including me.&lt;br /&gt;&lt;br /&gt;The objective of the Symposium was to define what services could be defined and in which direction the project should move, so that it is interesting for the community. But wait - which community? The participants of the Symposium were not the target audience - these should be people from the financial industry that want to solve similar problems and therefore could benefit from the work done by the initiators. So clearly, at least I should be part of the targeted community, right? Unfortunately, the built solution is a mid-office deal processing platform, which does not really have much in common with the Asset Management solutions that we at Odyssey are dealing with. Besides, the OFMP is supposed to be a modular set of OSGi bundles that offer reusable services. The current implementation is a monolithic EAR, though. Even worse, it has not been build for easy customization, the services have not yet a clearly defined contract and they depend on a specific data model with a DAO persistence layer. I bet my feedback didn't help motivating the OFMP team too much.&lt;br /&gt;&lt;br /&gt;Do not get me wrong, I very much honor the commitment that the team shows. Maybe it is merely my nature to be doubtful or maybe I have already seen too many initiatives failing...&lt;br /&gt;To sum up the critical factors that I see in the way for a success of OFMP:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The effort of migrating a JEE EAR application to modular OSGi services is easily underestimated.&lt;/li&gt;&lt;li&gt;The proprietary data format should be replaced by a standardized solution like &lt;a href="http://www.fpml.org/"&gt;FpML&lt;/a&gt;. That is planned, but again, this is a lot of effort that does not bring any benefit to the initiator.&lt;/li&gt;&lt;li&gt;The solution has not yet proven to be reusable. There should be at least a handful banks that have already adopted the solution, before other banks will have trust that they could also benefit from it. Sadly however, the initiators do not even know a potential next victim.&lt;/li&gt;&lt;li&gt;To give a direction to the project, business analysts are needed as otherwise there will be a superb technical infrastructure , but no services that use the real-world problems of the banks. But how to get business people abord an Eclipse project? Any chance that they spend their precious time being surrounded only by geeks? I am sure that that will be a challenge...&lt;/li&gt;&lt;li&gt;The initiator, being asked what they would like to see being contributed to the project by others, so that they themselves can benefit (isn't that their motivation after all?), couldn't tell a single feature (besides improving and bug fixing some of the existing code). Does that mean that the solution is already full-fledged? Rather not - instead I see the risk that they quickly loose the (financial) interest in the project and stop supporting it.&lt;/li&gt;&lt;/ul&gt;Anyhow, I am looking forward to see OFMP evolve and I wish the team that none of my fears come true!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5335810078566775677-4832927579699808048?l=kaikreuzer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaikreuzer.blogspot.com/feeds/4832927579699808048/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5335810078566775677&amp;postID=4832927579699808048' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/4832927579699808048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/4832927579699808048'/><link rel='alternate' type='text/html' href='http://kaikreuzer.blogspot.com/2007/10/some-thoughts-on-open-financial-market.html' title='Some Thoughts on the Open Financial Market Platform'/><author><name>Kai Kreuzer</name><uri>http://www.blogger.com/profile/14948351445882697259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-BHZHlfi45dg/Tvn3WfSkNEI/AAAAAAAAA2M/5SvSUKYUMCk/s1600/kaikreuzer.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5335810078566775677.post-3819289856589750198</id><published>2007-07-03T12:07:00.000+02:00</published><updated>2007-07-03T16:35:19.107+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OOD'/><title type='text'>Has OOD failed?</title><content type='html'>Inspired by some sessions at the TSSJS, I spent some thought on the "old school" object oriented design programming model. It appears to me that, although we are all using object oriented languages like Java, the core idea of object orientation has somewhat failed without anybody actually admitting it. Here are the arguments that should make you think about it:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The original idea (at least how it is introduced to beginners) of OO is to create real-life "stuff" in software, like a library, books, etc. - nowadays referred to as the domain model. In reality, the domain model is often  less than 10-20% of your codebase - the major part are "abstract" infrastructure elements like facades, notifiers,  providers, factories, services, etc. Although people will argue that these also have an equivalent in the real-world, one cannot really disguise the very technical concepts that lie within them, which seem to be rather forced into an OO shape.&lt;/li&gt;&lt;li&gt;For many people it has become a best practice to design an &lt;a href="http://en.wikipedia.org/wiki/Anemic_Domain_Model"&gt;anemic domain model&lt;/a&gt;. This really makes objects lifeless as all logic is taken away from them and they degrade to pure data containers.&lt;/li&gt;&lt;li&gt;From other classes that still contain logic, AOP tries to squeeze out the cross-cutting pieces, like logging, transaction handling, etc. This functionality is then instead kept in aspects (does anybody really dare to call them objects?) that are attached to the outside of the objects like contagious pimples. (Don't get me wrong - I like the idea of AOP very much!)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Having internal states of objects results in a bad memory footprint, so to be scalable we prefer having stateless services without any internal state.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Passing objects via method invocation might work for some internal classes, but on the SOA-enabled systems, we are passing XML data structures to remote stateless services.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Public constructors are outdated, better use factories instead, or - even better for decoupling - a Spring container that handles this for you.&lt;/li&gt;&lt;li&gt;The object-relational mapping stays a nightmare, despite Hibernate and JPA. JDBC result sets still appear to be an adequate solution, especially if one only needs a few fields from a long list of records.&lt;/li&gt;&lt;li&gt;Business logic as the core part of the software needs to be quickly adaptable to new business requirements. Therefore it is taken out from the objects and moved somewhere else, e.g. in a rule repository (e.g. VisualRules, jRules or any kind of script) where it can be replaced or updated without recompilation and redeployment. Another option is to call it service orchestration and call global functions (web services) in a procedural manner driven by a BPEL file.&lt;/li&gt;&lt;/ul&gt;Object orientation doesn't seem to match the needs of todays challenges anymore - and it feels as if we stick to it because nothing better has yet been found. It will be interesting to see how dynamic languages might help moving software development into a new dawn.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5335810078566775677-3819289856589750198?l=kaikreuzer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaikreuzer.blogspot.com/feeds/3819289856589750198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5335810078566775677&amp;postID=3819289856589750198' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/3819289856589750198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/3819289856589750198'/><link rel='alternate' type='text/html' href='http://kaikreuzer.blogspot.com/2007/07/has-ood-failed.html' title='Has OOD failed?'/><author><name>Kai Kreuzer</name><uri>http://www.blogger.com/profile/14948351445882697259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-BHZHlfi45dg/Tvn3WfSkNEI/AAAAAAAAA2M/5SvSUKYUMCk/s1600/kaikreuzer.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5335810078566775677.post-4226518070035294804</id><published>2007-07-03T09:07:00.000+02:00</published><updated>2007-07-03T11:21:51.165+02:00</updated><title type='text'>Code and Data in the Light of DSLs</title><content type='html'>In the keynote at TSSJS, Martin Fowler talked about one of his favorite topics: Domain Specific Languages (DSLs). In his point of view this is all about writing readable code that speaks for itself and doesn't need any further inline documentation to be understood. That general purpose languages such as Java do not fulfill this requirement can be at the vast number of proprietary XML configuration files, each of which is based on his own little DSL, according to Fowler. I agree with him that extensive XML configurations do not help the readability at all and rather result in the infamous XML configuration hell. With the advent of Spring, more and more information is moved from the code to XML files and although the Spring team doesn't see any problem with this, projects like the SpringIDE hint that there is some lack of readability in these files and that a tool-supported representation of the information might be of help.&lt;br /&gt;&lt;br /&gt;But didn't we just mix up two different things: Java and XML? Java is used to write code, while XML merely holds some configuration data. Is that really the case? And what is actually the difference between code and data?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Code vs. Data&lt;/span&gt;&lt;br /&gt;On machine level, its all just bytes. A memory range can store machine code and/or data, and there is no sign on what the information is supposed to be. It is easy to execute data - buffer overflow exploits demonstrate this daily. Higher level programming languages such as Java introduce a strong separation of code and data in order to prevent such security holes. XML is widely used for configuration data and for the exchange of runtime data (think of web services or message queues). But then there are things like HTML, BPEL, etc. Do these merely hold configuration data or are they actually code? What about a script that is stored inside a database and executed via the Java Scripting API? And what is a rule in jRules? The boundaries between pure code that defines the sequence of the operations and data that influences the decisions in this sequence has become completely blurred. It is a matter of personal taste where configuration ends and code starts - only the power of the syntax might be used here as a guide and as a starting point for discussions.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Use Cases of DSLs&lt;/span&gt;&lt;br /&gt;Let's come back to DSLs. Do they now address code or configuration? After aboves elaboration, the answer is both. Although the general discussion of DSLs often refers to DSL-enabling languages like Lisp and Ruby, and by this at the description of code, there are also frameworks like openArchitectureWares xText that help to describe models, i.e. data structures with a DSL. Fowler distinguishes between &lt;a href="http://www.martinfowler.com/bliki/DomainSpecificLanguage.html"&gt;external and internal DSLs&lt;/a&gt;. Not wanting to draw a line here, I am still tempted to say that internal DSLs are usually a better match for code, while external DSLs are a good candidate for data.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;DSLs and XML&lt;/span&gt;&lt;br /&gt;So will DSLs be a solution to the XML configuration hell? I do not believe so. As I said, on the one hand the public discussion is much more about dynamic languages that are seen as the saviour for many problems - for code. On the other hand, XML languages still spread unmolestedly and there is no end in sight - but that's what XML was about right? Having an XML Schema as your DSL simply gives you a platform independent format with tool support (XML editors and parsers) for all you ever wanted to express. What is just lacking is the readibility that Fowler asks for. But instead of replacing XML and XML Schema with some well-readable DSL, the market seems to strive for a different solution: It regards XML merely as the serialisation format and provides graphical editors on top of these. Now that is readable as a diagram looks so much better than XML code. We just might now end up in an editor hell - you will need a vast set of editors (all with a different user experience of course) just to configure your application. So how will we change this if we just have "vi" available on a remote console? Well, let's hope that the XML format is still human-readable and that the XSD is somewhere near!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Summary&lt;/span&gt;&lt;br /&gt;The dilemma is that XML Schemas are the most widespread DSLs, while not offering a good readability. The current discussions on DSLs won't have any impact on this fact - in contrast, in our heterogeneous world XML will continue to spread not only as a configuration or data format, but also to express programmatic logic (e.g. BPEL). Instead of having an easily readable format, more and more graphical editors will become available to ease the work with these XML formats and to make them available to (business-oriented) people that are not at ease with XML.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5335810078566775677-4226518070035294804?l=kaikreuzer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaikreuzer.blogspot.com/feeds/4226518070035294804/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5335810078566775677&amp;postID=4226518070035294804' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/4226518070035294804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/4226518070035294804'/><link rel='alternate' type='text/html' href='http://kaikreuzer.blogspot.com/2007/07/code-and-data-in-light-of-dsls.html' title='Code and Data in the Light of DSLs'/><author><name>Kai Kreuzer</name><uri>http://www.blogger.com/profile/14948351445882697259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-BHZHlfi45dg/Tvn3WfSkNEI/AAAAAAAAA2M/5SvSUKYUMCk/s1600/kaikreuzer.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5335810078566775677.post-7851266074626495189</id><published>2007-07-02T14:55:00.002+02:00</published><updated>2010-02-25T10:15:32.605+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGi'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='Maven'/><category scheme='http://www.blogger.com/atom/ns#' term='Spring'/><title type='text'>OSGi - the new Java enterprise container?</title><content type='html'>Counting the number of sessions on OSGi, one could get the impression that this is just in its trigger phase of the &lt;a href="http://en.wikipedia.org/wiki/Gartner%27s_Hype_Cycle"&gt;Gartner hype cycle&lt;/a&gt;. But looking a bit closer, this technology does not seem to follow the usual pattern: OSGi is around already since 2000, at that time targeted mainly at the embedded systems world. Slowly but steadily, it has crept into more and more markets. It has by now already proved to be a stable and well-functioning platform for Eclipse and it is used in many software products like IBM Websphere Application Server (WAS) or Adobe Version Cue without anyone taking great notice. How mature OSGi already is, is demonstrated best by the fact that the OSGi Alliance has admitted that the abbreviation OSGi doesn't actually mean anything in special (formerly it should stand for "Open Service Gateway initiative").&lt;br /&gt;&lt;br /&gt;So what is OSGi then all about? The OSGi Alliance defines it as a "dynamic module system for Java" and as a "Universal Middleware"&lt;span style="font-style: italic;"&gt;. &lt;/span&gt;It indeed is a component container, specialized on the clear separation of the components and their flexible lifecycle management.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;OSGi and Java EE&lt;/span&gt;&lt;br /&gt;Originating from the embedded world it is per se lightweight, in absolute contrast to an Java EE compliant application server stack. That should not say that OSGi tries to compete with Java EE, though there are many scenarios where OSGi might be the better (because lighter and leaner) choice altogether. Instead, it can also improve current Java EE architectures by modularising existing EARs and by introducing strict dependency management rules. Using an OSGi container on top of an application server brings benefits like the possibility to transparently replace a module during runtime or to run multiple different versions of a module at the same time.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;OSGi and Spring&lt;/span&gt;&lt;br /&gt;Talking of lightweight containers, Spring quickly comes into ones mind. Although Spring proponents will argue that one cannot compare Spring with OSGi as both try to achieve different things, they yet do not intervene when somebody says that Spring will be the next Java EE. So as we have already compared OSGi to Java EE, it must be allowed to compare it with Spring likewise. They both are lightweight containers, trying to decouple the parts of a modern software architecture. While Spring tries to reach this goal on a very fine-grained (object) level with dependency injection and aspects, OSGi introduces a rigorous dependency management and a runtime seperation of modules using different classloaders.. Where Spring declares its beans in the application context xml, OSGi declares its exports and services in its manifest. Both containers therefore do similar things - but with quite different means. Both approaches are beneficial for the software architecture and therefore it is legal to say that Spring and OSGi are a perfect match - with the reservation that the configuration has to be merged (and redundancies removed) and that Spring lets itself deploy inside an OSGi container. This is what the &lt;a href="http://www.springframework.org/osgi"&gt;Spring-OSGi project&lt;/a&gt; is all about, which is scheduled to be released in August.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;OSGi and Maven2&lt;/span&gt;&lt;br /&gt;Alright, Maven2 is definitely no container by any means, but still it has one striking similarity to OSGi: The profound dependency management with automatic resolution of sub-dependencies and different versions. Maven users are blessed by not having to care about where to retrieve their dependencies from and how to put them all correctly in the build path. The dependency declarations in Mavens pom.xml is very similar to the information in OSGis manifest file. Wouldn't it be great to automatically map this information? Luckily, somebody is already working on this: There is a &lt;a href="http://cwiki.apache.org/FELIX/osgi-plugin-for-maven-2.html"&gt;Maven2 OSGi plugin&lt;/a&gt; hosted by Apache Felix, an open source OSGi implementation project. Unfortunately this currently seems to work only one way - to generate manifest information from the pom.xml. Developers who are used to implement Eclipse plugins and therefore like the tool support to maintain the dependency information in the manifest file will still have to find some solution how to sync this information.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;OSGi and the JCP&lt;/span&gt;&lt;br /&gt;OSGi and its concepts have already a long history in the Java Community Process: Already in 1999 the &lt;a href="http://jcp.org/en/jsr/detail?id=8"&gt;JSR-8&lt;/a&gt; has been submitted in order to specify OSGi within the JCP. Out of some reason that was withdrawn and the OSGi Alliance did the specification on their own. Currently, there are the &lt;a href="http://jcp.org/en/jsr/detail?id=277"&gt;JSR-277&lt;/a&gt; and the &lt;a href="http://jcp.org/en/jsr/detail?id=291"&gt;JSR-291&lt;/a&gt; which address modularity and dependency management (JSR-277) resp. dynamic lifecycle management (JSR-291) for Java. While JSR-277 is trying to do something very similar as OSGi already offers, the Expert Group of JSR-291 has decided to fully adopt the OSGi specification a few weeks ago. It is therefore very likely that OSGi is going to be part of Java 7.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Summary&lt;/span&gt;&lt;br /&gt;Whereever there is the need to modularize a complex system or to dynamically start/stop/replace single modules, OSGi is definitely worth a try.  There are stable and mature implementations available like &lt;a href="http://www.eclipse.org/equinox/"&gt;Equinox &lt;/a&gt;which builds the core of Eclipse, with which it is easy to start and to have some first results in a matter of a couple of hours. Having the JCP now embracing the OSGi specification, it is obvious that OSGi is a key concept for the future of Java in general.&lt;br /&gt;&lt;strong style="font-family: trebuchet ms; font-style: italic; font-weight: normal;"&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5335810078566775677-7851266074626495189?l=kaikreuzer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaikreuzer.blogspot.com/feeds/7851266074626495189/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5335810078566775677&amp;postID=7851266074626495189' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/7851266074626495189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/7851266074626495189'/><link rel='alternate' type='text/html' href='http://kaikreuzer.blogspot.com/2007/07/osgi-new-java-enterprise-container.html' title='OSGi - the new Java enterprise container?'/><author><name>Kai Kreuzer</name><uri>http://www.blogger.com/profile/14948351445882697259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-BHZHlfi45dg/Tvn3WfSkNEI/AAAAAAAAA2M/5SvSUKYUMCk/s1600/kaikreuzer.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5335810078566775677.post-6088395842721705532</id><published>2007-07-01T17:23:00.001+02:00</published><updated>2010-02-25T10:17:09.025+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EDA'/><title type='text'>TLAs around SOA - is it all just hype? (Part 3)</title><content type='html'>Besides the rather negative impressions of JBI and BPEL (see parts 1 and 2), I also enjoyed a refreshingly positive session of Gregor Hohpe from Google about Event Driven Architectures (EDA). Having heard of them so far only in the context of SOA, I didn't expect much at all. Instead, Gregor presented a pragmatic example of how EDA can work - without any complicated containers, service infrastructure or anything like that - simply with pure Java. The core consisted out of one single class called "Channel" which allowed sending and subscribing events. On this he has built an application that is very loosely coupled as there are hardly any method invocations. Instead, all application flow is caused by the exchange of events. He pointed out some big benefits like the possibility to easily switch between two modules with the same functionality or even run them at the same time for test purposes. Furthermore it is possible to replay the event chain and therefore reproduce states from the past. And of course, this programming model makes logging as easy as with AOP (or even easier?) as all one needs is a class that subscribes and logs simply all events.&lt;br /&gt;Certainly this approach is not applicable to any kind of problem, but it is definitely worth to be considered in many cases.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5335810078566775677-6088395842721705532?l=kaikreuzer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaikreuzer.blogspot.com/feeds/6088395842721705532/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5335810078566775677&amp;postID=6088395842721705532' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/6088395842721705532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/6088395842721705532'/><link rel='alternate' type='text/html' href='http://kaikreuzer.blogspot.com/2007/07/tlas-around-soa-is-it-all-just-hype.html' title='TLAs around SOA - is it all just hype? (Part 3)'/><author><name>Kai Kreuzer</name><uri>http://www.blogger.com/profile/14948351445882697259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-BHZHlfi45dg/Tvn3WfSkNEI/AAAAAAAAA2M/5SvSUKYUMCk/s1600/kaikreuzer.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5335810078566775677.post-5860007866618848542</id><published>2007-06-30T17:03:00.002+02:00</published><updated>2010-02-25T10:17:15.168+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='BPEL'/><title type='text'>TLAs around SOA - is it all just hype? (Part 2)</title><content type='html'>The next TLA - well here we have a rather a rare occation of a FLA - is BPEL. Reading sales brochures, BPEL is already used everywhere and the swiss army knife for your service orchestration. Talking to Tom Baeyens at breakfast, he pointed out that he is happy that nobody really yet succeeds with SOA, so his jPDL solution has had a good chance to spread without much competition. We seem to be on the right track with our proprietary tooling at Odyssey as nobody else really has anything much more sophisticated to offer, while suffering the same problems like not being able to factor out the technical details from the model used for the graphical designer. There is no good solution yet to easily exchange the technical part of the model by another one, e.g. for a different platform. This becomes very obvious when looking at the jBoss jBPM solution: Although using a common runtime platform, there are two designers for BPEL and jPDL that are completely independent from each other. Tom agreed that it is not feasible trying to have one graphical designer that can be used to create files for different execution languages. Therefore I don't feel so bad anymore about the fact that we didn't really manage to define a platform independent model (PIM) for the graphical designers of our in-house pageflow and workflow solutions. The current BPEL tools are meant to improve the communication between IT and business by allowing business people to sketch their ideas and have the developers fill out the details. From this moment on, the BPEL artifacts are read-only for the business to have a ground for discussion, but changes should only be done by developers. In our case, where we ship a default version of a diagram, the business consultants are supposed to specify the necessary customisations for a specific customer. Our goal is therefore even higher than the usual BPEL use case. Time will tell whether this is at all a feasible approach!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5335810078566775677-5860007866618848542?l=kaikreuzer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaikreuzer.blogspot.com/feeds/5860007866618848542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5335810078566775677&amp;postID=5860007866618848542' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/5860007866618848542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/5860007866618848542'/><link rel='alternate' type='text/html' href='http://kaikreuzer.blogspot.com/2007/06/tlas-around-soa-is-it-all-just-hype_30.html' title='TLAs around SOA - is it all just hype? (Part 2)'/><author><name>Kai Kreuzer</name><uri>http://www.blogger.com/profile/14948351445882697259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-BHZHlfi45dg/Tvn3WfSkNEI/AAAAAAAAA2M/5SvSUKYUMCk/s1600/kaikreuzer.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5335810078566775677.post-1506836591693080004</id><published>2007-06-29T21:32:00.002+02:00</published><updated>2010-02-25T10:17:23.845+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JBI'/><category scheme='http://www.blogger.com/atom/ns#' term='SCA'/><title type='text'>TLAs around SOA - is it all just hype? (Part 1)</title><content type='html'>One expects of conferences that one is thrown at with all the latest &lt;a href="http://en.wikipedia.org/wiki/Three-letter_acronym"&gt;TLAs&lt;/a&gt;. SOA being one of these for a while already and in the SOA context one also hears about things like ESB, EDA, JBI, SCA, BPEL and so on. Having tried to make any sense of these by reading magazines or listening to podcasts, I truely must admit that attending the TSSJS really helped me to get a clearer picture. E.g. it seems to me that one can forget about JBI - it is one of the technologies being speced and tried out in the real world only afterwards. Sadly however, the spec mainly aims at vendors, while they show no interest (only Sun backs it, while IBM and BEA stop their participation in the JSR). Trying to be yet-another-service-container, this mission is likely to fail and so I come to my personal conclusion that it's not worth the effort to dive into. Another clear sign for me was that none of the attendees of a JBI session was actually using JBI nor considering the use for the future...&lt;br /&gt;Instead, SCA seems to have much stronger industry support, also being some kind of service container, but targeted rather towards the application developer than at the platform vendors. Nonetheless it is in its early stages and one will have to see how the adoption rate is going to look like.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5335810078566775677-1506836591693080004?l=kaikreuzer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaikreuzer.blogspot.com/feeds/1506836591693080004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5335810078566775677&amp;postID=1506836591693080004' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/1506836591693080004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/1506836591693080004'/><link rel='alternate' type='text/html' href='http://kaikreuzer.blogspot.com/2007/06/tlas-around-soa-is-it-all-just-hype.html' title='TLAs around SOA - is it all just hype? (Part 1)'/><author><name>Kai Kreuzer</name><uri>http://www.blogger.com/profile/14948351445882697259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-BHZHlfi45dg/Tvn3WfSkNEI/AAAAAAAAA2M/5SvSUKYUMCk/s1600/kaikreuzer.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5335810078566775677.post-3872259703998043649</id><published>2007-06-28T23:41:00.000+02:00</published><updated>2007-06-29T21:30:18.453+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TSSJS'/><title type='text'>Welcome to my blog</title><content type='html'>To be a real geek, I would have had to have a blog already since quite some while - well, come to any conclusion that you prefer, but I am simply happy to now eventually share my thoughts with you online :-)&lt;br /&gt;The trigger for me was being currently at &lt;a href="http://javasymposium.techtarget.com/"&gt;The Server Side Java Symposium 2007&lt;/a&gt; in Barcelona. It's a really great event and it's a great pleasure to meet all these great people here that one otherwise only know from their blogs, from an article in some magazines or from one of my favourite podcasts. It's really fun being a part of the community and therefore it becomes a real necessity to have a blog myself as well.&lt;br /&gt;So please enjoy it, visit it regularly and leave your comments!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5335810078566775677-3872259703998043649?l=kaikreuzer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaikreuzer.blogspot.com/feeds/3872259703998043649/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5335810078566775677&amp;postID=3872259703998043649' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/3872259703998043649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5335810078566775677/posts/default/3872259703998043649'/><link rel='alternate' type='text/html' href='http://kaikreuzer.blogspot.com/2007/06/welcome-to-my-blog.html' title='Welcome to my blog'/><author><name>Kai Kreuzer</name><uri>http://www.blogger.com/profile/14948351445882697259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-BHZHlfi45dg/Tvn3WfSkNEI/AAAAAAAAA2M/5SvSUKYUMCk/s1600/kaikreuzer.jpg'/></author><thr:total>0</thr:total></entry></feed>
