<?xml version="1.0"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">

<channel>
	<title>Planet Hippo</title>
	<link>http://planet.hippocms.org/</link>
	<language>en</language>
	<description>Planet Hippo - http://planet.hippocms.org/</description>

<item>
	<title>Arje Cahn (Hippo): What's wrong with portals?</title>
	<guid>http://blogs.onehippo.org/arje/2010/03/whats_wrong_with_portals.html</guid>
	<link>http://blogs.onehippo.org/arje/2010/03/whats_wrong_with_portals.html</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://www.cmswire.com/cms/enterprise-cms/5-things-to-consider-when-integrating-your-content-management-system-and-portal-006789.php&quot;&gt;This post&lt;/a&gt; clearly describes the problem that I see with all current portal implementations: they treat content as “just another application running</description>
	<pubDate>Thu, 11 Mar 2010 08:50:36 +0000</pubDate>
</item>
<item>
	<title>Vijay Kiran (Hippo): Updated: Related Documents Plugin for Hippo CMS 7.3</title>
	<guid>http://www.vijaykiran.com/?p=1660</guid>
	<link>http://www.vijaykiran.com/relateddocs-plugin-hippo-cms-73/</link>
	<description>&lt;p&gt;&lt;a rel=&quot;lightbox&quot; href=&quot;http://www.vijaykiran.com/wp-content/uploads/2010/03/realated-docs.png&quot;&gt;&lt;img class=&quot;aligncenter size-medium wp-image-1659&quot; title=&quot;realated-docs&quot; src=&quot;http://www.vijaykiran.com/wp-content/uploads/2010/03/realated-docs.png&quot; alt=&quot;&quot; width=&quot;450&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;http://relateddocs.forge.onehippo.org/&quot; target=&quot;_blank&quot;&gt;Related Documents plugin&lt;/a&gt; for Hippo CMS allows the editors of the documents to select &amp;#8220;related&amp;#8221; documents of the current document. The plugin provides automatic suggestions using Similarity Search and Referring documents. Also, the document editors/authors can hand-pick the related documents.&lt;/p&gt;
&lt;p&gt;The plugin is now updated for &lt;a href=&quot;http://www.onehippo.org/cms7/about/release_notes/Release+7.3.html&quot; target=&quot;_blank&quot;&gt;CMS 7.3&lt;/a&gt;(released last week). You can get the plugin from the Hippo Forge, the demo project is also now updated to 7.3. If you are already using the plugin, then there are no changes required in the plugin configuration to make it work with 7.3. Just update the plugin version in your pom.xml to 2.05.00 and you&amp;#8217;ll be good to go.&lt;/p&gt;</description>
	<pubDate>Mon, 08 Mar 2010 15:28:43 +0000</pubDate>
	<dc:creator>Vijay Kiran</dc:creator>
</item>
<item>
	<title>Vijay Kiran (Hippo): Smart Console now on Hippo Forge</title>
	<guid>http://www.vijaykiran.com/?p=1623</guid>
	<link>http://www.vijaykiran.com/smart-console-now-on-hippo-forge/</link>
	<description>&lt;p&gt;Finally I got sometime to move the &lt;a href=&quot;http://forge.onehippo.org/projects/smartconsole/&quot; target=&quot;_blank&quot;&gt;Smart Console&lt;/a&gt; project out of sandbox. The project is now hosted at &lt;a href=&quot;http://forge.onehippo.org&quot; target=&quot;_blank&quot;&gt;Hippo Forge&lt;/a&gt;. There are two things that are aimed with this project . One &amp;#8211; to provide a simple, user friendly JCR Explorer and Console for any repository. Obviously, I&amp;#8217;ll add Hippo Repository specific features to the project soon. The second is experimenting with REST interface for the Repository. I&amp;#8217;m using JBoss RESTEasy for providing the REST service implementation and ExtJS as the front end.&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;lightbox&quot; href=&quot;http://www.vijaykiran.com/wp-content/uploads/2009/09/SafariScreenCapture001.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-medium wp-image-1336&quot; title=&quot;SafariScreenCapture001&quot; src=&quot;http://www.vijaykiran.com/wp-content/uploads/2009/09/SafariScreenCapture001-300x210.jpg&quot; alt=&quot;&quot; width=&quot;300&quot; height=&quot;210&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Currenlty the project is in pre-alpha, and during the next couple of weekends I&amp;#8217;ll try to add more features &amp;#8211; most , if not all &amp;#8211; buttons in the UI do nothing at the moment. But the application in its current state can connect to the repository and display the node tree, and node properties (in a tab) when clicked.&lt;/p&gt;
&lt;p&gt;Stay tuned for updates, or if you want to help, just join the project at &lt;a href=&quot;http://forge.onehippo.org/projects/smartconsole/&quot; target=&quot;_blank&quot;&gt;Forge&lt;/a&gt;. Though the project is still in cowboy-coding phase, contributions are welcome, as always.&lt;/p&gt;
&lt;p&gt;To see it action, check out the code and run mvn jetty:run. Make sure that your Hippo CMS/Repository is running on localhost.&lt;/p&gt;</description>
	<pubDate>Mon, 01 Mar 2010 21:52:06 +0000</pubDate>
	<dc:creator>Vijay Kiran</dc:creator>
</item>
<item>
	<title>Vijay Kiran (Hippo): The First Golden Hippo</title>
	<guid>http://www.vijaykiran.com/?p=1611</guid>
	<link>http://www.vijaykiran.com/the-first-golden-hippo/</link>
	<description>&lt;p&gt;Yesterday I joined the hippo professional services team for a fun filled team event with go karting evening and the first ever Golden Hippo Award event. The evening started with go karting fun, we were competing with each other. This was the first time I ever did this, I failed miserably in the</description>
	<pubDate>Sat, 27 Feb 2010 12:11:28 +0000</pubDate>
	<dc:creator>Vijay Kiran</dc:creator>
</item>
<item>
	<title>Tjeerd D. Brenninkmeijer (Hippo): Five golden rings, four golden Hippos and one platinum Hippo</title>
	<guid>http://blogs.onehippo.org/tjeerd/2010/02/five_golden_rings_four_golden.html</guid>
	<link>http://blogs.onehippo.org/tjeerd/2010/02/five_golden_rings_four_golden.html</link>
	<description>Today we will leave the office by taxi to a secret 'kart' location where we will be treated to some (non alcoholic) drinks, some &quot;bittergarnituur&quot; and a presentation by Stefan.  Later on we will get a short introduction in how a kart works (probably only useful for myself) and do a training lap.
Thr</description>
	<pubDate>Fri, 26 Feb 2010 14:18:51 +0000</pubDate>
</item>
<item>
	<title>Jeroen Reijn (Hippo): Jboss ModeShape: A federating JCR repository</title>
	<guid>tag:blogger.com,1999:blog-2962867622850517744.post-58432697545718137</guid>
	<link>http://blog.jeroenreijn.com/2010/02/jboss-modeshape-federating-jcr.html</link>
	<description>Some interesting stuff is happing in the JCR community. With &lt;a href=&quot;http://jackrabbit.apache.org/&quot;&gt;Apache Jackrabbit 2.0.0&lt;/a&gt; out (with JCR 2.0) and an interesting project called &lt;a href=&quot;http://www.jboss.org/modeshape&quot;&gt;Jboss ModeShape&lt;/a&gt; almost reaching it's final 1.0 release. ModeShape recently came to my attention and it seems an interesting project. In this post I will give a short introduction of ModeShape and it's features.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;What's ModeShape?&lt;/h2&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://bits.ohloh.net/attachments/28896/modeshape_icon_64px_med.png&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://bits.ohloh.net/attachments/28896/modeshape_icon_64px_med.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;ModeShape is a Java Content Repository implementation which will support both &lt;a href=&quot;http://jcp.org/en/jsr/detail?id=170&quot;&gt;JSR-170&lt;/a&gt; and &lt;a href=&quot;http://jcp.org/en/jsr/detail?id=283&quot;&gt;JSR-283&lt;/a&gt;. It's not trying to be just another isolated content repository, but a repository with a strong focus on content federation. In other words: ModeShape's main goal is to provide a single JCR interface for accessing and searching content coming from different back-end systems. These systems can even be of different sorts. You might think of a ModeShape repository containing information from a relation database, a file system and perhaps even another Java content repository like for instance &lt;a href=&quot;http://www.onehippo.org/&quot;&gt;Hippo CMS 7&lt;/a&gt;'s content repository. You can configure these sources of information with the help of ModeShapes connector framework.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Connectors&lt;/h2&gt;&lt;p&gt;One of ModeShape's key concepts is the concept of connectors. A connector will allow you to connect to a certain type of back-end system and&amp;nbsp;transparently&amp;nbsp;expose the information inside the ModeShape repository. In the current 1.0.0 beta release there are already a couple of out of the box connectors available:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;In-Memory Connector&lt;/li&gt;&lt;li&gt;File System Connector&lt;/li&gt;&lt;li&gt;JPA Connector&lt;/li&gt;&lt;li&gt;Federation Connector&lt;/li&gt;&lt;li&gt;Subversion Connector&lt;/li&gt;&lt;li&gt;JBoss Cache Connector&lt;/li&gt;&lt;li&gt;Infinispan Connector&lt;/li&gt;&lt;li&gt;JDBC Metadata Connector&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;That's already quite a few, but for the upcoming release they also have plans for expanding the set of&amp;nbsp;connectors with for instance a JCR connector, which I find quite interesting myself, because that would allow you to expose other JCR implementations like Hippo CMS 7 (Apache JackRabbit) in combination with other systems through one JCR interface.&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_hd6Y7yyFK7E/S2rRrGuaTNI/AAAAAAAAAXw/fFDuXs75Ykc/s1600-h/modeshap-connectors.png&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://3.bp.blogspot.com/_hd6Y7yyFK7E/S2rRrGuaTNI/AAAAAAAAAXw/fFDuXs75Ykc/s320/modeshap-connectors.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;There are many other content solutions out there, so if you can't find a connector that suits your need, you can of course write one yourself and perhaps donate it to the ModeShape project.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Sequencers&lt;/h2&gt;&lt;p&gt;One of&amp;nbsp;ModeShapes other&amp;nbsp;interesting features is the concept of sequencers. With sequencers you can gather additional information from a certain item inside the repository and store that extracted information in the repository. ModeShape has quite a few sequencers out of the box:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Compact Node Type (CND) Sequencer&lt;/li&gt;&lt;li&gt;XML Document Sequencer&lt;/li&gt;&lt;li&gt;ZIP File Sequencer&lt;/li&gt;&lt;li&gt;Microsoft Office Document Sequencer&lt;/li&gt;&lt;li&gt;Java Source File Sequencer&lt;/li&gt;&lt;li&gt;Java Class File Sequencer&lt;/li&gt;&lt;li&gt;Image Sequencer&lt;/li&gt;&lt;li&gt;MP3 Sequencer&lt;/li&gt;&lt;li&gt;DDL File Sequencer&lt;/li&gt;&lt;li&gt;Text Sequencers&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;The example below is of the ImageSequencer, which can gather information from certain types of images stored inside the repository. The ImageMetaDataSequencer is used here to extract metadata like size, dimensions and so on from the image if they have one of the specified extensions and the extracted information is stored somewhere else inside the repository.&lt;br /&gt;&lt;/p&gt;&lt;pre class=&quot;brush:java&quot;&gt;JcrConfiguration config = ...&lt;br /&gt;config.sequencer(&quot;Image Sequencer&quot;)&lt;br /&gt;.usingClass(&quot;org.modeshape.sequencer.image.ImageMetadataSequencer&quot;)&lt;br /&gt;.loadedFromClasspath()&lt;br /&gt;.setDescription(&quot;Sequences image files to extract the characteristics of the image&quot;)&lt;br /&gt;.sequencingFrom(&quot;//(*.(jpg|jpeg|gif|bmp|psd)[*])/jcr:content[@jcr:data]&quot;)&lt;br /&gt;.andOutputtingTo(&quot;/images/$1&quot;);&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;h2&gt;Conclusion&lt;/h2&gt;&lt;p&gt;With other mature JCR implementations out there I think ModeShapes strongest point is it's focus on content federation. Providing a single JCR interface for content stored in different systems is a great initiative, because the JCR API is quite easy to learn and to use.&amp;nbsp;I see a bright future for ModeShape, since companies are sharing more and more in-house information on the web these days. I myself will try to keep a close eye on ModeShape and see how it evolves.&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/2962867622850517744-58432697545718137?l=blog.jeroenreijn.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 04 Feb 2010 15:27:00 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Jeroen Reijn)</dc:creator>
