<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://purl.org/atom/ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="0.3">
	<title>New RIFERS blogs entries from Geert Bevin in category rife</title>
	<link rel="alternate" href="http://rifers.org/blogs" type="text/html" />
	<author>
		<name>Rifers Blogs: https://rifers.org/blogs</name>
	</author>
	<copyright>Copyright of the content contained is attributed to the original authors</copyright>
	<info>The feeds of the Rifers community blogs</info>
	<modified>2008-05-17T12:40:43+0200</modified>
	<dc:creator>Rifers Blogs: https://rifers.org/blogs</dc:creator>
	<dc:date>2008-05-17T12:40:43+0200</dc:date>
	<dc:language>en</dc:language>
	<dc:rights>Copyright of the content contained is attributed to the original authors</dc:rights>
	
	
		<entry>
			<title>Custom constraints and validation in RIFE</title>
			<link rel="alternate" href="http://rifers.org/blogs/gbevin/2008/1/29/custom_constraints_validation" type="text/html" />
			<author>
				<name>Geert Bevin</name>
			</author>
			<modified>2008-01-29T17:52:51+0100</modified>
			<content type="text/html" mode="escaped">&lt;p&gt;Joshua Hansen wrote a nice example of how to create custom meta data constraints and display dedicated validation error messages with RIFE. He also shows how easy it is to make RIFE/Crud display your validation errors for beans that use your custom constraints.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://rifers.org/wiki/display/RIFE/Custom+constraints+and+validation+cheatsheet&quot;&gt;Read the article in the RIFE wiki.&lt;/a&gt;&lt;/p&gt;</content>
			<id>http://rifers.org/blogs/gbevin/2008/1/29/custom_constraints_validation</id>
			<issued>2008-01-29T17:52:51+0100</issued>
			<dc:creator>Geert Bevin</dc:creator>
			<dc:date>2008-01-29T17:52:51+0100</dc:date>
		</entry>
	
		<entry>
			<title>RIFE BOF tonight at QCon conference in San-Francisco</title>
			<link rel="alternate" href="http://rifers.org/blogs/gbevin/2007/11/8/rife_bof_tonight_at_qcon" type="text/html" />
			<author>
				<name>Geert Bevin</name>
			</author>
			<modified>2007-11-08T22:40:24+0100</modified>
			<content type="text/html" mode="escaped">In case you want to learn more about RIFE, ask questions, chat a bit about what you&apos;ve done, share experiences, etc., feel free to come the the BOF tonight that I&apos;m organizing during the QCon conference in San Francisco. You can find all the details here:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://qcon.infoq.com/sanfrancisco/conference/&quot; target=&quot;_blank&quot;&gt;http://qcon.infoq.com/sanfrancisco/conference/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
The address is:&lt;br /&gt;
Westin San Francisco Market Street&lt;br /&gt;
50 Third Street&lt;br /&gt;
San Francisco&lt;br /&gt;
California 94103&lt;br /&gt;
&lt;br /&gt;
The BOF will be from 8:30pm - 9:30pm in the &apos;City&apos; room.&lt;br /&gt;
&lt;br /&gt;
We are also organizing a Terracotta BOF right before it, so if you&apos;re interested in that, you can come from 7:30pm - 8:30pm to the &apos;Stanford&apos; room.&lt;br /&gt;
&lt;br /&gt;
See you there!</content>
			<id>http://rifers.org/blogs/gbevin/2007/11/8/rife_bof_tonight_at_qcon</id>
			<issued>2007-11-08T22:40:24+0100</issued>
			<dc:creator>Geert Bevin</dc:creator>
			<dc:date>2007-11-08T22:40:24+0100</dc:date>
		</entry>
	
		<entry>
			<title>Speaking at NFJS Europe : &quot;Cutting-edge productivity with RIFE and Web Continuations&quot;</title>
			<link rel="alternate" href="http://rifers.org/blogs/gbevin/2007/8/9/nfjs_europe_rife" type="text/html" />
			<author>
				<name>Geert Bevin</name>
			</author>
			<modified>2007-08-09T20:46:53+0200</modified>
			<content type="text/html" mode="escaped">&lt;script language=&quot;JavaScript&quot; type=&quot;text/javascript&quot;&gt;
