<div dir="ltr"><div><br></div>The blog has a dynamic template. and I´m afraid that it needs javascript. Sorry.<div><br></div><div style>I will paste the rest of the blog entry:</div><div style><br></div><div style>[Continue from the first message]</div>

<div style>....</div><div style><div style="margin:0px;outline:none;padding:0px;text-align:justify">Statefulness means that the flow of execution is right in front of the eyes of the programmer, rather that in  the spaghetti code of the event-handling model,  the goto of the XXI century. it also means that the entire session is in a procedure, so the session data need no trickery.</div>

<div style="margin:0px;outline:none;padding:0px;text-align:justify"><br></div><div style="margin:0px;outline:none;padding:0px;text-align:justify">But, like in the stateless case, <a href="http://haskell-web.blogspot.com/2013/01/stateful-but-stateless-at-last-thanks.html" style="font-family:&#39;Helvetica Neue Light&#39;,HelveticaNeue-Light,&#39;Helvetica Neue&#39;,Helvetica,Arial,sans-serif;outline:none;text-decoration:initial;display:inline">any page in the flow could have a direct URL.</a> [1]</div>

<div style="margin:0px;outline:none;padding:0px;color:rgb(51,51,51);font-family:&#39;Helvetica Neue Light&#39;,HelveticaNeue-Light,&#39;Helvetica Neue&#39;,Helvetica,Arial,sans-serif;font-size:14.399999618530273px;line-height:15.199999809265137px;text-align:justify">

<div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small"><br></div><div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small">Event sourcing in combination with statefulness means  automatic logging of all the events and automatic recovery of the execution state of the server procedure and its data,  thanks to the <a href="http://hackage.haskell.org/package/Workflow" style="font-family:&#39;Helvetica Neue Light&#39;,HelveticaNeue-Light,&#39;Helvetica Neue&#39;,Helvetica,Arial,sans-serif;outline:none;text-decoration:initial;display:inline">Workflow monad transformer</a> [2].</div>

<div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small"><br></div><div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small">So the server procedure can be stopped after timeout and restarted by the application server when the user invokes it. The programmer can determine the timeout and for how long the state is stored.</div>

<div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small"><br></div><div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small">Back button management: the <a href="http://haskell-web.blogspot.com.es/2012/03/failback-monad.html" style="font-family:&#39;Helvetica Neue Light&#39;,HelveticaNeue-Light,&#39;Helvetica Neue&#39;,Helvetica,Arial,sans-serif;outline:none;text-decoration:initial;display:inline">flow of execution can run back</a> when the back button is pressed [3]. Thanks to a monad transformer. In combination with event sourcing, this means automatic rollback of user session data. So if the user want to undo his last item in the shopping cart, he only has to press the back button.</div>

<div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small"><br></div><div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small"><br>
</div>
<div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small">User interface: </div><div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small">

<br></div><div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small">It is made of self contained pieces called widgets, made around the formlet concept, so they compose gracefully with applicative operators and other extra operators. A MFlow widget is more like the widgets of XWindows, <a href="http://ASP.NET">ASP.NET</a> or JavaServer Faces: they have their own HTML formatting, their own behaviours and interact with the server via AJAX, they execute actions when activated and they return statically typed data. They declare their required scripts, CSS links and server procedures in the form of requirements to the requirement service. They include the server and client code in the same piece of text. Being self contained and typed, they can be shared and plugged with a minimum of configuration and instructions.</div>

<div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small"><br></div><div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small">The URL links are also widgets or elements of widgets and return data to the same flow, so no spaguetty event handling occur, unless the programmer need out-of-flow links.</div>

<div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small"><br></div><div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small">This versions<a href="http://haskell-web.blogspot.com.es/2013/01/now-example-of-use-of-active-widget.html" style="font-family:&#39;Helvetica Neue Light&#39;,HelveticaNeue-Light,&#39;Helvetica Neue&#39;,Helvetica,Arial,sans-serif;outline:none;text-decoration:initial;display:inline"> </a>includes some  active widgets with server-side controls for creating them [4]. </div>

<div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small"><br></div><div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small">Bindings:</div>

<div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small">wai-warp, blaze-html, xhtml, HSP, hack.</div><div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small">

<br></div><div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small">Persistence and transactions: </div><div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small">

Global data can be transacted with any kind of persistence framework. MFlow internally uses TCache [5], which provides with persistent STM references (DBRefs). Their serialization can be configured. For rapid prototyping, they have default persistence in files. Just add a Read-Show or a Binary instance for your data and you can have a persistent, transactional DBRef to it. Use them like you use TVars. TCache can index text and register fields. It has a simple query language. Data can be accessed by key or by any indexed field.</div>

