<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
<channel>

<title>(content goes here) blog</title>
<description>(content goes here) blog</description>
<link>http://dev.day.com/microsling/content/blogs/main.html</link>



	<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/contentGoesHereBlog" type="application/rss+xml" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FcontentGoesHereBlog" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FcontentGoesHereBlog" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2FcontentGoesHereBlog" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/contentGoesHereBlog" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FcontentGoesHereBlog" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FcontentGoesHereBlog" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FcontentGoesHereBlog" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2FcontentGoesHereBlog" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://www.yourminis.com/subscribe.aspx?u=http%3A%2F%2Ffeeds.feedburner.com%2FcontentGoesHereBlog" src="http://www.yourminis.com/images/addtoyourminisbadge.gif">Subscribe with Yourminis.com</feedburner:feedFlare><feedburner:feedFlare href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FcontentGoesHereBlog" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare href="http://www.addtoany.com/?linkname=%28content%20goes%20here%29%20blog&amp;linkurl=http%3A%2F%2Ffeeds.feedburner.com%2FcontentGoesHereBlog&amp;type=feed" src="http://www.addtoany.com/addfr-b.gif">Add to Any Feed Reader</feedburner:feedFlare><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
	<title>Reviewing code quality of Apache Sling using Sonar</title>	
	<link>http://feedproxy.google.com/~r/contentGoesHereBlog/~3/t_5Bm9Gzqmw/sonar.html</link>
	<guid isPermaLink="false">http://dev.day.com/microsling/content/blogs/main/sonar.html</guid>
	<description>&lt;div style="border-bottom: 1px dotted rgb(153, 153, 153); padding: 2px;"&gt;&lt;p&gt;&lt;em&gt;This is a cross-post of &lt;a href="http://sonar.codehaus.org/reviewing-the-apache-sling-code-quality-using-sonar/"&gt;Freddy's analysis at the Sonar site&lt;/a&gt;. We use &lt;a href="http://sonar.codehaus.org/"&gt;Sonar&lt;/a&gt; internally at Day to track and improve the quality of all our software. Also check out &lt;a href="http://nemo.sonarsource.org/projects"&gt;Nemo&lt;/a&gt; which is Sonar's platform for analysing various other FOSS projects.&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;

&lt;br&gt;
&lt;p&gt;
A few weeks ago Michael Marth, who runs &lt;a href="http://dev.day.com/"&gt;dev.day.com&lt;/a&gt; (Day’s developer portal), asked us if we could put together our impressions on the code quality of &lt;a href="http://sling.apache.org/site/index.html"&gt;Apache Sling&lt;/a&gt; using Sonar. We thought it would be valuable to share the result of this exercise with the community.
&lt;/p&gt;
&lt;h4&gt;Apache Sling in a few words&lt;/h4&gt;
&lt;p&gt;
“Apache Sling is an innovative web framework that is intended to bring back the fun to web development. It uses all those nice cool and new technologies that make up a state-of-the-art framework. This is Apache Sling in five bullets:
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt; REST based web framework&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Content-driven, using a JCR content repository&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Powered by OSGi&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Scripting inside, multiple languages&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Apache Open Source project&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;Some size indications of the project&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;40 Maven modules&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;70,707 lines of code&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;731 Java classes&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;and 23,043 lines of Javadoc&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;The strengths in terms of quality&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A project that you get and compile with no difficulty by running two
commands:&lt;br&gt;
           1. svn checkout &lt;a href="https://svn.apache.org/repos/asf/sling/trunk/"&gt;https://svn.apache.org/repos/asf/sling/trunk/&lt;/a&gt;&lt;br&gt; 
           2. mvn clean install&lt;br&gt;
      This sounds like an evidence but is not always the case :-)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Amongst 130,172 physical lines, only 0.9% are involved in a duplication&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;46.4% of public API are commented with a Javadoc block&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;The weaknesses&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Only 9% of the source code is covered by 338 unit tests&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Average cyclomatic complexity by method (excluding getters and setters)