&lt;!--
document.write(&apos;&lt;div style=&quot;float: right; width: 125px; margin-left: 10px; margin-bottom: 10px;&quot;&gt;&lt;object classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0&quot; width=&quot;125&quot; height=&quot;125&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://nfjs-exchange.com/images/banners/125x125_nfjs-rif660_offer_wii.swf&quot; /&gt;&lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt;&lt;embed src=&quot;http://nfjs-exchange.com/images/banners/125x125_nfjs-rif660_offer_wii.swf&quot; quality=&quot;high&quot; pluginspage=&quot;http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;125&quot; height=&quot;125&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&apos;);
//--&gt;
&lt;/script&gt;
&lt;p&gt;I&apos;m speaking at NFJS in London at the end of this month about &lt;a href=&quot;http://rifers.org&quot;&gt;RIFE&lt;/a&gt; and &lt;a href=&quot;http://terracotta.org&quot;&gt;Terracotta&lt;/a&gt;. You can find the abstract of my session quoted below. The &lt;a href=&quot;http://www.nofluffjuststuff.com/show_agenda.jsp?showId=93&quot;&gt;schedule looks very interesting&lt;/a&gt; and I&apos;m excited that NFJS is finally taking place in Europe too.&lt;/p&gt;
&lt;p&gt;If you&apos;re interested in going, you might want to click on the banner to the right or to use the promotion code &lt;b&gt;NFJS-RIF660&lt;/b&gt;. This will give you a free Nintendo Wii with your registration (woohooo, I love my Wii!).&lt;/p&gt;
&lt;p&gt;See you at NFJS Europe.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;I also have &lt;a href=&quot;http://rifers.org/blogs/gbevin/2007/8/9/nfjs_europe_terracotta&quot;&gt;another session about Terracotta&lt;/a&gt; in the real-world.&lt;/i&gt;&lt;/p&gt;
&lt;blockquote style=&quot;border: 1px gray solid; text-color: #333333; padding: 1em;&quot;&gt;
&lt;div style=&quot;margin: 0 0.5em;&quot;&gt;
&lt;p&gt;&lt;b&gt;Cutting-edge productivity with RIFE and Web Continuations&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;RIFE is a full-stack, open-source Java web application framework, offering fast results with the promise of maintainability and code clarity. This session will review the novel ideas in Java web application development that RIFE has introduced to the development community.&lt;/p&gt;

&lt;p&gt;Through a real-world demonstration of the development process with RIFE, learn how RIFE makes developing easier with features such as: instant reloads and centralized declarations, meta programming through constraints and meta data merging, run-time POJO-driven CRUD generation, bi-directional logic-less templates, automatic context-aware components, and the integration of a content management framework. &lt;/p&gt;

&lt;p&gt;The second part will focus on state management, which has always been a complex and tricky part of web application development. Native Java web continuations simplify this and automatically allow you to create a one-to-one conversation between users and a web application. State preservation and flow control no longer need to be handled manually, bringing you back to the simplicity of single user console applications. Remember &apos;scanf()&apos;? &lt;/p&gt;

&lt;p&gt;Continuations will be introduced from general principles, followed by practical examples that explain how they benefit web application development and their frequent usage patterns. Finally, automatic and non-intrusive fail-over and scalability will be demonstrated through the integration with Terracotta.&lt;/p&gt;
&lt;/div&gt;
&lt;/blockquote&gt;</content>
			<id>http://rifers.org/blogs/gbevin/2007/8/9/nfjs_europe_rife</id>
			<issued>2007-08-09T20:46:53+0200</issued>
			<dc:creator>Geert Bevin</dc:creator>
			<dc:date>2007-08-09T20:46:53+0200</dc:date>
		</entry>
	
		<entry>
			<title>Artima article : Distributed Web Continuations with RIFE and Terracotta</title>
			<link rel="alternate" href="http://rifers.org/blogs/gbevin/2007/8/8/distributed_continuations_terrac" type="text/html" />
			<author>
				<name>Geert Bevin</name>
			</author>
			<modified>2007-08-08T20:23:11+0200</modified>
			<content type="text/html" mode="escaped">&lt;p&gt;&lt;a href=&quot;http://www.artima.com/lejava/articles/distributed_continuations.html&quot;&gt;In this article&lt;/a&gt;, Jonas Bon&amp;eacute;r and me discuss how the RIFE Web framework helps you become productive and efficient in building conversational Web applications. Productivity with RIFE is in large part due to RIFE&apos;s unique approach to Web development&amp;mdash;its use of continuations for conversational logic, and complete integration of meta-programming to minimize boilerplate code.&lt;/p&gt;

&lt;p&gt;We also introduce you to Terracotta and it&apos;s JVM-level clustering technology, and show you how Terracotta and RIFE can work together to create an application stack that allows you to scale out and ensure high-availability for your applications, but without sacrificing simplicity and productivity. This means working with POJOs, and minimal boilerplate and infrastructure code.&lt;/p&gt;

&lt;p&gt;You can read it at &lt;a href=&quot;http://www.artima.com/lejava/articles/distributed_continuations.html&quot;&gt;Artima&lt;/a&gt;.&lt;/p&gt;</content>
			<id>http://rifers.org/blogs/gbevin/2007/8/8/distributed_continuations_terrac</id>
			<issued>2007-08-08T20:23:11+0200</issued>
			<dc:creator>Geert Bevin</dc:creator>
			<dc:date>2007-08-08T20:23:11+0200</dc:date>
		</entry>
	
		<entry>
			<title>Frank Sommers : What Do You Look For in a Template Engine?</title>
			<link rel="alternate" href="http://rifers.org/blogs/gbevin/2007/7/21/artima_template_engine_discuss" type="text/html" />
			<author>
				<name>Geert Bevin</name>
			</author>
			<modified>2007-07-21T10:41:29+0200</modified>
			<content type="text/html" mode="escaped">&lt;p&gt;Frank Sommers of Artima has &lt;a href=&quot;http://www.artima.com/weblogs/viewpost.jsp?thread=210724&quot;&gt;started a discussion about template engines&lt;/a&gt; and asks what you find important in them.&lt;/p&gt;

&lt;p&gt;Template engines seem to be one of the most stagnant technologies in Java, many adopt the design that mixes content and logic but implement it differently (PHP, JSP, Velocity, Freemarker, ...).  It&apos;s a good thing that Terrence Parr (of ANTLR fame) created &lt;a href=&quot;http://www.stringtemplate.org/&quot;&gt;StringTemplate&lt;/a&gt; which seems to move in a similar direction as what we&apos;ve been doing with our template engine in RIFE. He acknowledges the push model that injects values and text into a template instance instead of pulling them in with an expression language. While I prefer &lt;a href=&quot;http://rifers.org/wiki/display/RIFE/Templates&quot;&gt;our approach&lt;/a&gt; where there really is no logic in the template at all, I really appreciates what Terrence says in his docs:&lt;/p&gt;
&lt;div class=&quot;quotebody&quot;&gt;
&lt;p&gt;Language theory supports my premise that even a minimal StringTemplate engine with only these features is very powerful--such an engine can generate the context-free languages (see Enforcing Strict Model-View Separation in Template Engines); e.g., most programming languages are context-free as are any XML pages whose form can be expressed with a DTD.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;This goes back to a less-is-more philosophy where you build what is needed to comfortably use a technology in trivial and advanced situations, and nothing more. RIFE&apos;s template engine does the same. Instead of including a whole collection of additional features, we rely on you making a mental shift to adapt your development habits towards the new capabilities and characteristics of our template engine. In my case its not language theory, but rather lots of very complex HTML layouts and other uses of our template engine that gets me to say that our template engine is powerful enough to allow you to comfortably build anything you want, without compromising on context separation and reusability.&lt;/p&gt;
&lt;p&gt;Have you ever tried out another template engine besides the classic pull model in anger? What did you think of it?&lt;/p&gt;</content>
			<id>http://rifers.org/blogs/gbevin/2007/7/21/artima_template_engine_discuss</id>
			<issued>2007-07-21T10:41:29+0200</issued>
			<dc:creator>Geert Bevin</dc:creator>
			<dc:date>2007-07-21T10:41:29+0200</dc:date>
		</entry>
	
		<entry>
			<title>RIFE 1.6.1 released</title>
			<link rel="alternate" href="http://rifers.org/blogs/gbevin/2007/7/14/rife_1_6_1_released" type="text/html" />
			<author>
				<name>Geert Bevin</name>
			</author>
			<modified>2007-07-14T23:40:41+0200</modified>
			<content type="text/html" mode="escaped">&lt;p&gt;There are no new features since &lt;a href=&quot;http://rifers.org/blogs/gbevin/2007/7/2/rife_1_6_released&quot;&gt;release 1.6&lt;/a&gt;, this is a bugfix release.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Everyone using continuations is urged to upgrade to 1.6.1&lt;/b&gt; due to performance regressions that crept into the previous release.&lt;/p&gt;

    &lt;p&gt;You can read the &lt;a href=&quot;http://svn.rifers.org/rife/tags/release-1.6.1/ChangeLog&quot;&gt;full changelog&lt;/a&gt; for more
    details.&lt;/p&gt;


&lt;p&gt;This release can be downloaded from the &lt;a href=&quot;http://rifers.org/downloads&quot;&gt;downloads section&lt;/a&gt;, as usual.&lt;/p&gt;

</content>
			<id>http://rifers.org/blogs/gbevin/2007/7/14/rife_1_6_1_released</id>
			<issued>2007-07-14T23:40:41+0200</issued>
			<dc:creator>Geert Bevin</dc:creator>
			<dc:date>2007-07-14T23:40:41+0200</dc:date>
		</entry>
	
		<entry>
			<title>RIFE 1.6 released</title>
			<link rel="alternate" href="http://rifers.org/blogs/gbevin/2007/7/2/rife_1_6_released" type="text/html" />
			<author>
				<name>Geert Bevin</name>
			</author>
			<modified>2007-07-02T15:25:32+0200</modified>
			<content type="text/html" mode="escaped">&lt;p&gt;Below are the highlights:&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;Isolated continuations package with &lt;a href=&quot;http://rifers.org/docs/api/com/uwyn/rife/continuations/package-summary.html&quot;&gt;proper public API&lt;/a&gt; and &lt;a href=&quot;http://rifers.org/downloads/#rifecontinuations&quot;&gt;separately downloadable jars&lt;/a&gt; &lt;/li&gt;
      &lt;li&gt;Byte-code instrumentation agent that can replace the classloader&lt;/li&gt;
      &lt;li&gt;Integration with &lt;a href=&quot;http://www.terracotta.org&quot;&gt;Terracotta&lt;/a&gt; for continuations fail-over and scalability&lt;/li&gt;
      &lt;li&gt;ManyToOne and ManyToMany relationships in the GenericQueryManager with lazy-loading&lt;/li&gt;
      &lt;li&gt;Refactored authentication package for optimal pluggability&lt;/li&gt;
      &lt;li&gt;New template tags BA and C&lt;/li&gt;
      &lt;li&gt;Template tag syntaxes don&apos;t require quotes anymore&lt;/li&gt;
      &lt;li&gt;MVEL as blockvalue scripting language&lt;/li&gt;
      &lt;li&gt;JRuby support for implementing elements&lt;/li&gt;
      &lt;li&gt;Support for the H2 database&lt;/li&gt;
      &lt;li&gt;Support for Java 5.0 enum types&lt;/li&gt;
      &lt;li&gt;ReadQueryString and ReadQueryTemplate query builders&lt;/li&gt;
      &lt;li&gt;EXIT:PARAMSJS:name and SUBMISSION:PARAMSJS:name for increased spammer protection&lt;/li&gt;
    &lt;/ul&gt;

&lt;p&gt;Full documentation for the new features is being written and will be published in the RIFE &lt;a href=&quot;http://rifers.org/wiki/display/RIFE/Cook+Book&quot;&gt;wiki cookbook&lt;/a&gt;.&lt;/p&gt;

    &lt;p&gt;You can read the &lt;a href=&quot;http://svn.rifers.org/rife/tags/release-1.6/ChangeLog&quot;&gt;full changelog&lt;/a&gt; for more
    details.&lt;/p&gt;


&lt;p&gt;This release can be downloaded from the &lt;a href=&quot;http://rifers.org/downloads&quot;&gt;downloads section&lt;/a&gt;, as usual.&lt;/p&gt;
</content>
			<id>http://rifers.org/blogs/gbevin/2007/7/2/rife_1_6_released</id>
			<issued>2007-07-02T15:25:32+0200</issued>
			<dc:creator>Geert Bevin</dc:creator>
			<dc:date>2007-07-02T15:25:32+0200</dc:date>
		</entry>
	
		<entry>
			<title>JavaOne Podcast : Web continuations with RIFE and Terracotta</title>
			<link rel="alternate" href="http://rifers.org/blogs/gbevin/2007/6/7/podcast_continuations_rife_tc" type="text/html" />
			<author>
				<name>Geert Bevin</name>
			</author>
			<modified>2007-06-07T19:44:01+0200</modified>
			<content type="text/html" mode="escaped">&lt;p&gt;The podcast of my mini-talk at JavaOne 2007 has been published on java.net, this is the abstract:&lt;/p&gt;
&lt;div class=&quot;quotebody&quot;&gt;	
&lt;p&gt;
State management has always been a complex and tricky part of web application development. Continuations simplify this and automatically allow you to create a one-to-one conversation between users and a web application. State preservation and flow control no longer need to be handled manually, bringing you back to the simplicity of single user console applications. Remember &apos;scanf()&apos;?
&lt;/p&gt;
&lt;p&gt;
This presentation will introduce continuations from general principles, followed by practical examples that explain how they benefit web application development and their frequent usage patterns. Finally, automatic fail-over and scalability will be demonstrated through the integration with Open Terracotta.
&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;You can &lt;a href=&quot;http://today.java.net/pub/a/today/2007/05/25/j1-2k7-mT03.html&quot;&gt;listen to it here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The corresponding &lt;a href=&quot;https://rife.dev.java.net/servlets/ProjectDocumentList?folderID=7407&quot;&gt;slides and examples&lt;/a&gt; can also be downloaded.&lt;/p&gt;</content>
			<id>http://rifers.org/blogs/gbevin/2007/6/7/podcast_continuations_rife_tc</id>
			<issued>2007-06-07T19:44:01+0200</issued>
			<dc:creator>Geert Bevin</dc:creator>
			<dc:date>2007-06-07T19:44:01+0200</dc:date>
		</entry>
	
		<entry>
			<title>RIFE and OpenLaszlo users get together at JavaOne 2007</title>
			<link rel="alternate" href="http://rifers.org/blogs/gbevin/2007/5/9/rife_openlaszlo_get_together" type="text/html" />
			<author>
				<name>Geert Bevin</name>
			</author>
			<modified>2007-05-09T18:09:24+0200</modified>
			<content type="text/html" mode="escaped">&lt;p&gt;I already bumped into some RIFE users on the conference floor and I thought it would be nice to at least set a time apart to have some drinks together and exchange war stories &lt;img src=&quot;http://rifers.org/images/blog/emoticon-wink.gif&quot; width=&quot;16&quot; height=&quot;16&quot; alt=&quot;;)&quot; /&gt;.&lt;/p&gt;

&lt;p&gt;I propose that we meet today, &lt;b&gt;May 9th at 17h30&lt;/b&gt;, at the &lt;a href=&quot;http://www.thirstybear.com&quot;&gt;&lt;b&gt;Thirsty Bear&lt;/b&gt;&lt;/a&gt;. This is right before the &lt;a href=&quot;http://weblogs.java.net/blog/webmink/archive/2007/05/javaone_blogger_1.html&quot;&gt;JavaOne bloggers party&lt;/a&gt;, so you don&apos;t have to miss that. Maybe we can even spread the word about our favorite projects!&lt;/p&gt;

&lt;p&gt;Even if you don&apos;t know open any of the projects in detail but are interested cutting-edge web development, native Java continuations, Rich Internet Applications, ... you&apos;re welcome to stop by for a chat.&lt;/p&gt;
&lt;p&gt;If you don&apos;t know what I look like, here&apos;s a recent picture: &lt;img src=&quot;http://rifers.org/images/blog/emoticon-bigsmile.gif&quot; width=&quot;16&quot; height=&quot;16&quot; alt=&quot;:D&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://picasaweb.google.com/gbevin/ForumUploadImages/photo?authkey=5JDd9iUD5qc#5062593565100070130&quot;&gt;&lt;img src=&quot;http://lh3.google.com/image/gbevin/RkHyBlH31PI/AAAAAAAAAL4/wNERO4PkAyU/s144/Photo%2030.jpg&quot;  alt=&quot;My head&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content>
			<id>http://rifers.org/blogs/gbevin/2007/5/9/rife_openlaszlo_get_together</id>
			<issued>2007-05-09T18:09:24+0200</issued>
			<dc:creator>Geert Bevin</dc:creator>
			<dc:date>2007-05-09T18:09:24+0200</dc:date>
		</entry>
	
		<entry>
			<title>Re: Impressions of the RIFE framework</title>
			<link rel="alternate" href="http://rifers.org/blogs/gbevin/2007/4/10/re_impressions_of_rife" type="text/html" />
			<author>
				<name>Geert Bevin</name>
			</author>
			<modified>2007-04-10T22:49:07+0200</modified>
			<content type="text/html" mode="escaped">&lt;p&gt;&lt;a href=&quot;http://www.khanspot.com/2007/04/10/impression-of-rife-web-framework/&quot;&gt;Atif Khan wrote a blog entry&lt;/a&gt; about his experience with RIFE. Sadly, the comment system on his blog seems to be broken, so I can&apos;t post a reply there. I&apos;m thus posting it on my own blog.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Hi Atif,&lt;/p&gt;

&lt;p&gt;thanks a lot for writing down your impressions, and you see that I did get to your blog entry &lt;img src=&quot;http://rifers.org/images/blog/emoticon-normal.gif&quot; width=&quot;16&quot; height=&quot;16&quot; alt=&quot;:)&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Here are my reactions to your &apos;cons&apos;:&lt;/p&gt;

&lt;div class=&quot;quotebody&quot;&gt;&lt;b&gt;Atif Khan:&lt;/b&gt;&lt;br /&gt;Templates are really weird to work with. The syntax for the templates really did me. It is not really designer friendly like Tapestry or Wicket&lt;/div&gt;

&lt;p&gt;Which template syntax did you use? If you want the designer-friendly version, you have several to choose from, like the comment based syntax and the real XML syntax. I suppose that this is a matter of being aware of them, which is not easily solved (there&apos;s a &lt;a href=&quot;http://rifers.org/wiki/display/RIFE/Alternative+tag+syntax&quot;&gt;wiki page&lt;/a&gt; about them though).&lt;/p&gt;

&lt;div class=&quot;quotebody&quot;&gt;&lt;b&gt;Atif Khan:&lt;/b&gt;&lt;br /&gt;The concept of flowlink and datalink is just too verbose and not clear&lt;/div&gt;

&lt;p&gt;The flowlinks and datalinks verbosity are easily solved through different manners. They&apos;re like the finest grained possibility. For a lot of people, globalvars and globalexits are totally sufficient and only require one declaration. Another good solution is just to use &lt;a href=&quot;http://rifers.org/wiki/display/RIFE/Autolink+declaration+to+simplify+datalink+and+flowlink+declarations&quot;&gt;autolinks&lt;/a&gt;, if you combine these with annotations, there&apos;s very little setup to do for the logic flow and data flow to work.&lt;/p&gt;
&lt;p&gt;Also, if you think they&apos;re not clear, this page in the users guide might make it easier to understand: &lt;a href=&quot;http://rifers.org/wiki/display/RIFE/GuideNumberguess&quot;&gt;http://rifers.org/wiki/display/RIFE/GuideNumberguess&lt;/a&gt;.&lt;/p&gt;

&lt;div class=&quot;quotebody&quot;&gt;&lt;b&gt;Atif Khan:&lt;/b&gt;&lt;br /&gt;Using annotation didn&amp;rsquo;t do me any good as well for defining the flow and data links. There isn&amp;rsquo;t enough documentation for annotations.&lt;/div&gt;

&lt;p&gt;I agree that the documentation here is lacking, but annotations are a recent addition, so in time it will get better. The best thing usually is to try to combine what&apos;s on the wiki with the javadocs and the examples. For the annotations, there&apos;s some kind of overview here: &lt;a href=&quot;http://rifers.org/wiki/display/RIFE/Best+Practices&quot;&gt;http://rifers.org/wiki/display/RIFE/Best+Practices&lt;/a&gt;. You can also have a look at &lt;a href=&quot;http://rifers.org/docs/api/com/uwyn/rife/engine/annotations/package-summary.html&quot;&gt;the javadocs for them&lt;/a&gt;. &lt;/p&gt;

&lt;div class=&quot;quotebody&quot;&gt;&lt;b&gt;Atif Khan:&lt;/b&gt;&lt;br /&gt;The only way for form validations I could find was to define the a &lt;code&gt;MetaData&lt;/code&gt; class equivalent to the domain object representing the form and define the validations in there. This just seems like way too much of work for simple validations.&lt;/div&gt;

&lt;div class=&quot;quotebody&quot;&gt;&lt;b&gt;Atif Khan:&lt;/b&gt;&lt;br /&gt;I could not figure out how to customize the error messages for form validations&lt;/div&gt;

&lt;p&gt;It&apos;s a pity that you didn&apos;t see the real value of the validation framework, the &lt;code&gt;MetaData&lt;/code&gt; classes actually generate the statements for the real validation framework underneath, which is totally customizable. Several times I&apos;ve heard users say that they found RIFE&apos;s validation framework to be the most flexible and powerful one that they&apos;ve come across.  Information about that can be found here: &lt;a href=&quot;http://rifers.org/wiki/display/RIFE/Validation&quot;&gt;http://rifers.org/wiki/display/RIFE/Validation&lt;/a&gt;, this also contains instructions about how to customize the error messages in many ways. The javadoc for the &lt;a href=&quot;http://rifers.org/docs/api/com/uwyn/rife/site/Validated.html&quot;&gt;&lt;code&gt;Validated&lt;/code&gt; interface&lt;/a&gt; might be helpful too. You can basically create any &lt;code&gt;ValidationRule&lt;/code&gt; or &lt;code&gt;ValidationError&lt;/code&gt; that you want, using &lt;code&gt;MetaData&lt;/code&gt; just automates it all.&lt;/p&gt;

&lt;p&gt;Please don&apos;t hesitate to tell me where you find holes in the documentation. I think that a lot of it is documented, it&apos;s mainly an issue of finding the right content. Shooting of a message to the mailing list will often get me or someone to point you in the right direction. There were some books in the writing, but sadly I had to cancel them due to time constraints. There might still be some coming up in half a year or so, but it really is very bound to my availability.&lt;/p&gt;

&lt;p&gt;Again, thanks a lot for making the effort to look at RIFE, I know that it&apos;s a lot to digest.&lt;/p&gt;</content>
			<id>http://rifers.org/blogs/gbevin/2007/4/10/re_impressions_of_rife</id>
			<issued>2007-04-10T22:49:07+0200</issued>
			<dc:creator>Geert Bevin</dc:creator>
			<dc:date>2007-04-10T22:49:07+0200</dc:date>
		</entry>
	
		<entry>
			<title>JavaPolis Podcast : Web continuations</title>
			<link rel="alternate" href="http://rifers.org/blogs/gbevin/2007/3/5/javapolispodcastwebcontinuations" type="text/html" />
			<author>
				<name>Geert Bevin</name>
			</author>
			<modified>2007-03-05T17:59:40+0100</modified>
			<content type="text/html" mode="escaped">&lt;p&gt;The recording of my talk at JavaPolis 2006 about Web Continuations has been made available as a podcast.&lt;/p&gt;
&lt;p&gt;You can listen to it on &lt;a href=&quot;http://parleys.libsyn.com/index.php?post_id=188983#&quot;&gt;Parleys.com&lt;/a&gt; or subscribe to &lt;a href=&quot;http://parleys.libsyn.com/rss&quot;&gt;their feed&lt;/a&gt; to have all the JavaPolis audio content delivered to you.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Note: please, each time I say &apos;Josh&apos; mentally substitute it for &apos;Neil&apos; ... I made a horrible mistake and people only pointed this out to me after the talk, I sank into the ground from shame &lt;img src=&quot;http://rifers.org/images/blog/emoticon-sad.gif&quot; width=&quot;16&quot; height=&quot;16&quot; alt=&quot;:(&quot; /&gt;&lt;/i&gt;&lt;/p&gt;</content>
			<id>http://rifers.org/blogs/gbevin/2007/3/5/javapolispodcastwebcontinuations</id>
			<issued>2007-03-05T17:59:40+0100</issued>
			<dc:creator>Geert Bevin</dc:creator>
			<dc:date>2007-03-05T17:59:40+0100</dc:date>
		</entry>
	
		<entry>
			<title>Why consider the RIFE framework - excellent testimonial on TechRepublic</title>
			<link rel="alternate" href="http://rifers.org/blogs/gbevin/2007/3/2/rife_on_techrepublic" type="text/html" />
			<author>
				<name>Geert Bevin</name>
			</author>
			<modified>2007-03-02T19:46:51+0100</modified>
			<content type="text/html" mode="escaped">&lt;p&gt;David Spector wrote an &lt;a href=&quot;http://blogs.techrepublic.com.com/opensource/?p=44&quot;&gt;extensive blog entry&lt;/a&gt; on CNET TechRepublic about why he selected &lt;a href=&quot;http://rifers.org&quot;&gt;RIFE&lt;/a&gt; to develop his web-based business applications.&lt;/p&gt;
&lt;p&gt;If you&apos;ve been wondering why you should bother to look at RIFE, this is a nice overview.&lt;/p&gt;
&lt;p&gt;The part where he talks about the &apos;UNlearning curve&apos; is very true ... I&apos;ve witnessed it many times.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://blogs.techrepublic.com.com/opensource/?p=44&quot;&gt;Read it here.&lt;/a&gt;&lt;/p&gt;</content>
			<id>http://rifers.org/blogs/gbevin/2007/3/2/rife_on_techrepublic</id>
			<issued>2007-03-02T19:46:51+0100</issued>
			<dc:creator>Geert Bevin</dc:creator>
			<dc:date>2007-03-02T19:46:51+0100</dc:date>
		</entry>
	
		<entry>
			<title>Continuations interview on Artima Developer</title>
			<link rel="alternate" href="http://rifers.org/blogs/gbevin/2007/3/2/continuations_interview_artima" type="text/html" />
			<author>
				<name>Geert Bevin</name>
			</author>
			<modified>2007-03-02T09:37:25+0100</modified>
			<content type="text/html" mode="escaped">&lt;p&gt;Bill Venner from Artima Developer has interviewed me at JavaPolis 2006.&lt;/p&gt;
&lt;p&gt;Originally this was intended to be posted as an MP3 together with the other interviews (&lt;a href=&quot;http://www.artima.com/lejava/articles/javapolis_2006_wed_idols.html&quot;&gt;day 1&lt;/a&gt;, &lt;a href=&quot;http://www.artima.com/lejava/articles/javapolis_2006_thu_idols.html&quot;&gt;day 2&lt;/a&gt;, &lt;a href=&quot;http://www.artima.com/lejava/articles/javapolis_2006_fri_idols.html&quot;&gt;day 3&lt;/a&gt;), however we went on for almost an hour instead of 15 minutes. Frank Sommers took the trouble of transcribing and editing the interview and &lt;a href=&quot;http://www.artima.com/lejava/articles/continuations.html&quot;&gt;posted it today&lt;/a&gt; on Artima Developer.&lt;/p&gt;
&lt;p&gt;If you&apos;re still wondering what continuations are about or want more in-depth information, &lt;a href=&quot;http://www.artima.com/lejava/articles/continuations.html&quot;&gt;head over to the article&lt;/a&gt;.&lt;/p&gt;</content>
			<id>http://rifers.org/blogs/gbevin/2007/3/2/continuations_interview_artima</id>
			<issued>2007-03-02T09:37:25+0100</issued>
			<dc:creator>Geert Bevin</dc:creator>
			<dc:date>2007-03-02T09:37:25+0100</dc:date>
		</entry>
	
		<entry>
			<title>MVEL support in RIFE templates</title>
			<link rel="alternate" href="http://rifers.org/blogs/gbevin/2006/12/29/mvel_support_in_rife_templates" type="text/html" />
			<author>
				<name>Geert Bevin</name>
			</author>
			<modified>2006-12-29T13:48:09+0100</modified>
			<content type="text/html" mode="escaped">&lt;p&gt;A couple of years ago I planned writing a very small boolean expression language for usage in &lt;a href=&quot;http://rifers.org&quot;&gt;RIFE&lt;/a&gt;. None of the existing ones really felt like a good fit, but I ended up adopting &lt;a href=&quot;http://www.ognl.org/&quot;&gt;OGNL&lt;/a&gt;, &lt;a href=&quot;http://groovy.codehaus.org/&quot;&gt;Groovy&lt;/a&gt; and &lt;a href=&quot;http://www.janino.net/&quot;&gt;Janino&lt;/a&gt; anyway due to lack of time. What bothered me most about these is that they are too powerful for their intended purpose and that users could potentially stuff too much logic inside templates.&lt;/p&gt;
&lt;p&gt;Expression languages in RIFE are only used to conditionally assign the content of a template block to a value. This allows you to easily show certain parts of the interface depending on, for instance, the role of the user, an application-wide configuration parameter, another template value, etc. The only function of the expression language is to evaluate short conditions that result in &lt;code&gt;true&lt;/code&gt; or &lt;code&gt;false&lt;/code&gt;, thus meaning: should this block be assigned to the value or not.&lt;/p&gt;
&lt;p&gt;Come &lt;a href=&quot;http://wiki.mvflex.org/index.php?title=MVEL&quot;&gt;MVEL&lt;/a&gt;, I saw it being mentioned on the Groovy IRC channel yesterday and had a look at it. It seems that the &lt;a href=&quot;http://wiki.mvflex.org/index.php?title=MVEL_Language_Reference&quot;&gt;language&lt;/a&gt; supports exactly the feature set that I wanted to implement for our own expression language. MVEL can be very &lt;a href=&quot;http://wiki.mvflex.org/index.php?title=Integrating_and_Using_MVEL&quot;&gt;easily integrated&lt;/a&gt; and supposedly &lt;a href=&quot;http://wiki.mvflex.org/index.php?title=Performance_of_MVEL&quot;&gt;performs better than the rest&lt;/a&gt;. It is still lacking real-world testing by a large user community though and I stumbled into a &lt;a href=&quot;http://www.nabble.com/MVEL-%28MVFLEX-Expression-Language%29-f17143.html&quot;&gt;series of minor issues &lt;/a&gt;with it. Chris Brock, the developer, is very responsive and seems extremely passionate about resolving problems as quickly as possible.&lt;/p&gt;
&lt;p&gt;Today I &lt;a href=&quot;http://rifers.org:8088/changelog/rifers/?cs=3606&quot;&gt;committed MVEL support&lt;/a&gt; to the RIFE subversion trunk and will most likely be advocating it as the best choice for our &lt;a href=&quot;http://rifers.org/wiki/display/RIFE/Blockvalue+scripting+support&quot;&gt;blockvalue scripting feature&lt;/a&gt; as of RIFE 1.6.&lt;/p&gt;
&lt;p&gt;I&apos;m even wondering now if I should not integrate MVEL entirely inside the core RIFE distribution jar, as I&apos;ve previously done with &lt;a href=&quot;http://asm.objectweb.org/&quot;&gt;ASM&lt;/a&gt; and &lt;a href=&quot;http://pcj.sourceforge.net/&quot;&gt;PCJ&lt;/a&gt;. This would mean that blockvalue scripting will be available to anyone without having to figure out which jar file they need for it.&lt;/p&gt;
&lt;p&gt;Any thoughts on that?&lt;/p&gt;</content>
			<id>http://rifers.org/blogs/gbevin/2006/12/29/mvel_support_in_rife_templates</id>
			<issued>2006-12-29T13:48:09+0100</issued>
			<dc:creator>Geert Bevin</dc:creator>
			<dc:date>2006-12-29T13:48:09+0100</dc:date>
		</entry>
	
		<entry>
			<title>RIFE : 2006 Java Tech Winner (Honorary mention)</title>
			<link rel="alternate" href="http://rifers.org/blogs/gbevin/2006/12/27/rife_2006_java_tech_winner" type="text/html" />
			<author>
				<name>Geert Bevin</name>
			</author>
			<modified>2006-12-27T14:07:05+0100</modified>
			<content type="text/html" mode="escaped">&lt;p&gt;&lt;a href=&quot;http://rifers.org&quot;&gt;RIFE&lt;/a&gt; was included as a honorary mention in a &lt;a href=&quot;http://www.oreillynet.com/onjava/blog/2006/12/2006_java_technology_winners_a.html&quot;&gt;2006 Java technology winner list at O&apos;Reilly&lt;/a&gt; for the Java Web Framework/API category. With the de-facto standard JSF being the absolute winner in that area, this is awesome news and shows that our efforts are being noticed and appreciated.&lt;/p&gt;
&lt;p&gt;It&apos;s also interesting that &lt;a href=&quot;http://groovy.codehaus.org/&quot;&gt;Groovy&lt;/a&gt; is included in this list. Not many people may know this, but RIFE has been a huge Groovy supporter for many years. It is a first-class scripting language for our framework. For example, you can write the &lt;a href=&quot;http://rifers.org/wiki/display/RIFE/Site+structure+and+element+declaration+without+XML&quot;&gt;entire website configuration&lt;/a&gt; or &lt;a href=&quot;http://fisheye4.cenqua.com/browse/rife-crud/trunk/samples/scripts/Blog.groovy?r=197&quot;&gt;domain model&lt;/a&gt; in Groovy and have it reload at run-time, or use it as a &lt;a href=&quot;http://rifers.org/wiki/display/RIFE/Blockvalue+scripting+support&quot;&gt;boolean expression language&lt;/a&gt; inside templates. Of course, your &lt;a href=&quot;http://rifers.org/wiki/display/RIFE/Groovy+support&quot;&gt;server-side components&lt;/a&gt; can be also written with Groovy and even seamlessly integrate with other JVM scripting languages or regular Java in the same web application flow.&lt;/p&gt;</content>
			<id>http://rifers.org/blogs/gbevin/2006/12/27/rife_2006_java_tech_winner</id>
			<issued>2006-12-27T14:07:05+0100</issued>
			<dc:creator>Geert Bevin</dc:creator>
			<dc:date>2006-12-27T14:07:05+0100</dc:date>
		</entry>
	
	
</feed>