</item>
<item>
	<title>Lars Peters (Hippo): Why WCM/Portal convergence is a good thing</title>
	<guid>tag:blogger.com,1999:blog-7342593045185099406.post-1817586119523489133</guid>
	<link>http://larsjpeters.blogspot.com/2010/01/why-portalwcm-convergence-is-good-thing.html</link>
	<description>&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;Stephen Powers' &lt;a href=&quot;http://blogs.forrester.com/information_management/2010/01/web-content-management-and-portal-together-at-last.html&quot;&gt;blogpost&lt;/a&gt; on convergence between WCM and Portal sparked a nice little controversy about the alleged trade-off between integration and separation of concerns. It ain't necessarily so: If integration is done right, the trade-off does not need to be there at all. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;Convergence is a two way street. From the WCM perspective we like to think of Portals as a way to offer 'self service', personalization, security and integration with other applications / widgets / iframes and the like. From the Portal perspective we need WCM to provide tools to work with our portal content that does not reside in other applications.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;Both are, of course, nothing new. Neither is the fact that vendors (&lt;a href=&quot;http://www.onehippo.com/&quot;&gt;Hippo&lt;/a&gt; with Hippo CMS and &lt;a href=&quot;http://portals.apache.org/jetspeed-2/&quot;&gt;Apache Jetspeed Portal&lt;/a&gt; is the open source example) have been offering integrated portal offerings for a number of years. Given the challenges and costs involved in true integration, it clearly makes sense to offer integrated solutions as to keep such projects manageable. And who can better ensure integration is done right than the vendor itself?&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;New in Stephen's post is the fact that he, or rather IBM, sees the package of WCM &amp;amp; Portal becoming such a common combination that distinguishing the two markets would no longer be meaningful. This does not mean that WCM and Portals will become an undistinguishable mesh (or mess?) with the risk of losing all we gained from separating content from the presentation layer in the first place.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;It does mean, just like before, that buyers should be careful not to select a package that restricts their choice in where and how to manage and publish their content.  It also means that buyers should be critical when making decisions about such things as collaboration platforms. Collaboration systems put in place today, may be with us for many years to come. Where does the content reside? Can it be accessed, altered, integrated in other applications? What about the source code? Remember &lt;a href=&quot;http://www.guardian.co.uk/technology/2006/feb/09/guardianweeklytechnologysection&quot;&gt;Lotus Notes&lt;/a&gt;?&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;For maximum flexibility and future readiness in purchasing an integrated WCM &amp;amp; Portal, there are four basic questions to ask:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;1. Can the WCM system stand on its own? Would you buy it for its WCM functionality?&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;2. Can the Portal stand on its own? Would you buy it for its Portal functionality?&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;3. Are the two really integrated? Integrated user management, security, administration, URL mapping, ease of development etc.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;4. Is it Open Source (eg, are you free to use and change the software as you wish)?&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7342593045185099406-1817586119523489133?l=larsjpeters.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 27 Jan 2010 01:01:11 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Lars Peters)</dc:creator>
</item>
<item>
	<title>David Taylor (Hippo): Jetspeed UI in 2.2.1</title>
	<guid>tag:blogger.com,1999:blog-8747054103324856503.post-1357900328500871741</guid>
	<link>http://davidseantaylor.blogspot.com/2010/01/jetspeed-ui-in-221.html</link>
	<description>With this blog post, I introduce the new Jetspeed portal user interface we are developing for the upcoming release of version 2.2.1. For the past several years, the Apache Jetspeed Portal has had two user interfaces:&lt;br /&gt;&lt;br /&gt;1. &lt;b&gt;The Portal Pipeline&lt;/b&gt;, a server-side, servlet based aggregation engine. The server-side rendering engine was and still is the most common user interface for Jetspeed portals. It has progressed over the years, including the addition of nice features like a multi-threaded aggregation engine, rendering each portlet in parallel on its own thread.&lt;br /&gt;&lt;br /&gt;2. &lt;b&gt;The Desktop Pipeline&lt;/b&gt;, a client-side, Javascript based aggregation engine. The client-side rendering engine was not the default, and didn't get as much attention as the server-side. That said, I think the desktop pipeline had much more interesting features, with Ajax rendering pipelines serving portlet content to handle parallel rendering requests from within the browser.  The desktop pipeline, even though it ran in the browser, still supported the Java Portlet API, adhering to the requirements of action and render phases. It also had some interesting features including drag and drop moving of portlets in either grid or detached mode, and resizing the portlets and layouts.&lt;br /&gt;&lt;br /&gt;With version 2.2.1 (still unreleased), we are working on a single rendering engine sharing the same pipeline and code base. This engine can be configured to render portlets on the server-side or client-side. We call this new rendering engine &lt;b&gt;&quot;Jetui&quot;&lt;/b&gt;, since the client-side code is based on the YUI Javascript library. Jetui already supports many of the drag and drop customization features of the Desktop pipeline, with the addition of several new features. Two interesting new additions are the toolbars: a Page and Space Navigator and a Toolbox.&lt;br /&gt;&lt;br /&gt;In this blog I will introduce the Jetspeed Toolbox. The Toolbox is designed to make user customizations very easy in just one click. The toolbox contains three panels:&lt;br /&gt;&lt;br /&gt;- Portlet Selector&lt;br /&gt;- Layouts&lt;br /&gt;- Themes&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://1.bp.blogspot.com/_Cd01IhxVCuQ/S0fXr_xQ0NI/AAAAAAAAABE/VVvpcjW3fRI/s1600-h/toolbox.jpg&quot;&gt;&lt;img src=&quot;http://1.bp.blogspot.com/_Cd01IhxVCuQ/S0fXr_xQ0NI/AAAAAAAAABE/VVvpcjW3fRI/s320/toolbox.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5424541427043455186&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;The Portlet Selector can be docked to the left or right side of the page, or it can float freely on top of the page. Portlets can be searched for using this tool, as all portlet metadata is automatically indexed in the portlet registry. Additionally, portlets can be categorized and filtered based on categories (see the drop down list). One click addition of portlets is now possible without ever leaving the page being customized. Portlets are also filtered by secure access. Only portlets that are configured to be viewable to the current user are displayed in the Jetspeed Toolbox.&lt;br /&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_Cd01IhxVCuQ/S0faKoQsOYI/AAAAAAAAABM/doKz9EoNfiI/s1600-h/toolboxpreview.jpg&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_Cd01IhxVCuQ/S0faKoQsOYI/AAAAAAAAABM/doKz9EoNfiI/s320/toolboxpreview.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5424544152332024194&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;An interesting new feature is portlet preview mode:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Selecting the theme for the current page or space is as easy as selecting the theme tab and then clicking on the theme. Jetspeed introduces several new themes in 2.2.1:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_Cd01IhxVCuQ/S06FdcDVcPI/AAAAAAAAABU/BV4GPlhkmxo/s1600-h/theme.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/_Cd01IhxVCuQ/S06FdcDVcPI/AAAAAAAAABU/BV4GPlhkmxo/s320/theme.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5426421341820907762&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Page layouts, selected from the Layout tab, provide several default layouts (with more coming).&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_Cd01IhxVCuQ/S06GmKfxQrI/AAAAAAAAABc/rnkFbw-ar5E/s1600-h/layout.png&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/_Cd01IhxVCuQ/S06GmKfxQrI/AAAAAAAAABc/rnkFbw-ar5E/s320/layout.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5426422591238783666&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We are working on integrating the &lt;a href=&quot;http://www.blogger.com/%27http://getwookie.org/Welcome.html%27&quot;&gt;W3C Widgets&lt;/a&gt; alongside Java Portlets. Like portlets, widgets will be available for searching and adding from the Jetspeed Toolbar. I will discuss Widgets more in an upcoming blog.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In an upcoming blog, I will talk more about how to use templates to configure tools across pages...&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8747054103324856503-1357900328500871741?l=davidseantaylor.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 14 Jan 2010 04:01:16 +0000</pubDate>
	<dc:creator>noreply@blogger.com (DST)</dc:creator>
</item>
<item>
	<title>Arje Cahn (Hippo): 2010: the year the E-Reader will become the content managers’ favorite productivity tool</title>
	<guid>http://blogs.onehippo.org/arje/2009/12/2010_the_year_the_ereader_will.html</guid>
	<link>http://blogs.onehippo.org/arje/2009/12/2010_the_year_the_ereader_will.html</link>
	<description>&lt;p&gt;Flipping through my usability notes, I noticed one of our &lt;a href=&quot;http://www.onehippo.com&quot; target=&quot;_blank&quot;&gt;Hippo CMS&lt;/a&gt; users mentioned the following about proof-reading:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;There is no printing facility for content in Hippo CMS so everything has to be done on screen. Even if we could print, we can only see a single field, not the whole article, so it's a bit pointless trying to proofread this way. This leads to long periods of time staring at a screen. It's also very difficult to spot typos on screen, leading to potential loss of quality in copy.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Exactly. Often enough, also I spot typing errors only after having printed out my text (like this blog post), and walking through it again while commuting on the train. The letters start to dance before my eyes when I&amp;rsquo;m behind a monitor for too long. Sometimes it helps a lot to just put your text aside, do something else for a while, and then return to it on a quiet moment to walk through what you&amp;rsquo;ve written. So, why not implement a printing functionality in Hippo CMS, to allow authors to take their text with them? Everybody got so used to printing out Word documents anyway, that it baffles me that this idea had never appeared to me before.&lt;/p&gt;
&lt;p&gt;So I put the print function on our roadmap.&lt;/p&gt;
&lt;p&gt;But somehow, it feels wrong. What happened to the paperless office? It&amp;rsquo;s almost 2010 (it&amp;rsquo;s the 31st of December, 11:45 in the morning, as I write this), &lt;em&gt;Kopenhagen&lt;/em&gt; happened only a few weeks ago, I&amp;rsquo;ve been driving &lt;a title=&quot;A Lupo 3l&quot; href=&quot;http://en.wikipedia.org/wiki/Volkswagen_Lupo#Lupo_3L&quot; target=&quot;_blank&quot;&gt;the most economical car on earth&lt;/a&gt; for years, and I use the printer as little as possible. I don&amp;rsquo;t want to have a tree cut down for me to be able to proof-read my blog post!&lt;/p&gt;
&lt;p&gt;Enter the &lt;a title=&quot;&amp;quot;An e-book reader, also called an e-book device or e-reader, is a device used to display e-books.&amp;quot;&quot; href=&quot;http://en.wikipedia.org/wiki/List_of_e-book_readers&quot; target=&quot;_blank&quot;&gt;e-reader&lt;/a&gt;. 2009 was the year of the e-reader. A number of those devices already boost a keyboard and the possibility to add annotations to texts, to store them and synchronize them with your PC. And every modern writer nowadays carries an e-reader to read their books anyway, right?&lt;/p&gt;
&lt;p&gt;So here&amp;rsquo;s the thought: let&amp;rsquo;s make a tool that allows you, after a long day of writing, to take all the texts you&amp;rsquo;ve worked on with you on your e-reader. You grab your reader again when you sit on the train, where you walk through all passages for typos and make annotations. The following day, you import all those changes back into Hippo, or maybe you&amp;rsquo;ve already sent them to the content repository over &lt;em&gt;wireless email&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I don&amp;rsquo;t know whether the latest generation of e-readers are already open enough to share annotations with a content management system. Maybe we&amp;rsquo;ll have to wait for that to happen in 2010. But at least I found a very good excuse to rush downtown and treat myself with another gadget to go try it out!&lt;/p&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
	<pubDate>Thu, 31 Dec 2009 11:43:41 +0000</pubDate>
</item>
<item>
	<title>Vijay Kiran (Hippo): → What’s Coming from Hippo in 2010</title>
	<guid>http://www.vijaykiran.com/?p=1473</guid>
	<link>http://www.vijaykiran.com/whats-coming-from-hippo-in-2010/</link>
	<description>&lt;blockquote&gt;&lt;p&gt;The Hippo CMS  team has big plans for 2010. Early in the year they intend to launch a new web 2.0 platform. This open source product is aimed at the enterprise, to ensure &amp;#8220;improved communication, collaboration and knowledge retention while lowering the burden on IT resources.&amp;#8221;&lt;/p&gt;
&lt;p&gt;Features include an integrated approach to user-generated content, an &amp;#8220;enterprise mash-up&amp;#8221; functionality that focuses on matching content and applications with the needs of individual employees. Each user will get a personalized window to &amp;#8220;content and applications inside and (cl)outside the organization, while IT keeps (or regains?) central control over security &amp;amp; access rights.&amp;#8221;&lt;/p&gt;
&lt;p&gt;Instead of aiming to reinvent popular applications such as Gmail, Zoho, Twitter and Evernote, this new product aims to let companies integrate such tools within their enterprise security umbrella.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;via &lt;a href=&quot;http://www.cmswire.com/cms/web-cms/alert-whats-coming-in-open-source-cms-in-2010-006287.php&quot;&gt;Alert: What&amp;#8217;s Coming In Open Source CMS In 2010&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Tue, 22 Dec 2009 11:08:52 +0000</pubDate>
	<dc:creator>Vijay Kiran</dc:creator>
</item>
<item>
	<title>Jeroen Reijn (Hippo): Content mangement and the semantic web</title>
	<guid>tag:blogger.com,1999:blog-2962867622850517744.post-654486552283314687</guid>
	<link>http://blog.jeroenreijn.com/2009/12/content-mangement-and-semantic-web.html</link>
	<description>&lt;img align=&quot;left&quot; alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5390347010206616578&quot; src=&quot;http://4.bp.blogspot.com/_hd6Y7yyFK7E/Ss5cC-d0TAI/AAAAAAAAASM/JtnIYqZivhU/s320/Semantic-Web-Logo-by-W3C.png&quot; /&gt; I came across the term 'semantic web' a couple of years ago, when &lt;a href=&quot;http://www.betaversion.org/~stefano/linotype/&quot;&gt;one of the original creators&lt;/a&gt; of &lt;a href=&quot;http://cocoon.apache.org/&quot;&gt;Apache Cocoon&lt;/a&gt; went of to work on the &lt;a href=&quot;http://simile.mit.edu/wiki/SIMILE:About&quot;&gt;SIMILE Project&lt;/a&gt; at MIT. I didn't pay much attention to the concept of 'semantic web' back then, because I just started learning Apache Cocoon and still had a lot to learn.&lt;br /&gt;But over the last couple of months I've been doing some research on the currently available standards for providing semantic data on the web with a strong focus on &lt;a href=&quot;http://en.wikipedia.org/wiki/RDFa&quot;&gt;RD&lt;span id=&quot;goog_1260951462840&quot;&gt;&lt;/span&gt;&lt;span id=&quot;goog_1260951462841&quot;&gt;&lt;/span&gt;Fa&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Content management&lt;/h2&gt;&lt;p&gt;Working at &lt;a href=&quot;http://www.onehippo.com/&quot;&gt;Hippo&lt;/a&gt;, a &lt;a href=&quot;http://en.wikipedia.org/wiki/Content_management_system&quot;&gt;CMS&lt;/a&gt; vendor based in the Netherlands &amp; USA, makes me think in content and publishing strategies. Publishing information to the web is one of our core businesses, but I've learned over the last couple of month we can enrich our publishing platform even more by providing semantic data. I started my journey by looking around if other CMS vendors are paying attention to semantic web standards. I noticed that only a few of the enormous amount of&amp;nbsp; content management vendors actually put effort in providing semantic web functionalities for their end-users. I think that's a shame, because enrich your pages a lot.&lt;br /&gt;This post should give you an insight on how you could create a website with embedded meta data (with Hippo), but let's first start with some basics.&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;What's the idea behind the semantic web?&lt;/h2&gt;&lt;p&gt;The current web is very well suited for being read by people like you and me. Computers however can only analyze the words on a page, but can not see the semantics of a piece of information on that specific page, that we as people &lt;i&gt;do&lt;/i&gt; see.&lt;br /&gt;If you would allow the information on you page to be machine-readable, the computer would be able to analyze your page and extract much more information from it then just being a piece of text. That's where semantic web standards can help out.&lt;br /&gt;Standards for providing semantic data on the web are not new and some of them have already been available for quite some time. Probably the two most well known are: &lt;a href=&quot;http://www.w3.org/RDF/&quot;&gt;RDF&lt;/a&gt; and &lt;a href=&quot;http://microformats.org/&quot;&gt;Microformats&lt;/a&gt;. However recently &lt;a href=&quot;http://en.wikipedia.org/wiki/RDFa&quot;&gt;RDFa&lt;/a&gt; has been getting a lot of attention by &lt;a href=&quot;http://googlewebmastercentral.blogspot.com/2009/05/introducing-rich-snippets.html&quot;&gt;Google&lt;/a&gt;, &lt;a href=&quot;http://developer.yahoo.com/searchmonkey/smguide/semantic_web.html&quot;&gt;Yahoo&lt;/a&gt; and now also the &lt;a href=&quot;http://coi.gov.uk/guidance.php?page=315#section3d&quot;&gt;UK government&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;What is RDFa?&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;RDFa is short for “Resource Description Framework in attributes”.  This sounds a bit descriptive, but it means that RDFa provides a set of XHTML attributes, which in their turn provide a way of translating visual data on a page into machine-readable hints. So let's take a look at an example of how a simple web page is currently structured.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;html&amp;gt;&lt;br /&gt;  &amp;lt;body&amp;gt;&lt;br /&gt;    &amp;lt;h1&amp;gt;Content management and the semantic web&amp;lt;/h1&amp;gt;&lt;br /&gt;    &amp;lt;h2&amp;gt;Jeroen Reijn&amp;lt;/h2&amp;gt;&lt;br /&gt;    &amp;lt;p&amp;gt;some information&amp;lt;/p&amp;gt;&lt;br /&gt;  &amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt; &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;As you can see in the above XHTML fragment, we have a page with a title, a subtitle and a small snippet of text inside the body of the page. By rendering this HTML fragment in the browser the visitor of this page will recognize this piece of text as being the title and author of the current article on the page. A machine however would need a bit more information to be sure the content can be identified as a title and author. That's where RDFa can help out. By using vocabularies, you can give meaning to specific pieces of content on a page.&lt;br /&gt;Let's see what the above XHTML fragment would look like if we would use RDFa.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;html&amp;gt;&lt;br /&gt;  &amp;lt;body xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot;&amp;gt; &lt;br /&gt;    &amp;lt;h1 property=&quot;dc:title&quot;&amp;gt;Content management and the semantic web&amp;lt;/h1&amp;gt;&lt;br /&gt;    &amp;lt;h2 property=&quot;dc:creator&quot;&amp;gt;Jeroen Reijn&amp;lt;/h2&amp;gt;&lt;br /&gt;    &amp;lt;p&amp;gt;some information&amp;lt;/p&amp;gt;&lt;br /&gt;  &amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;As shown in the example, the Dublin Core vocabulary is added to the page first. This is important to be able to use the properties inside the vocabulary later on. Once the vocabulary is in place, we can give meaning to fragments on the page. In the HTML fragment above the h1 is marked as the Dublin Core &lt;i&gt;title&lt;/i&gt; attribute and the h2 as the Dublin Core &lt;i&gt;creator&lt;/i&gt; attribute. With these properties in place a machine, like a search engine crawler, can now also store this as additional meta data of the page.&lt;br /&gt;One of the main advantages of RDFa is that your content can processed in a more efficient way, which in turn can make your page rank higher then it might have been before. &lt;br /&gt;Big search engines like Google and Yahoo already scan your website for RDFa embedded information, so why not use it?&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;How to use RDFa in your (hippo) website?&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;http://www.onehippo.org/&quot;&gt;Hippo CMS&lt;/a&gt; is a content (centered) management system and it differs from other CMS's in such a way that the information inside the Hippo CMS content repository is not stored or identified as pages, but rather as content. In most cases even reusable content. To be more precise: information stored inside the content repository is stored as &lt;a href=&quot;http://en.wikipedia.org/wiki/Content_repository_API_for_Java&quot;&gt;JCR&lt;/a&gt; nodes and/or properties. &lt;br /&gt;Since the data is just content and not bound to any front-end technology, you can either publish it as XML, (X)HTML with some help from the &lt;a href=&quot;http://www.onehippo.org/site-toolkit&quot;&gt;Hippo Site Toolkit&lt;/a&gt; (HST) or any other format you might like.&lt;br /&gt;Now let's take the above HTML fragment as an example and let's see what this would look like on a content level. One of the most important things to mention here is that a JCR repository has the concept of nodetype definitions in which you can configure what your data model looks like. You could compare it with for instance a XML Schema or DTD for a piece of XML, but then for the nodes and properties available in a JCR repository.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Let's first start with our content definition or in content management terms the document type. We will need three fields:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Title&lt;/li&gt;&lt;li&gt;Author&lt;/li&gt;&lt;li&gt;Body (rich-text field)&lt;/li&gt;&lt;/ul&gt;If you would create a document type with the &lt;a href=&quot;http://blogs.onehippo.org/arje/2009/08/an_improved_template_editor.html&quot;&gt;Hippo CMS template editor&lt;/a&gt;, the resulting nodetype definition will end up looking like this:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;'myproject'='http://www.myproject.org/nt/myproject/1.0'&amp;gt;&lt;br /&gt;&amp;lt;'hippostd'='http://www.onehippo.org/jcr/hippostd/nt/2.0'&amp;gt;&lt;br /&gt;&amp;lt;'hippo'='http://www.onehippo.org/jcr/hippo/nt/2.0'&amp;gt;&lt;br /&gt;&lt;br /&gt;[myproject:text] &amp;gt; hippostd:publishable, hippostd:publishableSummary, hippo:document&lt;br /&gt;- myproject:title (string)&lt;br /&gt;- myproject:author (string)&lt;br /&gt;+ myproject:body (hippostd:html)&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;As you can see all three fields are available and can be used later on by any client that can read from the Java content repository. To be able to render this type of information as XHTML, we will be using the Hippo Site Toolkit. The Hippo Site Toolkit uses the concept of mapping&amp;nbsp; JCR nodes to simple Java beans, to be able to have an easier development cycle without having to learn the entire JCR API.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;A Java bean representation of the JCR 'myproject:text' nodetype will look like this:&lt;br /&gt;&lt;pre class=&quot;brush: java&quot;&gt;import org.hippoecm.hst.content.beans.Node; &lt;br /&gt;&lt;br /&gt;import org.hippoecm.hst.content.beans.standard.HippoDocument;&lt;br /&gt;import org.hippoecm.hst.content.beans.standard.HippoHtml;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;@Node(jcrType=&quot;myproject:text&quot;)&lt;br /&gt;public class TextBean extends HippoDocument{&lt;br /&gt;&lt;br /&gt;    public String getTitle() {&lt;br /&gt;        return getProperty(&quot;myproject:title&quot;);&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    public String getAuthor() {&lt;br /&gt;        return getProperty(&quot;myproject:author&quot;);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public HippoHtml getBody(){&lt;br /&gt;        return getHippoHtml(&quot;myproject:body&quot;);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;As you can see the Java bean is quite straight forward and easy to read.&lt;br /&gt;Now if we want to render the information on a webpage, we can use for instance JSP's with expression language to get the information from the Java bean. The JSP needed for outputting the RDFa enabled webpage can be as simple as this:&lt;br /&gt;&lt;/p&gt;&lt;pre class=&quot;brush: java&quot;&gt;&amp;lt;%@ page language=&quot;java&quot; %&amp;gt;&lt;br /&gt;&amp;lt;%@ taglib uri=&quot;http://www.hippoecm.org/jsp/hst/core&quot; prefix='hst'%&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;  &amp;lt;body xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot;&amp;gt; &lt;br /&gt;    &amp;lt;h1 property=&quot;dc:title&quot;&amp;gt;${document.title}&amp;lt;/h1&amp;gt;&lt;br /&gt;    &amp;lt;h2 property=&quot;dc:creator&quot;&amp;gt;${document.author}&amp;lt;/h2&amp;gt;&lt;br /&gt;    &amp;lt;hst:html hippohtml=&quot;${document.body}&quot;/&amp;gt;&lt;br /&gt;  &amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/pre&gt;As you can see it's that easy to use RDFa inside your website if you have a template independent CMS like Hippo.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;It gets even better&lt;/h2&gt;&lt;p&gt;Using RDFa for simple text can already be a great improvement for you website, but support for other RDFa vocabularies is added on a regular basis. Google &lt;a href=&quot;http://googlewebmastercentral.blogspot.com/2009/09/supporting-facebook-share-and-rdfa-for.html&quot;&gt;recently announced&lt;/a&gt; support for RDFa enabled pages with videos (or media) on them. You can provide extra information for your media files to the Google crawler, like the url to the thumbnail that belongs to your video, which can be presented when your video is found as one of the results in a search performed at Google. The possibilities are enormous, so I can see a lot of good things coming from using RDFa in the near future.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;I think the role that content management systems can have for RDFa should not be underestimated, since most website these days are backed by some sort of content management system.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;For more information on RDFa see:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.w3.org/MarkUp/2009/rdfa-for-html-authors&quot;&gt;RDFa for HTML authors, by Steven Pemberton&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://rdfa.info/&quot;&gt;RDFa.info&lt;/a&gt; - A site containing news about RDFa &lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://googlewebmastercentral.blogspot.com/2009/09/supporting-facebook-share-and-rdfa-for.html&quot;&gt;Google supporting FaceBook Share and RDFa for videos&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/2962867622850517744-654486552283314687?l=blog.jeroenreijn.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 17 Dec 2009 10:43:00 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Jeroen Reijn)</dc:creator>
</item>
<item>
	<title>Jasha Joachimsthal (Hippo): Generate RSS in JSP? Set the locale!</title>
	<guid>tag:blogger.com,1999:blog-5942185880332728298.post-3298764568944033554</guid>
	<link>http://blog.jasha.eu/2009/12/generate-rss-in-jsp-set-locale.html</link>
	<description>&lt;p&gt;The RSS pubDate fields contain dates in a format that may be human readable, but not very handy in a programmer's point of view. According to the &lt;a href=&quot;http://cyber.law.harvard.edu/rss/rss.html&quot; target=&quot;_blank&quot;&gt;RSS specification&lt;/a&gt; the date must conform to the RFC822 specification. A typical RSS snippet looks like:&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;xml&quot;&gt;
&amp;lt;item&amp;gt;
  &amp;lt;title&amp;gt;Generate RSS in JSP? Set the locale!&amp;lt;/title&amp;gt;
  &amp;lt;description&amp;gt;&amp;lt;p&amp;gt;Description of the feed item&amp;lt;/description&amp;gt;
  &amp;lt;link&amp;gt;http://blog.jasha.eu/2009/12/generate-rss-in-jsp-set-locale.html&amp;lt;/link&amp;gt;
  &amp;lt;guid&amp;gt;http://blog.jasha.eu/2009/12/generate-rss-in-jsp-set-locale.html&amp;lt;/guid&amp;gt;
  &amp;lt;pubDate&amp;gt;Wed, 10 Dec 2009 09:55:00 +0100&amp;lt;/pubDate&amp;gt;
&amp;lt;/item&amp;gt;
&lt;/pre&gt;

An easy way to generate this from JSP is using the &lt;a href=&quot;http://java.sun.com/products/jsp/jstl/1.1/docs/tlddocs/fmt/tld-summary.html&quot; target=&quot;_blank&quot;&gt;fmt library&lt;/a&gt; from JSTL.
&lt;pre name=&quot;code&quot; class=&quot;xml&quot;&gt;
 &amp;lt;%@ taglib prefix=&quot;fmt&quot; uri=&quot;http://java.sun.com/jsp/jstl/fmt&quot; %&amp;gt;

 &amp;lt;item&amp;gt;
  &amp;lt;title&amp;gt;${item.title}&amp;lt;/title&amp;gt;
  &amp;lt;description&amp;gt;
    &amp;lt;![CDATA[&amp;lt;hst:html hippohtml=&quot;${item.html}&quot;/&amp;gt;]]&amp;gt;
  &amp;lt;/description&amp;gt;
  &amp;lt;link&amp;gt;${link}&amp;lt;/link&amp;gt;
  &amp;lt;guid&amp;gt;${link}&amp;lt;/guid&amp;gt;
  &amp;lt;pubDate&amp;gt;
    &amp;lt;fmt:formatDate value=&quot;${item.date.time}&quot; 
      pattern=&quot;EE, dd MMM yyyy HH:mm:ss Z&quot;/&amp;gt;
  &amp;lt;/pubDate&amp;gt;
&amp;lt;/item&amp;gt;
&lt;/pre&gt;

&lt;p&gt;This seems to look good when you request the RSS feed from your browser. However when you request the same feed from a Java (&lt;a href=&quot;http://rome.dev.java.net&quot; target=&quot;_blank&quot;&gt;ROME&lt;/a&gt;), a request generator (&lt;a href=&quot;http://www.fiddler2.com/fiddler2/&quot; target=&quot;_blank&quot;&gt;Fiddler&lt;/a&gt;) or just use &lt;a href=&quot;http://www.gnu.org/software/wget/&quot; target=&quot;_blank&quot;&gt;wget&lt;/a&gt; the format of the pubDate field is invalid. It returns &quot;Wed Dec 10 09:55:00 CET 2009&quot; instead of &quot;Wed, 10 Dec 2009 09:55:00 +0100&quot; as value of pubDate. What happened?&lt;/p&gt;
&lt;p&gt;Your browser sends a header &quot;Accept-Language&quot; with, hopefully, &quot;en-US&quot; as first value. The JSTL library uses the en-US locale to format the date and the feed gets parsed correctly. The other tools don't send this header and the programmer did not specify a locale for fmt. fmt does not know how to format the date and returns a &quot;Date.getString();&quot;.&lt;/p&gt;
&lt;p&gt;A workaround for you as requester of the feed is to manually add the &quot;Accept-Language&quot; header to the request with value &quot;en-US&quot;. For the JSP developer: the date format for RSS should always be &quot;en_US&quot;. Just add this line to your JSP:&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;xml&quot;&gt;
&amp;lt;fmt:setLocale value=&quot;en_US&quot;/&amp;gt;
&lt;/pre&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Originally posted on &lt;a href=&quot;http://blog.jasha.eu&quot;&gt;Jasha's blog&lt;/a&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5942185880332728298-3298764568944033554?l=blog.jasha.eu&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 10 Dec 2009 08:55:00 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Jasha Joachimsthal)</dc:creator>
</item>
<item>
	<title>Vijay Kiran (Hippo): Easy Forms ß1 for Hippo CMS (Video)</title>
	<guid>http://www.vijaykiran.com/?p=1429</guid>
	<link>http://www.vijaykiran.com/easy-forms-s1-for-hippo-cms-video/</link>
	<description>&lt;p&gt;&lt;/p&gt;</description>
	<pubDate>Fri, 04 Dec 2009 04:07:42 +0000</pubDate>
	<dc:creator>Vijay Kiran</dc:creator>
</item>
<item>
	<title>Vijay Kiran (Hippo): EasyForms for Hippo CMS 7 – Some progress</title>
	<guid>http://www.vijaykiran.com/?p=1414</guid>
	<link>http://www.vijaykiran.com/easyforms-for-hippo-cms-7-some-progress/</link>
	<description>&lt;p&gt;
&lt;p&gt;&lt;a rel=&quot;lightbox&quot; href=&quot;http://www.vijaykiran.com/wp-content/uploads/2009/11/Screen-shot-2009-11-30-at-30-Nov-6.01.15-PM.png&quot;&gt;</description>
	<pubDate>Mon, 30 Nov 2009 17:56:38 +0000</pubDate>
	<dc:creator>Vijay Kiran</dc:creator>
</item>
<item>
	<title>Vijay Kiran (Hippo): EasyForms Plugin for Hippo CMS</title>
	<guid>http://www.vijaykiran.com/easyforms-plugin-for-hippo-cms/</guid>
	<link>http://www.vijaykiran.com/easyforms-plugin-for-hippo-cms/</link>
	<description>&lt;p&gt;&lt;a rel=&quot;lightbox&quot; href=&quot;http://www.vijaykiran.com/wp-content/uploads/2009/11/Screen-shot-2009-11-30-at-30-Nov-1.34.16-PM.png&quot;&gt;&lt;img class=&quot;aligncenter size-full wp-image-1412&quot; title=&quot;Screen shot 2009-11-30 at 30-Nov 1.34.16 PM&quot; src=&quot;http://www.vijaykiran.com/wp-content/uploads/2009/11/Screen-shot-2009-11-30-at-30-Nov-1.34.16-PM.png&quot; alt=&quot;Screen shot 2009-11-30 at 30-Nov 1.34.16 PM&quot; width=&quot;527&quot; height=&quot;350&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now onto adding more field types and other whizzbang fields and stuff.&lt;/p&gt;</description>
	<pubDate>Fri, 27 Nov 2009 22:01:11 +0000</pubDate>
	<dc:creator>Vijay Kiran</dc:creator>
</item>
<item>
	<title>Tjeerd D. Brenninkmeijer (Hippo): A short recap of Forge Friday: October 30th</title>
	<guid>http://blogs.onehippo.org/tjeerd/2009/11/a_short_recap_of_forge_friday.html</guid>
	<link>http://blogs.onehippo.org/tjeerd/2009/11/a_short_recap_of_forge_friday.html</link>
	<description>&lt;a href=&quot;http://wiki.onehippo.com/display/CMS7/Hippo+Forge+Friday+on+the+30th+of+October&quot;&gt;Everyone&lt;/a&gt; was invited at the Hippo office's in Amsterdam or San Francisco to participate in the creation of cool projects. Any idea was welcome, as long as it was Hippo related (and could therefore be posted on the &lt;a href=&quot;http://forge.onehippo.org/&quot;&gt;Hippo Forge&lt;/a&gt;).

Last &lt;a href=&quot;http://blogs.hippo.nl/tjeerd/2009/08/block_your_agenda_for_the_inte.html&quot;&gt;time&lt;/a&gt; it was a big success, with the entire Hippo staff coding and having fun. This time they were reinforced with external developers who enthusiastically entered the friendly competition for a wide variety of reasons. Everyone, from consultants taking their first Hippo step to experienced Hippo partners, joined with Hippo colleagues and teamed up to speed-build their forge project.

While some teams had some start up problems there were quite a few wonderful Forge projects, sure they could use some polishing and sure it might only work for one corner case, but still, in half a day people created something tangible and -more importantly- something demo-able. 

And even if people didn't learn anything, they at least had some good food ;-). As a Forge Friday would not be complete without abundant snacks, beer and pizza.

&lt;img alt=&quot;snacks forge friday&quot; src=&quot;http://blogs.onehippo.org/tjeerd/snacks_forge_friday.jpg&quot; width=&quot;350&quot; height=&quot;263&quot; /&gt;

&lt;strong&gt;Hippo Rijkshuisstijl Archetype&lt;/strong&gt;
The  &lt;a href=&quot;http://www.sourcesense.com&quot;&gt;Sourcesense&lt;/a&gt; team was the first team to enter the stage. With their &lt;a href=&quot;http://opensource.sourcesense.com/confluence/display/HPS/The+Hippo+Rijkshuisstijl+Archetype&quot;&gt;plugin&lt;/a&gt; (&lt;a href=&quot;http://maven.apache.org/plugins/maven-archetype-plugin/&quot;&gt;Maven Archetype&lt;/a&gt;) it becomes very easy to set up a  website which is compliant with the current &lt;a href=&quot;http://rijkshuisstijl.communicatieplein.nl/&quot;&gt;Rijkshuisstijl&lt;/a&gt;, the style guide of the dutch national government. 

&lt;strong&gt;Simple Slide Show&lt;/strong&gt;
Another interesting plugin used the Hippo repository and used its content to present a slide show. Simple, yet elegant and a good example of a new innovative plugin.

&lt;strong&gt;iPhone&lt;/strong&gt;
While hard to demo on a beamer, the iPhone app which read content from the repository through a REST interface did WOW the audience, the slick interface and the iPhone-factor proved enough to win a second place!

&lt;strong&gt;Never Gonna Give You Up&lt;/strong&gt;
A newbie team showed their love for Hippo CMS combined it with their other love: Rick Astley. Which resulted in their &quot;Never Gonna Give You Up&quot; project....

&lt;a href=&quot;http://www.youtube.com/watch?v=3HrSN7176XI&quot;&gt;&lt;img alt=&quot;rick astley -never gonna give you up&quot; src=&quot;http://blogs.onehippo.org/tjeerd/rick_astley-never_gonna_give_you_up.jpg&quot; width=&quot;350&quot; height=&quot;282&quot; /&gt;&lt;/a&gt;

&lt;strong&gt;Google maps in CMS&lt;/strong&gt;
The search engine, &lt;a href=&quot;http://www.google.com&quot;&gt;Google&lt;/a&gt;, with its seemingly endless amount of tools is a obvious project focus and two teams based their Forge project on a Google component. One allows the user to select an address based on Google Maps (yes, the other way around) which is then stored in the repository.

&lt;strong&gt;Google Translate&lt;/strong&gt;
The other Google user was the eventual winner of the evening, it used Google translate to automatically present content in various languages, the user could then edit the results and store this in the CMS. This could allow for rapid creation of multiple language sites, while Google Translate is not infallible, it will do the bulk of the work for you (the good old &lt;a href=&quot;http://en.wikipedia.org/wiki/Pareto_principle&quot;&gt;80-20 rule&lt;/a&gt; comes to mind). &lt;a href=&quot;http://forge.onehippo.org/projects/doctranslator/&quot;&gt;Here&lt;/a&gt; you can find the project on the forge.

&lt;strong&gt;Tripolis&lt;/strong&gt;
Developers from &lt;a href=&quot;http://www.tripolis.com&quot;&gt;Tripolis&lt;/a&gt; also came to work on a Hippo Forge project. They implemented a connection between the Tripolis Dialogue connector and the Hippo repository. While it did not work to their complete satisfaction, it was shown that the basic concept worked (this time only titles where synchronized, but if you can do a title, you can do the rest ;-).

&lt;strong&gt;Sysadmin work&lt;/strong&gt;
Our very own infrastructure guys made a plugin which protects your preview website with a password and the access management is done from within Hippo CMS. They earned extra credits by placing &lt;a href=&quot;http://forge.onehippo.org/forum/forum.php?forum_id=197&quot;&gt;their project&lt;/a&gt; on the Forge before their demo started.

&lt;img alt=&quot;bart bartosz infra guru's&quot; src=&quot;http://blogs.onehippo.org/tjeerd/bart_bartosz_infra.jpg&quot; width=&quot;350&quot; height=&quot;197&quot; /&gt;

&lt;strong&gt;PDF Export&lt;/strong&gt;
What better way to show the versatility of Hippo and the repository then by automatically creating printable .pdf documents? While the result is basic, it is clear that the flexibility of open standards creates an environment in which everything is possible.

I hope to see you all next time!

&lt;img alt=&quot;Till next time&quot; src=&quot;http://blogs.onehippo.org/tjeerd/Till_next_time.jpg&quot; width=&quot;350&quot; height=&quot;240&quot; /&gt;</description>
	<pubDate>Mon, 16 Nov 2009 11:25:08 +0000</pubDate>
</item>
<item>
	<title>David Taylor (Hippo): Apachecon, Oakland</title>
	<guid>tag:blogger.com,1999:blog-8747054103324856503.post-8833090494463267162</guid>
	<link>http://davidseantaylor.blogspot.com/2009/11/apachecon-oakland.html</link>
	<description>I will be presenting at Apachecon in Oakland tomorrow at 9 AM.&lt;br /&gt;&lt;br /&gt;http://www.eu.apachecon.com/c/acus2009/sessions/282&lt;br /&gt;&lt;br /&gt;The presentation is less than an hour, introducing new direction in the Jetspeed open source portal, integrating with the Apache Jackrabbit project&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8747054103324856503-8833090494463267162?l=davidseantaylor.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 05 Nov 2009 02:01:00 +0000</pubDate>
	<dc:creator>noreply@blogger.com (DST)</dc:creator>
</item>
<item>
	<title>Arje Cahn (Hippo): ApacheCon US 09 Evening Meet-ups - Free for all</title>
	<guid>http://blogs.onehippo.org/arje/2009/10/apachecon_us_09_evening_meetup.html</guid>
	<link>http://blogs.onehippo.org/arje/2009/10/apachecon_us_09_evening_meetup.html</link>
	<description>&lt;p&gt;Monday 2nd, Tuesday 3rd and Thursday 5th of November&lt;br /&gt;
Oakland, CA&lt;br /&gt;
Content Tech, Hadoop, Lucene, NoSql, OSGi/Felix, SocialAndWidgets, Subversion, Tomcat, Traffic Server Podling, WebCrawlers, WebServices&lt;/p&gt;

&lt;p&gt;Join us for a third year of Apache Meetups! Users, committers, managers and developers will come together on the evenings of Monday 2nd, Tuesday 3rd, Thursday 5th of November .&lt;/p&gt;

&lt;p&gt;Registration is free of charge, and everyone is invited. Register on the &lt;a href=&quot;http://wiki.apache.org/apachecon/ApacheMeetupsUs09&quot;&gt;meetup wiki pages&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;Monday 2nd (BarCamp Apache during the day)&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;20:00 - 22:00  NoSqlMeetup  Room 1&amp;2&lt;/li&gt;&lt;li&gt;20:00 - 22:00 Tomcat Room 6&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;Tuesday 3rd (BarCamp Apache during the day)&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;20:00 - 22:00 Lucene Room 1&amp;2&lt;/li&gt;&lt;li&gt;20:00 - 22:00 OSGi/Felix Room 3&lt;/li&gt;&lt;li&gt;20:00 - 22:00 Traffic Server Podling Room 4&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;Thursday 5th&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;20:00 - 22:00 Content Tech 1&amp;2&lt;/li&gt;&lt;li&gt;20:00 - 22:00 Web Services 3&lt;/li&gt;&lt;li&gt;20:00 - 22:00 SocialAndWidgetsMeetup&lt;/li&gt;&lt;li&gt;20:00 - 22:00 Web Crawlers Room 5&lt;/li&gt;&lt;li&gt;20:00 - 22:00 Hadoop Room 6&lt;/li&gt;&lt;li&gt;20:00 - 22:00 Subversion Room 7&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;

&lt;p&gt;If you're interested in any of these popular open source projects, come join us for an evening of presentations and discussion with the creators and committers working on the projects themselves.&lt;/p&gt;

&lt;p&gt;Hosted by and located at the ApacheCon, these five special community meetings are taking taking place on the days before the ApacheCon conference in Amsterdam. Entrance is FREE for everyone, so sign up quick!&lt;/p&gt;

&lt;p&gt;Location&lt;br /&gt;
Marriott Oakland City Center&lt;br /&gt;
1001 Broadway | Oakland, CA 94607 | +1 510 451-4000&lt;/p&gt;

&lt;h2&gt;What is a Meetup?&lt;/h2&gt;
A MeetUp has a number of key attributes:

&lt;ul&gt;&lt;li&gt;Focused on a single Apache project&lt;/li&gt;&lt;li&gt;Organized by the members of the project community itself&lt;/li&gt;&lt;li&gt;Open agenda, anyone can propose a talk, covering a wide range of subjects related to the core project&lt;/li&gt;&lt;li&gt;An opportunity for users, interested people and committers to get together &lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;MeetUps generally happen during the evening, and, most importantly, are supposed to be fun (as well as useful).&lt;/p&gt;

&lt;p&gt;ApacheCon is the official conference of the Apache Software Foundation (ASF), drawing ASF Members, innovators, developers, vendors, and users to experience the future of Open Source development. Drawing internationally-renowned thought-leaders, contributors, influencers, and organizations in the Open Source community, ApacheCon offers insight into the culture and community that develops and shepherds industry-leading Open Source projects, including Apache HTTP Server - the world's most popular Web server software for ten years running.&lt;/p&gt;

&lt;h2&gt;About ApacheCon US 2009&lt;/h2&gt;

&lt;p&gt;These special Apache Meetups are organized as free side events next to their bigger sister conference, the ApacheCon US 2009.&lt;/p&gt;

&lt;p&gt;ApacheCon is the official user conference, trainings, and expo of the Apache Software Foundation (ASF). Celebrating its landmark 10th Anniversary, ApacheCon US takes place November 2 - 6 at the Marriott Oakland City Center, California.&lt;/p&gt;

&lt;p&gt;The global conference series gives attendees a 360-degree view into the highly lauded community that develops and shepherds industry-leading Open Source projects, including Apache HTTP Server - the world's most popular Web server software. ApacheCon offers participants the opportunity to deepen their understanding of Open Source methodologies and further advance their participation with like-minded peers in a relaxed, community-focused environment. More than 500 users, developers, and thought leaders are expected to attend.&lt;/p&gt;

&lt;p&gt;With engaging keynote addresses, technical presentations, informal networking, Birds-of-a-Feather discussions, and entertaining social events, ApacheCon US 2009 gives participants the opportunity to choose from more than 60 sessions at the beginner, intermediate, and expert level. From mission-critical implementations to groundbreaking technologies, incubating projects, and collaborative development, ApacheCon presenters and faculty are passionate about some of the hottest issues at the heart of the industry.&lt;/p&gt;

&lt;p&gt;Register today at &lt;a href=&quot;http://www.us.apachecon.com/c/acus2009/about&quot;&gt;http://www.us.apachecon.com/c/acus2009/about&lt;/a&gt;. &lt;/p&gt;</description>
	<pubDate>Mon, 26 Oct 2009 13:01:18 +0000</pubDate>
</item>
<item>
	<title>Jasha Joachimsthal (Hippo): Generate the robots.txt from Hippo CMS</title>
	<guid>tag:blogger.com,1999:blog-5942185880332728298.post-1819522123885782193</guid>
	<link>http://blog.jasha.eu/2009/10/generate-robotstxt-from-hippo-cms.html</link>
	<description>&lt;p&gt;The &lt;a href=&quot;http://www.robotstxt.org/robotstxt.html&quot; target=&quot;_blank&quot;&gt;robots.txt&lt;/a&gt; is a response from your website that is unimportant for your human visitors but very important for search engine crawlers. That's why we created a Hippo CMS / Hippo Site Toolkit (&lt;a href=&quot;http://www.onehippo.org/site-toolkit/&quot; target=&quot;_blank&quot;&gt;HST&lt;/a&gt;) plugin to manage the robots.txt in the CMS and return the proper output.&lt;/p&gt;

&lt;p&gt;
&lt;span&gt;&lt;a href=&quot;http://www.flickr.com/photos/jashaj/4042674298/&quot; title=&quot;robotstxt_01_cms by JAsha J, on Flickr&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2446/4042674298_5f984b3efe_m.jpg&quot; width=&quot;240&quot; height=&quot;177&quot; alt=&quot;robotstxt_01_cms&quot; /&gt;&lt;/a&gt;&lt;/span&gt;
The plugin comes with an out of the box document type to manage the parts of the site that are disallowed to crawl for search robots. There's usually one configuration for all crawlers but if you want, you can add multiple configurations per crawler.
&lt;/p&gt;
&lt;p&gt;
In the first screenshot all crawlers should skip &quot;/donotindex/&quot; and &quot;/search/&quot;, only &quot;Googlebot&quot; should ignore /hide/for/googlebot and the non existing &quot;EvilBot&quot; is kindly requested not to index the site at all.
&lt;/p&gt;
&lt;p&gt;
Generating the response is mostly configuring the HST response for the request for &quot;robots.txt&quot;. The plugin comes with a &lt;a href=&quot;http://robotstxt.forge.onehippo.org/demo.html&quot;&gt;demo project&lt;/a&gt; and documentation &lt;a href=&quot;http://robotstxt.forge.onehippo.org/usage.html&quot;&gt;how to configure&lt;/a&gt; the plugin for your existing project.
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/jashaj/4041930297/&quot; title=&quot;robotstxt_11_site by JAsha J, on Flickr&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2669/4041930297_33c3c6986f_m.jpg&quot; width=&quot;240&quot; height=&quot;177&quot; alt=&quot;robotstxt_11_site&quot; align=&quot;left&quot; /&gt;&lt;/a&gt; In the second screenshot you see the response by the HST for the &quot;robots.txt&quot; request. The HST returns a plain text response with all the fields we've configured in the CMS.&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Originally posted on &lt;a href=&quot;http://blog.jasha.eu&quot;&gt;Jasha's blog&lt;/a&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5942185880332728298-1819522123885782193?l=blog.jasha.eu&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 25 Oct 2009 14:01:10 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Jasha Joachimsthal)</dc:creator>
</item>
<item>
	<title>Vijay Kiran (Hippo): Hippo Forge Friday</title>
	<guid>http://www.vijaykiran.com/?p=1390</guid>
	<link>http://www.vijaykiran.com/hippo-forge-friday/</link>
	<description>&lt;p&gt;On October 30th, we at Hippo are organizing the free &lt;strong&gt;Forge Friday&lt;/strong&gt; hacking event. If you are using any software from Hippo or interested in implementing it in the future or even just wanted to know more about Hippo Software, this is a great time to come and join us during the Friday Forge event.&lt;/p&gt;
&lt;p&gt;You don&amp;#8217;t need to have any prior experience with Hippo software or codebase. The focus of this event is to hack some cool plug-ins for Hippo CMS or Hippo Site Toolkit Components  and in the process learn more about hacking Hippo Stack in general. You can walk into either one of Hippo Offices across the pond (Amsterdam or San Francisco).&lt;/p&gt;
&lt;p&gt;So join us and learn more about Hippo CMS, HST2, Portal, Repoisotory. We&amp;#8217;ll help you with building your own plugins, portlets, components, extensions. You can use our very own &lt;a href=&quot;http://forge.onehippo.org&quot; target=&quot;_blank&quot;&gt;Hippo Forge&lt;/a&gt; to publish your project and earn eternal fame!&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s the &lt;a href=&quot;https://spreadsheets.google.com/a/1hippo.com/viewform?hl=en&amp;amp;formkey=dHgzbVk2OWJwU1Y1SEJKTnJMeUIxNmc6MA&quot; target=&quot;_blank&quot;&gt;Signup Page&lt;/a&gt; for the event. If you want to more information about the event.&lt;/p&gt;
&lt;p&gt;Here are some links about the event:&lt;br /&gt;
→ &lt;a href=&quot;http://blogs.hippo.nl/tjeerd/2009/08/block_your_agenda_for_the_inte.html&quot; target=&quot;_blank&quot;&gt;Forge Friday Announcement &lt;/a&gt;- Tjeerd&amp;#8217;s Blog&lt;br /&gt;
→ &lt;a href=&quot;http://blogs.hippo.nl/arje/2009/10/hippo_forge_friday_october_30.html&quot; target=&quot;_blank&quot;&gt;Forge Friday &lt;/a&gt;- Arjé&amp;#8217;s blog.&lt;br /&gt;
→ &lt;a href=&quot;http://wiki.onehippo.org/display/CMS7/Hippo+Forge+Friday+on+the+30th+of+October&quot; target=&quot;_blank&quot;&gt;Forge Friday Wiki Page&lt;/a&gt;&lt;br /&gt;
→ &lt;a href=&quot;https://spreadsheets.google.com/a/1hippo.com/viewform?hl=en&amp;amp;formkey=dHgzbVk2OWJwU1Y1SEJKTnJMeUIxNmc6MA&quot; target=&quot;_blank&quot;&gt;Forge Friday Signup Page&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Fri, 23 Oct 2009 04:38:16 +0000</pubDate>
	<dc:creator>Vijay Kiran</dc:creator>
</item>
<item>
	<title>Arje Cahn (Hippo): Hippo Forge Friday: October 30</title>
	<guid>http://blogs.onehippo.org/arje/2009/10/hippo_forge_friday_october_30.html</guid>
	<link>http://blogs.onehippo.org/arje/2009/10/hippo_forge_friday_october_30.html</link>
	<description>&lt;p&gt;Get your hands dirty with Hippo, the &lt;b&gt;open source &lt;a href=&quot;http://www.onehippo.com/&quot;&gt;Java CMS and Portal framework&lt;/a&gt;&lt;/b&gt; that everybody talks about. Join us for this &lt;b&gt;free&lt;/b&gt; Hippo Forge Friday plugfest! We've scheduled an afternoon of free flow Hippo coding on &lt;b&gt;Friday, October 30&lt;/b&gt; in</description>
	<pubDate>Thu, 22 Oct 2009 10:08:02 +0000</pubDate>
</item>
<item>
	<title>Tjeerd D. Brenninkmeijer (Hippo): The Hippo hunting season has been opened!</title>
	<guid>http://blogs.onehippo.org/tjeerd/2009/10/the_hippo_hunting_season_has_b_1.html</guid>
	<link>http://blogs.onehippo.org/tjeerd/2009/10/the_hippo_hunting_season_has_b_1.html</link>
	<description>Last week I was in Paris for the &lt;a href=&quot;http://www.openworldforum.org/&quot;&gt;Open Source World Forum&lt;/a&gt;. And looking at my travel plans for the upcoming months I noticed that the conference season has started again. For us this means driving around with big boxes of orange-anti-stress-hippos, lots of demos, contacts with new people, meeting old acquaintances and off course free beers ;-) 

&lt;img alt=&quot;stress_hippo.jpg&quot; src=&quot;http://blogs.hippo.nl/tjeerd/stress_hippo.jpg&quot; width=&quot;350&quot; height=&quot;323&quot; /&gt;s

So if you always wanted to meet a Hippo in real life? Now you have the chance... Hippo's will be all around the globe to visit, sponsor, speak and organize conferences and meet ups. If you want to join us this year in our quest, please have a look below and see where we will be hanging around the upcoming months:

Financial crisis? Get more value out of your information! &lt;a href=&quot;http://hartmanevent.nl/english&quot;&gt;The Hartman Event&lt;/a&gt; will teach you everything about strategies, methodologies, techniques and tools that create a perfect marriage between information and your customer. On October 8, you can meet national and international gurus and peers who will combine theory and best practices in an educating and interactive style.

Block your agenda for the first international &lt;a href=&quot;http://blogs.hippo.nl/tjeerd/2009/08/block_your_agenda_for_the_inte.html&quot;&gt;Hippo Forge Friday&lt;/a&gt; on the 30th of October!
Spend an afternoon together with the core Hippo developers to build the Hippo component you always dreamed of! A Google Analytics plugin, an image resizer, a Jira portlet, a Lightbox HST Component - as long as you think it's cool enough to turn into a Hippo Forge project, you're in! Whether you're an experienced Hippo hacker or a complete newbie, come join us for some proper coding fun, beers and food. If you don't know where to start - we'll help you get on track :)

Apache celebrates its 10th anniversary of the Apache Software Foundation in Oakland, California from 2-6 November and the other 10 year old, Hippo, will be there to join in the celebrations. We can't give away too much about the program just yet, but expect a lot of Hippo folk to be there. If you want to register or find more info, please click &lt;a href=&quot;http://us.apachecon.com/c/acus2009/&quot;&gt;here&lt;/a&gt;.

Hippo will be business partner at the &lt;a href=&quot;http://www.nljug.org/jfall/&quot;&gt;Jfall&lt;/a&gt; congress for the members of the Dutch Java User Groep (NLJUG) again in 2009. An interesting program guarantees a fully packed day with Dutch and international speakers who will share their vision on divers JAVA topics. Visitors can attend lots of sessions around the different techniques and methods.

&lt;a href=&quot;http://jboye.com/conferences/aarhus09/&quot;&gt;JBoye09&lt;/a&gt; is a conference born out of a desire to let people share and learn in an open environment all about content management. It is an intense event with discussions, demos, and interaction from attendees. The main objective is (as it has been from the beginning) to create an open minded conference with a campus like atmosphere for online professionals. Here our global audience can meet and exchange experiences and knowledge in a professional, yet informal atmosphere. Moreover, our social events during the conference offer unrivalled networking opportunities.
Jboye09 

Join us at the 6th Annual &lt;a href=&quot;http://gilbaneboston.com/&quot;&gt;Gilbane Conference in Boston&lt;/a&gt; about &quot;Content, Collaboration &amp; Customers&quot;. As the lines between content technologies continue to blur, the business implications of your content strategies need to be crystal clear. You need to make your web content part of an integrated platform for customers, partners, and employees. You need to understand which social media outlets fit into your overall content and communication channels. And you have to hold down costs for content management and delivery in ways that don't slow down your company's ability to innovate and grow.

If you can't make it to one of these places, just sign up for the events &lt;a href=&quot;http://www.onehippo.com/en/rss-events&quot;&gt;RSS&lt;/a&gt; on our website.</description>
	<pubDate>Wed, 07 Oct 2009 16:23:13 +0000</pubDate>
</item>
<item>
	<title>Lars Peters (Hippo): Do it yourself software</title>
	<guid>tag:blogger.com,1999:blog-7342593045185099406.post-655244316637410156</guid>
	<link>http://larsjpeters.blogspot.com/2009/06/do-it-yourself-software.html</link>
	<description>&lt;!--StartFragment--&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Recently I refreshed my memory on a company my friend &lt;a href=&quot;http://blog.arendsen.net/&quot;&gt;Alef Arendsen&lt;/a&gt;, then at &lt;a href=&quot;http://www.springsource.com/&quot;&gt;SpringSource&lt;/a&gt;, pointed out to me. &lt;span class=&quot;justified&quot;&gt;Charles Simonyi of &lt;a href=&quot;http://intentsoft.com/technology/overview.html&quot;&gt;Intentional&lt;/a&gt; writes that&lt;/span&gt; “all too often the knowledge and insights gained during the development disappear into the details of the code”.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;Although Intentional as a company has been around since 2002, and its ideas date back to the 90’s, this is still very much where business software is at today. The need for specialized engineers to get involved to build applications or websites, comes at a loss of direct influence and knowledge about the things that you need to build. Companies that are able to successfully bridge this gap, can produce stunningly usable software that others just don’t seem to get right: &lt;a href=&quot;http://www.google.com/&quot;&gt;Google&lt;/a&gt; and &lt;a href=&quot;http://www.apple.com/&quot;&gt;Apple&lt;/a&gt; are the obvious examples.&lt;/span&gt;&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;In this light Content Management Systems have always been about putting direct control back into the hands of business. When trying to create web pages, back in the early/mid ‘90s, I had to teach myself a bit of HTML for even the simplest piece of green text on a black background. With business software this is no different. While years back for every 1 or 0 you needed a team of programmers, now many of us with simple development skills can create very complex and powerful applications.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Most of these developments stop short of one final step: new technology has empowered the developer, but you still need programming skills to get sophisticated enterprise applications up and running. The business users or ‘lay programmers’ as Martin Fowler calls them &lt;a href=&quot;http://martinfowler.com/bliki/IntentionalSoftware.html&quot;&gt;here&lt;/a&gt;, remain dependent on the IT community to realize their ideas. Hence business users stretch the boundaries of the tools they control: multi billion dollar projects with 1000s of people are entirely managed with cleverly designed spreadsheets.&lt;/span&gt;&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;The first step in CMS development was to take the developers out of the loop in changing content on the website. With this 'Do-it-yourself' software a company did not only dramatically reduce the cost of maintenance, it also enabled business users to control the content directly. This in turn solved many of the translation problems on early websites. With a CMS it was immediately clear what a text would look like online. Text could be correctly fitted and the author could place pictures exactly where he wanted. &lt;/span&gt;&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Today even the simplest CMS has solved this problem and it is time to push the bar a bit higher: giving business the power to change and build complex websites integrating existing applications without IT support: so it does not require a project proposal and 4 months queuing time to get a new site live. And yes, it would be nice if it could all run on an invisible internal or external cloud infrastructure, so you would not have to worry about plugging in an extra server or getting the backup hooked up. &lt;/span&gt;&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;The benefits are clear: No more ridiculously detailed requirement sheets, no more blame game when the results don’t meet expectations in spite of this effort, and much, much shorter cycles – removing an entire layer of ‘friction’ between customer and producer.&lt;/span&gt;&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;None of this is new – but in practice many challenges remain. While those in the know seem to be able to develop great looking, complex integrated sites in a matter of days or weeks; the average business user still fumbles with his Excel spreadsheet. And while the developer community has largely embraced the open source development model, participation of business users is notably low. With business users largely sidelined, there is a permanent danger for open source projects to lose track of the ‘business intent’ of a project. In projects where the engineers and business end users are one and the same, this danger is relatively low, but with any software that moves up the enterprise ladder, the dangers of a disconnect grow. On the bright side: if successfully tackled there seems to be a terrific opportunity for open source companies to involve more business users in their projects. &lt;/span&gt;&lt;/p&gt;        &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Ideally the end result of such a project is not only a CMS driven website or a content driven portal, but a system that allows users to use this as a starting point, with easy to use interfaces for creating additional websites and/or portals.&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;!--[if !supportEmptyParas]--&gt;&lt;!--[endif]--&gt; &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Here are a few things we do at Hippo make it easier for our partners and customers to build such environments:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span lang=&quot;EN-US&quot;&gt;Provide direct and user friendly access to administrative interfaces; &lt;span&gt;eg, drag and drop Portlet selector for Jetspeed Portal 2&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;Give access to functionality previously only available to programmers through a user friendly UI:&lt;span&gt; eg, Nested Template Picker, Site control functions in CMS 7 or space creation in Jetspeed Portal 2.&lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span lang=&quot;EN-US&quot;&gt;Involve end-users in ongoing road map meetings, not just during the requirement / delivery phase&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span lang=&quot;EN-US&quot;&gt;And of-course: Develop products with a keen eye on keeping things clean and nimble for the daily user&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;    &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;So we're not quite at the full realization of Simonyi’s lofty goals yet, but rapid development environments and the rise of cloud infrastructures provide an opportunity to involve business users in different ways than before. Companies definitely seem eager to embrace it.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;  &lt;!--EndFragment--&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7342593045185099406-655244316637410156?l=larsjpeters.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 22 Sep 2009 03:54:00 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Lars Peters)</dc:creator>
</item>
<item>
	<title>Jeroen Reijn (Hippo): Apache Cocoon and Javascript minification</title>
	<guid>tag:blogger.com,1999:blog-2962867622850517744.post-2307076827958581338</guid>
	<link>http://blog.jeroenreijn.com/2009/09/apache-cocoon-and-javascript.html</link>
	<description>A couple of days ago somebody on the &lt;a href=&quot;http://cocoon.apache.org/&quot;&gt;Apache Cocoon&lt;/a&gt; user list send a message to the mailing-list about on the fly minification of for instance Javascript files. This topic has been quite popular over the past years, since web application have become richer and Javascript files have become larger.&lt;br /&gt;&lt;br /&gt;The ideal situation would be to compres your static files (CSS or Javascript) at build time, so this will not cost you any processing power, when your application is already running. I myself quite often use the &lt;a href=&quot;http://maven.apache.org/&quot;&gt;Maven 2&lt;/a&gt; &lt;a href=&quot;http://alchim.sourceforge.net/yuicompressor-maven-plugin/overview.html&quot;&gt;YUI compressor plugin&lt;/a&gt; while building my projects, but in case you can't use this plugin you could think about a different solution. Since I've been using Cocoon for over more then 5 years, I thought I gave it another try and write a nice Cocoon reader that does this minification for you.&lt;br /&gt;&lt;br /&gt;There are multiple minification and obfuscation frameworks out there. One has a greater compression ratio then the other, but for me the most well know ones are probably:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href=&quot;http://shrinksafe.dojotoolkit.org/&quot; target=&quot;_blank&quot;&gt;Dojo Shrinksafe&lt;/a&gt; - Rhino based compressor from the Dojo Toolkit&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://developer.yahoo.com/yui/compressor/&quot; target=&quot;_blank&quot;&gt;YUI Compressor&lt;/a&gt; - Rhino based compressor by Yahoo&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.crockford.com/javascript/jsmin.html&quot;&gt;JSMin&lt;/a&gt; - a whitespace compressor by Douglas Crockford&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Since Apache Cocoon comes with a version of Rhino and both #1 and #2 have their own version of Rhino included, this could end up having nasty conflicts because of two different versions of the library on the same classpath. Therefore I chose to write a reader based on JSMin, which does a lot of whitespace compression for you.&lt;br /&gt;&lt;br /&gt;The implementation of this reader was quite simple and if you're interested, you can get the source &lt;a href=&quot;http://people.apache.org/%7Ejreijn/sources/java/JavaScriptMinifyReader.java&quot;&gt;here&lt;/a&gt;. Do keep in mind that you will have to have the JSMin.java file also on the classpath, otherwise it wil not work.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/2962867622850517744-2307076827958581338?l=blog.jeroenreijn.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 15 Sep 2009 20:01:17 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Jeroen Reijn)</dc:creator>
</item>
<item>
	<title>Tjeerd D. Brenninkmeijer (Hippo): Block your agenda for the international Hippo Forge Friday on the 30th of October</title>
	<guid>http://blogs.onehippo.org/tjeerd/2009/08/block_your_agenda_for_the_inte.html</guid>
	<link>http://blogs.onehippo.org/tjeerd/2009/08/block_your_agenda_for_the_inte.html</link>
	<description>Forge Friday sounds cool, but what is it?

The goal for everyone, so all developers, technical support engineers, architects, sys admins, hackers etc. is to build a CMS plugin, a portlet, a repository addon, a HST component, or something else that you think is cool enough to turn into a &lt;a href=&quot;http://forge.onehippo.org/&quot;&gt;Hippo Forge&lt;/a&gt; project (and win the big prize(s)! ;-).

On Friday the 14th of August Hippo had its first international Forge Friday, a joint effort between the offices in San Francisco and Amsterdam. We had a full afternoon and evening of pure hacking, a big BBQ, beers, and of course: geeky prizes. 

Besides building forge projects the overall goal is also to share knowledge between all the different people in our offices in Amsterdam and San Francisco and do something different for a day. So build a portlet when you've been building HST components all of your life, or build a CMS plugin when you've been building portlets since the Americans set foot on the moon.

&lt;img alt=&quot;forge_friday1.jpg&quot; src=&quot;http://blogs.hippo.nl/tjeerd/forge_friday1.jpg&quot; width=&quot;350&quot; height=&quot;320&quot; /&gt;
 
For this special occasion we built a brand new Forge Portal (a mashup of &lt;a href=&quot;http://www.onehippo.org/cms7&quot;&gt;Hippo CMS&lt;/a&gt;, &lt;a href=&quot;http://portals.apache.org/jetspeed-2/&quot;&gt;Jetspeed&lt;/a&gt; &amp; &lt;a href=&quot;http://www.google.com/apps/intl/en/business/index.html&quot;&gt;Google ideas&lt;/a&gt;). On this Portal employees could submit ideas of what they think would be useful to create or (also important) fun to work on.

During an intensive and fairly warm afternoon in our brand new office space you could feel the creativity and energy flowing. Groups were formed in such a way that teams were mixed as much as possible to get a maximum cross-over of knowledge and skills. And the results were amazing. 

&lt;img alt=&quot;forge_friday2.jpg&quot; src=&quot;http://blogs.hippo.nl/tjeerd/forge_friday2.jpg&quot; width=&quot;350&quot; height=&quot;221&quot; /&gt;

Not only did it seem possible to create a forge project in less then a day, it was even possible to make it work and demonstrate it to the rest of the colleagues. There were no restrictions to the projects chosen, but there were some for the presentations:

- Whatever you build has to be targeted towards the latest stable or Trunk versions of Hippo CMS 7, Jetspeed 2.2, HST 2, Hippo Repository 2, or a combination;
- Your code has to be ready at 20:00, and demoed live, in a 2 minute elevator pitch;
- Your demo has to be accessible over HTTP from within a web browser (ie - from the jury laptop); 
- You have to submit your demo by adding a URL to the submission page, after which the jury will randomly pick demos from the list;
- You have to assign a presenter for your demo. Only one person is allowed to touch the keyboard and mouse. And make sure to test your demo remotely :-);
- No slides or code is allowed; the only thing that you'll be judged upon is the running demo;

Results of the day: 9 forge projects presented. Interesting components were built that are more or less usable for clients right away. Good integration between the different technologies, lots of interaction between departments / developers, 20 kilo of meat, 60 liter of beer, 1 bottle of cola...

&lt;img alt=&quot;forge_frida4.jpg&quot; src=&quot;http://blogs.hippo.nl/tjeerd/forge_friday4.jpg&quot; width=&quot;350&quot; height=&quot;221&quot; /&gt;

This was just the first day in a hopefully long series of Hippo Forge Fridays. We think there are lots of you out there who would like to dive deeper into the Hippo products and built new components together with the experts in the specific Hippo / open source fields. Therefore we decided to organize the first Hippo Forge Friday for everyone who would like to participate in or contribute to the Hippo community.

So here we go:

&lt;strong&gt;What:&lt;/strong&gt; First international Hippo Forge Friday with friends
&lt;strong&gt;When:&lt;/strong&gt; October 30th from 14.00 until 21.00 (CET)
&lt;strong&gt;Where:&lt;/strong&gt; Hippo Office Amsterdam, Hippo Office San Francisco or join us through skype/ internet etc
&lt;strong&gt;Why: &lt;/strong&gt;To learn all about the Hippo products, create new or expand the current plug-ins, HST components, portlets etc. And to win eternal fame by earning one of the prestigious prizes in the following categories ( The Wow! Factor award, Most customer friendly, Most promising, And of course.. The Nice Try Award (too bad it didn't work out))
&lt;strong&gt;Cost:&lt;/strong&gt; Free (as in free beer ;-) 
&lt;strong&gt;Who:&lt;/strong&gt; Everyone who has a Hippo heart.

If you are interested in joining or want more information, drop an email at &quot;forgefriday at onehippo dot com&quot;.</description>
	<pubDate>Wed, 26 Aug 2009 14:18:36 +0000</pubDate>
</item>
<item>
	<title>Shane Smith (Hippo): Looking for parameters settings on a hst component</title>
	<guid>tag:blogger.com,1999:blog-1230215522075772904.post-6405429447259042975</guid>
	<link>http://shane-hippo.blogspot.com/2009/08/looking-for-parameters-settings-on-hst.html</link>
	<description>Finding all components with a certain parameter setting,&lt;br /&gt;You can use in cms/repository:&lt;br /&gt;//*[@hst:parametervalues='value']&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/1230215522075772904-6405429447259042975?l=shane-hippo.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 20 Aug 2009 08:48:00 +0000</pubDate>
	<dc:creator>noreply@blogger.com (shane smith)</dc:creator>
</item>
<item>
	<title>Shane Smith (Hippo): Removing meta files</title>
	<guid>tag:blogger.com,1999:blog-1230215522075772904.post-1334337348443254853</guid>
	<link>http://shane-hippo.blogspot.com/2009/08/removing-meta-files.html</link>
	<description>Note:&lt;br /&gt;Removing meta.xml files for a gallery import from a dav export:&lt;br /&gt;&lt;code&gt;find . -iname '*.meta.xml' -exec rm '{}' \;&lt;/code&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/1230215522075772904-1334337348443254853?l=shane-hippo.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 19 Aug 2009 15:01:12 +0000</pubDate>
	<dc:creator>noreply@blogger.com (shane smith)</dc:creator>
</item>
<item>
	<title>Jeroen Reijn (Hippo): Japanese and Java resource bundles</title>
	<guid>tag:blogger.com,1999:blog-2962867622850517744.post-643144263057325293</guid>
	<link>http://blog.jeroenreijn.com/2009/08/japanese-and-java-resource-bundles.html</link>
	<description>At &lt;a href=&quot;http://www.onehippo.com/&quot;&gt;Hippo&lt;/a&gt; we have a project, which is build with &lt;a href=&quot;http://en.wikipedia.org/wiki/JavaServer_Faces&quot;&gt;Java Server Faces&lt;/a&gt;, for which I occasionally do some maintenance. A while ago I had an issue in our JIRA bug tracker that reported an error for the Japanese version of the website. The error came from a component that reads information from a resource bundle properties file, which is stored on the local filesystem. In this case from the Japanese version of the resource bundle (ApplicationResource_jp.properties), which is used by the web application to display some Japanese labels.&lt;br /&gt;&lt;br /&gt;The error wasn't very clear since it only gave the following exception:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;java.util.MissingResourceException:&lt;br /&gt;Can't find resource for bundle java.util.PropertyResourceBundle, key 'somekey'&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Looking in my project, I could clearly see that the resource bundle &lt;span&gt;was&lt;/span&gt; there and after a quick peek at the resource bundle file itself, I could see that the requested key was also present.&lt;br /&gt;&lt;br /&gt;After trying some different options I came to the conclusion that my web application was unable to read the actual .properties file from the classpath. By searching some more, I found out that the Java compiler and other Java tools can only process files which contain Latin-1 and/or Unicode-encoded (\udddd notation) characters. Since I was seeing Japanese characters when opening the properties file, it was clearly the case that this file did not meet those requirements.&lt;br /&gt;&lt;br /&gt;Solving this issue was quite simple in the end, since the &lt;a href=&quot;http://java.sun.com/javase/6/&quot;&gt;Sun JDK&lt;/a&gt; comes with a utility to help you out with files that contain characters, which are not Latin1. The utility is called: '&lt;a href=&quot;http://java.sun.com/javase/6/docs/technotes/tools/windows/native2ascii.html&quot;&gt;native2ascii&lt;/a&gt;' and can be run from the command-line quite easily by typing:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ native2ascii [inputfile] [outputfile]&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Once I did that the application was working like a charm again!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/2962867622850517744-643144263057325293?l=blog.jeroenreijn.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 07 Aug 2009 16:01:17 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Jeroen Reijn)</dc:creator>
</item>
<item>
	<title>Vijay Kiran (Hippo): Video: How to add a workflow step to Hippo CMS 7</title>
	<guid>http://www.vijaykiran.com/?p=1254</guid>
	<link>http://www.vijaykiran.com/video-how-to-add-a-workflow-step-to-hippo-cms-7/</link>
	<description>&lt;blockquote&gt;&lt;p&gt;Berry explains how to add a workflow step to Hippo CMS. This video tutorial takes you through the process of adding a button to the CMS that calls a workflow action on the repository.&lt;br /&gt;
You can find the discussed code on the Hippo Forge: forge.onehippo.org/projects/workflow-action/&lt;/p&gt;
&lt;p&gt;via: &lt;a href=&quot;http://blogs.hippo.nl/arje/&quot; target=&quot;_blank&quot;&gt;Arjé Cahn&lt;/a&gt;
&lt;/p&gt;&lt;/blockquote&gt;
&lt;div align=&quot;center&quot;&gt;

&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;/p&gt;</description>
	<pubDate>Fri, 07 Aug 2009 10:54:44 +0000</pubDate>
	<dc:creator>Vijay Kiran</dc:creator>
</item>
<item>
	<title>Shane Smith (Hippo): HippoOnRails: Experiment 2</title>
	<guid>tag:blogger.com,1999:blog-1230215522075772904.post-5237105354448544724</guid>
	<link>http://shane-hippo.blogspot.com/2009/08/hor-experiment-2.html</link>
	<description>&lt;h2&gt;Introduction&lt;/h2&gt;&lt;br /&gt;In this experiment I'll show you how you can set up your own application within 15 minutes, with Hippo on Rails.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Prerequisite&lt;/h2&gt;&lt;br /&gt;For this to work you will need to have set up a working &lt;a href=&quot;http://shane-hippo.blogspot.com/2009/07/hippo-on-rails.html&quot;&gt;HippoOnRails example project&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Start up&lt;/h2&gt;&lt;br /&gt;Start the cms:&lt;code&gt; mvn jetty:run-war&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Open up the console and add another node to the root node, call it ToDos&lt;br /&gt;&lt;br /&gt;Start the ruby server: &lt;code&gt;jruby script/server&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Next open up a console and generate the code with the normal ruby scaffold:&lt;br /&gt;&lt;code&gt;jruby -S script/generate scaffold todo deadline:date title:string description:text&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Open up the model and extend the todo model from the jcr, add the columns (plus id column) and the table name, it should end up looking link this:&lt;br /&gt;&lt;a href=&quot;http://1.bp.blogspot.com/_YddoVdVB_fc/Snnxk4nC8xI/AAAAAAAAAAk/k6OH59t_tVk/s1600-h/todo_model.png&quot;&gt;&lt;img src=&quot;http://1.bp.blogspot.com/_YddoVdVB_fc/Snnxk4nC8xI/AAAAAAAAAAk/k6OH59t_tVk/s320/todo_model.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5366586046962397970&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;The set_new_record method is necessary to edit the node values, instead of creating new values each time. This is a result of the hack were using to set up this experiment.&lt;br /&gt;&lt;br /&gt;Don't forget to ad an &lt;span&gt;id&lt;/span&gt; column, rails needs this to create the urls for your model.&lt;br /&gt;&lt;br /&gt;Now fire up your webbrowser once again, point it to http://localhost:3000/todos, and see your results.&lt;br /&gt;&lt;br /&gt;This is it, it's &lt;strong&gt;&lt;em&gt;this easy&lt;/em&gt;&lt;/strong&gt; to set up a very basic application in HippoOnRails.&lt;br /&gt;&lt;br /&gt;If you have any problems setting this up, don't hesitate to &lt;a href=&quot;http://forge.onehippo.org/forum/forum.php?forum_id=128&quot;&gt;ask for help with your HippoOnRails experiment&lt;/a&gt; on our forum.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/1230215522075772904-5237105354448544724?l=shane-hippo.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 05 Aug 2009 20:40:00 +0000</pubDate>
	<dc:creator>noreply@blogger.com (shane smith)</dc:creator>
</item>
<item>
	<title>Shane Smith (Hippo): Hippo on rails</title>
	<guid>tag:blogger.com,1999:blog-1230215522075772904.post-8017100106823621323</guid>
	<link>http://shane-hippo.blogspot.com/2009/07/hippo-on-rails.html</link>
	<description>&lt;div&gt;&lt;span&gt;an experiment  &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;    &lt;br /&gt;&lt;h2&gt;Intro&lt;/h2&gt;&lt;p&gt;My employer, &lt;a href=&quot;http://www.onehippo.com/&quot;&gt;onehippo&lt;/a&gt;, challenged me to create a &lt;em&gt;Ruby on Rails&lt;/em&gt; demo connecting to the &lt;em&gt;Hippo JCR repository&lt;/em&gt;. So I took the two examples from &lt;a href=&quot;http://dev.day.com/microsling/content/blogs/main.html?category=dynamic%20languages&quot;&gt;day.com&lt;/a&gt; and tweaked them into one file until I had a working example.&lt;/p&gt;&lt;h2&gt;Preparation&lt;/h2&gt;&lt;p&gt;To run the example application you will need to install &lt;em&gt;jruby&lt;/em&gt; and some java library files, the &lt;em&gt;onehippo&lt;/em&gt; cms and the &lt;em&gt;hippoonrails&lt;/em&gt; example application.&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;To download and install jruby and rubyonrails, &lt;a href=&quot;http://kenai.com/projects/jruby/pages/GettingStarted&quot;&gt;follow this tutorial&lt;/a&gt;.&lt;/li&gt; &lt;li&gt;You will also need some of &lt;a href=&quot;http://forge.onehippo.org/frs/download.php/11/jrubyhippojars.zip&quot;&gt;these jars&lt;/a&gt; in your jruby/lib dir.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;If you don't have a hippo repository, then download the &lt;a href=&quot;http://www.onehippo.org/cms7/delve_into/quickstart.html&quot;&gt;hippo quickstart&lt;/a&gt; war file.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;svn checkout http://forge.onehippo.org/svn/hippoonrails/tags/phonebook_1_0_1/ &lt;/code&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Getting everything to work probably took some time. If you have any questions or need some help, don't hesitate to ask them on the &lt;a href=&quot;http://forge.onehippo.org/forum/forum.php?forum_id=128&quot;&gt;hippoonrails forum&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you are still here, then the next few steps should be a breeze. :-)&lt;/p&gt;&lt;br /&gt;&lt;h2&gt; &lt;a href=&quot;http://forge.onehippo.org/svn/hippoonrails/tags/phonebook_1_0_0/&quot;&gt;The example hippoonrails application&lt;/a&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;First go to your cms (quickstart) directory and run it with: &lt;code&gt;mvn jetty:run-war&lt;/code&gt;&lt;/p&gt;Go to your cms console (&lt;a href=&quot;http://localhost:8080/cms/console&quot;&gt;http://localhost:8080/cms/console&lt;/a&gt;) select the root node and add the node people (nt:unstructured) needed for the example application&lt;br /&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_YddoVdVB_fc/SnSnVCQB00I/AAAAAAAAAAM/8fj-M4hD-4M/s1600-h/create_people_node.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_YddoVdVB_fc/SnSnVCQB00I/AAAAAAAAAAM/8fj-M4hD-4M/s320/create_people_node.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5365097035928294210&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Next go to your hippoonrails example application and start the webbrick server: jruby -S script/server&lt;br /&gt;Then fire up your webbrowser and go to &lt;a href=&quot;http://localhost:3000/people&quot;&gt;http://localhost:3000/people&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You should be able to create a new person, edit and delete it.&lt;br /&gt;&lt;br /&gt;That was easy now, wasn't it?&lt;br /&gt;Next stop, &lt;a href=&quot;http://shane-hippo.blogspot.com/2009/08/hor-experiment-2.html&quot;&gt;set up your experiment with scaffold and the basewithouttables/jcr connector hack&lt;/a&gt;.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/1230215522075772904-8017100106823621323?l=shane-hippo.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 28 Jul 2009 05:00:00 +0000</pubDate>
	<dc:creator>noreply@blogger.com (shane smith)</dc:creator>
</item>
<item>
	<title>Niels van Kampenhout (Hippo): Creating a new document through the Hippo Repository Workflow API</title>
	<guid>tag:blogger.com,1999:blog-49500217511749617.post-1392800822193897306</guid>
	<link>http://dev.nielsvk.com/2009/06/creating-new-document-through-hippo.html</link>
	<description>It's already a couple of months ago that I wrote about &lt;a href=&quot;http://dev.nielsvk.com/2009/02/using-hippo-repository-workflow-api.html&quot;&gt;using the Hippo Repository Workflow API&lt;/a&gt;. Back then, I explained how to modify an existing document, and request publication. Ever since that blog post I have been getting the same question over and over again: how to create a new document through the repository API?&lt;br /&gt;&lt;br /&gt;If you read the previous blog post, and looked at the worklfow API, it might not be directly obvious how to create a new document through the workflow. Think about how a document is created though: it is always created as a child node of an existing node: the parent folder. Creating a new document is actually part of the Folder Workflow!&lt;br /&gt;&lt;br /&gt;Knowing this, it all becomes very easy. Let's step through the code:&lt;br /&gt;&lt;br /&gt;Let's hardcode some values for simplicity's sake:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;&lt;br /&gt;String folderPath = &quot;/content/documents/news&quot;;&lt;br /&gt;String newDocumentName = &quot;Hippo CMS 7.1 released!&quot;;&lt;br /&gt;String newDocumentType = &quot;defaultcontent:news&quot;;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;We will be creating a new document inside the folder &lt;code&gt;/content/documents/news&lt;/code&gt;. This is actually a node of type &lt;code&gt;hippostd:folder&lt;/code&gt;, which means a FolderWorkflow applies to this node. We will be creating a new document of type &quot;defaultcontent:news&quot;, as provided with the Hippo CMS Quickstart WAR. We will call the new document &quot;Hippo CMS 7.1 released!&quot;.&lt;br /&gt;&lt;br /&gt;Next, we get the folder node from the repository session:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;&lt;br /&gt;// get the folder node&lt;br /&gt;HippoNode folderNode = (HippoNode) session.getItem(folderPath);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;We also need the workflow manager:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;&lt;br /&gt;// get the workflow manager&lt;br /&gt;HippoWorkspace workspace = (HippoWorkspace) folderNode.getSession().getWorkspace();&lt;br /&gt;WorkflowManager workflowMgr = workspace.getWorkflowManager();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Using the workflow manager, get the folder node's workflow:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;&lt;br /&gt;// get the folder node's workflow&lt;br /&gt;Workflow workflow = workflowMgr.getWorkflow(&quot;internal&quot;, folderNode);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Check if the workflow is a folder workflow, and cast it to a FolderWorkflow object:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;&lt;br /&gt;if (workflow instanceof FolderWorkflow) {&lt;br /&gt;    FolderWorkflow fw = (FolderWorkflow) workflow;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now that we have the folder workflow, we can simply call the &lt;code&gt;add&lt;/code&gt; method. It takes three String parameters: the category (&quot;new-document&quot;), the node type, and the node name:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;&lt;br /&gt;// create the new document&lt;br /&gt;fw.add(&quot;new-document&quot;, newDocumentType, newDocumentName);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;That's it! Run the program, and check your CMS. There should be a new document &quot;Hippo CMS 7.1 Released!&quot; visible under the &quot;news&quot; folder. You can edit and publish this document just like any other. To modify the document through the API, see my &lt;a href=&quot;http://dev.nielsvk.com/2009/02/using-hippo-repository-workflow-api.html&quot;&gt;previous post on this subject&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;For your convenience, here is the complete class:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;&lt;br /&gt;package org.example;&lt;br /&gt;&lt;br /&gt;import java.rmi.RemoteException;&lt;br /&gt;&lt;br /&gt;import javax.jcr.RepositoryException;&lt;br /&gt;import javax.jcr.Session;&lt;br /&gt;&lt;br /&gt;import org.hippoecm.repository.HippoRepository;&lt;br /&gt;import org.hippoecm.repository.HippoRepositoryFactory;&lt;br /&gt;import org.hippoecm.repository.api.HippoNode;&lt;br /&gt;import org.hippoecm.repository.api.HippoWorkspace;&lt;br /&gt;import org.hippoecm.repository.api.Workflow;&lt;br /&gt;import org.hippoecm.repository.api.WorkflowException;&lt;br /&gt;import org.hippoecm.repository.api.WorkflowManager;&lt;br /&gt;import org.hippoecm.repository.standardworkflow.FolderWorkflow;&lt;br /&gt;&lt;br /&gt;public class CreateDocument {&lt;br /&gt;&lt;br /&gt;    public static void main(String[] args) {&lt;br /&gt;        Session session;&lt;br /&gt;        HippoRepository repository;&lt;br /&gt;        try {&lt;br /&gt;            repository = HippoRepositoryFactory.getHippoRepository(&quot;rmi://localhost:1099/hipporepository&quot;);&lt;br /&gt;            session = repository.login(&quot;author&quot;, &quot;author&quot;.toCharArray());&lt;br /&gt;            &lt;br /&gt;            String folderPath = &quot;/content/documents/news&quot;;&lt;br /&gt;            String newDocumentName = &quot;Hippo CMS 7.1 released!&quot;;&lt;br /&gt;            String newDocumentType = &quot;defaultcontent:news&quot;;&lt;br /&gt;&lt;br /&gt;            // get the folder node&lt;br /&gt;            HippoNode folderNode = (HippoNode) session.getItem(folderPath);&lt;br /&gt;            &lt;br /&gt;            // get the workflow manager&lt;br /&gt;            HippoWorkspace workspace = (HippoWorkspace) folderNode.getSession().getWorkspace();&lt;br /&gt;            WorkflowManager workflowMgr = workspace.getWorkflowManager();&lt;br /&gt;            &lt;br /&gt;            // get the folder node's workflow&lt;br /&gt;            Workflow workflow = workflowMgr.getWorkflow(&quot;internal&quot;, folderNode);&lt;br /&gt;            &lt;br /&gt;            if (workflow instanceof FolderWorkflow) {&lt;br /&gt;                FolderWorkflow fw = (FolderWorkflow) workflow;&lt;br /&gt;                &lt;br /&gt;                // create the new document&lt;br /&gt;                fw.add(&quot;new-document&quot;, newDocumentType, newDocumentName);&lt;br /&gt;                &lt;br /&gt;                System.out.println(&quot;New document '&quot; + newDocumentName + &quot;' of type '&quot; + newDocumentType + &quot;' created&quot;);&lt;br /&gt;            }&lt;br /&gt;            else {&lt;br /&gt;                System.out.println(&quot;Workflow is not an instance of FolderWorkflow&quot;);&lt;br /&gt;                return;&lt;br /&gt;            }&lt;br /&gt;            &lt;br /&gt;        } catch (RepositoryException e) {&lt;br /&gt;            System.out.println(e.getMessage());&lt;br /&gt;        } catch (RemoteException e) {&lt;br /&gt;            System.out.println(e.getMessage());&lt;br /&gt;        } catch (WorkflowException e) {&lt;br /&gt;            System.out.println(e.getMessage());&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/49500217511749617-1392800822193897306?l=dev.nielsvk.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 23 Jun 2009 21:33:00 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Niels)</dc:creator>
</item>
<item>
	<title>David Taylor (Hippo): Roadmap Jetspeed 2.2.1</title>
	<guid>tag:blogger.com,1999:blog-8747054103324856503.post-3201750838967443021</guid>
	<link>http://davidseantaylor.blogspot.com/2009/06/roadmap-jetspeed-221.html</link>
	<description>I am sketching out a Roadmap for the next Jetspeed release, version 2.2.1. Here was my original plan for 2.2.1, to be based on maintenance and improvements to 2.2.0:&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Old Roadmap for 2.2.1&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span&gt;Advanced Portlet API 2.0 Support&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;Data Migration from 2.1.x to 2.2.x&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;Bug and Performance fixes to initial 2.2.0 release &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;Complete implementation of optional JSR-286 Cache features&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;Improved User and Site Browsing in Admin Portlets&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;Registry Export&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;As time passes, priorities change. I have been working with the &lt;a href=&quot;http://onehippo.com/&quot;&gt;Hippo&lt;/a&gt; Enterprise Content Management suite quite a bit lately, and I realized Content Management goes hand and hand with portals. It is about time Jetspeed gets content management features too. We were originally planning on implementing &lt;a href=&quot;http://jackrabbit.apache.org/&quot;&gt;JCR&lt;/a&gt; features in version 2.2.2. After discussions with other team members, we are now looking at the following feature sets for JCR as the top priority for the 2.2.1 Roadmap:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span&gt;Site and PSML persisted in JCR (Jackrabbit) Repository&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;Navigation integration with repository: portal can navigate directly to bookmarked content&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;Automatic publishing of content from repository, immediately accessible in portal&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;Security synchronized with JCR security&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;We will still need to provide Data Migration for 2.1.x users, thus the new high level Roadmap for 2.2.1 is as follows:&lt;br /&gt;&lt;br /&gt;&lt;span&gt;New High Level Roadmap for 2.2.1&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Site and PSML persisted in JCR (Jackrabbit) Repository&lt;/li&gt;&lt;li&gt;Navigation integration with repository: portal can navigate directly to bookmarked content&lt;/li&gt;&lt;li&gt;Automatic publishing of content from repository, immediately accessible in portal&lt;/li&gt;&lt;li&gt;Security synchronized with JCR security&lt;/li&gt;&lt;li&gt;Data Migration from 2.1.x to 2.2.x&lt;/li&gt;&lt;li&gt;Bug and Performance fixes to initial 2.2.0 release&lt;/li&gt;&lt;li&gt;Registry Export&lt;/li&gt;&lt;/ul&gt; With full Portlet API 2.0 support from version 2.2.0, and JCR support coming in version 2.2.1, we are planting the foundation for developing Java enterprise applications mixed with content.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8747054103324856503-3201750838967443021?l=davidseantaylor.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 19 Jun 2009 21:31:00 +0000</pubDate>
	<dc:creator>noreply@blogger.com (DST)</dc:creator>
</item>
<item>
	<title>Vijay Kiran (Hippo): Customizing Hippo CMS – Getting Started</title>
	<guid>http://www.vijaykiran.com/?p=1213</guid>
	<link>http://www.vijaykiran.com/customizing-hippo-cms-getting-started/</link>
	<description>&lt;p&gt;&lt;em&gt;This post is part of a series which will be focusing mainly on Hippo CMS&amp;#8217;s extensibility. These posts are more targeted towards the developers who want to customize and enhance the core CMS functionality. &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Hippo CMS is part of the &lt;a href=&quot;http://www.onehippo.com&quot; target=&quot;_blank&quot;&gt;Hippo&amp;#8217;s&lt;/a&gt; Open Source Enterprise Content Management System. It provides a browser based user interface for managing the content in the Hippo Repository. &lt;a href=&quot;http://www.onehippo.org/cms7/&quot; target=&quot;_blank&quot;&gt;Hippo CMS&lt;/a&gt; is fully customizable and developer friendly CMS that provides various ways to extend its functionality.&lt;/p&gt;
&lt;p&gt;Hippo CMS application is built using &lt;a href=&quot;http://wicket.apache.org&quot; target=&quot;_blank&quot;&gt;Apache Wicket&lt;/a&gt;, one the best frameworks available today for building web applications using Java. Wicket is known for its simplicity, and its component-oriented programming, thus providing solid base for the Hippo CMS.&lt;/p&gt;
&lt;p&gt;Hippo CMS has pluggable architecture which boasts of first class plug-in mechanism. Depending on your needs, you can create complex document types, extend and enhance the user interface and even create a combined add-on that can change the Core CMS and even replace. All you need to know to build the GUI add-ons is Java and Wicket.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ll try to explain each of these extensibility in detailed examples in this series of blog posts. So let us get started.&lt;/p&gt;
&lt;p&gt;Yesterday we have &lt;a href=&quot;http://lists.onehippo.org/pipermail/hippo-cms7-user/2009-June/001245.html&quot; target=&quot;_blank&quot;&gt;announced&lt;/a&gt; a new version of &lt;a href=&quot;http://www.onehippo.org/cms7/&quot; target=&quot;_blank&quot;&gt;Hippo CMS&lt;/a&gt; (version 7.1) and &lt;a href=&quot;http://www.onehippo.org/site-toolkit/home&quot; target=&quot;_blank&quot;&gt;Hippo Site Toolkit 2&lt;/a&gt;(Version 2.03.09).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Getting and Building Hippo CMS&lt;/strong&gt;&lt;br /&gt;
&lt;em&gt;I&amp;#8217;m assuming you are using a Unixy Operating system (Linux/Mac OS X). If you use windows replace the commands appropriately.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Before starting to checkout the source and building please make sure you have the following installed on your computer.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://subversion.tigris.org/&quot; target=&quot;_blank&quot;&gt;Subversion&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://maven.apache.org&quot; target=&quot;_blank&quot;&gt;Apache Maven 2.1.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://java.sun.com&quot; target=&quot;_blank&quot;&gt;JDK&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Open a command line and check out the code for Hippo ECM using following command. Please note that if you are using an graphical client such as Tortose SVN, then you can checkout using the appropriate menu option.&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;bash&quot;&gt;&lt;span&gt;svn&lt;/span&gt; &lt;span&gt;co&lt;/span&gt; http:&lt;span&gt;//&lt;/span&gt;svn.onehippo.org&lt;span&gt;/&lt;/span&gt;repos&lt;span&gt;/&lt;/span&gt;hippo&lt;span&gt;/&lt;/span&gt;hippo-ecm&lt;span&gt;/&lt;/span&gt;tags&lt;span&gt;/&lt;/span&gt;Tag-HREPTWO-v2_06_06 cms-&lt;span&gt;7.1&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Now change to the cms-7.1 directory and build the Hippo ECM using maven.&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;bash&quot;&gt;&lt;span&gt;cd&lt;/span&gt; cms-&lt;span&gt;7.1&lt;/span&gt;
mvn clean &lt;span&gt;install&lt;/span&gt; &lt;span&gt;&amp;#91;&lt;/span&gt;-DskipTests&lt;span&gt;&amp;#93;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;If you are getting out of heap space error, set the MAVEN_OPTS using the following command:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;bash&quot;&gt;&lt;span&gt;export&lt;/span&gt; &lt;span&gt;MAVEN_OPTS&lt;/span&gt;=&lt;span&gt;&amp;quot;-Xms256m -Xmx700m -XX:MaxPermSize=1024m&amp;quot;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;If you are building for the first time, please note that it may take some time since maven needs to download all the dependencies. Once you are done with building Hippo ECM and you can run the provided Quick-start WAR file to get a feel of the user interface and the CMS application.&lt;/p&gt;
&lt;p&gt;Change to the quickstart/war directory and run the hippo-cms web application using embedded jetty.&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;bash&quot;&gt;&lt;span&gt;cd&lt;/span&gt; quickstart&lt;span&gt;/&lt;/span&gt;war
mvn jetty:run-war&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;After jetty has been started, goto http://localhost:8080/cms to check the version of the CMS that you&amp;#8217;ve just built. You can login using default username/password combination of admin/admin.&lt;/p&gt;
&lt;div id=&quot;attachment_1226&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://www.vijaykiran.com/wp-content/uploads/2009/06/HippoCMS001.jpg&quot; rel=&quot;lightbox[1213]&quot;&gt;&lt;img class=&quot;size-large wp-image-1226  &quot; title=&quot;HippoCMS001&quot; src=&quot;http://www.vijaykiran.com/wp-content/uploads/2009/06/HippoCMS001-1024x732.jpg&quot; alt=&quot;HippoCMS001&quot; width=&quot;465&quot; height=&quot;332&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Hippo CMS Login Screen&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;
&lt;p&gt;Note that you can even deploy the generated war file in Tomcat or an Application Server. Check the &lt;a href=&quot;http://www.onehippo.org/cms7/delve_into/quickstart_in_existing_container.html&quot; target=&quot;_blank&quot;&gt;documentation&lt;/a&gt; for more information.&lt;/p&gt;
&lt;p&gt;This concludes the first part of Hippo CMS Customization Part 1- Getting Started . In the next post of this series we will see how to create a simple backend templates (a.k.a Document Types) using Document Type Editor provided within Hippo CMS.&lt;/p&gt;</description>
	<pubDate>Fri, 19 Jun 2009 13:59:41 +0000</pubDate>
	<dc:creator>Vijay Kiran</dc:creator>
</item>
<item>
	<title>Mathijs Brand (Hippo): Limited choices</title>
	<guid>http://blogs.onehippo.org/mathijs/2009/06/limited_choices.html</guid>
	<link>http://blogs.onehippo.org/mathijs/2009/06/limited_choices.html</link>
	<description>&lt;img src=&quot;http://farm4.static.flickr.com/3241/3115404982_cbb22e231a.jpg?v=0&quot; alt=&quot;Coffee choices...&quot; align=&quot;right&quot; width=&quot;250px&quot; /&gt;
I don't like to make choices. For me the best choice in life is - no choice at all. For example: I like to drink coffee. Any kind</description>
	<pubDate>Mon, 15 Jun 2009 15:55:36 +0000</pubDate>
</item>
<item>
	<title>Jeroen Reijn (Hippo): JCR: Sorting on child node properties</title>
	<guid>tag:blogger.com,1999:blog-2962867622850517744.post-8494252870185399323</guid>
	<link>http://blog.jeroenreijn.com/2009/06/jcr-sorting-on-child-node-properties.html</link>
	<description>A JCR repository, like &lt;a href=&quot;http://jackrabbit.apache.org&quot;&gt;Apache Jackrabbit&lt;/a&gt; (basis for &lt;a href=&quot;http://www.onehippo.org&quot;&gt;Hippo CMS 7&lt;/a&gt;'s content repository), mainly consists of nodes and properties. &lt;br /&gt;As described in the &lt;a href=&quot;http://jcp.org/aboutJava/communityprocess/final/jsr170/index.html&quot;&gt;JCR specification&lt;/a&gt;, a Java Content Repository should support 2 different query syntaxes: XPath and SQL. Once you get the hang of the syntax, performing a search on a JCR repository is quite easy, but today I came into a situation where I was not able perform the query I wanted. In this post I'll try to describe what my problem was and how the same result can still be achieved. &lt;br /&gt;&lt;br /&gt;&lt;h3&gt;The content model&lt;/h3&gt;&lt;br /&gt;Let's first start with my content model. The actual node definition for my project looks something like the below:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;[myproject:metadata]&lt;br /&gt;- myproject:creator (string)&lt;br /&gt;- myproject:language (string)&lt;br /&gt;- myproject:publicationDate (date)&lt;br /&gt;- myproject:availableUntil (date)&lt;br /&gt;- myproject:lastModified (date)&lt;br /&gt;- myproject:keywords (string)&lt;br /&gt;- myproject:contributor (string)&lt;br /&gt;&lt;br /&gt;[myproject:news] &gt; hippostd:publishable, hippostd:publishableSummary, hippo:document&lt;br /&gt;- myproject:title (string)&lt;br /&gt;+ myproject:introduction (hippostd:html)&lt;br /&gt;+ myproject:body (hippostd:html)&lt;br /&gt;+ myproject:metadata (myproject:metadata)&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;I came into a situation where I wanted to search for nodes of type '&lt;span&gt;myproject:news&lt;/span&gt;', but sorted on the 'myproject:publicationDate' property of the '&lt;span&gt;myproject:metadata&lt;/span&gt;' subnode. Writing an XPath for such a query is quite easy if you're familiar with the XPath syntax.&lt;br /&gt;&lt;br /&gt;Let's start out with a very simple search and just search for nodes of the type '&lt;span&gt;myproject:news&lt;/span&gt;' , which in XPath looks like:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;//element( *, myproject:news)&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Now if we would want to order these node types based on for instance the myproject:title property the same XPath query looks like:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;//element( *, myproject:news) order by @myproject:title descending&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Now if we would want to sort on the '&lt;span&gt;myproject:publicationDate&lt;/span&gt;' property of the myproject:metadata subnode, I would expect the same XPath to be:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;//element( *, myproject:news) order by myproject:metadata/@myproject:publicationDate descending&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Unfortunately this query did not seem to actually sort the result on the publicatenDate property as I would have expected. I was searching for typos first, but it appeared that the syntax of my query was ok, but it appeared that support for child axis in order by clauses was not yet supported by Jackrabbit itself.&lt;br /&gt;&lt;br /&gt;Then I found &lt;a href=&quot;https://issues.apache.org/jira/browse/JCR-800&quot;&gt;this&lt;/a&gt; JIRA issue[1] in the Jackrabbit bugtracker describing this problem and there appears to be a patch available. I'm still wondering how much of a performance impact this might have for large repositories, where you might want to sort on a property of a child node 'n'-levels deep underneath the actual node.&lt;br /&gt;&lt;br /&gt;If you want to sort on properties of a specific nodetype, you will have to add the sortable properties to the actual nodetype, which you are searching for and can't put them on a subnode. &lt;br /&gt;It seems that the patch, which should fix this problem, has already been comitted to the Jackrabbit trunk and should be available from Jackrabbit 1.6.0 as marked in the JackRabbit JIRA.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/2962867622850517744-8494252870185399323?l=blog.jeroenreijn.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 13 Jun 2009 17:01:11 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Jeroen Reijn)</dc:creator>
</item>
<item>
	<title>Woonsan Ko (Hippo): Spring Web MVC framework support in HST-2</title>
	<guid>http://blogs.onehippo.org/woonsan/2009/06/spring_web_mvc_framework_suppo_1.html</guid>
	<link>http://blogs.onehippo.org/woonsan/2009/06/spring_web_mvc_framework_suppo_1.html</link>
	<description>&lt;h1&gt;Spring Web MVC framework support in HST-2&lt;/h1&gt;
&lt;br /&gt;
HST-2 has provided a basic support to enable developers to utilize
Spring Framework IoC container for HST components. [1]&lt;br /&gt;
Now, HST-2 provides even more. It supports Spring Web MVC Framework
based applications under HST-2 environment! Using</description>
	<pubDate>Fri, 05 Jun 2009 16:28:37 +0000</pubDate>
</item>
<item>
	<title>Jasha Joachimsthal (Hippo): Hippo Site Toolkit Query interface and pagination</title>
	<guid>tag:blogger.com,1999:blog-5942185880332728298.post-4064821216161876139</guid>
	<link>http://blog.jasha.eu/2009/06/hippo-site-toolkit-query-interface-and.html</link>
	<description>&lt;p&gt;Today an interesting question came from a developer of one of our implementation partners. He wanted to list items from our JCR repository and use pagination. In this post I tried to make a summary out of the &lt;a href=&quot;http://n2.nabble.com/Query-interface-and-pagination-tt3024511.html&quot;&gt;conversation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The query was:&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;
HstQuery query = getQueryManager().createQuery(requestContext, scope, filterBean);
Filter filter = query.createFilter();
filter.addContains(&quot;.&quot;, &quot;my keywords&quot;);
query.setFilter(filter);
HstQuery queryResult = query.execute();
&lt;/pre&gt;

&lt;p&gt;The developer tried to get a paged result and the total number of items with:&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;
query.setOffset(0);
query.setLimit(10);

HippoBeanIterator hits = queryResult.getHippoBeans();        
hits.getSize();
&lt;/pre&gt;

&lt;p&gt;The result contained indeed 10 items but hits.getSize(); also returned 10. What's going wrong? Ard Schrijvers explained:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;
If you use setLimit(3), you will get at most 3 hits, but never more. getSize() from the queryResult returns at most 3. Even if the search criteria matched hundreds of documents. If you use offset(10) and no limit, getSize() returns just 10 hits less then without the offset.
&lt;/p&gt;
&lt;p&gt;
This limit is there to be used for performance, and suits for example very well &quot;show last 3 agenda items on homepage&quot;.
&lt;/p&gt;
&lt;p&gt;
If you need paging and only want 10 results, do not use setLimit(int limit).
&lt;/p&gt;
&lt;p&gt;What you do use, is just the query without setLimit(). Then you'll get back a queryResult, from which you get a HippoBeanIterator. This is a normal Iterator, with some extensions. A very important one is the method skip(int skipNum).
&lt;/p&gt;
&lt;p&gt;From the HippoBeanIterator, you can simply iterate the beans you need. Make sure you use skip(int skipNum) to jump to the correct place. If the current page is
11 and pagesize is 20, set skipNum to 220.&lt;/p&gt;
&lt;p&gt;
Then fill your List in a for loop from skipNum - skipNum + pageSize.
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;What about performance?&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;The skip is propagated to the JCR NodeIterator. If you want to display item 100-110, and you use skip(100), still only 10 Beans will be created. JCR nodes for Beans 0-99 are not fetched.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;What if you need the total number of hits?&lt;p&gt;
&lt;blockquote&gt;&lt;p&gt;Use getSize(). The getSize() on the the HstQueryResultImpl or on the HippoBeanIteratorImpl does not actually populate the entire iterator with HippoBeans. It is a call through the JCR NodeIterator, which in JackRabbit is some lazy loading iterator, and, where the getSize is propagated to the executed query, without fetching actual nodes.&lt;/p&gt;
&lt;/blockquote&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Originally posted on &lt;a href=&quot;http://blog.jasha.eu&quot;&gt;Jasha's blog&lt;/a&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5942185880332728298-4064821216161876139?l=blog.jasha.eu&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 04 Jun 2009 18:01:43 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Jasha Joachimsthal)</dc:creator>
</item>
<item>
	<title>Niels van Kampenhout (Hippo): HST Components at Hippo Forge</title>
	<guid>tag:blogger.com,1999:blog-49500217511749617.post-7912832826758318126</guid>
	<link>http://dev.nielsvk.com/2009/05/hst-components-at-hippo-forge.html</link>
	<description>&lt;a href=&quot;http://www.flickr.com/photos/oskay/265899811/&quot;&gt;&lt;img src=&quot;http://farm1.static.flickr.com/117/265899811_6eb93ed68d_m.jpg&quot; alt=&quot;Inside-out Lego brick by oskay&quot; align=&quot;right&quot; /&gt;&lt;/a&gt;In the past couple of days I slapped together two simple components for use with the Hippo Site Toolkit 2: &lt;a href=&quot;http://rss.forge.onehippo.org/&quot;&gt;RSS Feed Creator&lt;/a&gt; and &lt;a href=&quot;http://listbuilder.forge.onehippo.org/&quot;&gt;List Builder&lt;/a&gt;. At this moment, their names are more fancy than their actual functionalities ;-) but the idea is to provide some basic building blocks that people can take and extend. Both components are hosted at &lt;a href=&quot;http://forge.onehippo.org/&quot;&gt;Hippo Forge&lt;/a&gt;, so the source code is available and you can do with them whatever you want. Go ahead and take them for a test drive. If you think you can improve them (not that hard), feel free to contribute your work. I am happy to apply your patches. I might even consider giving you commit rights! ;-)&lt;br /&gt;&lt;br /&gt;The Forge is actually starting to become a well stocked library of CMS and HST components. Check out the &lt;a href=&quot;http://relateddocs.forge.onehippo.org/&quot;&gt;Related Items Plugin&lt;/a&gt;; It helps you creating a list of documents related to the one you are editing, by making suggestions. Just one example of reusable functionality that you can add to your CMS project. Doesn't match your exact requirements? Adapt it, it's open source! Made a component for your project that is useful for others? Add it to the Forge!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/49500217511749617-7912832826758318126?l=dev.nielsvk.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 21 May 2009 18:01:42 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Niels)</dc:creator>
</item>
<item>
	<title>Jasha Joachimsthal (Hippo): I don't want to register before downloading</title>
	<guid>tag:blogger.com,1999:blog-5942185880332728298.post-7926038348793250183</guid>
	<link>http://blog.jasha.eu/2009/05/i-dont-want-to-register-before.html</link>
	<description>&lt;p&gt;Okay I just wanted to try the &quot;community edition&quot; of some software. So I clicked on the big download button and then... I had to login. Because I don't have an account yet I had to register first. So I filled in all required field like my email address and a free to choose password without any help message about it's strength and then I got this error message:&lt;/p&gt;

&lt;blockquote&gt;Password not strong enough. Please use at least 3 of the following prerequisites:lowercase (a-z), uppercase (A-Z), numbers (0-9), and special characters (!^%#$@*.,)&lt;/blockquote&gt;

&lt;p&gt;Come on, I just want to try some software. Just let me download it without creating an account I will probably never use again. When I want to post on your support forum that's the right moment to create an account. I wonder if these companies have ever looked into their website statistics to see at which point people quit.&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Originally posted on &lt;a href=&quot;http://blog.jasha.eu&quot;&gt;Jasha's blog&lt;/a&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5942185880332728298-7926038348793250183?l=blog.jasha.eu&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 16 May 2009 12:01:19 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Jasha Joachimsthal)</dc:creator>
</item>
<item>
	<title>Vijay Kiran (Hippo): Debugging maven-jetty web application in NetBeans</title>
	<guid>http://www.vijaykiran.com/?p=1194</guid>
	<link>http://www.vijaykiran.com/debugging-maven-jetty-web-application-in-netbeans/</link>
	<description>&lt;p&gt;Setup Jetty to run with Debugging enabled on port 8000&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;bash&quot;&gt;&lt;span&gt;export&lt;/span&gt; &lt;span&gt;MAVEN_OPTS&lt;/span&gt;=&lt;span&gt;&amp;quot;</description>
	<pubDate>Tue, 12 May 2009 14:56:00 +0000</pubDate>
	<dc:creator>Vijay Kiran</dc:creator>
</item>
<item>
	<title>Jasha Joachimsthal (Hippo): Hippo developer training</title>
	<guid>tag:blogger.com,1999:blog-5942185880332728298.post-9074074974667498397</guid>
	<link>http://blog.jasha.eu/2009/04/hippo-developer-training.html</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://www.onehippo.com&quot; target=&quot;_blank&quot;&gt;Hippo&lt;/a&gt; let me follow the three day developer training for CMS 7 and Hippo Site Toolkit 2 (HST2) by &lt;a href=&quot;http://blog.jeroenreijn.com/&quot; target=&quot;_blank&quot;&gt;Jeroen Reijn&lt;/a&gt;. I don't live inside a cocoon so I knew already which new products had been developed. Until now I hadn't done any implementation yet with Hippo CMS 7 and the HST2 because I was too occupied with Hippo CMS 6 projects. Since I'm also a Hippo trainer it was a good chance to get to know our new training programmes.&lt;/p&gt;

&lt;h3&gt;Day 1: introduction&lt;/h3&gt;
&lt;p&gt;After we received the handouts of the training we introduced ourselves. It was a pretty mixed group with developers from partner implementation companies, an independent consultant, developers from a customer and me.
&lt;a href=&quot;http://www.onehippo.org/about/architecture.html&quot; target=&quot;_blank&quot; title=&quot;Hippo architecture&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3398/3474894727_defcc557c4_o.jpg&quot; width=&quot;250&quot; height=&quot;142&quot; alt=&quot;Hippo Architecture&quot; /&gt;&lt;/a&gt; Jeroen explained the Hippo architecture which is basically still the same as with version 6 but based on different technologies. The WebDAV repository has been replaced with our JCR Repository (based on &lt;a href=&quot;http://jackrabbit.apache.org/&quot; target=&quot;_blank&quot;&gt;Apache Jackrabbit&lt;/a&gt;) which also uses &lt;a href=&quot;http://lucene.apache.org/&quot; target=&quot;_blank&quot;&gt;Apache Lucene&lt;/a&gt; for fast indexing &amp; searching. &lt;a href=&quot;http://www.onehippo.org/cms7/&quot; target=&quot;_blank&quot;&gt;Hippo CMS 7&lt;/a&gt; is still an application that runs separate from the repository and has been written in &lt;a href=&quot;http://wicket.apache.org/&quot; target=&quot;_blank&quot;&gt;Apache Wicket&lt;/a&gt;. For front end applications you're free to choose a technology but Java is recommended because of the J in JCR ;)&lt;/p&gt;
&lt;p&gt;Jeroen showed us the CMS and the Console to show what's happening inside the repository. The trainees all got a laptop from Hippo with a VirtualBox image for the training to &quot;play&quot; with the CMS and the console. No need to bring your own laptop for the first two days!&lt;/p&gt;

&lt;h3&gt;Day 2: changing templates and HST2 introduction&lt;/h3&gt;
&lt;p&gt;After some explanation we started to create our own document type. We used &lt;a href=&quot;http://svn.onehippo.org/repos/hippo/hippo-ecm/tags/Tag-HREPTWO-v2_03_00/&quot; target=&quot;_blank&quot;&gt;version 2.03.00&lt;/a&gt; (later versions have some issues with the graphical template editor which are being solved soon). With just a few mouse clicks I had a &quot;blogpost&quot; template with a date, title, WYSIWYG field and a checkbox for &quot;allowing&quot; comments. Because this template isn't very difficult, it's nice to create it by the GUI editor instead of creating XML configuration by hand (which is still possible if you like to).&lt;/p&gt;

&lt;p&gt;After lunch Jeroen started explaining the Hippo Site Toolkit &lt;a href=&quot;http://svn.onehippo.org/repos/hippo/ecm/site-toolkit/tags/Release-HSTTWO-v2_03_02/&quot; target=&quot;_blank&quot;&gt;version 2.03.02&lt;/a&gt;. The HST is not a framework but a toolkit to create your own website using Hippo CMS and Hippo Repository. At this moment there's an HST for JSP sites but other (Java) technologies may follow in the coming years. On the VirtualBox image there is a sample site with a navigation structure, a news listing and a view for detail pages. All configuration for the menu structure, sitemap (mapping between URLs and repository paths), pages and templates is done in the repository. Now you have to do it by hand but in the near future there will be a configuration editor in the CMS. That would make it easy for the webmaster to change the URL structure or the way pages look. &lt;/p&gt;
&lt;p&gt;The URL mapping is easy to understand if you know how &lt;a href=&quot;http://cocoon.apache.org/2.0/userdocs/matchers/matchers.html&quot; target=&quot;_blank&quot;&gt;matching&lt;/a&gt; works in Apache Cocoon. _default_ is the equivalent of * in a Cocoon sitemap and _any_ is equal to ** in the WildCardMatcher. A navigation structure like&lt;/p&gt;
&lt;pre&gt;
News
|- _default_
  |- _default_
    |- _any_.html
&lt;/pre&gt;
&lt;p&gt;would match a URL like /News/2009/04/My_blogpost.html. The &quot;wildcards&quot; _default_ and _any_ can be added as parameters to the rendering class that can pass it to the JSP so you can display &quot;April 2009&quot; in the title of your news overview if a visitor goes to /News/2009/04. As last exercise we added a new document type for events in the CMS, created some events and added a new event listing to the existing example site.&lt;/p&gt;

&lt;h3&gt;Day 3: create your own site from the Maven archetype&lt;/h3&gt;
&lt;p&gt;For this day we were asked to bring our own laptop so we could leave with a functional website at the end of the day and have all the necessary software installed to create another. Jeroen explained about &lt;a href=&quot;http://maven.apache.org/&quot; target=&quot;_blank&quot;&gt;Maven&lt;/a&gt; en let us create a project using the Maven archetype:&lt;/p&gt;
&lt;pre&gt;
$ mvn archetype:generate \
   -DarchetypeRepository=http://repository.onehippo.org/maven2 \
   -DarchetypeGroupId=org.onehippo.ecm.hst \
   -DarchetypeArtifactId=hst-archetype \
   -DarchetypeVersion=2.03.02 \
   -Dversion=1.01.00 \
   -DgroupId=org.example \
   -DartifactId=myproject
&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/jashaj/3475496149/&quot; title=&quot;HST2 site by JAsha J, on Flickr&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3346/3475496149_9189fd3732_m.jpg&quot; width=&quot;240&quot; height=&quot;176&quot; alt=&quot;HST2 site&quot; /&gt;&lt;/a&gt; It creates a project on the file system in three parts: the content, CMS and the site. After lunch we started to build our own website. I took the &lt;a href=&quot;http://www.urban-net.org/&quot; target=&quot;_blank&quot;&gt;Urban-net&lt;/a&gt; website as example because it has an easy layout (1 header and 3 columns: left hand navigation, dynamic content in the centre and some downloads on the right hand site).&lt;/p&gt;
&lt;p&gt;First I created two document types, one for normal text and one for &quot;research programmes&quot; (leaving away some fields compared to the original site). Then there was the time consuming part: copy-pasting enough content for a decent paging in the site. For real projects there are &lt;a href=&quot;http://svn.onehippo.org/repos/hippo/hippo-ecm/tags/Tag-HREPTWO-v2_03_00/tools/migration/&quot; target=&quot;_blank&quot;&gt;migration tools&lt;/a&gt; available to convert the XML content from the WebDAV repository to JCR nodes and properties. 
&lt;a href=&quot;http://www.flickr.com/photos/jashaj/3479157956/&quot; title=&quot;HST2 paging by JAsha J, on Flickr&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3559/3479157956_a98789a1a0_m.jpg&quot; width=&quot;240&quot; height=&quot;177&quot; alt=&quot;HST2 paging&quot; /&gt;&lt;/a&gt; For the themes I used an ordinary repeating text field but the &lt;a href=&quot;http://forge.onehippo.org/projects/ecm-tagging/&quot; target=&quot;_blank&quot;&gt;Hippo ECM Tagging add-on&lt;/a&gt; would be more user friendly in a real life implementation.&lt;/p&gt;
&lt;p&gt;After defining the several sitemenu parts, components, pages and templates it was time to add the design and copy-paste the HTML into the JSP's. I couldn't implement everything I wanted (helped others as well and the time was limited). However in just a few hours I managed to implement a subset of the normal site. It does not contain search, no faceted navigation, the links on the right hand site are fake but it does show the basics.&lt;/p&gt;
&lt;p&gt;After the training it was time to enjoy the beautiful weather on our balcony with some drinks and chips.&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Originally posted on &lt;a href=&quot;http://blog.jasha.eu&quot;&gt;Jasha's blog&lt;/a&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5942185880332728298-9074074974667498397?l=blog.jasha.eu&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 27 Apr 2009 06:20:00 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Jasha Joachimsthal)</dc:creator>
</item>
<item>
	<title>Woonsan Ko (Hippo): Spring framework support in HST-2</title>
	<guid>http://blogs.onehippo.org/woonsan/2009/04/spring_framework_support_in_hs_1.html</guid>
	<link>http://blogs.onehippo.org/woonsan/2009/04/spring_framework_support_in_hs_1.html</link>
	<description>I'd like to explain the current status to support Spring Framework-based developer community.
HST-2 (Hippo Site Toolkit - 2) now supports Spring Framework more than the earlier versions because there are a lot of developers utilizing the framework.

&lt;strong&gt;1. Introduction&lt;/strong&gt;

It is very desirable to use spring web framework if the development team is familiar with Spring and they could make better productivity with that.
HST-2 now provides a bridge &lt;code&gt;HstComponent&lt;/code&gt; to &lt;code&gt;HstComponent&lt;/code&gt; beans which are managed by spring web application context.
So, you can define your HstComponent beans in your spring context configuration and inject your existing component to them.
You can see an example in the HST-2 source already if you download the source from the trunk for now.
In the /applications/site/, 'contact-spring' menu will show the example which uses the bridge component. The actual bean is defined in &lt;code&gt;/WEB-INF/applicationContext.xml&lt;/code&gt; like the following:

&lt;code&gt;&lt;pre&gt;
  &amp;lt;!-- HST Component Beans --&amp;gt;
  &amp;lt;bean id=&quot;contactBean&quot; class=&quot;org.hippoecm.hst.components.ContactSpring&quot;&amp;gt;
    &amp;lt;property name=&quot;mailSender&quot; ref=&quot;mailSender&quot; /&amp;gt;
    &amp;lt;property name=&quot;templateMessage&quot; ref=&quot;templateMessage&quot; /&amp;gt;
  &amp;lt;/bean&amp;gt;

  &amp;lt;!-- The existing components as an example --&amp;gt;
  &amp;lt;bean id=&quot;templateMessage&quot; class=&quot;org.springframework.mail.SimpleMailMessage&quot;&amp;gt;
    &amp;lt;property name=&quot;to&quot; value=&quot;contact@mycompany.com&quot; &amp;gt;
    &amp;lt;property name=&quot;subject&quot; value=&quot;My opinion&quot; &amp;gt;
  &amp;lt;/bean&amp;gt;
  &amp;lt;bean id=&quot;mailSender&quot; class=&quot;org.springframework.mail.javamail.JavaMailSenderImpl&quot;&amp;gt;
    &amp;lt;property name=&quot;host&quot; value=&quot;mail.mycompany.com&quot;/&amp;gt;
  &amp;lt;/bean&amp;gt;
&lt;/pre&gt;&lt;/code&gt;

&lt;strong&gt;2. How it integrates with HST 2.3?&lt;/strong&gt;

HST container manages, invokes and aggregates only components based on  &lt;code&gt;HstComponent&lt;/code&gt; interface for some reasons: to support transparent page aggregation, seamless portal integration, etc.
A generic &lt;code&gt;HstComponent&lt;/code&gt; was developed to play a role as a bridge to a bean managed by spring framework.
So, the generic bridge &lt;code&gt;HstComponent&lt;/code&gt; will delegate all invocation to the actual HstComponent bean managed by spring framework.

&lt;strong&gt;3. What the benefits are? What the drawbacks are?&lt;/strong&gt;

Spring-based developers can use full cool functionalities of spring framework like Dependency Injection, out-of-box spring components to support enterprise computing like JDBC template, transaction management and enterprise messaging, AOP techniques, Web Service support, Various view technologies, etc.
&lt;code&gt;HstComponent&lt;/code&gt; can be fully integrated with these rich spring supports.

The Spring bridge &lt;code&gt;HstComponent&lt;/code&gt; invokes directly the actual bean, so there's no performance degrade and functional shortage here.

Of course, it looks a little bit different from the original spring web mvc pattern. The differences you can think of are originally from the differences of goals: HST-2 is to support transparent page aggregation and seamless portal integration, etc.
Because HST-2 container aggregates multiple components in one page, the action phase should be separated from the rendering phase of all components. This means that HST container's aggregation should imply the &lt;em&gt;PRG&lt;/em&gt; pattern internally. [1]
Therefore, in a HST component, the *controlling* logic should be separated in doAction() and in doBeforeRender(). Also, those two separate phase should have separate request life cycles.

Anyway, once you get accustomed to &lt;code&gt;HstComponent&lt;/code&gt; request l</description>
	<pubDate>Mon, 20 Apr 2009 10:04:55 +0000</pubDate>
</item>
<item>
	<title>Niels van Kampenhout (Hippo): Coming soon to a computer near you: Hippo Site Toolkit 2!</title>
	<guid>tag:blogger.com,1999:blog-49500217511749617.post-3563955525382474018</guid>
	<link>http://dev.nielsvk.com/2009/04/coming-soon-to-computer-near-you-hippo.html</link>
	<description>It's almost finished! &lt;a href=&quot;http://www.onehippo.org/site-toolkit/&quot;&gt;Hippo Site Toolkit 2&lt;/a&gt; will be released really soon now. I am working on the documentation right now and I have to say I am impressed by the work of our development team.&lt;br /&gt;&lt;br /&gt;Hippo Site Toolkit 2 is a very versatile and lightweight component based framework for building websites on the &lt;a href=&quot;http://www.onehippo.org/cms7/&quot;&gt;Hippo CMS&lt;/a&gt; stack. Very much in Hippo tradition, we do not enforce you to use any particular technology or framework, but rather give you freedom of choice and the building blocks you need.&lt;br /&gt;&lt;br /&gt;Some highlights among the many features of Hippo Site Toolkit 2 are:&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Component based&lt;/span&gt;&lt;br /&gt;HST2 lets you create reusable components and assemble webpages from those components.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Transparent support for portlets&lt;/span&gt;&lt;br /&gt;HST2 components can be used out of the box as portlets in a portal environment.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Framework independent&lt;/span&gt;&lt;br /&gt;Although our primary focus is JSP, any Java web framework can make use of HST2 functionalities. A Spring MVC example is included.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Plain Java&lt;/span&gt;&lt;br /&gt;HST2 does not enforce any &quot;dominating technology&quot; that has been built on top of Java, such as Cocoon or Sling. It's all plain old Java.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Rapid website development&lt;/span&gt;&lt;br /&gt;HST2 includes a web based configuration GUI embedded in Hippo CMS, and many reusable out of the box components.&lt;br /&gt;&lt;br /&gt;There is no official release yet, and it's still a little rough around the edges here and there (you need to use the CMS Console for some configuration), but it is already usable. If you want to live on the edge, check out the &lt;a href=&quot;http://svn.hippocms.org/repos/hippo/ecm/site-toolkit/trunk/&quot;&gt;trunk&lt;/a&gt; and give it a go (see the &lt;a href=&quot;http://svn.hippocms.org/repos/hippo/ecm/site-toolkit/trunk/README&quot;&gt;README&lt;/a&gt;). If not, stay tuned while we finish up the release and the documentation!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/49500217511749617-3563955525382474018?l=dev.nielsvk.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 13 Apr 2009 23:01:32 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Niels)</dc:creator>
</item>
<item>
	<title>Niels van Kampenhout (Hippo): Publishing Maven artifacts for your Hippo Forge project</title>
	<guid>tag:blogger.com,1999:blog-49500217511749617.post-6938902042979972255</guid>
	<link>http://dev.nielsvk.com/2009/03/publishing-maven-artifacts-for-your.html</link>
	<description>Do you have a project on &lt;a href=&quot;http://forge.onehippo.org/&quot;&gt;Hippo Forge&lt;/a&gt;? Then you might want to &lt;a href=&quot;http://maven.apache.org/plugins/maven-deploy-plugin/usage.html&quot;&gt;deploy&lt;/a&gt; artifacts in a Maven repository, so your projects can be added as a dependency to other Maven projects. Hippo Forge has no central Maven repository, but you can use your project's SVN repository to publish the artifacts. To do this, you can use &lt;a href=&quot;https://wagon-svn.dev.java.net/&quot;&gt;wagon-svn&lt;/a&gt;, a Maven Wagon provider for Subversion.&lt;br /&gt;&lt;br /&gt;The first thing you need to do is create a space in your SVN repository to deploy the artifacts in. If your project's SVN repository is at &lt;code&gt;http://forge.hippo-ecm.org/svn/myproject/&lt;/code&gt;, create a folder &lt;code&gt;maven2&lt;/code&gt; in the root of the repository, i.e. &lt;code&gt;http://forge.hippo-ecm.org/svn/myproject/maven2/&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;In your project's POM, add the wagon-svn extension to the &lt;code&gt;build&lt;/code&gt; section:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;xml&quot;&gt;&lt;br /&gt;  &amp;lt;build&amp;gt;&lt;br /&gt;    ...&lt;br /&gt;    &amp;lt;extensions&amp;gt;&lt;br /&gt;      &amp;lt;extension&amp;gt;&lt;br /&gt;        &amp;lt;groupId&amp;gt;org.jvnet.wagon-svn&amp;lt;/groupId&amp;gt;&lt;br /&gt;        &amp;lt;artifactId&gt;wagon-svn&amp;lt;/artifactId&amp;gt;&lt;br /&gt;        &amp;lt;version&gt;1.8&amp;lt;/version&amp;gt;&lt;br /&gt;      &amp;lt;/extension&amp;gt;&lt;br /&gt;    &amp;lt;/extensions&amp;gt;&lt;br /&gt;  &amp;lt;/build&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Then add a distributionManagement section to your project's POM, and specify the SVN location you created as the Maven repository to deploy artifacts to. For the &lt;code&gt;id&lt;/code&gt; you can use any string you like.&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;xml&quot;&gt;&lt;br /&gt;  &amp;lt;distributionManagement&amp;gt;&lt;br /&gt;    &amp;lt;repository&amp;gt;&lt;br /&gt;      &amp;lt;uniqueVersion&amp;gt;false&amp;lt;/uniqueVersion&amp;gt;&lt;br /&gt;      &amp;lt;id&amp;gt;myproject-maven-repo&amp;lt;/id&amp;gt;&lt;br /&gt;      &amp;lt;url&amp;gt;svn:http://forge.hippo-ecm.org/svn/myproject/maven2/&amp;lt;/url&amp;gt;&lt;br /&gt;    &amp;lt;/repository&amp;gt;&lt;br /&gt;  &amp;lt;/distributionManagement&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Finally, add credentials for the Maven/SVN repository to your Maven &lt;code&gt;settings.xml&lt;/code&gt;, located in the &lt;code&gt;.m2&lt;/code&gt; directory in your home directory (e.g. &lt;code&gt;/home/username/.m2/settings.xml&lt;/code&gt; on Unix). Right under the &lt;code&gt;settings&lt;/code&gt; element, add a &lt;code&gt;servers&lt;/code&gt; element:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;xml&quot;&gt;&lt;br /&gt;  &amp;lt;servers&amp;gt;&lt;br /&gt;    &amp;lt;server&amp;gt;&lt;br /&gt;      &amp;lt;id&gt;docselector-maven-repo&amp;lt;/id&amp;gt;&lt;br /&gt;      &amp;lt;username&gt;myname&amp;lt;/username&amp;gt;&lt;br /&gt;      &amp;lt;password&gt;secret&amp;lt;/password&amp;gt;&lt;br /&gt;    &amp;lt;/server&amp;gt;&lt;br /&gt;  &amp;lt;/servers&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;You should now be able to deploy artifacts to the SVN repository using the following command:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;shell&quot;&gt;&lt;br /&gt;mvn deploy&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Don't forget to add the location of the Maven repository to your project documentation! People need to add that repository location to their project POM or settings.xml in order to download dependencies from it.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/49500217511749617-6938902042979972255?l=dev.nielsvk.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 31 Mar 2009 16:06:00 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Niels)</dc:creator>
</item>
<item>
	<title>Jeroen Reijn (Hippo): Apache Camel: open source integration framework</title>
	<guid>tag:blogger.com,1999:blog-2962867622850517744.post-100576576454717007</guid>
	<link>http://blog.jeroenreijn.com/2009/03/apache-camel-open-source-integration.html</link>
	<description>I'm currently working on a project where we are looking at creating an integration layer for external applications to connect to our back-end applications. In our case, one of the back-end applications is &lt;a href=&quot;http://docs.onehippo.org/&quot;&gt;Hippo CMS 7's&lt;/a&gt; repository.&lt;br /&gt;&lt;br /&gt;I've been reading up on &lt;a href=&quot;http://en.wikipedia.org/wiki/Enterprise_service_bus&quot;&gt;ESB&lt;/a&gt;'s like &lt;a href=&quot;http://servicemix.apache.org/&quot;&gt;Apache ServiceMix&lt;/a&gt; and &lt;a href=&quot;http://synapse.apache.org/&quot;&gt;Synapse&lt;/a&gt;, but even though both projects look very interesting, they actually are a bit too much for what I want to do. There was one project though that seems to be exactly what I want: &lt;a href=&quot;http://camel.apache.org/&quot;&gt;Apache Camel&lt;/a&gt;.&lt;br /&gt;&lt;h3&gt;About Apache Camel&lt;/h3&gt;Apache Camel is an open source Java framework that focuses on making integration easier. One of the great things is that Camel comes with a lot of default components and connectors.&lt;br /&gt;Even though I was quite new to the integration concept, I was able to get my first Camel project up and running within 30 minutes or so, which I think is quite fast. You only need is a bit of Java/Spring knowledge to get going.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;The basic concepts&lt;/h3&gt;While using an integration framework like Camel, you will have to keep four key terms in mind:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span&gt;Endpoint&lt;/span&gt;: where the message comes in or leaves the integration layer&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;Route&lt;/span&gt;: how a message goes from endpoint A to endpoint B&lt;/li&gt;&lt;li&gt;&lt;span&gt;Filter&lt;/span&gt;: the chained components that are involved in the process of handling a message that comes from endpoint A and goes to endpoint B. It could be that the content of the message  needs to be transformed from SOAP to for instance ATOM.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;Pipe&lt;/span&gt;: the way the message travels from endpoint A through filters to endpoint B&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;One of the things I'm looking at Camel for is using it to convert RSS feed entries into JCR nodes. If I would create an endpoint diagram, which would describe my route, it would look something like the image below.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_hd6Y7yyFK7E/SdHfznTRvsI/AAAAAAAAANM/tdaCZzPnCZ8/s1600-h/camel_endpoints.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/_hd6Y7yyFK7E/SdHfznTRvsI/AAAAAAAAANM/tdaCZzPnCZ8/s400/camel_endpoints.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5319278712717426370&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;With Camel, the endpoints and routes can be configured in a few lines of Java code or with Spring XML configuration. I started out with the Spring XML configuration and it was actually quite easy to get going. Here is an example where I poll my own RSS feed and store the items into a mock 'feeds' object.&lt;br /&gt;&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot;&lt;br /&gt;xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&lt;br /&gt;xmlns:context=&quot;http://www.springframework.org/schema/context&quot;&lt;br /&gt;xsi:schemaLocation=&quot;&lt;br /&gt;http://www.springframework.org/schema/beans&lt;br /&gt;http://www.springframework.org/schema/beans/spring-beans-2.5.xsd&lt;br /&gt;http://www.springframework.org/schema/context&lt;br /&gt;http://www.springframework.org/schema/context/spring-context-2.5.xsd&lt;br /&gt;http://camel.apache.org/schema/spring&lt;br /&gt;http://camel.apache.org/schema/spring/camel-spring.xsd&quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;camelContext xmlns=&quot;http://camel.apache.org/schema/spring&quot;&amp;gt;&lt;br /&gt;    &amp;lt;route&amp;gt;&lt;br /&gt;      &amp;lt;from uri=&quot;rss://http://blog.jeroenreijn.com/feeds/posts/default?alt=rss&quot; /&amp;gt;&lt;br /&gt;      &amp;lt;to uri=&quot;mock:feeds&quot;/&amp;gt;&lt;br /&gt;    &amp;lt;/route&amp;gt;&lt;br /&gt;  &amp;lt;/camelContext&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/beans&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;As you can see that's just a couple of lines of code. It's really that simple to do things in Camel. Of course this configuration does not end up in a JCR repository, but as an example I think it's quite easy to grasp. For those of you, that want to play around with Camel as well, I'll try to explain all the step I took to get a working web application example from here on. As I'm using &lt;a href=&quot;http://maven.apache.org/&quot;&gt;Maven2&lt;/a&gt; for building my projects, you should be able to reproduce my setup quite easily.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Setting up your maven project&lt;/h3&gt;First off we'll start with adding the camel dependencies to our maven project descriptor( pom.xml).&lt;br /&gt;&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;dependencies&amp;gt;&lt;br /&gt;  &amp;lt;dependency&amp;gt;&lt;br /&gt;    &amp;lt;groupId&amp;gt;org.apache.camel&amp;lt;/groupId&amp;gt;&lt;br /&gt;    &amp;lt;artifactId&amp;gt;camel-core&amp;lt;/artifactId&amp;gt;&lt;br /&gt;    &amp;lt;version&amp;gt;${camel-version}&amp;lt;/version&amp;gt;&lt;br /&gt;  &amp;lt;/dependency&amp;gt;&lt;br /&gt;  &amp;lt;dependency&amp;gt;&lt;br /&gt;    &amp;lt;groupId&amp;gt;org.apache.camel&amp;lt;/groupId&amp;gt;&lt;br /&gt;    &amp;lt;artifactId&amp;gt;camel-spring&amp;lt;/artifactId&amp;gt;&lt;br /&gt;    &amp;lt;version&amp;gt;${camel-version}&amp;lt;/version&amp;gt;&lt;br /&gt;  &amp;lt;/dependency&amp;gt;&lt;br /&gt;  &amp;lt;dependency&amp;gt;&lt;br /&gt;    &amp;lt;groupId&amp;gt;org.springframework&amp;lt;/groupId&amp;gt;&lt;br /&gt;    &amp;lt;artifactId&amp;gt;spring-core&amp;lt;/artifactId&amp;gt;&lt;br /&gt;    &amp;lt;version&amp;gt;${spring-version}&amp;lt;/version&amp;gt;&lt;br /&gt;  &amp;lt;/dependency&amp;gt;&lt;br /&gt;  &amp;lt;dependency&amp;gt;&lt;br /&gt;    &amp;lt;groupId&amp;gt;org.springframework&amp;lt;/groupId&amp;gt;&lt;br /&gt;    &amp;lt;artifactId&amp;gt;spring-web&amp;lt;/artifactId&amp;gt;&lt;br /&gt;    &amp;lt;version&amp;gt;${spring-version}&amp;lt;/version&amp;gt;&lt;br /&gt;  &amp;lt;/dependency&amp;gt;&lt;br /&gt;  &amp;lt;dependency&amp;gt;&lt;br /&gt;    &amp;lt;groupId&amp;gt;org.apache.camel&amp;lt;/groupId&amp;gt;&lt;br /&gt;    &amp;lt;artifactId&amp;gt;camel-rss&amp;lt;/artifactId&amp;gt;&lt;br /&gt;    &amp;lt;version&amp;gt;${camel-version}&amp;lt;/version&amp;gt;&lt;br /&gt;  &amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;/dependencies&amp;gt;&lt;br /&gt;&lt;/pre&gt;As you can see I explicitly added the camel-rss component, so that my camel application knows how to handle rss feeds. Camel does not have it's own RSS parser, but is using &lt;a href=&quot;https://rome.dev.java.net/&quot;&gt;Rome&lt;/a&gt; in the background for handling the RSS feeds. The Camel project is setup in such a way that you can include any component you want, by adding the needed component dependency to your pom.xml. If you're thinking about using Camel, make sure you checkout the &lt;a href=&quot;http://camel.apache.org/components.html&quot;&gt;components page&lt;/a&gt;, which shows you all of the currently available components.&lt;br /&gt;&lt;br /&gt;Camel uses Spring, so we need to add the Spring ContextLoaderListener to the local web.xml in &lt;span&gt;src/main/webapp/WEB-INF/&lt;/span&gt;.&lt;br /&gt;&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;web-app xmlns=&quot;http://java.sun.com/xml/ns/j2ee&quot;&lt;br /&gt;xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&lt;br /&gt;xsi:schemaLocation=&quot;http://java.sun.com/xml/ns/j2ee&lt;br /&gt;http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd&quot;&lt;br /&gt;version=&quot;2.4&quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;listener&amp;gt;&lt;br /&gt;    &amp;lt;listener-class&amp;gt;org.springframework.web.context.ContextLoaderListener&amp;lt;/listener-class&amp;gt;&lt;br /&gt;  &amp;lt;/listener&amp;gt;&lt;br /&gt;&amp;lt;/web-app&amp;gt;&lt;br /&gt;&lt;/pre&gt;The last step in our process is defining our endpoints. In my case I chose to use the Spring XML configuration for defining my endpoints.&lt;br /&gt;&lt;br /&gt;Add a file called &lt;span&gt;applicationContext.xml&lt;/span&gt; to your &lt;span&gt;src/main/webapp/WEB-INF/&lt;/span&gt; folder.&lt;br /&gt;Once the file is created you should be able to define your routes like this:&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot;&lt;br /&gt;xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&lt;br /&gt;xmlns:context=&quot;http://www.springframework.org/schema/context&quot;&lt;br /&gt;xsi:schemaLocation=&quot;&lt;br /&gt;http://www.springframework.org/schema/beans&lt;br /&gt;http://www.springframework.org/schema/beans/spring-beans-2.5.xsd&lt;br /&gt;http://www.springframework.org/schema/context&lt;br /&gt;http://www.springframework.org/schema/context/spring-context-2.5.xsd&lt;br /&gt;http://camel.apache.org/schema/spring&lt;br /&gt;http://camel.apache.org/schema/spring/camel-spring.xsd&quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;camelContext xmlns=&quot;http://camel.apache.org/schema/spring&quot;&amp;gt;&lt;br /&gt;   &amp;lt;route&amp;gt;&lt;br /&gt;     &amp;lt;from uri=&quot;rss://http://blog.jeroenreijn.com/feeds/posts/default?alt=rss&quot; /&amp;gt;&lt;br /&gt;     &amp;lt;to uri=&quot;mock:feeds&quot;/&amp;gt;&lt;br /&gt;  &amp;lt;/route&amp;gt;&lt;br /&gt;&amp;lt;/camelContext&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/beans&amp;gt;&lt;br /&gt;&lt;/pre&gt;In this example I'm using my own RSS feed, but you can of course use any feed url you like.&lt;br /&gt;For testing purposes you can add a &lt;span&gt;log4j.properties&lt;/span&gt; file in &lt;span&gt;src/main/resources/&lt;/span&gt;, so you can see the output of the Camel RSS component in your console. Here is the configuration I used writing this blogpost.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;# The logging properties used for eclipse testing, We want to see debug output on the console.&lt;br /&gt;log4j.rootLogger=INFO, out&lt;br /&gt;&lt;br /&gt;log4j.logger.org.apache.camel=DEBUG&lt;br /&gt;&lt;br /&gt;# uncomment the following line to turn on ActiveMQ debugging&lt;br /&gt;# log4j.logger.org.springframework=INFO&lt;br /&gt;&lt;br /&gt;# CONSOLE appender not used by default&lt;br /&gt;log4j.appender.out=org.apache.log4j.ConsoleAppender&lt;br /&gt;log4j.appender.out.layout=org.apache.log4j.PatternLayout&lt;br /&gt;log4j.appender.out.layout.ConversionPattern=[%30.30t] %-30.30c{1} %-5p %m%n&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Well that's it. Now the only thing you will need to do is fire up an application container, like Jetty and see what's going on in the console.&lt;br /&gt;&lt;br /&gt;$ mvn jetty:run&lt;br /&gt;&lt;br /&gt;If Jetty is running and everything is setup correctly you should be able to see some debug information come by that looks like:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;  SyndFeedImpl.author=noreply@blogger.com (Jeroen Reijn)&lt;br /&gt;  SyndFeedImpl.authors=[]&lt;br /&gt;  SyndFeedImpl.title=Jeroen Reijn&lt;br /&gt;  SyndFeedImpl.description=&lt;br /&gt;  SyndFeedImpl.feedType=rss_2.0&lt;br /&gt;  SyndFeedImpl.encoding=null&lt;br /&gt;  SyndFeedImpl.entries[0].contributors=[]&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;As you will see the RSS feed is parsed and converted into a SyndFeed object.&lt;br /&gt;From there on you can make use of this object and perform any operation on it.&lt;br /&gt;&lt;br /&gt;I must admit that while playing around with Camel and RSS feeds, &lt;br /&gt;I noticed that the RSS (and Atom) component did not handle extra request parameters correctly, so I added a patch in the Camel JIRA, hoping it wil be included in the next release of Camel.&lt;br /&gt;If you have issues with the RSS component and request parameters, you might want to try to build the Camel SVN trunk and apply my patch (&lt;a href=&quot;https://issues.apache.org/activemq/browse/CAMEL-1496&quot;&gt;CAMEL-1496&lt;/a&gt;).&lt;br /&gt;This is only necessary if you want to parse a feed that has for instance a unique id as request parameter added to the feed URL.&lt;br /&gt;&lt;br /&gt;We'll that's it! This post will get a follow-up, where I will show you have to use Camel to actually store the RSS feed entries into a JCR repository.&lt;br /&gt;&lt;br /&gt;Here are a couple of good articles too read before starting with Camel:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://camel.apache.org/&quot;&gt;Apache Camel (official website)&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://architects.dzone.com/articles/apache-camel-integration&quot;&gt;Apache Camel: Integration Nirvana&lt;/a&gt; (@&lt;a href=&quot;http://www.dzone.com/&quot;&gt;dzone&lt;/a&gt;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://refcardz.dzone.com/refcardz/enterprise-integration&quot;&gt;Camel Reference card (@dzone)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span&gt;This blogpost was inspired by an article over at &lt;a href=&quot;http://www.gridshore.nl/&quot;&gt;Gridshore&lt;/a&gt;, where Jettro  wrote a post on using &lt;a href=&quot;http://www.gridshore.nl/2009/03/29/using-spring-integration-for-rss-reading/&quot;&gt;Spring Integrations&lt;/a&gt; as integration framework. Since I'm pretty much Apache minded, I have been looking around for other open source integration frameworks within the ASF, which brought me to Apache Camel.&lt;/span&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/2962867622850517744-100576576454717007?l=blog.jeroenreijn.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 31 Mar 2009 13:01:22 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Jeroen Reijn)</dc:creator>
</item>
<item>
	<title>Niels van Kampenhout (Hippo): ApacheCon Europe 2009</title>
	<guid>tag:blogger.com,1999:blog-49500217511749617.post-3842639938777083472</guid>
	<link>http://dev.nielsvk.com/2009/03/apachecon-europe-2009.html</link>
	<description>I'm just back from a trip to Amsterdam for the &lt;a href=&quot;http://www.eu.apachecon.com/c/aceu2009/&quot;&gt;ApacheCon Europe&lt;/a&gt;. It was a very short trip (too short!) and it all went by too fast. Some hightlights:&lt;br /&gt;&lt;br /&gt;I attended the &lt;a href=&quot;http://wiki.apache.org/portals/MeetupAmsterdam2009&quot;&gt;Portals&lt;/a&gt; and &lt;a href=&quot;http://cwiki.apache.org/WICKET/wicket-community-meetups-amsterdam.html&quot;&gt;Wicket&lt;/a&gt; Meetups. For some reason I find these low key meetups always much more interesting than the &quot;real&quot; conference. The talks are usually shorter and more spontaneous, and there is more interaction with the audience. Unfortunately the meetups were in the evening, and with a fresh jet lag I had a hard time staying focused, and I didn't make it all the way to the end of the Wicket meetup (I heard it only ended after 11 PM!).&lt;br /&gt;&lt;br /&gt;My &lt;a href=&quot;http://www.eu.apachecon.com/c/aceu2009/sessions/162&quot;&gt;talk about documentation&lt;/a&gt; on Thursday went exceptionally well. Documentation is usually not the most popular subject at ApacheCons, so I was happy to see about 25 people turn up - about the average for the talks I attended, so not bad at all! There were a lot of questions and quite a bit of discussion afterwards, and I got some good feedback to improve my talk. I heard some cool ideas - more on this in another blog post later!&lt;br /&gt;&lt;br /&gt;I have to admit that I did not attend that many talks at the conference. I tried to get at least some of the Hadoop hype on Wednesday, and saw some interesting talks on continuous integration (&quot;in the cloud!&quot;) on Friday. Most of my time was taken however by preparing my talk and getting updated by my Hippo colleagues on their latest work (the new Hippo Site Toolkit is really cool!).&lt;br /&gt;&lt;br /&gt;Of course visiting Amsterdam was also an opportunity to see my friends and family. Instead of staying at the conference hotel I chose to crash at my cousin Martin's place, in the same neighborhood I lived in for 3 years. Despite both having a very busy schedule, we managed to have a delicious dinner at student-run restaurant &lt;a href=&quot;http://dev.nielsvk.com/page=site.calendar/lang=nl?start&quot;&gt;Studio K&lt;/a&gt;, and see the exhibition of &lt;a href=&quot;http://en.wikipedia.org/wiki/Richard_Avedon&quot;&gt;Richard Avedon&lt;/a&gt;'s intriguing photographs at &lt;a href=&quot;http://www.foam.nl/&quot;&gt;Foam&lt;/a&gt; (Amsterdam's Photography Museum). The weather was very Dutch the whole week - cold, rainy, and windy. But this did not keep me from enjoying riding my bike through the city. It was good the be back in Amsterdam!&lt;br /&gt;&lt;br /&gt;The week was finished in style with drinks and &lt;a href=&quot;http://en.wikipedia.org/wiki/Bitterballen&quot;&gt;bitterballen&lt;/a&gt; with my Hippo colleagues in the Muziekgebouw - a fabulous location with a grand view over the river. My friend Andre (for those who attended my talk, yes, the Microsoft guy) joined us and we had a great evening.&lt;br /&gt;&lt;br /&gt;Unfortunately my busy schedule never really let me catch up with the jet lag, and boarding the plane back to San Francisco on Sunday, I felt completely wrecked. Nevertheless it was an inspiring trip, and the Californian sun is already recharging my batteries ;-)&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/49500217511749617-3842639938777083472?l=dev.nielsvk.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 30 Mar 2009 22:01:20 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Niels)</dc:creator>
</item>
<item>
	<title>Jasha Joachimsthal (Hippo): My Friday at ApacheCon Europe 2009</title>
	<guid>tag:blogger.com,1999:blog-5942185880332728298.post-8534715800537262370</guid>
	<link>http://blog.jasha.eu/2009/03/my-friday-at-apachecon-europe-2009.html</link>
	<description>&lt;p&gt;Last Friday I went to the 3rd conference day of &lt;a href=&quot;http://www.eu.apachecon.com&quot;&gt;ApacheCon Europe&lt;/a&gt; 2009.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.eu.apachecon.com/c/aceu2009/sessions/186&quot;&gt;Becoming a Tomcat superuser&lt;/a&gt; - In this &quot;Geeks for geeks&quot; session Mark Thomas explained about the Subversion structure of the Apache Tomcat project and how to build the several versions. He demonstrated how you could debug Tomcat in Eclipse and create or apply a patch. His explanations were very clear so if I'm ever going to patch my own Tomcat, I know how to do it now.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.eu.apachecon.com/c/aceu2009/sessions/181&quot;&gt;Scripting your Java application with BSF&lt;/a&gt; - The rest of the day I went to the &quot;Java development&quot; sessions. With all Rhino code in Hippo CMS 6 in mind I chose to go to this session. Using a scripting language may seem an easy way to develop you application but in the end it's hard to debug and maintain. Felix Meschberger demonstrated using several scripting languages (Rhino, Groovy) in a Java application. It looked easy to use.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.eu.apachecon.com/c/aceu2009/activities/33&quot;&gt;Apache Pioneer's Panel - 10 years of The Apache Software Foundation&lt;/a&gt;. The history of the ASF with stories of the past 10 years. Very funny if you were actually at the events they were talking about.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.eu.apachecon.com/c/aceu2009/sessions/182&quot;&gt;What's new with Apache POI&lt;/a&gt; - I used POI once for my ApacheCon Europe 2007 talk with Jeroen Reijn about Cocoon to generate a MS Excel file. I didn't know Apache POI supported that many MS Office formats (Word, Excel, PowerPoint, Outlook, Visio and Publisher). Nick Burch ran through the several formats and pointed out the most frequently made errors while using POI.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.eu.apachecon.com/c/aceu2009/sessions/183&quot;&gt;Apache DS 2.0 : What's new ?&lt;/a&gt; Apache DS is one of the projects I've never used. I went to this session with my colleague Dennis who has much more to do with LDAP, authentication and user management. For his work (portals) it was way more interesting than for me (public websites) but it was very interesting to hear the possibilities of Apache DS. I should install Apache Directory Studio for browsing our internal LDAP development environment.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.eu.apachecon.com/c/aceu2009/sessions/184&quot;&gt;Shindig for Blogs and Wikis&lt;/a&gt; - This was a perfect talk for the end of the day. Cool product and a hot subject so people are paying attention and they're not leaving although it's getting late.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.eu.apachecon.com/c/aceu2009/activities/37&quot;&gt;Closing event &amp;amp; raffle&lt;/a&gt; - First a &quot;thank you all and see you at the next event&quot;. At the raffle I got the lucky lot. By pure randomness and luck I won a 15&quot; digital picture frame that also plays video! :D So don't leave early, there's something to win after the talks.&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Originally posted on &lt;a href=&quot;http://blog.jasha.eu&quot;&gt;Jasha's blog&lt;/a&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5942185880332728298-8534715800537262370?l=blog.jasha.eu&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 29 Mar 2009 08:01:30 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Jasha Joachimsthal)</dc:creator>
</item>
<item>
	<title>Jeroen Reijn (Hippo): Using Daemon modules with Hippo CMS 7</title>
	<guid>tag:blogger.com,1999:blog-2962867622850517744.post-5085309358284165864</guid>
	<link>http://blog.jeroenreijn.com/2009/03/using-daemon-modules-with-hippo-cms-7.html</link>
	<description>Recently I was working on a new &lt;a href=&quot;http://www.onehippo.org/cms7/&quot;&gt;Hippo CMS 7&lt;/a&gt; based project, where I was in need of a repository component that could run in the background and perform some scheduled tasks.&lt;br /&gt;&lt;br /&gt;While talking to some colleagues about what I had to do, they pointed me to a build-in solution for adding repository components, which are initiated at startup.&lt;br /&gt;&lt;br /&gt;It was actually very simple to implement this feature, so I'll try to describe how you can achieve the same solution in some very small steps.&lt;br /&gt;&lt;br /&gt;The first thing you will need to do is create a Java class that implements the &lt;span&gt;DaemonModule&lt;/span&gt; interface. As an example I've created the &lt;span&gt;BackgroundModule&lt;/span&gt; as shown below. &lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush:java&quot;&gt;package com.onehippo.repository;&lt;br /&gt;&lt;br /&gt;import javax.jcr.RepositoryException;&lt;br /&gt;import javax.jcr.Session;&lt;br /&gt;&lt;br /&gt;import org.hippoecm.repository.ext.DaemonModule;&lt;br /&gt;import org.slf4j.Logger;&lt;br /&gt;import org.slf4j.LoggerFactory;&lt;br /&gt;&lt;br /&gt;public class BackgroundModule implements DaemonModule{&lt;br /&gt;&lt;br /&gt;  static final Logger log = LoggerFactory.getLogger(BackgroundModule.class);&lt;br /&gt;  static Session session = null;&lt;br /&gt;&lt;br /&gt;  public void initialize(Session session) throws RepositoryException {&lt;br /&gt;    this.session = session; &lt;br /&gt;    log.info(&quot;BackgroundModule started&quot;); &lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void shutdown() {&lt;br /&gt;    session.logout();&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;You might wonder how the repository knows about these daemon modules? Well the trick is that the repository goes through all '&lt;span&gt;MANIFEST.MF&lt;/span&gt;' files, which it can find on the classpath. If the MANIFEST.MF file contains an entry for the property '&lt;span&gt;Hippo-Modules&lt;/span&gt;', it will be added to the list of available modules. Once finished finding all modules it will start to initialize each of them and pass on an authorized JCR session, so you will be able to work with all information inside the repository. &lt;br /&gt;&lt;br /&gt;I'm always using Maven 2 while working with CMS 7. Maven 2 has some usefull utilities and it can help you you out with adding the correct manifest entry. In my pom.xml I added some configuration for the maven-jar-plugin that adds my module to the manifest.&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;brush:xml&quot;&gt;&amp;lt;plugin&amp;gt;&lt;br /&gt;  &amp;lt;groupid&amp;gt;org.apache.maven.plugins&amp;lt;/groupid&amp;gt;&lt;br /&gt;  &amp;lt;artifactid&amp;gt;maven-jar-plugin&amp;lt;/artifactid&amp;gt;&lt;br /&gt;  &amp;lt;configuration&amp;gt;&lt;br /&gt;    &amp;lt;archive&amp;gt;&lt;br /&gt;      &amp;lt;manifest&amp;gt;&lt;br /&gt;        &amp;lt;adddefaultimplementationentries&amp;gt;true&amp;lt;/adddefaultimplementationentries&amp;gt;&lt;br /&gt;      &amp;lt;/manifest&amp;gt;&lt;br /&gt;      &amp;lt;manifestentries&amp;gt;&lt;br /&gt;        &amp;lt;hippo-modules&amp;gt;com.onehippo.repository.BackgroundModule&amp;lt;/hippo-modules&amp;gt;&lt;br /&gt;      &amp;lt;/manifestentries&amp;gt;&lt;br /&gt;    &amp;lt;/archive&amp;gt;&lt;br /&gt;  &amp;lt;/configuration&amp;gt;&lt;br /&gt;&amp;lt;/plugin&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;If you need to add more then one module, you can do so by adding a space in between modules.&lt;br /&gt;&lt;br /&gt;For the project I was doing, I also made use of &lt;a href=&quot;http://www.opensymphony.com/quartz/&quot;&gt;Quartz&lt;/a&gt; triggers, so my module would execute once in a while instead of just after initialization of the repository. &lt;br /&gt;&lt;br /&gt;The concept of these modules is quite powerful, so I hope this can help you to get started with writing your own Daemon modules.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/2962867622850517744-5085309358284165864?l=blog.jeroenreijn.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 22 Mar 2009 12:44:00 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Jeroen Reijn)</dc:creator>
</item>
<item>
	<title>Arthur Bogaart (Hippo): HippoCMS 7 integration testing with Selenium</title>
	<guid>http://blogs.onehippo.org/arthur/2009/02/hippoecm_integration_testing_w.html</guid>
	<link>http://blogs.onehippo.org/arthur/2009/02/hippoecm_integration_testing_w.html</link>
	<description>&lt;p&gt;Integration tests are designed to check the functionality of an application as a whole, rather than focussing on the internal workings of individual software modules, which is the domain of normal unit testing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Selenium&lt;/strong&gt;&lt;br /&gt;</description>
	<pubDate>Mon, 16 Feb 2009 12:40:18 +0000</pubDate>
</item>
<item>
	<title>Jasha Joachimsthal (Hippo): How to add the YouTube plugin in Hippo CMS 7</title>
	<guid>tag:blogger.com,1999:blog-5942185880332728298.post-76020706690595203</guid>
	<link>http://blog.jasha.eu/2009/02/how-to-add-youtube-plugin-in-hippo-cms.html</link>
	<description>&lt;p&gt;The &lt;a href=&quot;http://forge.onehippo.org/projects/youtubetemplate/&quot;&gt;YouTube Template Plug-in&lt;/a&gt; is a very simple, but cool project in the &lt;a href=&quot;http://forge.onehippo.org/&quot;&gt;Hippo ECM forge&lt;/a&gt;. The plugin was created by our former intern &lt;a href=&quot;http://tietema.net/&quot;&gt;Jeroen Tietema&lt;/a&gt;. With this plug-in you can easily add YouTube videos to your documents. In this blog I'll explain how to add this plug-in into your Hippo ECM project. I assume you have already checked out and &lt;a href=&quot;http://www.onehippo.org/cms7/delve_into/core/building/maven.html&quot;&gt;built Hippo ECM from source&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://forge.onehippo.org/scm/?group_id=17&quot;&gt;Check out&lt;/a&gt; the YouTube plug-in from SVN and build it using Maven with the following command:&lt;/p&gt;
&lt;code&gt;mvn install&lt;/code&gt; 

&lt;p&gt;Then add the dependency to the pom.xml of quickstart/war&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;xml&quot;&gt;
&amp;lt;!-- YouTube Template plugin for Hippo ECM 2.03.00 --&amp;gt;
&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;org.onehippo.addon.frontend.youtube&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;youtube-plugins&amp;lt;/artifactId&amp;gt;
    &amp;lt;version&amp;gt;1.01.00-SNAPSHOT&amp;lt;/version&amp;gt;
    &amp;lt;type&amp;gt;jar&amp;lt;/type&amp;gt;
&amp;lt;/dependency&amp;gt;
&lt;/pre&gt;


&lt;h3&gt;Configuration in the console&lt;/h3&gt;
&lt;p&gt;(Re)start the Hippo ECM war and go to the console on &lt;a href=&quot;http://localhost:8080/cms/console&quot;&gt;http://localhost:8080/cms/console&lt;/a&gt;.
&lt;a href=&quot;http://www.flickr.com/photos/jashaj/3276163015/&quot; title=&quot;01_console by JAsha J, on Flickr&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3497/3276163015_685924bd2e_m.jpg&quot; width=&quot;240&quot; height=&quot;173&quot; alt=&quot;Hippo ECM Console&quot; /&gt;&lt;/a&gt;
Navigate to the following location: &lt;/p&gt;
            
&lt;code&gt;/hippo:namespaces/hippo/templatetype/hippo:template/hippo:template/list&lt;/code&gt;

&lt;p&gt;Now add the value &lt;b&gt;Youtube&lt;/b&gt; to the &lt;b&gt;templates&lt;/b&gt; property and save the changes. Make sure you log out of the CMS and back in (the list is cached in your session). &lt;/p&gt;

&lt;h3&gt;CMS template editor&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/jashaj/3276982700/&quot; title=&quot;02_template_editor by JAsha J, on Flickr&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3356/3276982700_de50d4f6df_m.jpg&quot; width=&quot;240&quot; height=&quot;173&quot; alt=&quot;Template editor&quot; /&gt;&lt;/a&gt;Go to the template editor in the CMS. You can either create a new document type or add the new YouTube field to an existing template. Save the template and choose &quot;Update all content&quot; from the drop down menu in the top bar.&lt;/p&gt;

&lt;h3&gt;Editor&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/jashaj/3276163129/&quot; title=&quot;03_editor by JAsha J, on Flickr&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3495/3276163129_3ecf3058e9_m.jpg&quot; width=&quot;240&quot; height=&quot;173&quot; alt=&quot;Add Youtube movie to a document&quot; /&gt;&lt;/a&gt;Now the plug-in has been configured and added to the template, the CMS users can add YouTube videos to their documents. Just paste the ID of the video into the YouTube field.&lt;/p&gt;

&lt;p&gt;If you are not editing the document you get a preview of the selected video:
&lt;br /&gt;
&lt;a href=&quot;http://www.flickr.com/photos/jashaj/3276982818/&quot; title=&quot;04_preview by JAsha J, on Flickr&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3301/3276982818_62b6fea8dc_m.jpg&quot; width=&quot;240&quot; height=&quot;173&quot; alt=&quot;04_preview&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Originally posted on &lt;a href=&quot;http://blog.jasha.eu&quot;&gt;Jasha's blog&lt;/a&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5942185880332728298-76020706690595203?l=blog.jasha.eu&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 13 Feb 2009 16:35:00 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Jasha Joachimsthal)</dc:creator>
</item>
<item>
	<title>Niels van Kampenhout (Hippo): Using the Hippo Repository Workflow API</title>
	<guid>tag:blogger.com,1999:blog-49500217511749617.post-7834634947007393754</guid>
	<link>http://dev.nielsvk.com/2009/02/using-hippo-repository-workflow-api.html</link>
	<description>&lt;a href=&quot;http://www.onehippo.org/cms7/&quot;&gt;Hippo CMS 7&lt;/a&gt; provides workflow functionality not only through its GUI, but also through its Repository API. Without ever logging in to the CMS, you can create, edit and publish documents from your own Java application. I would like to give you a simple example of editing a document, and requesting publication. The complete example is downloadable as a &lt;a href=&quot;http://repository.hippocms.org/scratchpad/workflow.tar.gz&quot;&gt;zipped Maven project&lt;/a&gt; that works out of the box with the &lt;a href=&quot;http://www.onehippo.org/cms7/delve_into/quickstart.html&quot;&gt;Hippo CMS 7 Quickstart package&lt;/a&gt; version 2.03.00.&lt;br /&gt;&lt;br /&gt;Before we start, I suggest you read the &lt;a href=&quot;http://www.onehippo.org/cms7/delve_into/custom/jcr/jcr.html&quot;&gt;JCR basics&lt;/a&gt; and &lt;a href=&quot;http://www.onehippo.org/cms7/delve_into/custom/jcr/examples.html&quot;&gt;examples&lt;/a&gt; in the Hippo CMS documentation. These will give you a general idea of how to connect to and work with the repository through the API.&lt;br /&gt;&lt;br /&gt;Connecting to Hippo Repository is pretty straightforward:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;&lt;br /&gt;HippoRepository repository = HippoRepositoryFactory.getHippoRepository(&quot;rmi://localhost:1099/hipporepository&quot;);&lt;br /&gt;Session session =  repository.login(&quot;author&quot;, &quot;author&quot;.toCharArray());&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;For simplicity, let's just use some hardcoded values for the document location, the name of the field we are going to edit, and the new value we are going to give the field:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;&lt;br /&gt;String path = &quot;/preview/content/articles/myarticle1&quot;;&lt;br /&gt;String field = &quot;defaultcontent:title&quot;;&lt;br /&gt;String content = &quot;Hello World!!!&quot;;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;First we retrieve the document node from the repository:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;&lt;br /&gt;HippoNode documentNode = (HippoNode) session.getItem(path);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This node is a so-called handle: an umbrella under which each variant of the document is stored. These variants can be different languages, different versions, different workflow states, you name it. Each variant is represented as a child node of the handle node, and has the exact same name as the handle node. In the quickstart application you will only find variants with different workflow states. Let's get one of the variants:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;&lt;br /&gt;documentNode = (HippoNode) documentNode.getNode(documentNode.getName());&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Which variant we get is actually not really important, as we only use it to get to the documents workflow.&lt;br /&gt;&lt;br /&gt;First however, we need to make sure we are using a physical node. Nodes inside Hippo Repository can be virtual. That means that they do not exist at that location, but rather they represent a node in a different physical location. This allows different organizations of your content without duplicating any data. The virtual nodes are generated on the fly. Since they do not exist in that particular physical location, we need to retrieve the original node and save our changes there. This is done through the getCanonicalNode() method:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;&lt;br /&gt;documentNode = (HippoNode) documentNode.getCanonicalNode();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now that we finally have the node we want to work with, we can obtain the document's workflow, through the workspace and workflow manager:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;&lt;br /&gt;HippoWorkspace workspace = (HippoWorkspace) documentNode.getSession().getWorkspace();&lt;br /&gt;WorkflowManager workflowMgr = workspace.getWorkflowManager();&lt;br /&gt;Workflow workflow = workflowMgr.getWorkflow(&quot;default&quot;, documentNode);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;If the workflow is of the type BasicReviewedActionsWorkflow (it should be in the quickstart application), we can obtain an editable instance of the document. Regardless of the state the document's workflow is in, this will give us a draft version to work with.&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;&lt;br /&gt;if (workflow instanceof BasicReviewedActionsWorkflow) {&lt;br /&gt;  BasicReviewedActionsWorkflow braw = (BasicReviewedActionsWorkflow) workflow;&lt;br /&gt;  Document doc = braw.obtainEditableInstance();&lt;br /&gt;  String uuid = doc.getIdentity();&lt;br /&gt;  documentNode = (HippoNode) session.getNodeByUUID(uuid);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;With the editable instance, we can start making our changes. First we need to find out where the field we want to edit is stored. Fields can be stored either as a property, or as a child node. Hence we check for a child node and for a property matching the name of our field:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;&lt;br /&gt;Property contentProperty;&lt;br /&gt;if (documentNode.hasNode(field)) {&lt;br /&gt;  HippoNode fieldNode = (HippoNode) documentNode.getNode(field);&lt;br /&gt;  if (fieldNode.hasProperty(&quot;hippostd:content&quot;)) {&lt;br /&gt;      contentProperty = fieldNode.getProperty(&quot;hippostd:content&quot;);&lt;br /&gt;  }&lt;br /&gt;} else if (documentNode.hasProperty(field)) {&lt;br /&gt;  contentProperty = documentNode.getProperty(field);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;We now have all the information we need, and can make our change on the node property using the setValue() method. Through the workflow we can then request publication, and commit our editable instance. Finally, we save the JCR session so our changes (including the request for publication) are persisted:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;&lt;br /&gt;if (contentProperty != null) {&lt;br /&gt;  contentProperty.setValue(content);&lt;br /&gt;  BasicReviewedActionsWorkflow wf = (BasicReviewedActionsWorkflow) workflow;&lt;br /&gt;  wf.requestPublication();&lt;br /&gt;  wf.commitEditableInstance();&lt;br /&gt;  session.save();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;If you now log in to Hippo CMS, you should see the document listed in the Workflow To Do list on the dashboard.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://repository.hippocms.org/scratchpad/workflow.tar.gz&quot;&gt;Download the complete example&lt;/a&gt;.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/49500217511749617-7834634947007393754?l=dev.nielsvk.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 13 Feb 2009 01:02:09 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Niels)</dc:creator>
</item>
<item>
	<title>Niels van Kampenhout (Hippo): Let's talk about documentation</title>
	<guid>tag:blogger.com,1999:blog-49500217511749617.post-8287853822199113840</guid>
	<link>http://dev.nielsvk.com/2009/01/let-talk-about-documentation.html</link>
	<description>I noticed the &lt;a href=&quot;http://eu.apachecon.com/c/aceu2009/schedule/grid&quot;&gt;schedule&lt;/a&gt; for ApacheCon EU 2009 is up on their &lt;a href=&quot;http://eu.apachecon.com/c/aceu2009/&quot;&gt;website&lt;/a&gt;, and it looks like &lt;a href=&quot;http://eu.apachecon.com/c/aceu2009/sessions/162&quot;&gt;my talk on documentation&lt;/a&gt; has been accepted! Documentation is traditionally not the strongest selling point of open source software. I am full of ideas on why this is, and how it can be improved. I even think it is not that hard, and that open source projects have a benefit over closed source software vendors in this area. We just need to see this benefit and make use of it!&lt;br /&gt;&lt;br /&gt;If you are curious about my ideas, the session is scheduled for Thursday, March 26, at 2 pm. I hope to see you all in Amsterdam!&lt;br /&gt;&lt;br /&gt;For completeness, here are all the details:&lt;br /&gt;&lt;blockquote&gt;&lt;strong&gt;Documentation: get it right!&lt;/strong&gt;&lt;br /&gt;Niels van Kampenhout&lt;br /&gt;Thu, 26 March 2009 14:00&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt;Good documentation is vital for the health of any open source project, yet the challenges that this fact presents are not always overcome. Let's face it: open source software has a reputation for poorly written and organized documentation. What causes this reputation? Is it really that bad? Is it really that difficult? How can we do better? And why do we need documentation anyway, can't you just look at the code?! This talk explores an often overlooked aspect of open source software development. It explains what makes documentation good documentation, and how it can benefit a project. It shows that, with a bit of common sense and clever use of resources, it's actually not that hard to produce useful documentation. A rough guide to getting your documentation right, while strengthening your community at the same time.&lt;/i&gt;&lt;/blockquote&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/49500217511749617-8287853822199113840?l=dev.nielsvk.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 14 Jan 2009 21:31:00 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Niels)</dc:creator>
</item>
<item>
	<title>Niels van Kampenhout (Hippo): Using JCR-Explorer with Hippo CMS 7</title>
	<guid>tag:blogger.com,1999:blog-49500217511749617.post-7692433904633187407</guid>
	<link>http://dev.nielsvk.com/2009/01/using-jcr-explorer-with-hippo-cms-7.html</link>
	<description>&lt;a href=&quot;http://blogs.hippo.nl/niels/JCR-Explorer.html&quot;&gt;&lt;img alt=&quot;JCR-Explorer-thumbnail.png&quot; src=&quot;http://blogs.hippo.nl/niels/JCR-Explorer-thumbnail.png&quot; width=&quot;200&quot; align=&quot;right&quot; height=&quot;120&quot; /&gt;&lt;/a&gt;Following &lt;a href=&quot;http://grep.codeconsult.ch/2009/01/06/using-the-jcr-explorer-with-sling/&quot;&gt;Bertrand's useful blog post&lt;/a&gt;, here's how to configure &lt;a href=&quot;http://www.jcr-explorer.org/&quot;&gt;JCR-Explorer&lt;/a&gt; in Tomcat, for use with Hippo Repository.&lt;br /&gt;&lt;br /&gt;I used Tomcat 6.0.18, Hippo CMS 7 v2.02.01, and JCR-Explorer 0.9.5.&lt;br /&gt;&lt;br /&gt;Start with a clean Tomcat installation, and add the following jars to the &lt;code&gt;lib&lt;/code&gt; directory:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://mirrors.ibiblio.org/pub/mirrors/maven2/javax/jcr/jcr/1.0/jcr-1.0.jar&quot;&gt;jcr-1.0.jar&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://mirrors.ibiblio.org/pub/mirrors/maven2/org/apache/jackrabbit/jackrabbit-api/1.5.0/jackrabbit-api-1.5.0.jar&quot;&gt;jackrabbit-api-1.5.0.jar&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://mirrors.ibiblio.org/pub/mirrors/maven2/org/apache/jackrabbit/jackrabbit-jcr-rmi/1.5.0/jackrabbit-jcr-rmi-1.5.0.jar&quot;&gt;jackrabbit-jcr-rmi-1.5.0.jar&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://repository.hippocms.org/maven2/org/hippoecm/hippo-ecm-repository-connector/2.02.01/hippo-ecm-repository-connector-2.02.01.jar&quot;&gt;hippo-ecm-repository-connector-2.02.01.jar&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://mirrors.ibiblio.org/pub/mirrors/maven/geronimo-spec/jars/geronimo-spec-jta-1.0-M1.jar&quot;&gt;geronimo-spec-jta-1.0-M1.jar&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Download the &lt;a href=&quot;http://repository.hippocms.org/maven2/org/hippoecm/hippo-ecm-quickstart-war/2.02.01/hippo-ecm-quickstart-war-2.02.01.war&quot;&gt;Hippo CMS 7 WAR&lt;/a&gt;, rename it &lt;code&gt;cms.war&lt;/code&gt;, and copy it to Tomcat's &lt;code&gt;webapp&lt;/code&gt; dir.&lt;br /&gt;&lt;br /&gt;Add to Tomcat's &lt;code&gt;conf/server.xml&lt;/code&gt;, inside &lt;code&gt;&amp;lt;GlobalNamingResources&amp;gt;&lt;/code&gt;:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;Resource name=&quot;jcr/globalRepository&quot;&lt;br /&gt;auth=&quot;Container&quot;&lt;br /&gt;type=&quot;javax.jcr.Repository&quot;&lt;br /&gt;factory=&quot;org.apache.jackrabbit.rmi.client.ClientRepositoryFactory&quot;&lt;br /&gt;url=&quot;rmi://127.0.0.1:1099/hipporepository&quot;/&amp;gt;&lt;br /&gt;&lt;/pre&gt;Add to &lt;code&gt;conf/context.xml&lt;/code&gt;, inside &lt;code&gt;&amp;lt;Context&amp;gt;&lt;/code&gt;&gt;:&lt;br /&gt;&lt;pre&gt;&amp;lt;ResourceLink name=&quot;jcr/repository&quot;&lt;br /&gt;global=&quot;jcr/globalRepository&quot;&lt;br /&gt;type=&quot;javax.jcr.Repository&quot;/&amp;gt;&lt;br /&gt;&lt;/pre&gt;Download &lt;a href=&quot;http://www.jcr-explorer.org/downloads.html&quot;&gt;JCR-Explorer&lt;/a&gt; and copy the &lt;code&gt;jcr-explorer.war&lt;/code&gt; file to the Tomcat &lt;code&gt;webapps&lt;/code&gt; folder. Start Tomcat, stop it (so that the webapp is expanded) and add this at the end of &lt;code&gt;webapps/jcr-explorer/WEB-INF/web.xml&lt;code&gt;, inside &lt;code&gt;&amp;lt;web-app&amp;gt;&lt;/code&gt;:&lt;br /&gt;&lt;/code&gt;&lt;/code&gt;&lt;pre&gt;&amp;lt;ResourceLink name=&quot;jcr/repository&quot;&lt;br /&gt;global=&quot;jcr/globalRepository&quot;&lt;br /&gt;type=&quot;javax.jcr.Repository&quot;/&amp;gt;&lt;br /&gt;&lt;/pre&gt;Now start up Tomcat and load the JCR-Explorer login page at &lt;code&gt;http://localhost:8080/jcr-explorer/login.jsf&lt;/code&gt;. Use &lt;code&gt;java:comp/env/jcr/repository&lt;/code&gt; as JNDI name, and login using username &lt;code&gt;admin&lt;/code&gt; and password &lt;code&gt;admin&lt;/code&gt;. You will now see a JCR-Explorer screen showing the contents of Hippo Repository!&lt;br /&gt;&lt;br /&gt;Credits go mostly to &lt;a href=&quot;http://grep.codeconsult.ch/&quot;&gt;Betrand&lt;/a&gt; of course.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/49500217511749617-7692433904633187407?l=dev.nielsvk.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 08 Jan 2009 18:49:00 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Niels)</dc:creator>
</item>
<item>
	<title>Jeroen Verberg (Hippo): Clinton and me</title>
	<guid>http://blogs.onehippo.org/jverberg/2008/12/clinton_and_me.html</guid>
	<link>http://blogs.onehippo.org/jverberg/2008/12/clinton_and_me.html</link>
	<description>&lt;p&gt;Today BNR (Business News Radio) had exclusive interview with former US president Bill Clinton. Clinton had interesting story about a recent small scale project in Ethiopia bringing light with solar power</description>
	<pubDate>Mon, 22 Dec 2008 15:11:00 +0000</pubDate>
</item>
<item>
	<title>Jasha Joachimsthal (Hippo): Hippo CMS v6.05.05 released!</title>
	<guid>tag:blogger.com,1999:blog-5942185880332728298.post-8055651172330897443</guid>
	<link>http://blog.jasha.eu/2008/12/hippo-cms-v60505-released.html</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://www.onehippo.com&quot;&gt;Hippo&lt;/a&gt; is proud to announce the latest release of &lt;a href=&quot;http://www.hippocms.org/display/CMS/Hippo+CMS+v6.0x+Documentation&quot;&gt;Hippo CMS 6&lt;/a&gt;. This release contains many small improvements and fixes. Some highlights of this release:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; Faster loading of the configuration&lt;/li&gt;
&lt;li&gt; Search on document types&lt;/li&gt;
&lt;li&gt; Publish properties of folders&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For the full news item see the &lt;a href=&quot;http://www.hippocms.org/display/CMS/2008/12/18/Hippo+CMS+v6.05.05+released!&quot;&gt;Hippo CMS 6.05.05 released!&lt;/a&gt; on www.hippocms.org.&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Originally posted on &lt;a href=&quot;http://blog.jasha.eu&quot;&gt;Jasha's blog&lt;/a&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5942185880332728298-8055651172330897443?l=blog.jasha.eu&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 18 Dec 2008 10:07:00 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Jasha Joachimsthal)</dc:creator>
</item>
<item>
	<title>Jeroen Verberg (Hippo): Government support</title>
	<guid>http://blogs.onehippo.org/jverberg/2008/10/government_support.html</guid>
	<link>http://blogs.onehippo.org/jverberg/2008/10/government_support.html</link>
	<description>&lt;p&gt;Regarding SPAM I thought nothing could really surprise me anymore. According to our filter statistics it blocks about 100 messages a day for me. But yesterday one slipped through from the European Commission.&lt;/p&gt;</description>
	<pubDate>Thu, 09 Oct 2008 15:21:17 +0000</pubDate>
</item>
<item>
	<title>Jeroen Reijn (Hippo): 5 years at Hippo and 5 years of open source</title>
	<guid>tag:blogger.com,1999:blog-2962867622850517744.post-1669257055881473073</guid>
	<link>http://blog.jeroenreijn.com/2008/10/5-years-at-hippo-and-5-years-of-open.html</link>
	<description>I've been thinking about this post for a while, because I wasn't really sure what to write about my past 5 years. So much has happened and there is so much to mention, but that would mean this would be a longggggg post. I'll just create a (short) summary of my entire story for now.&lt;br /&gt;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;My main reason to start at Hippo 5 years ago was because I wanted to do something with Java and the web. Hippo provided both and offered a great learning environment at the same time with all the open source products they used in their software.&lt;br /&gt;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;While doing my daily work at Hippo, I learned a lot about &lt;a href=&quot;http://cocoon.apache.org&quot;&gt;Apache Cocoon&lt;/a&gt;, an open source framework, which was one of the core open source products used within Hippo driven websites. Before that, I wasn't really aware that Apache was a lot more then &lt;a href=&quot;http://tomcat.apache.org&quot;&gt;Tomcat&lt;/a&gt; and the &lt;a href=&quot;http://httpd.apache.org/&quot;&gt;HTTP&lt;/a&gt; server. While getting more involved within the Cocoon community I was up for my first real open source experience.&lt;br /&gt;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The &lt;a href=&quot;http://wiki.apache.org/cocoon/GetTogetherAttending&quot;&gt;Cocoon GetTogether 2003&lt;/a&gt; was a place were I met all the people behind the names that I had seen on the Cocoon mailinglist. The GT2003 was held in Ghent (Belgium) and it was my first of the many to come trips related to working with open source projects at Hippo. Later on, I was able to travel to Dublin and Rome for Cocoon/Apache related conferences with the &lt;a href=&quot;http://www.apachecon.com&quot;&gt;ApacheCon&lt;/a&gt; in Amsterdam 2007 as a highlight. In Amsterdam &lt;a href=&quot;http://blogs.hippo.nl/jasha&quot;&gt;Jasha&lt;/a&gt; and I gave a presentation about Cocoon. I was just elected as an official Cocoon committer a month or so before that and tried to give my share of support to the Cocoon community that had given me so much those past years.&lt;br /&gt;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Cocoon wasn't the only Apache open source project I was going to end up using. So far &lt;a href=&quot;http://lucene.apache.org&quot;&gt;Lucene&lt;/a&gt;, &lt;a href=&quot;http://myfaces.apache.org&quot;&gt;MyFaces&lt;/a&gt;, &lt;a href=&quot;http://jakarta.apache.org/slide&quot;&gt;Slide&lt;/a&gt;, &lt;a href=&quot;http://jackrabbit.apache.org&quot;&gt;Jackrabbit&lt;/a&gt; and &lt;a href=&quot;http://wicket.apache.org&quot;&gt;Wicket&lt;/a&gt; have also been part of my daily work. Then of course we also have our own open source projects, like &lt;a href=&quot;http://www.hippocms.org&quot;&gt;Hippo CMS&lt;/a&gt; and Hippo Repository. I think it was a great move to make both products open source, because it helped the products to become more mature and it allowed other developers to learn much more about the product then if it would be a closed source project.&lt;br /&gt;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;From the company point of view, it was great to see Hippo grow from the small (only 6 people when I started) to the +/- 40 people that I'm working with now. I think &lt;a href=&quot;http://blogs.hippo.nl/arje/&quot;&gt;Arje&lt;/a&gt;, Tjeerd and &lt;a href=&quot;http://blogs.hippo.nl/jverberg/&quot;&gt;Jeroen&lt;/a&gt; are doing a great job with this. I've learned so much from them and the other Hippos around me that the current environment is very inspiring. Also the projects that we're doing now with Hippo are getting bigger and bigger. That's one of the reasons why we're currently working very hard on a first final release of Hippo &lt;a href=&quot;http://en.wikipedia.org/wiki/Enterprise_content_management&quot;&gt;ECM&lt;/a&gt; platform, which is coming up very soon.&lt;br /&gt;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Looking at my self, I can say I also grew from being a developer working on small websites to  developing large applications/websites, guiding partners with their Hippo implementations, doing some consultancy and giving training sessions about open source Hippo software or on the use of Apache Cocoon.&lt;br /&gt;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I'm looking forward to what the future will bring us with Hippo ECM coming up and our goal to become one of the bigger players in the ECM market. I guess in 5 more years I can tell you the answer to that question.&lt;br /&gt;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/2962867622850517744-1669257055881473073?l=blog.jeroenreijn.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 09 Oct 2008 09:45:00 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Jeroen Reijn)</dc:creator>
</item>
<item>
	<title>Ard Schrijvers (Hippo): Cocoon is easy</title>
	<guid>http://blogs.onehippo.org/ard/2006/12/cocoon_is_easy.html</guid>
	<link>http://blogs.onehippo.org/ard/2006/12/cocoon_is_easy.html</link>
	<description>&lt;p&gt;I just disagree with people telling that cocoon is hard to learn. If you get it explained by somebody who knows how it works, then it simply can't be hard. Perhaps it is hard for people because nobody takes their hand, and help them through the first few steps. After all, what is hard about it? You need to know some sitemap matching things, and you need to know how to write some xsls. Only knowing xsl, which you learn in twice the time you learned html, so about 2 days, and knowing sitemaps, you can make yourself valuable for a project. Not only valuable, but already productive. And after some time, you will be able to build sites yourself very fast. I am convinced that development in cocoon outruns any other framework, and when starting with the right patterns and maintain them, maintainance will be easy as well.&lt;/p&gt;

&lt;p&gt;So, what is the problem. Why is not the entire world using cocoon? Were the founders too superior for other people to be able to understand cocoon? Did they have a brilliant vision, but forgot about (average) users?&lt;/p&gt;

&lt;p&gt;Lately, I have seen many other projects developed in cocoon, and some things frustrated me extremely. The things the sites all had in common were:&lt;/p&gt;

&lt;p&gt;1) The content repository was hippo repository, a repository implementing the WebDaV protocol&lt;br /&gt;
2) The customer was in control of maintaining their own sitemenu (all in the repository). &lt;br /&gt;
3) Standard cocoon components, either standard in cocoon, or standard added by Hippo&lt;/p&gt;

&lt;p&gt;As you can see, 1 and 2 are part of the repository, which is the same for every customer (except for custom backend templates), and 3 is part of a jar we include in our cocoon build. &lt;/p&gt;

&lt;p&gt;So, that should give a strong enough base, to implement sites through some sort of best practice patterns. But, and that is the weakness of cocoon: it is just to flexible. People do not know how to start. I did not look at &lt;a href=&quot;https://forge.pronetics.it/svn/scratchpad/blueprint/ &quot;&gt;blueprint&lt;/a&gt; yet, but it is an attempt to help people getting started with cocoon. &lt;/p&gt;

&lt;p&gt;Now, for building websites with hippo repository and with using a sitemenu, we discussed about the best way to get started, and how to structure your pipelines. The result is something incredibly easy to use. It assumes one thing: you have a repository with some data and a genuine sitemenu. When you do have this, you have your site with a best practice pattern up and running (including paging through archives) within minutes. &lt;/p&gt;

&lt;p&gt;All you need to do is check out a project.xml and a properties file and install the latest hippo cocoon plugin. You just deploy your site, and start it. After starting, you open your browser on the right domain and port, and start configuring cocoon from there (like which sitemenu's to use, if your urls do have a prefix, if you have cforms, etc). when ready, you have to redeploy, and start your site again. Then, you have the option to auto-generate a site, which is based on the sitemenu(s) structure found in the repository. All configuration is done for you. We use 5 different stores for cocoon, to optimize performance. All is configured and arranged in the default auto created site. &lt;/p&gt;

&lt;p&gt;And more important, it is an incredible simple sitemap pattern &lt;strong&gt;and&lt;/strong&gt;, evenly important, a strong and correct xsl pattern, build on import precedence concept. With this functionality, you help everybody starting with cocoon to learn the patterns, enable incredible fast development, and enable everybody to understand each others sites. &lt;/p&gt;

&lt;p&gt;I hope to have a demo online on short notice.&lt;/p&gt;</description>
	<pubDate>Mon, 04 Dec 2006 15:31:20 +0000</pubDate>
</item>
<item>
	<title>Arthur Bogaart (Hippo): Back to Basic, or flowscript actually</title>
	<guid>http://blogs.onehippo.org/arthur/2006/04/back_to_basic_or_flowscript_ac.html</guid>
	<link>http://blogs.onehippo.org/arthur/2006/04/back_to_basic_or_flowscript_ac.html</link>
	<description>&lt;p&gt;Doing (complex) eventcached DASL queries without the &lt;a href=&quot;http://wiki.hippo.nl/display/CMS/HippoJXTemplate+Reference&quot;&gt;HippoJX generator&lt;/a&gt; can be a tedious task. &lt;br /&gt;
Clearly, the Cocoon Jxtemplate generator is a nice mechanism for a) passing sitemap parameters into the query and/or b) cha</description>
	<pubDate>Tue, 18 Apr 2006 11:32:52 +0000</pubDate>
</item>

</channel>
</rss>