is greater than 3 (3.2).&lt;br&gt;
      That is kind of a warning saying “your methods are taking too much responsibilities and should be re-factored”. This warning is confirmed by others metrics : 394 methods have a complexity greater than 7 and 86 methods have more than 50 statements. What is true at method level gets also partially confirmed at class level as 60 classes have a Fan Out Complexity greater than 20 (The number of other classes referenced by a class)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;Bad programming practices that should be improved&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;198 times, method parameters are reassigned in the core of the method&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;68 times, local variables are defined and hide class fields&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;28 times, NullPointerException are thrown when an IllegalParameterException would be more suitable&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;Potential bugs that should be quickly analyzed&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Correctness - An apparent infinite recursive loop : there is an apparent infinite recursive loop in org.apache.sling.scripting.jsp.jasper.runtime. &lt;a href="http://nemo.sonarsource.org/drilldown/rules/107290?rule_id=341&amp;viewer_plugin_key=org.sonar.plugins.core.violationssourceviewer.GwtViolationsSourceViewer&amp;viewer_resource_key=org.apache.sling:org.apache.sling.scripting.jsp:org.apache.sling.scripting.jsp.jasper.runtime.JspContextWrapper"&gt;JspContextWrapper&lt;/a&gt;.include(String, boolean)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Multithreaded correctness - Unsynchronized get method, synchronized set method : org.apache.sling.scripting.jsp.jasper.compiler. &lt;a href="http://nemo.sonarsource.org/drilldown/rules/107290?rule_id=450&amp;viewer_plugin_key=org.sonar.plugins.core.violationssourceviewer.GwtViolationsSourceViewer&amp;viewer_resource_key=org.apache.sling:org.apache.sling.scripting.jsp:org.apache.sling.scripting.jsp.jasper.compiler.JspRuntimeContext"&gt;JspRuntimeContext&lt;/a&gt;.getJspReloadCount() is unsynchronized, org.apache.sling.scripting.jsp.jasper.compiler. JspRuntimeContext.setJspReloadCount(int) is synchronized&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Multithreaded correctness - Method calls Thread.sleep() with a lock held : org.apache.sling.event.impl. &lt;a href="http://nemo.sonarsource.org/drilldown/rules/107290?rule_id=655&amp;viewer_plugin_key=org.sonar.plugins.core.violationssourceviewer.GwtViolationsSourceViewer&amp;viewer_resource_key=org.apache.sling:org.apache.sling.event:org.apache.sling.event.impl.JobEventHandler"&gt;JobEventHandler&lt;/a&gt;.runJobQueue(String, JobBlockingQueue) calls Thread.sleep() with a lock held&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Malicious code vulnerability - Field is a mutable array : org.apache.sling.jcr.webdav.impl.servlets. &lt;a href="http://nemo.sonarsource.org/drilldown/rules/107290?rule_id=463&amp;viewer_plugin_key=org.sonar.plugins.core.violationssourceviewer.GwtViolationsSourceViewer&amp;viewer_resource_key=org.apache.sling:org.apache.sling.jcr.webdav:org.apache.sling.jcr.webdav.impl.servlets.SlingWebDavServlet"&gt;SlingWebDavServlet&lt;/a&gt;.COLLECTION_TYPES_DEFAULT is a mutable array&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

 &lt;p&gt;
This analysis was done with the intention of giving a synthetic overview of the current state of the project. Where should you start from if tomorrow you wake up with a single idea in mind : “Improving quality of the Apache Sling project !” ?
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;With respectively a cyclomatic complexity of 428, 385 and 343, classes Generator, Parser and XMLEndoginDetector should be first refactored. With no surprise, the Generator.java file has the greatest number of duplicated lines (154) and rules violations (109)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;With its 43 cyclomatic complexity and no unit tests, the method ModifyAceServlet.handleOperation(..) is what we call “a &lt;a href="http://www.crap4j.org/"&gt;crappy&lt;/a&gt; method” :-)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
More information on the code quality of the project is available on &lt;a href="http://nemo.sonarsource.org/project/index/org.apache.sling:sling-builder"&gt;Nemo&lt;/a&gt;. 
&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/contentGoesHereBlog?a=t_5Bm9Gzqmw:GvAxB7DqSE0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/contentGoesHereBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/contentGoesHereBlog?a=t_5Bm9Gzqmw:GvAxB7DqSE0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/contentGoesHereBlog?i=t_5Bm9Gzqmw:GvAxB7DqSE0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/contentGoesHereBlog?a=t_5Bm9Gzqmw:GvAxB7DqSE0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/contentGoesHereBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/contentGoesHereBlog?a=t_5Bm9Gzqmw:GvAxB7DqSE0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/contentGoesHereBlog?i=t_5Bm9Gzqmw:GvAxB7DqSE0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/contentGoesHereBlog/~4/t_5Bm9Gzqmw" height="1" width="1"/&gt;</description>
	<pubDate>01 Jul 2009 00:00:01 GMT</pubDate>
	<author>dev@day.com (Freddy Mallet)</author>
	
			<category>sling</category> <category>quality</category> 	
	
	<feedburner:origLink>http://dev.day.com/microsling/content/blogs/main/sonar.html</feedburner:origLink></item>
	
	<item>
	<title>[LOTD] Content Structure in a CMS</title>	
	<link>http://feedproxy.google.com/~r/contentGoesHereBlog/~3/tKXFt6fOnDc/lotd20090630.html</link>
	<guid isPermaLink="false">http://dev.day.com/microsling/content/blogs/main/lotd20090630.html</guid>
	<description>&lt;p&gt;
&lt;a href="http://www.contenthere.net/2009/06/great-presentation-on-content-modeling.html"&gt;Via Seth Gottlieb&lt;/a&gt; I have found this really good &lt;a href="http://www.gadgetopia.com/post/6853"&gt;presentation on content modelling&lt;/a&gt; for content management systems by &lt;a href="http://deanebarker.net/blog/"&gt;Deane Barker&lt;/a&gt;:
&lt;/p&gt;
&lt;img style="visibility:hidden;width:0px;height:0px;" border=0 width=0 height=0 src="http://counters.gigya.com/wildfire/IMP/CXNID=2000002.0NXC/bT*xJmx*PTEyNDYzNTM2OTA3MzQmcHQ9MTI*NjM1MzcwMjg1OSZwPTEwMTkxJmQ9c3NfZW1iZWQmZz*yJnQ9Jm89MTU5MzE3YTlhMDVkNDAxNjliMDUzY2Q5NjM1Mzc1ZWQmb2Y9MA==.gif" /&gt;&lt;div style="width:425px;text-align:left" id="__ss_1609592"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/gadgetopia/just-put-that-in-the-zip-code-field?type=powerpoint" title="&amp;quot;Just Put That In The Zip Code Field...&amp;quot;"&gt;&amp;quot;Just Put That In The Zip Code Field...&amp;quot;&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=justputthatinthezipcodefield-090619113722-phpapp01&amp;stripped_title=just-put-that-in-the-zip-code-field" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=justputthatinthezipcodefield-090619113722-phpapp01&amp;stripped_title=just-put-that-in-the-zip-code-field" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;documents&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/gadgetopia"&gt;gadgetopia&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;
Cleve Gibbon's recent well-written &lt;a href="http://www.clevegibbon.com/contentmanagement/content-modelling/"&gt;series on content modelling&lt;/a&gt; is closely related to Deane's presentation. Make sure to have a look if you are interested in that area.
&lt;/p&gt;&lt;p&gt;