<div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small"><br></div><div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small"><br>
</div>
<div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small">EXAMPLE:</div><div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small">
The human mind learn by examples. <a href="http://haskell-web.blogspot.com.es/2013/01/online-example-of-mflow.html" style="font-family:&#39;Helvetica Neue Light&#39;,HelveticaNeue-Light,&#39;Helvetica Neue&#39;,Helvetica,Arial,sans-serif;outline:none;text-decoration:initial;display:inline">There is a online demo</a> for some of the features that you can play with and  you can download the code [6] </div>

<div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small"><br></div><div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small"><br>
</div>
<div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small"><br></div><div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small">[0] <a href="http://hackage.haskell.org/package/MFlow" style="font-family:&#39;Helvetica Neue Light&#39;,HelveticaNeue-Light,&#39;Helvetica Neue&#39;,Helvetica,Arial,sans-serif;outline:none;display:inline">http://hackage.haskell.org/package/MFlow</a></div>

<div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small"><br></div><div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small">[1] <a href="http://haskell-web.blogspot.com/2013/01/stateful-but-stateless-at-last-thanks.html" target="_blank" style="font-family:&#39;Helvetica Neue Light&#39;,HelveticaNeue-Light,&#39;Helvetica Neue&#39;,Helvetica,Arial,sans-serif;outline:none;text-decoration:initial;display:inline">http://haskell-web.blogspot.com/2013/01/stateful-but-stateless-at-last-thanks.html</a></div>

<div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small"><br></div><div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small">[2] <a href="http://hackage.haskell.org/package/Workflow" style="font-family:&#39;Helvetica Neue Light&#39;,HelveticaNeue-Light,&#39;Helvetica Neue&#39;,Helvetica,Arial,sans-serif;outline:none;text-decoration:initial;display:inline">http://hackage.haskell.org/package/Workflow</a></div>

<div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small"><br></div><div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small">[3] <a href="http://haskell-web.blogspot.com.es/2012/03/failback-monad.html" style="font-family:&#39;Helvetica Neue Light&#39;,HelveticaNeue-Light,&#39;Helvetica Neue&#39;,Helvetica,Arial,sans-serif;outline:none;text-decoration:initial;display:inline">http://haskell-web.blogspot.com.es/2012/03/failback-monad.html</a></div>

<div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small"><br></div><div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small">[4] <a href="http://haskell-web.blogspot.com.es/2013/01/now-example-of-use-of-active-widget.html" style="font-family:&#39;Helvetica Neue Light&#39;,HelveticaNeue-Light,&#39;Helvetica Neue&#39;,Helvetica,Arial,sans-serif;outline:none;text-decoration:initial;display:inline">http://haskell-web.blogspot.com.es/2013/01/now-example-of-use-of-active-widget.html</a></div>

<div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small"><br></div><div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small">[5] <a href="http://hackage.haskell.org/package/TCache" style="font-family:&#39;Helvetica Neue Light&#39;,HelveticaNeue-Light,&#39;Helvetica Neue&#39;,Helvetica,Arial,sans-serif;outline:none;text-decoration:initial;display:inline">http://hackage.haskell.org/package/TCache</a></div>

<div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small"><br></div><div style="margin:0px;outline:none;padding:0px;color:rgb(34,34,34);font-family:arial;font-size:small">[6] <a href="http://81.169.134.95:8081/" style="font-family:&#39;Helvetica Neue Light&#39;,HelveticaNeue-Light,&#39;Helvetica Neue&#39;,Helvetica,Arial,sans-serif;outline:none;text-decoration:initial;display:inline">http://81.169.134.95:8081</a></div>

</div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/1/18 Ertugrul Söylemez <span dir="ltr">&lt;<a href="mailto:es@ertes.de" target="_blank">es@ertes.de</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div class="im">Heinrich Apfelmus &lt;<a href="mailto:apfelmus@quantentunnel.de">apfelmus@quantentunnel.de</a>&gt; wrote:<br>
<br>
&gt; For some reason, your blog posts are not displayed in my browser<br>
&gt; (Chrome). I block all cookies and I&#39;m using adblock, though.<br>
<br>
</div>Blogger.com blogs often need JavaScript to display anything at all.<br>
<br>
<br>
Greets,<br>
Ertugrul<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
Not to be or to be and (not to be or to be and (not to be or to be and<br>
(not to be or to be and ... that is the list monad.<br>
</font></span><br>_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br>Alberto.
</div>