I really like Deane's presentation, at least when I look at it from the paradigm that proper content management needs a-priori content modelling. Lately, I have come to question this idea, but that shall be the topic of a different post.
&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/contentGoesHereBlog?a=tKXFt6fOnDc:jDvHXZprccA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/contentGoesHereBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/contentGoesHereBlog?a=tKXFt6fOnDc:jDvHXZprccA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/contentGoesHereBlog?i=tKXFt6fOnDc:jDvHXZprccA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/contentGoesHereBlog?a=tKXFt6fOnDc:jDvHXZprccA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/contentGoesHereBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/contentGoesHereBlog?a=tKXFt6fOnDc:jDvHXZprccA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/contentGoesHereBlog?i=tKXFt6fOnDc:jDvHXZprccA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/contentGoesHereBlog/~4/tKXFt6fOnDc" height="1" width="1"/&gt;</description>
	<pubDate>30 Jun 2009 00:00:01 GMT</pubDate>
	<author>dev@day.com (Michael Marth)</author>
	
			<category>lotd</category> <category>contentmodels</category> 	
	
	<feedburner:origLink>http://dev.day.com/microsling/content/blogs/main/lotd20090630.html</feedburner:origLink></item>
	
	<item>
	<title>[ANN] Upcoming Cloud-Computing Events (July 7 and 9)</title>	
	<link>http://feedproxy.google.com/~r/contentGoesHereBlog/~3/wht4O0E7C_8/cloudann.html</link>
	<guid isPermaLink="false">http://dev.day.com/microsling/content/blogs/main/cloudann.html</guid>
	<description>&lt;p&gt;The introduction of the simplified clustering in CRX 1.4.1 (back in January 2009) kick-started the efforts to make CRX and CQ5 easily deployable into the Amazon cloud computing infrastructure.
&lt;/p&gt;&lt;p&gt;
A lot happend since then - most importantly - we got in touch with customers that have exactly the challenges we were looking to solve with cloud-based deployments. One of them being the ability to scale infrastructure for peak usage, without the cost of running all servers all the time. Of course, to set a good example, we run our own sites - such as &lt;a href="http://www.day.com" target="_blank"&gt;www.day.com&lt;/a&gt; - on EC2.
&lt;/p&gt;&lt;p&gt;
Next week, we would like to give you an update of what we did so far and share the plans for the future.
&lt;/p&gt;&lt;p&gt;
On July 7th (Tuesday) we have a half day seminar in London. Sarah Burnett from Butler Group and myself will discuss the advantages and use cases to make best use of cloud computing infrastructure. This is a great event to get yourself familiar with the cloud computing topic and learn how you can apply that to your content management initiatives. Join the free seminar in London. &lt;a href="http://www.day.com/content/day/en/registration/seminars/cq5cloud-london.html" target="_blank"&gt;&lt;b&gt;Sign-up here&lt;/b&gt;&lt;/a&gt;.
&lt;/p&gt;&lt;p&gt;
On July 9th (Thursday) I'm going to broadcast my speech and discussions from London via a Webinar using WebEx. &lt;a href="http://www.day.com/content/day/en/registration/webinars/cq5-cloud-jul0909.html" target="_blank"&gt;&lt;b&gt;Feel free to sign-up to get the details to join the Webinar&lt;/b&gt;&lt;/a&gt;.
&lt;/p&gt;&lt;p&gt;
Personally, I believe the most exciting part of the cloud computing era are the new ways to solve challenges accepting the fact that almost unlimited computing resources are at your disposal (at a fairly decent price).
&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/contentGoesHereBlog?a=wht4O0E7C_8:zIS7EjWlkkA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/contentGoesHereBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/contentGoesHereBlog?a=wht4O0E7C_8:zIS7EjWlkkA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/contentGoesHereBlog?i=wht4O0E7C_8:zIS7EjWlkkA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/contentGoesHereBlog?a=wht4O0E7C_8:zIS7EjWlkkA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/contentGoesHereBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/contentGoesHereBlog?a=wht4O0E7C_8:zIS7EjWlkkA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/contentGoesHereBlog?i=wht4O0E7C_8:zIS7EjWlkkA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/contentGoesHereBlog/~4/wht4O0E7C_8" height="1" width="1"/&gt;</description>
	<pubDate>29 Jun 2009 00:00:01 GMT</pubDate>
	<author>dev@day.com (Cedric Huesler)</author>
	
			<category>announcements</category> <category>cloud</category> <category>cq5</category> 	
	
	<feedburner:origLink>http://dev.day.com/microsling/content/blogs/main/cloudann.html</feedburner:origLink></item>
	
	<item>
	<title>Jazoon 09 Slides</title>	
	<link>http://feedproxy.google.com/~r/contentGoesHereBlog/~3/5iHncMAScms/jazoon09slides.html</link>
	<guid isPermaLink="false">http://dev.day.com/microsling/content/blogs/main/jazoon09slides.html</guid>
	<description>&lt;p&gt;
In case you missed the &lt;a href="http://dev.day.com/microsling/content/blogs/main/jazoon09ann.html"&gt;Day talks&lt;/a&gt; at &lt;a href="http://jazoon.com/"&gt;Jazoon&lt;/a&gt; conference please find the slides below:
&lt;/p&gt;



&lt;h4&gt;Thomas Mueller: Testing Zen&lt;/h4&gt;

&lt;div style="width:425px;text-align:left" id="__ss_1653542"&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=testingzen-090629050336-phpapp01&amp;stripped_title=testing-zen" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=testingzen-090629050336-phpapp01&amp;stripped_title=testing-zen" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;documents&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/day"&gt;day&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;


&lt;h4&gt;Thomas Mueller: Java Persistence Frameworks&lt;/h4&gt;


&lt;div style="width:425px;text-align:left" id="__ss_1653539"&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=javapersistenceframeworks-090629050241-phpapp02&amp;stripped_title=java-persistence-frameworks" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=javapersistenceframeworks-090629050241-phpapp02&amp;stripped_title=java-persistence-frameworks" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;documents&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/day"&gt;day&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;






&lt;h4&gt;
Michael Marth and Michael D&amp;uuml;rig: Scalable Agile Web Development: REST meets JCR meets OSGI&lt;/h4&gt;

&lt;div style="width:425px;text-align:left" id="__ss_1653454"&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=jazoon-2009-090629043757-phpapp02&amp;stripped_title=jazoon-2009" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=jazoon-2009-090629043757-phpapp02&amp;stripped_title=jazoon-2009" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/mmarth"&gt;mmarth&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;



&lt;h4&gt;
Michael D&amp;uuml;rig and Michael Marth: Building RESTful Web Applications with Scala for Sling&lt;/h4&gt;

&lt;div style="width:425px;text-align:left" id="__ss_1653585"&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=scala4sling-090629051146-phpapp02&amp;stripped_title=scala4sling" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=scala4sling-090629051146-phpapp02&amp;stripped_title=scala4sling" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/day"&gt;day&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/contentGoesHereBlog?a=5iHncMAScms:9EZfb2ZbwuE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/contentGoesHereBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/contentGoesHereBlog?a=5iHncMAScms:9EZfb2ZbwuE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/contentGoesHereBlog?i=5iHncMAScms:9EZfb2ZbwuE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/contentGoesHereBlog?a=5iHncMAScms:9EZfb2ZbwuE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/contentGoesHereBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/contentGoesHereBlog?a=5iHncMAScms:9EZfb2ZbwuE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/contentGoesHereBlog?i=5iHncMAScms:9EZfb2ZbwuE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/contentGoesHereBlog/~4/5iHncMAScms" height="1" width="1"/&gt;</description>
	<pubDate>29 Jun 2009 00:00:01 GMT</pubDate>
	<author>dev@day.com (Michael Marth)</author>
	
			<category>sling</category> <category>jcr</category> <category>testing</category> 	
	
	<feedburner:origLink>http://dev.day.com/microsling/content/blogs/main/jazoon09slides.html</feedburner:origLink></item>
	
	<item>
	<title>[ANN] Day engineers at the OSGi DevCon (updated)</title>	
	<link>http://feedproxy.google.com/~r/contentGoesHereBlog/~3/TRoLG2Vzd_E/osgicon09ann.html</link>
	<guid isPermaLink="false">http://dev.day.com/microsling/content/blogs/main/osgicon09ann.html</guid>
	<description>Starting today the conference &lt;a href="http://www.osgi.org/DevConEurope2009/HomePage"&gt;OSGi DevCon Europe 2009&lt;/a&gt; takes place in Zurich (in association with the &lt;a href="http://jazoon.com/"&gt;Jazoon conference&lt;/a&gt;). Two talks will be given by Day's OSGi experts:

&lt;h4&gt;Felix Meschberger: Declarative Services: Dependency Injection OSGi style&lt;/h4&gt;

&lt;img src="/microsling/content/blogs/main/osgicon09ann/docroot/felix.png" style="float:left; margin-right:20px; margin-bottom:10px"/&gt;

&lt;p&gt;&lt;b&gt;2009-06-22, 11:20&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
Applications in general and OSGi applications in particular consist of a host of different modules and services which need to be bound together to form the actual application. In a traditional application services are generally bound by calling factories or instantiating the service classes or accessing a registry of services. In recent years a new buzz-word entered the arena: Dependency Injection. With dependency injection services are provided to the service clients as they become available. Likewise configuration is injected into the services, that is services do manage their configuration themselves. The OSGi specification for dependency injection is the Declarative Services specification: The components are declared and indicate what services they use and require and may in addition be provided with configuration. This talk shows the benefit of using Declarative Services and how the Apache Felix Maven SCR Plugin simplifies the service declaration even more. 
&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Update: &lt;/b&gt;find Felix' slides below&lt;/p&gt;

&lt;div style='width:425px;text-align:left'&gt;&lt;object style='margin:0px' width='425' height='355'&gt;&lt;param name='movie' value='http://static.slideshare.net/swf/ssplayer2.swf?doc=ds-090621143745-phpapp01&amp;stripped_title=declarative-services-dependency-injection-osgi-style' /&gt;&lt;param name='allowFullScreen' value='true'/&gt;&lt;param name='allowScriptAccess' value='always'/&gt;&lt;embed src='http://static.slideshare.net/swf/ssplayer2.swf?doc=ds-090621143745-phpapp01&amp;stripped_title=declarative-services-dependency-injection-osgi-style' type='application/x-shockwave-flash' allowscriptaccess='always' allowfullscreen='true' width='425' height='355'&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;

&lt;h4&gt;Betrand Delacretaz: Tales from the OSGi trenches&lt;/h4&gt;

&lt;img src="/microsling/content/blogs/main/osgicon09ann/docroot/bertrand.jpg" style="float:left; margin-right:20px; margin-bottom:10px"/&gt;

&lt;p&gt;&lt;b&gt;2009-06-22, 14:60&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
In this talk we share our experience of using OSGi for a major rewrite of Day's family of content management products. After more than two years working with OSGi, the impact on our products, developers, customers and service people is very high, in a positive way. OSGi is no silver bullet either. The extreme modularization and dynamic service deployment features of OSGi make our products much more robust and maintainable, but the costs associated with changing people's way of thinking about code and modules, and with testing and debugging highly dynamic systems, must not be underestimated. Based on real-life code samples, we will show how OSGi is used at several levels in our products, from low-level interactions with the framework to very simple creation of (compiled or scripted) services. We will also present some of the automated testing techniques used in our project. Sharing our experience will help you decide if OSGi is for you, and more importantly at which level you should use it. 
&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/contentGoesHereBlog?a=TRoLG2Vzd_E:NuvVDyUIcvY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/contentGoesHereBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/contentGoesHereBlog?a=TRoLG2Vzd_E:NuvVDyUIcvY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/contentGoesHereBlog?i=TRoLG2Vzd_E:NuvVDyUIcvY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/contentGoesHereBlog?a=TRoLG2Vzd_E:NuvVDyUIcvY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/contentGoesHereBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/contentGoesHereBlog?a=TRoLG2Vzd_E:NuvVDyUIcvY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/contentGoesHereBlog?i=TRoLG2Vzd_E:NuvVDyUIcvY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/contentGoesHereBlog/~4/TRoLG2Vzd_E" height="1" width="1"/&gt;</description>
	<pubDate>22 Jun 2009 00:00:01 GMT</pubDate>
	<author>dev@day.com (Michael Marth)</author>
	
			<category>announcements</category> <category>osgi</category> 	
	
	<feedburner:origLink>http://dev.day.com/microsling/content/blogs/main/osgicon09ann.html</feedburner:origLink></item>
	
	<item>
	<title>[ANN] Meet us at Jazoon 09</title>	
	<link>http://feedproxy.google.com/~r/contentGoesHereBlog/~3/JkmzeQUMPrY/jazoon09ann.html</link>
	<guid isPermaLink="false">http://dev.day.com/microsling/content/blogs/main/jazoon09ann.html</guid>
	<description>&lt;p&gt;
This year's &lt;a href="http://jazoon.com/"&gt;Jazoon&lt;/a&gt; conference is to take place next week in Zurich, Switzerland. Some of the presentations will given by speakers from Day. Hope to see you there:
&lt;/p&gt;



&lt;h4&gt;Thomas Mueller: Testing Zen&lt;/h4&gt;

&lt;img src="/microsling/content/blogs/main/jazoon09ann/docroot/thomas.jpg" style="float:left; margin-right:20px; margin-bottom:10px"/&gt;

&lt;p&gt;&lt;b&gt;Technical short talk, Tuesday, 2009-06-23, 16:30&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Test driven development not only improves code quality, it also let's you refactor or replace legacy source code with little risk. Testing also saves time because the earlier a problem is found, the faster and easier it can be corrected.
&lt;br/&gt;&lt;br/&gt;
Unfortunately writing tests is boring. There are many possible use cases that should be tested. Writing tests for every feature is a lot of work, and manually writing tests for all possible combinations is almost impossible. 
&lt;br/&gt;&lt;br/&gt;
However with fuzz testing (randomized testing), you don't need to write much, and still get very good results. This talk explains how a typical randomized test looks like, and how to combine it with other techniques such as unit tests, integration tests, and measuring code coverage.
&lt;br/&gt;&lt;br/&gt;
Automated unit tests should run quickly. Many applications use a database, and in many cases this database is the bottleneck when running tests. This talk shows how an embedded in-memory Java database speeds up your tests, and can speed up development as well.
&lt;/p&gt;

&lt;h4&gt;Thomas Mueller: Java Persistence Frameworks&lt;/h4&gt;

&lt;img src="/microsling/content/blogs/main/jazoon09ann/docroot/thomas.jpg" style="float:left; margin-right:20px; margin-bottom:10px"/&gt;

&lt;p&gt;&lt;b&gt;Technical short talk, Wednesday, 2009-06-24, 16:00&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
In Java, there are many ways to access relational databases. Today, there are almost as many persistence frameworks as there are web frameworks. 
&lt;br/&gt;&lt;br/&gt;
Some frameworks are based on a standardized interface like JDO and JPA, some have their own API. Some just simplify using JDBC and SQL. Most frameworks need XML configuration, but not all of them. Some provide a string based query language similar to SQL, while some newer ones don't.
&lt;br/&gt;&lt;br/&gt;
Todays main technologies are:
&lt;br/&gt;&lt;br/&gt;
- SQL using and the JDBC API&lt;br/&gt;
- JPA (specially Hibernate, JPOX, OpenJPA)&lt;br/&gt;
- Apache iBATIS&lt;br/&gt;
- JDO (JPOX)&lt;br/&gt;
- Apache Cayenne&lt;br/&gt;
- Apache Commons DBUtils
&lt;br/&gt;&lt;br/&gt;
We list the market share of each technology, and discuss the key differences.
&lt;br/&gt;&lt;br/&gt;
Last year a whole new breed of persistence frameworks appeared: Frameworks with a fluent API and an integrated DSL (domain specific language); frameworks that don't need strings for dynamic queries. This new technology was strongly influenced by Microsoft's LINQ. Those frameworks support compile-time type-checking, auto-complete in the IDE, and protect against code injection. They better bridge the "object-relational impedance mismatch" than older frameworks, but they are not ready for prime time yet. 
&lt;br/&gt;&lt;br/&gt;
SQL injection is the biggest server-side security vulnerability today. SQL injection is a subset of code injection. Unfortunately, most persistence frameworks don't protect against code injection. The talk gives examples how to inject code and how to protect against it.
&lt;/p&gt;





&lt;h4&gt;
Michael Marth: Scalable Agile Web Development: REST meets JCR meets OSGI&lt;/h4&gt;

&lt;img src="/microsling/content/blogs/main/jazoon09ann/docroot/michaelm.jpg" style="float:left; margin-right:20px; margin-bottom:10px"/&gt;

&lt;p&gt;&lt;b&gt;Technical long talk, Thursday, 2009-06-25, 13:30&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
This session is a very hands-on lab that shows how a real web application is developed from scratch in a very agile fashion leveraging a heavy-weight enterprise ready back-end yet allowing for unprecedented agility in development  in building rest-style web applications. Thinking of a classic j2ee stack this may sound like a contradiction.
&lt;br/&gt;&lt;br/&gt;
Agility of development begins with the amount of tooling and setup we need to get started, so expect to see the entire walk-through from installation of the server software to the development of a complete application within the time constraints of the session.
&lt;br/&gt;&lt;br/&gt;
Agenda:&lt;br/&gt;
(1) Web architecture, think outside the box.&lt;br/&gt;
(2) Meet: apache sling.&lt;br/&gt;
(3) Building a real-life webapp from scratch.
&lt;/p&gt;


&lt;h4&gt;
Michael D&amp;uuml;rig and Michael Marth: Building RESTful Web Applications with Scala for Sling&lt;/h4&gt;

&lt;img src="/microsling/content/blogs/main/jazoon09ann/docroot/michaeld.jpg" style="float:left; margin-right:20px; margin-bottom:10px"/&gt;

&lt;p&gt;&lt;b&gt;Jazoon Cutting-Edge, Thursday, 2009-06-25, 16:00&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
In this session we demonstrate how to build RESTful web applications for the Sling framework using the Scala programming language.
&lt;br/&gt;&lt;br/&gt;
Apache Sling is a web application framework which eases development of content centric applications. Sling is based on REST principles and uses a JCR content repository (JSR-170/JSR-283) for storage. Based on the JSR 223 specification (Scripting for the Java Platform) it integrates various scripting languages as OSGi bundles. 
&lt;br/&gt;&lt;br/&gt;
Scala is a scalable programming language for the JVM which is fully interoperable with Java. It is designed to express common programming patterns in a concise, elegant, and type safe way. Scala smoothly bridges the gap between object oriented and functional paradigms. Despite being strongly typed, Scala has the touch and feel of a genuine scripting language. It has the ability to infer types of expressions rather than relying on the programmer to explicitly declare them. Scala thus combines the best of the two worlds: flexible scripting and strong tool support e.g. documentation, safe refactoring and fail fast compilation. Its flexible syntax lets programmers easily define their own internal DSLs, effectively extending the language without leaving it. 
&lt;br/&gt;&lt;br/&gt;
In our session, we show how to take advantage of Scala to create RESTful web applications with Sling. We use its DSL capability and support for XML literals to create type safe web site templates. In contrast to conventional web site template mechanisms (e.g. JSP), we do not rely on a preprocessor but rather use pure Scala code. 
&lt;br/&gt;&lt;br/&gt;
Session outline:&lt;br/&gt;
- Short introduction to Apache Sling. Just enough to get everyone started.&lt;br/&gt;
- Short overview of Scala and its relevant features.&lt;br/&gt;
- Demonstration of how Scala can be used with Sling to create RESTful web applications.&lt;br/&gt;
- Q&amp;A
&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/contentGoesHereBlog?a=JkmzeQUMPrY:86_cskixwrA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/contentGoesHereBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/contentGoesHereBlog?a=JkmzeQUMPrY:86_cskixwrA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/contentGoesHereBlog?i=JkmzeQUMPrY:86_cskixwrA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/contentGoesHereBlog?a=JkmzeQUMPrY:86_cskixwrA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/contentGoesHereBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/contentGoesHereBlog?a=JkmzeQUMPrY:86_cskixwrA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/contentGoesHereBlog?i=JkmzeQUMPrY:86_cskixwrA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/contentGoesHereBlog/~4/JkmzeQUMPrY" height="1" width="1"/&gt;</description>
	<pubDate>18 Jun 2009 00:00:01 GMT</pubDate>
	<author>dev@day.com (Michael Marth)</author>
	
			<category>announcements</category> <category>sling</category> <category>jcr</category> 	
	
	<feedburner:origLink>http://dev.day.com/microsling/content/blogs/main/jazoon09ann.html</feedburner:origLink></item>
	
	<item>
	<title>Sling graduates from Incubator</title>	
	<link>http://feedproxy.google.com/~r/contentGoesHereBlog/~3/P0kisa2VZNc/slinggraduation.html</link>
	<guid isPermaLink="false">http://dev.day.com/microsling/content/blogs/main/slinggraduation.html</guid>
	<description>&lt;p&gt;Excellent news: &lt;a href="http://incubator.apache.org/sling/site/index.html"&gt;Apache Sling&lt;/a&gt; has just graduated from the Apache incubator and is now a top-level project. ASF Board member and Sling committer Bertrand Delacretaz &lt;a href="http://dev.day.com/discussion-groups/content/lists.go/yquqjjrz"&gt;announced the news on the Sling mailing list&lt;/a&gt;:
&lt;/p&gt;
&lt;div class="blockquote"&gt;
&lt;p&gt;
I'm pleased to announce that our Board of Directors, at yesterday's meeting, approved the graduation of Sling as a top-level project. I abstained from that vote (as working on Sling is part of my job), so it's not my fault ;-)&lt;br&gt;&lt;br&gt;

Felix Meschberger is the chair of the new PMC, composed of&lt;br&gt;&lt;br&gt;

 * Alexandru Popescu &amp;lt;apopescu&amp;gt;&lt;br&gt;
* Bertrand Delacretaz &amp;lt;bdelacretaz&amp;gt;&lt;br&gt;
* Christophe Lombart &amp;lt;clombart&amp;gt;&lt;br&gt;
* Carsten Ziegeler &amp;lt;cziegeler&amp;gt;&lt;br&gt;
* Felix Meschberger &amp;lt;fmeschbe&amp;gt;&lt;br&gt;
* Gianugo Rabellino &amp;lt;gianugo&amp;gt;&lt;br&gt;
* Padraic Hannon &amp;lt;hannonpi&amp;gt;&lt;br&gt;
* Juan José Vázquez Delgado &amp;lt;juanjo&amp;gt;&lt;br&gt;
* Karl Pauls &amp;lt;pauls&amp;gt;&lt;br&gt;
* Vidar Ramdal &amp;lt;vramdal&amp;gt;
&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;
Congratulations! The graduation is well deserved.
&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/contentGoesHereBlog?a=P0kisa2VZNc:z7skczfMPvk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/contentGoesHereBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/contentGoesHereBlog?a=P0kisa2VZNc:z7skczfMPvk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/contentGoesHereBlog?i=P0kisa2VZNc:z7skczfMPvk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/contentGoesHereBlog?a=P0kisa2VZNc:z7skczfMPvk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/contentGoesHereBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/contentGoesHereBlog?a=P0kisa2VZNc:z7skczfMPvk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/contentGoesHereBlog?i=P0kisa2VZNc:z7skczfMPvk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/contentGoesHereBlog/~4/P0kisa2VZNc" height="1" width="1"/&gt;</description>
	<pubDate>18 Jun 2009 00:00:01 GMT</pubDate>
	<author>dev@day.com (Michael Marth)</author>
	
			<category>sling</category> 	
	
	<feedburner:origLink>http://dev.day.com/microsling/content/blogs/main/slinggraduation.html</feedburner:origLink></item>
	
	<item>
	<title>[LOTD] Spring JCR Extension 0.9</title>	
	<link>http://feedproxy.google.com/~r/contentGoesHereBlog/~3/7rvqSC4oUnU/lotd20090617.html</link>
	<guid isPermaLink="false">http://dev.day.com/microsling/content/blogs/main/lotd20090617.html</guid>
	<description>&lt;p&gt;
&lt;a href="http://salvatoreincandela.blogspot.com/"&gt;Salvatore Incandela&lt;/a&gt;, committer of the Spring extension for JCR, left &lt;a href="http://dev.day.com/microsling/content/blogs/main/lotd20081223.html"&gt;a comment on a previous post&lt;/a&gt; on dev.day.com where he announces &lt;a href="http://forum.springsource.org/showthread.php?t=72563"&gt;the release of version 0.9&lt;/a&gt;. Since many of Day's customers and partners use Spring (and JCR), I am happy to know that the extension is actively maintained.
&lt;/p&gt;&lt;p&gt;
(thanks for the pointer, Salvatore)
&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/contentGoesHereBlog?a=7rvqSC4oUnU:dIdzca7FSK0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/contentGoesHereBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/contentGoesHereBlog?a=7rvqSC4oUnU:dIdzca7FSK0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/contentGoesHereBlog?i=7rvqSC4oUnU:dIdzca7FSK0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/contentGoesHereBlog?a=7rvqSC4oUnU:dIdzca7FSK0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/contentGoesHereBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/contentGoesHereBlog?a=7rvqSC4oUnU:dIdzca7FSK0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/contentGoesHereBlog?i=7rvqSC4oUnU:dIdzca7FSK0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/contentGoesHereBlog/~4/7rvqSC4oUnU" height="1" width="1"/&gt;</description>
	<pubDate>17 Jun 2009 00:00:01 GMT</pubDate>
	<author>dev@day.com (Michael Marth)</author>
	
			<category>link of the day</category> <category>jcr</category> <category>spring</category> 	
	
	<feedburner:origLink>http://dev.day.com/microsling/content/blogs/main/lotd20090617.html</feedburner:origLink></item>
	
	<item>
	<title>Note on nodes and files</title>	
	<link>http://feedproxy.google.com/~r/contentGoesHereBlog/~3/KhEhztue_Vk/jcrnodesfiles.html</link>
	<guid isPermaLink="false">http://dev.day.com/microsling/content/blogs/main/jcrnodesfiles.html</guid>
	<description>&lt;p&gt;
Reading "&lt;a href="http://www.cmswire.com/cms/enterprise-cms/gilbane-sf-content-integration-standards-cmis-jsr170-jsr283-004762.php"&gt;Content Integration Standards -- CMIS, JSR-170, JSR-283&lt;/a&gt;" I stumbled over the quote
&lt;/p&gt;&lt;div class="blockquote"&gt;&lt;p&gt;
The conclusion was that JSR-170 is not the best fit for WCM with its nodes and properties equaling to folders and files. In Devnani’s opinion, it fits document management better.
&lt;/p&gt;&lt;/div&gt;&lt;p&gt;
Apparently, there is some confusion around what nodes and properties are in a Java Content Repository. Let's shed some light on this:
&lt;/p&gt;&lt;p&gt;
First of all, there are two &lt;em&gt;specific&lt;/em&gt; node types defined in JSR-170: files and folders. These are node types that behave as you would expect it from a file system. For example, the node type "file" has specific properties for the creation date and the binary stream.
&lt;/p&gt;&lt;p&gt;
If your content is nothing but files and folders (for example because your application is document management) you would use these node types. As such, in Java Content Repositories files, folders and document management-type applications are special cases of a &lt;em&gt;more generic&lt;/em&gt; case.
&lt;/p&gt;&lt;p&gt;
This more generic case are node types that have different properties than the ones described above. In the most flexible case "unstructured node type" the node can accomodate for any string, date, binary, boolean, etc property. One node could for example have two binary stream properties (thumbnail and full-length). This covers exactly the use case web content management where content is stored on a fine-granular model. The fine-granular model enables the presentation layer to do things like displaying an article in teaser format.
&lt;/p&gt;
&lt;p&gt;
In summary the situation is like this:
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Files and folders are special node types in JCR.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On a modelling level DM is a special case of WCM (I recognize that on a application requirements level DM and WCM diverge).&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/p&gt;
&lt;p&gt;
As a consequence I would rewrite the quote from above as:
&lt;/p&gt;&lt;div class="blockquote"&gt;&lt;p&gt;
JSR-170 is a very good fit for WCM because the nodes and properties store content in a fine-granular way. Since folders and files are just special node types it can be equally well used for document management.
&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;
The Jackrabbit Wiki has &lt;a href="http://wiki.apache.org/jackrabbit/JcrLinks"&gt;a list of JCR applications&lt;/a&gt; that are either in the content management or the document management domain. As a side-note: JCR is flexible enough to provide infrastructure for completely different application domains as well, &lt;a href="http://dev.day.com/microsling/content/blogs/main/jcrisformore.html"&gt;here is a list of some of them&lt;/a&gt;.
&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/contentGoesHereBlog?a=KhEhztue_Vk:xKwlnorChNE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/contentGoesHereBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/contentGoesHereBlog?a=KhEhztue_Vk:xKwlnorChNE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/contentGoesHereBlog?i=KhEhztue_Vk:xKwlnorChNE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/contentGoesHereBlog?a=KhEhztue_Vk:xKwlnorChNE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/contentGoesHereBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/contentGoesHereBlog?a=KhEhztue_Vk:xKwlnorChNE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/contentGoesHereBlog?i=KhEhztue_Vk:xKwlnorChNE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/contentGoesHereBlog/~4/KhEhztue_Vk" height="1" width="1"/&gt;</description>
	<pubDate>08 Jun 2009 00:00:01 GMT</pubDate>
	<author>dev@day.com (Michael Marth)</author>
	
			<category>fudbusting</category> <category>jcr</category> <category>jsr-170</category> 	
	
	<feedburner:origLink>http://dev.day.com/microsling/content/blogs/main/jcrnodesfiles.html</feedburner:origLink></item>
	
	<item>
	<title>Slick JCR Explorer based on JQuery and Sling</title>	
	<link>http://feedproxy.google.com/~r/contentGoesHereBlog/~3/jY1JEsvN27Q/slingexplorer.html</link>
	<guid isPermaLink="false">http://dev.day.com/microsling/content/blogs/main/slingexplorer.html</guid>
	<description>&lt;p&gt;
&lt;a href="http://oslutions.com/"&gt;Renaud Richardet&lt;/a&gt; (who &lt;a href="http://dev.day.com/microsling/content/blogs/main/jcrcupwinners.html"&gt;won a price in last year's JCR cup&lt;/a&gt;) has posted a very slick repository explorer to &lt;a href="https://issues.apache.org/jira/browse/SLING-993"&gt;the Sling Jira&lt;/a&gt;. It is based on JQuery and has the usual explorer features like CRUD for nodes and properties. However, what is really neat: the actual code is about 100 lines of Javascript (including blank lines).
&lt;/p&gt;&lt;p&gt;
In case you want to check it: copy the files into /apps/sling and make sure that the mime types of the html files are correct (e.g. by fixing the property using CRX Explorer :). Then point your browser to http://localhost:7402/apps/sling/servlet/default/explorer.esp (the port depends on your installation, of course).
&lt;/p&gt;&lt;p&gt;
&lt;img src="/microsling/content/blogs/main/slingexplorer/docroot/screenshot.jpg"/&gt;
&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/contentGoesHereBlog?a=jY1JEsvN27Q:7Cv75I9yBlQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/contentGoesHereBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/contentGoesHereBlog?a=jY1JEsvN27Q:7Cv75I9yBlQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/contentGoesHereBlog?i=jY1JEsvN27Q:7Cv75I9yBlQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/contentGoesHereBlog?a=jY1JEsvN27Q:7Cv75I9yBlQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/contentGoesHereBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/contentGoesHereBlog?a=jY1JEsvN27Q:7Cv75I9yBlQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/contentGoesHereBlog?i=jY1JEsvN27Q:7Cv75I9yBlQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/contentGoesHereBlog/~4/jY1JEsvN27Q" height="1" width="1"/&gt;</description>
	<pubDate>05 Jun 2009 00:00:01 GMT</pubDate>
	<author>dev@day.com (Michael Marth)</author>
	
			<category>sling</category> 	
	
	<feedburner:origLink>http://dev.day.com/microsling/content/blogs/main/slingexplorer.html</feedburner:origLink></item>
	
<pubDate>01 Jul 2009 00:00:01 GMT</pubDate>
</channel>
</rss>
