<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" version="2.0">
  <channel>
    <title>No Fluff Just Stuff</title>
    <link>http://www.nofluffjuststuff.com</link>
    <description>The best value in the Java/Open Source conferencing space hands down</description>
    <item>
      <title>Griffon @ Silicon Valley Web JUG</title>
      <link>http://www.nofluffjuststuff.com/blog/andres_almiray/2009/07/griffon__silicon_valley_web_jug.html?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>Want to know more about Griffon? will you be in the Bay Area around July 21st? then you're invited to &lt;a href="http://www.meetup.com/sv-web-jug/calendar/10012691/"&gt;Silicon valley Web JUG's next meeting&lt;/a&gt;, I'll have both the pleasure and honor of giving an introductory talk about Griffon. Do you still think that Swing application development simply sucks or it is too painful to bear? let me show you what Griffon offers then decide for yourself &lt;img src="http://www.jroller.com/images/smileys/grin.gif" class="smiley" alt=":-D" title=":-D" /&gt; see you there!&lt;br/&gt;&lt;br/&gt;Keep on Groovying!</description>
      <pubDate>Fri, 03 Jul 2009 16:00:00 CDT</pubDate>
      <guid isPermaLink="true">http://www.jroller.com/aalmiray/entry/griffon_silicon_valley_web_jug</guid>
      <dc:creator>Andres Almiray</dc:creator>
    </item>
    <item>
      <title>Integrate WebDevGeekly into the podcast feed?</title>
      <link>http://www.nofluffjuststuff.com/blog/robert_fischer/2009/07/integrate_webdevgeekly_into_the_podcast_feed_.html?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;So, I&amp;#8217;m a regular on &lt;a href="http://webdevgeekly.com/"&gt;WebDevGeekly&lt;/a&gt;, a &amp;#8220;discussion about web development issues, news, and views&amp;#8221;—really, it&amp;#8217;s a kibitz session between &lt;a href="http://michaelkimsal.com/blog/"&gt;Michael Kimsal&lt;/a&gt; (publisher of &lt;a href="http://webdevpub.com/"&gt;WebDevPublishing&lt;/a&gt;), me, &lt;a href="http://fleegix.org/"&gt;Matthew Eernisse&lt;/a&gt;, and the &lt;a href="http://www.getwindmill.com/"&gt;Windmill&lt;/a&gt; guys (&lt;a href="http://www.mikealrogers.com/projects"&gt;Mikeal Rogers&lt;/a&gt; and &lt;a href="http://www.adamchristian.com"&gt;Adam Christian&lt;/a&gt;).  Topics range wildly, but it&amp;#8217;s always exploring the dynamic and changing culture of web development.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve been making a habit of sharing my media appearances via the &lt;a href="http://enfranchisedmind.com/blog/feed/podcast"&gt;EnfranchisedMind podcast feed&lt;/a&gt;, but &lt;a href="http://enfranchisedmind.com/blog/posts/web-dev-geekly-14/"&gt;stopped sharing WebDevGeekly&lt;/a&gt; when it became clear I was going to be a regular.  At this point, though, I&amp;#8217;ve gotten a request to put it back onto the feed.  What do people think?&lt;/p&gt;
&lt;img src="http://enfranchisedmind.com/blog/?ak_action=api_record_view&amp;id=1487&amp;type=feed" alt="" /&gt;&lt;img src="http://feeds.feedburner.com/~r/em-main/~4/Y9bSM-whB90" height="1" width="1"/&gt;</description>
      <pubDate>Fri, 03 Jul 2009 13:00:01 CDT</pubDate>
      <guid isPermaLink="true">http://enfranchisedmind.com/blog/?p=1487</guid>
      <dc:creator>Robert Fischer</dc:creator>
    </item>
    <item>
      <title>Ever seen two robots discuss AOP in python?</title>
      <link>http://www.nofluffjuststuff.com/blog/greg_turnquist/2009/07/ever_seen_two_robots_discuss_aop_in_python_.html?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>I couldn&amp;#8217;t resist using this website to put together a little movie. What is better than a couple of robots discussing aspect oriented programming in python? (This was based on my earlier post The Case forAOP in Python)&#xD;
&lt;br /&gt;&#xD;
&lt;br /&gt;Okay, maybe its a little stiff, but you have to admit that putting this together on a web [...]</description>
      <pubDate>Fri, 03 Jul 2009 11:00:00 CDT</pubDate>
      <guid isPermaLink="true">http://blog.springpython.webfactional.com/?p=256</guid>
      <dc:creator>Greg Turnquist</dc:creator>
    </item>
    <item>
      <title>Links for 2009-07-02 [del.icio.us]</title>
      <link>http://www.nofluffjuststuff.com/blog/aaron_gustafson/2009/07/links_for_2009_07_02_del_icio_us_.html?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.slideshare.net/nzakas/extreme-javascript-compression-with-yui-compressor"&gt;Extreme JavaScript Compression With YUI Compressor&lt;/a&gt;&lt;br/&gt;
An excellent presentation from Nicholas on how to squeeze the most code out of your JavaScript when it comes to compression.&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/EasyReader/~4/nxhcOo3gyoI" height="1" width="1"/&gt;</description>
      <pubDate>Fri, 03 Jul 2009 08:00:00 CDT</pubDate>
      <guid isPermaLink="true">http://del.icio.us/aarongustafson#2009-07-02</guid>
      <dc:creator>Aaron Gustafson</dc:creator>
    </item>
    <item>
      <title>Spring Python makes final 1.0.0 release</title>
      <link>http://www.nofluffjuststuff.com/blog/greg_turnquist/2009/07/spring_python_makes_final_1_0_0_release.html?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>Please read the official press release from SpringSource about this historic release of Spring Python. Please visit http://www.springsource.com/download/community in order to download a copy. NOTE: Spring Python has now been relocated to the top level, instead of being inside EXT.&#xD;
&lt;br /&gt;&#xD;
&lt;br /&gt;It&amp;#8217;s the first Spring Extension to reach live status and also progress to a stable 1.0.0 [...]</description>
      <pubDate>Thu, 02 Jul 2009 16:00:01 CDT</pubDate>
      <guid isPermaLink="true">http://blog.springpython.webfactional.com/?p=251</guid>
      <dc:creator>Greg Turnquist</dc:creator>
    </item>
    <item>
      <title>Links for 2009-07-01 [del.icio.us]</title>
      <link>http://www.nofluffjuststuff.com/blog/aaron_gustafson/2009/07/links_for_2009_07_01_del_icio_us_.html?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.nicolasleroy.fr/wp/2009/05/google-to-use-hproduct-microformat-to-enhance-its-search-result-pages/"&gt;Google is using hProduct!&lt;/a&gt;&lt;br/&gt;
I completely missed this, but it looks like Google is parsing hProduct now when crawling he web. As one of he first people actively working on he spec, I&amp;#039;m thrilled to see this happen.&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/EasyReader/~4/magJBDC7hjM" height="1" width="1"/&gt;</description>
      <pubDate>Thu, 02 Jul 2009 13:00:00 CDT</pubDate>
      <guid isPermaLink="true">http://del.icio.us/aarongustafson#2009-07-01</guid>
      <dc:creator>Aaron Gustafson</dc:creator>
    </item>
    <item>
      <title>My Article on Grails Logging in This Month’s GroovyMag</title>
      <link>http://www.nofluffjuststuff.com/blog/robert_fischer/2009/07/my_article_on_grails_logging_in_this_month_s_groovymag.html?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>http://groovymag.com/images/gm9_125.jpg&amp;#8221;&gt;&#xD;
&lt;br /&gt;I&amp;#8217;ve got an article in this month&amp;#8217;s GroovyMag entitled &amp;#8220;Goldilocks and Grails Logging — Part 1&amp;#8243;.  As the title implies, it&amp;#8217;s about getting logging just right, and this month&amp;#8217;s installment talks about how to think about logging, the underlying Log4J library design, and the basics of the Grails Log4J DSL.  Next month will [...]</description>
      <pubDate>Thu, 02 Jul 2009 11:00:00 CDT</pubDate>
      <guid isPermaLink="true">http://enfranchisedmind.com/blog/?p=1482</guid>
      <dc:creator>Robert Fischer</dc:creator>
    </item>
    <item>
      <title>Continuations to Continue</title>
      <link>http://www.nofluffjuststuff.com/blog/greg_wilkins/2009/07/continuations_to_continue.html?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p align="justify"&gt;&lt;a href="http://docs.codehaus.org/display/JETTY/Continuations"&gt;Jetty-6 Continuations&lt;/a&gt; introduced the concept of asynchronous servlets to provide scalability and quality of service to web 2.0 applications such as chat, collaborative editing, price publishing, as well as powering HTTP based frameworks like &lt;a href="http://cometd.org"&gt;cometd&lt;/a&gt;, &lt;a href="http://camel.apache.org/asynchronous-processing.html"&gt;apache camel&lt;/a&gt;, &lt;a href="http://www.igniterealtime.org/projects/openfire/index.jsp"&gt;openfire XMPP&lt;/a&gt; and flex BlazeDS.&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;With the introduction of similar&amp;nbsp; asynchronous features in Servlet-3.0, some have suggested that the Continuation API would be deprecated.&amp;nbsp; Instead, the &lt;a href="http://wiki.eclipse.org/Jetty/Feature/Continuations"&gt;Continuation API&lt;/a&gt; has been updated to provide a simplified portability run asynchronously on any servlet 3.0 container as well as on Jetty (6,7 &amp;amp; 8).&amp;nbsp; Continuations will work synchronously (blocking) on any 2.5 servlet container. Thus programming to the Continuations API allows your application to achieve asynchronicity today without waiting for the release of stable 3.0 containers (and needing to upgrade all your associated infrastructure).&lt;/p&gt;&lt;h2 align="justify"&gt;Continuation Improvements&lt;/h2&gt;&lt;p align="justify"&gt;The old continuation API threw an exception when the continuation was suspended, so that the thread to exit the service method of the servlet/filter. This caused a potential race condition as a continuation would need to be registered with the asynchronous service before the suspend, so that service could do a resume before the actual suspend, unless a common mutex was used.&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;Also, the old continuation API had a waiting continuation that would work on non-jetty servers.&amp;nbsp; However the behaviour of this the waiting continuation was a little different to the normal continuation, so code had to be carefully written to work for both.&lt;/p&gt;&lt;p align="justify"&gt;The new continuation API does not throw an exception from suspend, so
the continuation can be suspended before it is registered with any
services and the mutex is no longer needed. With the use of a ContinuationFilter for non asynchronous containers, the continuation will now behaive identically in all servers. &lt;br /&gt;&lt;/p&gt;&lt;h2 align="justify"&gt; Continuations and Servlet 3.0&lt;/h2&gt;&lt;p align="justify"&gt;The servlet 3.0 asynchronous API introduced some additional asynchronous features not supported by jetty 6 continuations, including:&lt;/p&gt;&lt;div align="justify"&gt;&lt;ul&gt;&lt;li&gt;The ability to complete an asynchronous request without dispatching&lt;/li&gt;&lt;li&gt;Support for wrapped requests and responses.&lt;/li&gt;&lt;li&gt;Listeners for asynchronous events&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Dispatching asynchronous requests to specific contexts and/or resources&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;p align="justify"&gt;While powerful, these additional features may also be very complicated and confusing. Thus the new Continuation API has cherry picked the good ideas and represents a good compromise between power and complexity.&amp;nbsp; The servlet 3.0 features adopted are:&lt;/p&gt;&lt;div align="justify"&gt;&lt;ul&gt;&lt;li&gt;The completing a continuation without resuming.&lt;/li&gt;&lt;li&gt;Support for response wrappers.&lt;/li&gt;&lt;li&gt;Optional listeners for asynchronous events.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;&lt;h2 align="justify"&gt;Using The Continuation API&lt;/h2&gt;&lt;p align="justify"&gt;The new &lt;a href="http://wiki.eclipse.org/Jetty/Feature/Continuations"&gt;continuation API&lt;/a&gt;
is available in Jetty-7 and is not expected to significantly change in
future releases.&amp;nbsp; Also the continuation library is intended to be
deployed in WEB-INF/lib and is portable.&amp;nbsp; Thus the jetty-7 continuation
jar will work asynchronously when deployed in jetty-6, jetty-7, jetty-8
or any servlet 3.0 container.&lt;/p&gt;&lt;div align="justify"&gt;
&lt;/div&gt;&lt;h3 align="justify"&gt; Obtaining a Continuation &lt;/h3&gt;&lt;div align="justify"&gt;
The &lt;a href="http://download.eclipse.org/jetty/stable-7/apidocs/org/eclipse/jetty/continuation/ContinuationSupport.html"&gt;ContinuationSupport&lt;/a&gt; factory class can be used to obtain a continuation instance associated with a request:
&lt;pre&gt;    Continuation continuation = ContinuationSupport.getContinuation(request);&lt;br /&gt;&lt;/pre&gt;

&lt;/div&gt;&lt;h3 align="justify"&gt; Suspending a Request &lt;/h3&gt;&lt;div align="justify"&gt;
The suspend a request, the suspend method is called on the continuation:
&lt;pre&gt;  void doGet(HttpServletRequest request, HttpServletResponse response)&lt;br /&gt;  {&lt;br /&gt;    ...&lt;br /&gt;    continuation.suspend();&lt;br /&gt;    ...&lt;br /&gt;  }&lt;br /&gt;&lt;/pre&gt;

After this method has been called, the lifecycle of the request will be extended beyond the return to the container from the Servlet.service(...) method and Filter.doFilter(...) calls.  After these dispatch methods return to, as suspended request will not be committed and a response will not be sent to the HTTP client. 
&lt;/div&gt;&lt;p align="justify"&gt;
Once a request is suspended, the continuation should be registered with an asynchronous service so that it may be used by an asynchronous callback once the waited for event happens.
&lt;/p&gt;&lt;p align="justify"&gt;
The request will be suspended until either &lt;code&gt;continuation.resume()&lt;/code&gt; or &lt;code&gt;continuation.complete()&lt;/code&gt; is called. If neither is called then the continuation will timeout after a default period or a time set before the suspend by a call to &lt;code&gt;continuation.setTimeout(long)&lt;/code&gt;. If no timeout listeners resume or complete the continuation, then the continuation is resumed with &lt;code&gt;continuation.isExpired()&lt;/code&gt; true.  

There is a variation of suspend for use with request wrappers and the complete lifecycle (see below):
&lt;/p&gt;&lt;div align="justify"&gt;&lt;pre&gt;    continuation.suspend(response);&lt;br /&gt;&lt;/pre&gt;
Suspension is analogous to the servlet 3.0 &lt;code&gt;request.startAsync()&lt;/code&gt; method.  Unlike jetty-6 continuations, an exception is not thrown by suspend and the method should return normally.  This allows the registration of the continuation to occur after suspension and avoids the need for a mutex.  If an exception is desirable (to bypass code that is unaware of continuations and may try to commit the response), then &lt;code&gt;continuation.undispatch()&lt;/code&gt; may be called to exit the current thread from the current dispatch by throwing a &lt;a href="http://download.eclipse.org/jetty/stable-7/apidocs/org/eclipse/jetty/continuation/ContinuationThrowable.html"&gt;ContinuationThrowable&lt;/a&gt;.


&lt;/div&gt;&lt;h3 align="justify"&gt; Resuming a Request &lt;/h3&gt;&lt;div align="justify"&gt;
Once an asynchronous event has occurred, the continuation can be resumed:
&lt;pre&gt;  void myAsyncCallback(Object results)&lt;br /&gt;  {&lt;br /&gt;    continuation.setAttribute(&amp;quot;results&amp;quot;,results);&lt;br /&gt;    continuation.resume();&lt;br /&gt;  }&lt;br /&gt;&lt;/pre&gt;

Once a continuation is resumed, the request is redispatched to the servlet container, almost as if the request had been received again.  However during the redispatch, the &lt;code&gt;continuation.isInitial()&lt;/code&gt; method returns false and any attributes set by the asynchronous handler are available.
&lt;/div&gt;&lt;p align="justify"&gt;
Continuation resume is analogous to Servlet 3.0 &lt;code&gt;AsyncContext.dispatch()&lt;/code&gt;.

&lt;/p&gt;&lt;h3 align="justify"&gt; Completing Request &lt;/h3&gt;&lt;div align="justify"&gt;
As an alternative to completing a request, an asynchronous handler may write the response itself. After writing the response, the handler must indicate the request handling is complete by calling the complete
method:
&lt;pre&gt;  void myAsyncCallback(Object results)&lt;br /&gt;  {&lt;br /&gt;    writeResults(continuation.getServletResponse(),results);&lt;br /&gt;    continuation.complete();&lt;br /&gt;  }&lt;br /&gt;&lt;/pre&gt;
After complete is called, the container schedules the response to be committed and flushed.
  &lt;/div&gt;&lt;p align="justify"&gt; 
Continuation resume is analogous to Servlet 3.0 &lt;code&gt;AsyncContext.complete()&lt;/code&gt;.

&lt;/p&gt;&lt;h3 align="justify"&gt; Continuation Listeners &lt;/h3&gt;&lt;div align="justify"&gt;
An application may monitor the status of a continuation by using a &lt;a href="http://download.eclipse.org/jetty/stable-7/apidocs/org/eclipse/jetty/continuation/ContinuationListener.html"&gt;ContinuationListener&lt;/a&gt;:
&lt;pre&gt;  void doGet(HttpServletRequest request, HttpServletResponse response)&lt;br /&gt;  {&lt;br /&gt;    ...&lt;br /&gt;    &lt;br /&gt;    Continuation continuation = ContinuationSupport.getContinuation(request);&lt;br /&gt;    continuation.addContinuationListener(new ContinuationListener()&lt;br /&gt;    {&lt;br /&gt;      public void onTimeout(Continuation continuation) { ... }&lt;br /&gt;      public void onComplete(Continuation continuation) { ... }&lt;br /&gt;    });&lt;br /&gt;    &lt;br /&gt;    continuation.suspend();&lt;br /&gt;    ...&lt;br /&gt;  }&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p align="justify"&gt;
Continuation listeners are analogous to Servlet 3.0 &lt;code&gt;AsyncListener&lt;/code&gt;s.

&lt;/p&gt;&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;&lt;h2 align="justify"&gt; Continuation Patterns &lt;/h2&gt;&lt;div align="justify"&gt;

&lt;/div&gt;&lt;h3 align="justify"&gt; Suspend Resume Pattern &lt;/h3&gt;&lt;div align="justify"&gt;
The suspend/resume style is used when a servlet and/or filter is used to generate the response after a asynchronous wait that is terminated by an asynchronous handler. Typically a request attribute is used to pass results and to indicate if the request has already been suspended.
&lt;pre&gt;  void doGet(HttpServletRequest request, HttpServletResponse response)&lt;br /&gt;  {&lt;br /&gt;     // if we need to get asynchronous results&lt;br /&gt;     Object results = request.getAttribute(&amp;quot;results);&lt;br /&gt;     if (results==null)&lt;br /&gt;     {&lt;br /&gt;       final Continuation continuation = ContinuationSupport.getContinuation(request);&lt;br /&gt;       &lt;br /&gt;       // if this is not a timeout&lt;br /&gt;       if (continuation.isExpired())&lt;br /&gt;       {&lt;br /&gt;         sendMyTimeoutResponse(response);&lt;br /&gt;         return;&lt;br /&gt;       }&lt;br /&gt;       &lt;br /&gt;       // suspend the request&lt;br /&gt;       continuation.suspend(); // always suspend before registration&lt;br /&gt;       &lt;br /&gt;       // register with async service.  The code here will depend on the&lt;br /&gt;       // the service used (see Jetty HttpClient for example)&lt;br /&gt;       myAsyncHandler.register(new MyHandler()&lt;br /&gt;       {&lt;br /&gt;          public void onMyEvent(Object result)&lt;br /&gt;          {&lt;br /&gt;            continuation.setAttribute(&amp;quot;results&amp;quot;,results);&lt;br /&gt;            continuation.resume();&lt;br /&gt;          }&lt;br /&gt;       });&lt;br /&gt;       return; // or continuation.undispatch();&lt;br /&gt;     }&lt;br /&gt;     &lt;br /&gt;     // Send the results&lt;br /&gt;     sendMyResultResponse(response,results);&lt;br /&gt;   }    &lt;br /&gt;&lt;/pre&gt;
This style is very good when the response needs the facilities of the servlet container (eg it uses a web framework) or if the one event may resume many requests so the containers thread pool can be used to handle each of them. 
 

&lt;/div&gt;&lt;h3 align="justify"&gt; Suspend Continue Pattern &lt;/h3&gt;&lt;div align="justify"&gt;

The suspend/complete style is used when an asynchronous handler is used to generate the response:

&lt;pre&gt;  void doGet(HttpServletRequest request, HttpServletResponse response)&lt;br /&gt;  {&lt;br /&gt;     final Continuation continuation = ContinuationSupport.getContinuation(request);&lt;br /&gt;     &lt;br /&gt;     // if this is not a timeout&lt;br /&gt;     if (continuation.isExpired())&lt;br /&gt;     {&lt;br /&gt;       sendMyTimeoutResponse(request,response);&lt;br /&gt;       return;&lt;br /&gt;     }&lt;br /&gt;     &lt;br /&gt;     // suspend the request&lt;br /&gt;     continuation.suspend(response); // response may be wrapped.&lt;br /&gt;     &lt;br /&gt;     // register with async service.  The code here will depend on the&lt;br /&gt;     // the service used (see Jetty HttpClient for example)&lt;br /&gt;     myAsyncHandler.register(new MyHandler()&lt;br /&gt;     {&lt;br /&gt;       public void onMyEvent(Object result)&lt;br /&gt;       {&lt;br /&gt;         sendMyResultResponse(continuation.getServletResponse(),results);&lt;br /&gt;         continuation.complete();&lt;br /&gt;       }&lt;br /&gt;     });&lt;br /&gt;   }    &lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p align="justify"&gt;
This style is very good when the response does not needs the facilities of the servlet container (eg it does not use a web framework) and if an event will resume only one continuation.  If many responses are to be sent (eg a chat room), then writing one response may block and cause a DOS on the other responses.


&lt;/p&gt;&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;&lt;h2 align="justify"&gt; Continuation Examples &lt;/h2&gt;&lt;div align="justify"&gt;

&lt;/div&gt;&lt;h3 align="justify"&gt; Chat Servlet &lt;/h3&gt;&lt;div align="justify"&gt;
The &lt;a href="http://download.eclipse.org/jetty/stable-7/xref/com/acme/ChatServlet.html"&gt;ChatServlet&lt;/a&gt; example shows how the suspend/resume style can be used to directly code a chat room.   The same principles are applied to frameworks like &lt;a href="http://cometd.org"&gt;cometd.org&lt;/a&gt; which provide an richer environment for such applications, based on Continuations.

&lt;/div&gt;&lt;h3 align="justify"&gt; Quality of Service Filter &lt;/h3&gt;&lt;div align="justify"&gt;
The &lt;a href="http://download.eclipse.org/jetty/stable-7/xref/org/eclipse/jetty/servlets/QoSFilter.html"&gt;QoSFilter&lt;/a&gt;(&lt;a href="http://download.eclipse.org/jetty/stable-7/apidocs/org/eclipse/jetty/servlets/QoSFilter.html"&gt;javadoc&lt;/a&gt;), uses suspend/resume style to limit the number of requests simultaneously within the filter.  This can be used to protect a JDBC connection pool or other limited resource from too many simultaneous requests.
&lt;/div&gt;&lt;p align="justify"&gt;
If too many requests are received, the extra requests wait for a short time on a semaphore, before being suspended.  As requests within the filter return, they use a priority queue to resume the suspended requests.  This allows your authenticated or priority users to get a better share of your servers resources when the machine is under load.

&lt;/p&gt;&lt;h3 align="justify"&gt; Denial of Service Filter &lt;/h3&gt;&lt;div align="justify"&gt;
The &lt;a href="http://download.eclipse.org/jetty/stable-7/xref/org/eclipse/jetty/servlets/DoSFilter.html"&gt;DosFilter&lt;/a&gt;(&lt;a href="http://download.eclipse.org/jetty/stable-7/apidocs/org/eclipse/jetty/servlets/DoSFilter.html"&gt;javadoc&lt;/a&gt;) is similar to the QoSFilter, but protects a web application from a denial of service attack (as best you can from within a web application). If too many requests are detected coming from one source, then those requests are suspended and a warning generated.  This works on the assumption that the attacker may be written in simple blocking style, so by suspending you are hopefully consuming their resources.   True protection from DOS can only be achieved by network devices (or eugenics :).

&lt;/div&gt;&lt;h3 align="justify"&gt; Proxy Servlet &lt;/h3&gt;&lt;div align="justify"&gt;
The &lt;a href="http://download.eclipse.org/jetty/stable-7/xref/org/eclipse/jetty/servlets/ProxyServlet.html"&gt;ProxyServlet&lt;/a&gt; uses the suspend/complete style and the jetty asynchronous &lt;a href="http://download.eclipse.org/jetty/stable-7/apidocs/org/eclipse/jetty/client/HttpClient.html%20HTTP"&gt;client&lt;/a&gt; to implement a scalable Proxy server (or transparent proxy).

&lt;/div&gt;&lt;h3 align="justify"&gt; Gzip Filter &lt;/h3&gt;&lt;p align="justify"&gt;
The jetty &lt;a href="http://download.eclipse.org/jetty/stable-7/xref/org/eclipse/jetty/servlets/GzipFilter.html"&gt;GzipFilter&lt;/a&gt; is a filter that implements dynamic compression by wrapping the response objects.  This filter has been enhanced to understand continuations, so that if a request is suspended in suspend/complete style and the wrapped response is passed to the asynchronous handler, then a ContinuationListener is used to finish the wrapped response.  This allows the GzipFilter to work with the asynchronous ProxyServlet and to compress the proxied responses.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;h2&gt;Where do you get it?&lt;/h2&gt;&lt;p&gt;You can read &lt;a href="http://wiki.eclipse.org/Jetty/Feature/Continuations"&gt;about it&lt;/a&gt;, or &lt;a href="http://www.eclipse.org/jetty/downloads.php"&gt;download&lt;/a&gt; it with &lt;a href="http://www.eclipse.org/jetty"&gt;jetty&lt;/a&gt; or include it in your maven project like this &lt;a href="http://svn.cometd.com/trunk/cometd-java/server/pom.xml"&gt;pom.xml&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;&lt;h2&gt; &lt;br /&gt;&lt;/h2&gt;</description>
      <pubDate>Thu, 02 Jul 2009 08:00:01 CDT</pubDate>
      <guid isPermaLink="true">http://blogs.webtide.com/gregw/entry/continuations_to_continue</guid>
      <dc:creator>Greg Wilkins</dc:creator>
    </item>
    <item>
      <title>Euler was groovy too</title>
      <link>http://www.nofluffjuststuff.com/blog/andrew_glover/2009/07/euler_was_groovy_too.html?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;
I recently stumbled across &lt;a href="http://projecteuler.net"&gt;Project Euler&lt;/a&gt;, which is a hip website containing quite a few different math challenges. The idea being that people can attempt to solve any particular challenge which ever way they can (that is, in any language and with any algorithm) &amp;#8212; the site doesn&amp;#8217;t provide answers either &amp;#8212; you must create an account and submit your answer. Project Euler will then check your answer and issue a response &amp;#8212; correct or incorrect. If it&amp;#8217;s your bag and you Google the project, you&amp;#8217;ll find some interesting posts solving various problems in various languages ranging from F# to Scala to C (and everything in between). What&amp;#8217;s also interesting is that each post for a problem usually is different in some way or another, which of course provides some interesting learning opportunities.
&lt;/p&gt;
&lt;p&gt;
&lt;A HREF="http://projecteuler.net/index.php?section=problems&amp;#038;id=1"&gt;Problem 1&lt;/A&gt; entails figuring out the sum of numbers divisible by 3 and 5: 
&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.&lt;br /&gt;
Find the sum of all the multiples of 3 or 5 below 1000.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;
I thought it would be interesting to see if I could solve this in &lt;A HREF="http://groovy.codehaus.org"&gt;Groovy&lt;/A&gt; as the solution clearly deals with iterating over a series of numbers &amp;#8212; and as everyone who has played with &lt;A HREF="http://thediscoblog.com/category/dynamic-languages/groovy/"&gt;Groovy&lt;/A&gt; (or some other dynamic language for that matter) knows, &lt;A HREF="http://thediscoblog.com/2008/11/27/ranges-in-groovy-are-hip/"&gt;iteration is a blast&lt;/A&gt;, baby!
&lt;/p&gt;
&lt;p&gt;
Accordingly, my first pass yielded the following code: &lt;/p&gt;
&lt;pre&gt;&lt;code&gt;def sum = 0
(1..&amp;lt;1000).each{
 if((it % 5 == 0) || (it % 3 == 0)){
   sum += it
 }
}
assert sum == /* do it yourself, baby! */&lt;/code&gt;&lt;/pre&gt;
&lt;/p&gt;
&lt;p&gt;Note that I&amp;#8217;m using Groovy&amp;#8217;s &lt;A HREF="http://groovy.codehaus.org/Collections"&gt;exclusive range feature&lt;/A&gt; to easily iterate over all numbers less than 1000. I then proceed to use Groovy&amp;#8217;s &lt;code&gt;it&lt;/code&gt; variable, which represents the current value in the iteration (i.e. 1, 2, 3, etc) and test the instance with Java&amp;#8217;s &lt;A HREF="http://www.cafeaulait.org/course/week2/15.html"&gt;modulo operator&lt;/A&gt; (that is, modulo returns the remainder of division &amp;#8212; 10 modulo 5 is 0, but 11 modulo 5 is 1). If there is a match, I add it to the &lt;code&gt;sum&lt;/code&gt; variable. This is programming 101 and brought me back to the Age of Aquarius, baby!!
&lt;/p&gt;
&lt;p&gt;
That was easy enough; however, I wanted to see if I could do away with the &lt;code&gt;sum&lt;/code&gt; variable by using one of Groovy&amp;#8217;s many hip magic methods &lt;A HREF="http://groovy.codehaus.org/JN1015-Collections"&gt;attached to collections&lt;/A&gt;. Thus, my second attempt leverages Groovy&amp;#8217;s &lt;code&gt;findAll&lt;/code&gt; method, which permits putting a condition in the resulting &lt;A HREF="http://thediscoblog.com/2009/02/09/leveraging-closures/"&gt;closure&lt;/A&gt;, which then returns a collection meeting that criteria. Accordingly, with the returned collection of numbers meeting my criteria (that is, any number that is divisible by 5 or 3), I then have to issue the &lt;code&gt;sum&lt;/code&gt; method like so:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;def val = (1..&amp;lt;1000).findAll{(it % 5 == 0) || (it % 3 == 0)}
assert val.sum() == /* you gotta figure it out yourself, man! */&lt;/code&gt;&lt;/pre&gt;
&lt;/p&gt;
&lt;p&gt;Groovy&amp;#8217;s &lt;code&gt;sum&lt;/code&gt; method is straight forward &amp;#8212; it takes all the values in a collection (presumably &lt;A HREF="http://www.ibm.com/developerworks/java/library/j-pg10255.html"&gt;add-able&lt;/A&gt;) and adds them up! &lt;/p&gt;
&lt;p&gt;
Admittedly, the second example is a bit harder to read (at first glance, that is) but it sure is a bit more aesthetic than the first brute force bogue example, isn&amp;#8217;t it?&lt;/p&gt;
                 &lt;p&gt;&lt;center&gt;You can now follow &lt;a href="http://twitter.com/thediscoblog"&gt;The Disco Blog on Twitter&lt;/a&gt;, baby!&lt;/center&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 01 Jul 2009 16:00:00 CDT</pubDate>
      <guid isPermaLink="true">http://thediscoblog.com/?p=643</guid>
      <dc:creator>Andrew Glover</dc:creator>
    </item>
    <item>
      <title>CommunityOne 2009</title>
      <link>http://www.nofluffjuststuff.com/blog/jason_lee1/2009/07/communityone_2009.html?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description />
      <pubDate>Wed, 01 Jul 2009 13:00:01 CDT</pubDate>
      <guid isPermaLink="true">http://blogs.steeplesoft.com/?p=428</guid>
      <dc:creator>Jason Lee</dc:creator>
    </item>
    <item>
      <title>New MSDN Article on RIA Services Published</title>
      <link>http://www.nofluffjuststuff.com/blog/brad_abrams/2009/06/new_msdn_article_on_ria_services_published.html?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;I saw &lt;a href="http://www.theproblemsolver.nl/"&gt;Maurice de Beijer&lt;/a&gt; recently published a good introduction article on .NET RIA Services.&amp;#160; &lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/NewMSDNArticleonRIAServicesPublished_F048/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="image" border="0" alt="image" align="right" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/NewMSDNArticleonRIAServicesPublished_F048/image_thumb.png" width="128" height="57" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd776095.aspx"&gt;Getting started with the .NET RIA Services&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The post starts with a very good introduction:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;RIA, short for Rich Internet Applications, is a bit of an umbrella term for all sorts of applications delivered through the browser. The key aspect however is that they deliver some business function and are not just about flashy graphics. Business applications tend to work with data and other business resources so they are usually built in the standard N tier architecture. If we take a look at this N tier architecture for the most common type of business resource, the database, we typically see the Create, Read, Update, Delete, (CRUD) pattern appear all the time. While implementing the CRUD pattern in Silverlight isn’t extremely difficult the very fact that the Silverlight application runs in the browser without direct database access and all server communication is done asynchronously makes this harder than it needs to be. This is exactly one of the problems the .NET RIA Services is trying to solve. Of course there is more to the .NET RIA Services and the standard CRUD operations is just one of the issues addressed. As we will see in this article it addresses much more by including things like data validation, general communication, keeping client and server code synchronized and more.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;When evaluating the .NET RIA Services we should be looking at it from two different perspectives. First of all it is a set of design guidelines of how to create a RIA style application. Secondly it is a series of .NET libraries and Visual Studio templates implementing the design guidelines. So even if you don’t want to use the .NET RIA Services binaries, studying the design is very useful for a Silverlight line-of-business (LOB) developer. Another thing to keep in mind when evaluating the .NET RIA Services is that it is not just about Silverlight but more general. The first samples may be with Silverlight clients but a client could equally well be written in ASP.NET/JavaScript, WPF or any other client that can call WCF services.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9810174" width="1" height="1"&gt;</description>
      <pubDate>Wed, 01 Jul 2009 11:00:01 CDT</pubDate>
      <guid isPermaLink="true">91d46819-8472-40ad-a661-2c78acb4018c:9810174</guid>
      <dc:creator>Brad Abrams</dc:creator>
    </item>
    <item>
      <title>Review: &amp;quot;Iron Python in Action&amp;quot; by Michael Foord and Christian Muirhead</title>
      <link>http://www.nofluffjuststuff.com/blog/ted_neward/2009/07/review__quot_iron_python_in_action_quot_by_michael_foord_and_christian_muirhead.html?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;
OK, OK, I admit it. Maybe significant whitespace isn't all bad. (But don't let me
ever catch you quoting me say that.)
&lt;/p&gt;
&lt;p&gt;
The reason for my (maybe) shift in thinking? Manning Publications sent me a copy of &lt;em&gt;Iron
Python in Action&lt;/em&gt;, and I have to say, I like the book and its approach. Getting
me to like Python as a primary language for development will probably take more than
just one book can give, but... *shrug* Who knows?
&lt;/p&gt;
&lt;p&gt;
Bear in mind, I have plenty of reasons to like IronPython (Microsoft's Python implementation
for the .NET environment):
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
A good friend of mine, Harry Pierson (aka @DevHawk), is the PM on the IPy project,
and I'm generally prejudiced in favor of those things that people I know and respect.&lt;/li&gt;
&lt;li&gt;
I'm generally a fan of dynamic languages, particularly those that let you do strange
and twisted things to the type system and its instances at runtime. (Yes, I'm looking
at you, ECMAScript...)&lt;/li&gt;
&lt;li&gt;
I spent some quality time with IronPython Studio last year while researching a Visual
Studio Extensibility &amp;quot;Deep Dive&amp;quot; paper.&lt;/li&gt;
&lt;li&gt;
I've known Jim Hugunin (the creator of IronPython, and Jython before that) for some
years, ever since his days working on AspectJ, and he's one of those scary-smart guys
that, despite knowing they're scary-smart, still render me stunned when I listen to
them.&lt;/li&gt;
&lt;li&gt;
I'm a huge fan of the DLR. It's like having Parrot, but without having to wait a decade
(give or take).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
But, just to counterbalance the scales, I have plenty of good reasons to dislike IronPython,
too:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Significant whitespace.&lt;/li&gt;
&lt;li&gt;
The &amp;quot;There's only one way to do it&amp;quot; oath that Pythonistas seem to hold as
religion. (Somebody told me that building C-Python—the original implementation—only
works for you if you swear a holy oath to The One True Way on the One True Way Bible.
Needless to say, I believe them, and have never tried to build C-Python from sources
as a result.)&lt;/li&gt;
&lt;li&gt;
Significant whitespace.&lt;/li&gt;
&lt;li&gt;
Uh.... did I mention significant whitespace yet?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
I admit, it was with some hesitation that I cracked open the book. Actually, to be
honest, I was really ready to just take out all my dislike of significant whitespace
and pour it into a heated, vitriolic diatribe on everything that was just &lt;em&gt;wrong&lt;/em&gt; with
Python.
&lt;/p&gt;
&lt;p&gt;
And...?
&lt;/p&gt;
&lt;p&gt;
Well, OK, I admit it. Maybe significant whitespace isn't all bad.
&lt;/p&gt;
&lt;p&gt;
But this is a review of the book, not the technology. So, on we go.
&lt;/p&gt;
&lt;h3&gt;What I liked about the book
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
The focus is on both .NET and Python, and doesn't try to short-change either the &amp;quot;Python&amp;quot;-ness
or the &amp;quot;.NET'-ness by trying to be a &amp;quot;Python book (that happens to run on
.NET)&amp;quot; or a &amp;quot;.NET book (that happens to use Python for code samples)&amp;quot;.
The authors, I think, did a very good job of balancing the two, making this &lt;em&gt;the&lt;/em&gt; book
to get if you're in that area on the Venn diagram where &amp;quot;Python&amp;quot; overlaps
with &amp;quot;.NET&amp;quot;.&lt;/li&gt;
&lt;li&gt;
Part 2, &lt;em&gt;&amp;quot;Core development techniques&amp;quot;&lt;/em&gt;, starts down the &amp;quot;feed
you the Python Kool-Ade&amp;quot; pretty quickly, heading straight into Chapter 4 (&amp;quot;&lt;em&gt;Writing
an application and design patterns with IronPython&amp;quot;&lt;/em&gt;) without much of a pause
for breath. The authors get into duck typing, protocols, and Model-View-Controller
within the first four pages, and begin working on a running example to highlight some
of the ideas. (Interestingly enough, they also take a few moments to point out that
IronPython on Mono works, and include a couple of screen shots to that effect as we
go, though I personally wonder just how many people are really going down this path.)
I like the no-holds-barred, show-you-the-code style, but only because they also take
time throughout the prose to talk about some of the concepts at work underneath and
laced throughout the code. &amp;quot;Show me then tell me&amp;quot; is a time-honored tradition,
but too many authors forget the &amp;quot;tell me&amp;quot; part and stop with code. These
guys do a good job of following through.&lt;/li&gt;
&lt;li&gt;
The chapters in Part 3, &amp;quot;&lt;em&gt;IronPython and advanced .NET&lt;/em&gt;&amp;quot;, form an
interesting collection of how IronPython can fit into the rest of the .NET stack,
demonstrating how to use IronPython with WPF, ASP.NET, and IronPython's crowning glory,
Silverlight. If you're into front-end stuff, this is the section where I think you're
going to have the most fun.&lt;/li&gt;
&lt;li&gt;
The chapters in Part 4, &amp;quot;&lt;em&gt;Reaching out with IronPython&lt;/em&gt;&amp;quot;, is I think
the most important part of the book, showing how to extend IronPython (chapter 14)
with C#/VB extensions (similar to how a C-Python developer would extend Python by
writing C code, but much much simpler) and the opposite—how to embed IronPython inside
of existing C#/VB applications (chapter 15), which is really an exercise in using
the DLR Hosting APIs. While the discussion in chapter 15 is good, I wish it'd had
a bit more thorough discussion of how the DLR could be hosted regardless of the scripting
language, though I admit that's pretty beyond the scope of this book (which is focused,
after all, entirely on IronPython, and as a result &lt;em&gt;should&lt;/em&gt; stay focused on
how to host IPy).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;strong&gt;What I found &amp;quot;Meh&amp;quot; about the book&lt;/strong&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
Part 1 (&lt;em&gt;&amp;quot;A new language for .NET&amp;quot;&lt;/em&gt;, &lt;em&gt;&amp;quot;Introduction to Python&amp;quot;&lt;/em&gt;,
and &lt;em&gt;&amp;quot;.NET objects and IronPythong&amp;quot;&lt;/em&gt;) does a good job of bringing
the rank beginner up to speed, getting some basic Python ideas across in the same
breath that they bring .NET home. The only problem is, it only works well if you're
neither a Python programmer nor a .NET programmer. Chapter 1, for example, does a
sort of Cannonball-into-the-pool kind of dive into Python, but dives equally into
the &amp;quot;Iron&amp;quot; parts as it does the &amp;quot;Python&amp;quot; parts. If you're either
a Pythonista or a .NETter, I suspect you're going to be tempted to flip pages pretty
quickly, and (I suspect) miss a few things. Chapter 2 is all about Python (meaning
.NETters will probably spend some time here), but it certainly doesn't feel like an
exhaustive reference, nor does Chapter 3 stand as an exhaustive discussion about all
things .NET, either. I almost wish all three chapters had been collapsed into one—suffice
it to say, I don't feel like I know the Python language, and don't feel like this
book could be my Python reference next to me as I learn it, and I know that it's not
a great .NET reference, either. Fortunately, the goal of these three chapters feels
pretty clearly to be &amp;quot;Teach you just enough to make you dangerous (and able to
understand the rest of the book)&amp;quot;, and once we hit Part 2, rubber meets road
pretty quickly.&lt;/li&gt;
&lt;li&gt;
By the time you hit Chapter 7, less than halfway through the book, the authors have
created a fairly nice, if simplistic, application for later dissection, but it's not
until you hit Chapter 7 that they begin to start unit-testing, even though they insist
(on page 17) that &amp;quot;Dynamic language programmers are often proponents of &lt;em&gt;strong
testing rather than strong typing&lt;/em&gt;&amp;quot; (a quote they attribute to Bruce Eckel,
though I'm relatively certain I heard Dave Thomas and Neal Ford say it with respect
to Ruby, long before Eckel started &amp;quot;Thinking in Python... or Flex... or whatever&amp;quot;).
If unit-testing is that important, why wait three chapters into the application's
development before writing a single unit-test? This doesn't jibe with me, somehow.&lt;/li&gt;
&lt;li&gt;
If you're into back-end stuff, chapter 12 on &lt;em&gt;&amp;quot;Databases and web services&amp;quot;&lt;/em&gt; is
pretty bland. The fact that the two are combined into a single chapter is indicative,
all by itself, of how deep or intensive the coverage goes, and there's zero mention
of anything beyond basic ADO.NET. The coverage on web services covers REST relatively
well, but there's zero coverage of WCF, and the whole of SOAP-based services is all
of four or five pages. And Workflow? Doesn't exist, isn't even mentioned (except for
an appearance in a table, &amp;quot;The major new APIs of .NET 3.0&amp;quot;). Yikes.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;strong&gt;What I actively disliked about the book&lt;/strong&gt;
&lt;/h3&gt;
&lt;p&gt;
Actually, not much. Manning did their usual superb job of arrowed callouts to point
out particular concepts in the code listings, the copyediting is professional (meaning
there's no obvious typos or misspellings that just break up the flow of prose, something
that not all publishers seem to take seriously), and the graphics flow nicely alongside
the prose, not dominating the page but accentuating it.
&lt;/p&gt;
&lt;p&gt;
In fact, about the only thing I'd care to criticize is the &lt;em&gt;huge&lt;/em&gt; number of
footnotes, particularly in the first chapter. (By page 20 in the book, there have
already been 30 footnotes.) When you have three footnotes &lt;em&gt;per page&lt;/em&gt;, on average
(and sometimes more), it does tend to distract, at least to me it does. It feels like
there were ways, for most of them, to inject the idea or concept into the main prose,
or leave it out entirely, but that could just be a difference of writing style, too.
&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Summation&lt;/strong&gt;
&lt;/h3&gt;
&lt;p&gt;
If you're a .NET developer interested in learning/using IronPython on your next project,
this is a definite winner. If you're a Python developer looking to see how to break
into .NET, I'm not so sure this is your book, but I say that mostly because I'm &lt;em&gt;not&lt;/em&gt; a
Pythonista and can't really speak to how that mindset will find this as an introduction
to the .NET space. My intuition tells me that this would be a good springboard into
another book on .NET for the Python programmer, but I'll have to leave that to Pythonistas
who've read this book to comment one way or another.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=eb632e02-f7de-43ce-a9fe-8c857b0b2554" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. &lt;a href="mailto:ted@tedneward.com"&gt;Contact
me for details&lt;/a&gt;.</description>
      <pubDate>Wed, 01 Jul 2009 08:00:01 CDT</pubDate>
      <guid isPermaLink="true">http://blogs.tedneward.com/PermaLink,guid,eb632e02-f7de-43ce-a9fe-8c857b0b2554.aspx</guid>
      <dc:creator>Ted Neward</dc:creator>
    </item>
    <item>
      <title>Enterprise JavaFX - complete edition</title>
      <link>http://www.nofluffjuststuff.com/blog/max_katz/2009/06/enterprise_javafx__complete_edition.html?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;The following series shows how to connect JavaFX to enterprise server-side technologies. This series covers Seam. &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Part 1 - Introduction: &lt;a href="http://java.dzone.com/articles/javafx-and-seam-flamingo"&gt;JavaFX and Seam with Flamingo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Part 2 - Tutorial: &lt;a href="http://java.dzone.com/articles/java-fx-and-seam-flamingo-part"&gt;JavaFX and Seam with Flamingo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Part 3 - Flamingo &lt;a href="http://mkblog.exadel.com/ria/javafx-crud-generation-example-with-flamingo/"&gt;CRUD feature&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Tooling: Exadel &lt;a href="http://exadel.com/web/portal/javafxstudio"&gt;JavaFX plug-in for Eclipse&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A future series will cover how to connect JavaFX with Spring framework. &lt;/p&gt;</description>
      <pubDate>Tue, 30 Jun 2009 16:00:00 CDT</pubDate>
      <guid isPermaLink="true">http://mkblog.exadel.com/?p=500</guid>
      <dc:creator>Max Katz</dc:creator>
    </item>
    <item>
      <title>Spring WS plugin 0.2.2 released</title>
      <link>http://www.nofluffjuststuff.com/blog/russell_miles/2009/06/spring_ws_plugin_0_2_2_released.html?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;I've just released version 0.2.2 of the Spring WS plugin. The major new feature in this release is the capability to completely customize the how an incoming document is routed to your endpoint by being able to override the default naming strategy. For more info, checkout the &lt;a href="http://grails.org/plugin/springws"&gt;plugin's homepage&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A massive thanks goes out to Ivo Houbrechts for contributing the new customization code!&lt;/p&gt;</description>
      <pubDate>Tue, 30 Jun 2009 13:00:05 CDT</pubDate>
      <guid isPermaLink="true">http://www.russmiles.com/home/2009/6/30/spring-ws-plugin-022-released.html</guid>
      <dc:creator>Russell Miles</dc:creator>
    </item>
    <item>
      <title>I&amp;#8217;ve Updated My About Page</title>
      <link>http://www.nofluffjuststuff.com/blog/jason_lee1/2009/06/i_8217_ve_updated_my_about_page.html?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description />
      <pubDate>Tue, 30 Jun 2009 11:00:00 CDT</pubDate>
      <guid isPermaLink="true">http://blogs.steeplesoft.com/ive-updated-my-about-page/</guid>
      <dc:creator>Jason Lee</dc:creator>
    </item>
    <item>
      <title>Central Florida Software Symposium - Aug 21 - 23, 2009</title>
      <link>http://www.nofluffjuststuff.com/conference/orlando/2009/08/home?utm_source=showWeeks8&amp;utm_medium=rss&amp;utm_campaign=showrss</link>
      <description>&lt;div style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 10pt;"&gt;&#xD;
&#xD;
&lt;p&gt;&#xD;
No Fluff Just Stuff is pleased to announce the &lt;a style="color: #336699; text-decoration: none;" href="http://www.nofluffjuststuff.com/conference/orlando/2009/08/home?utm_source=showWeeks8&amp;utm_medium=rss&amp;utm_campaign=showrss" target="new"&gt;Central Florida Software Symposium&lt;/a&gt;, Aug 21 - 23, 2009.&#xD;
&lt;/p&gt;&#xD;
&#xD;
	&lt;div style="background-color: #0860A9; color: #EFCE52; font-weight: bold; padding: 5px 5px 5px 5px;"&gt;&#xD;
		&lt;em&gt;Catch these Featured Sessions&lt;/em&gt;&#xD;
	&lt;/div&gt;&#xD;
&#xD;
	&lt;div style="border: 1px solid #999999; padding: 0 5px 0 5px;"&gt;&#xD;
&#xD;
	&lt;table cellpadding="0" cellspacing="0" style="font-size: 10pt;"&gt;&#xD;
&#xD;
	&#xD;
	&lt;tr&gt;&#xD;
		&lt;td&gt;&#xD;
&#xD;
		&lt;div style="margin: 5px 0 4px 0;"&gt;&#xD;
			&lt;b&gt;&lt;a style="color: #336699; text-decoration: none;" href="http://www.nofluffjuststuff.com/conference/orlando/2009/08/session?id=14750&amp;utm_source=showWeeks8&amp;utm_medium=rss&amp;utm_campaign=showrss" target="new"&gt;Emergent Design &amp; Evolutionary Architecture&lt;/a&gt;&lt;/b&gt;&#xD;
			&lt;br /&gt;&lt;em&gt;by Neal Ford&lt;/em&gt;&#xD;
		&lt;/div&gt;&#xD;
&#xD;
					&lt;a style="color: #336699; text-decoration: none;" href="http://www.nofluffjuststuff.com/conference/speaker/neal_ford&amp;utm_source=showWeeks8&amp;utm_medium=rss&amp;utm_campaign=showrss" target="new"&gt;&#xD;
				&lt;img src="http://www.nofluffjuststuff.com//s/images/bio/21_Ford_medium.jpg" width="100" border="0" align="left" style="margin: 5 5 5 5;"/&gt;&#xD;
			&lt;/a&gt;&#xD;
				Most of the software world has realized that BDUF (Big Design Up Front) doesn't work well in software. But lots of developers struggle with this notion when it applies to architecture and design. Surely you can't just start coding, right? You need some level of understanding before you can start work. This session describes the current thinking about emergent design &amp; evolutionary architecture, including both proactive (test-driven development) and reactive (refactoring, composed method) approaches to discovering design. The goal of this talk is to provide nomenclature, strategies, and techniques for allowing design to emerge from projects as they proceed, keeping you code in sync with the problem domain. &#xD;
		&#xD;
			&lt;br style="clear: both; font: 1px/1px Arial;"/&gt;&#xD;
&#xD;
		&lt;/td&gt;&#xD;
	&lt;/tr&gt;&#xD;
&#xD;
	&#xD;
	&lt;tr&gt;&#xD;
		&lt;td&gt;&#xD;
&#xD;
		&lt;div style="margin: 5px 0 4px 0;"&gt;&#xD;
			&lt;b&gt;&lt;a style="color: #336699; text-decoration: none;" href="http://www.nofluffjuststuff.com/conference/orlando/2009/08/session?id=14754&amp;utm_source=showWeeks8&amp;utm_medium=rss&amp;utm_campaign=showrss" target="new"&gt;JSF 2.0: Advanced Topics&lt;/a&gt;&lt;/b&gt;&#xD;
			&lt;br /&gt;&lt;em&gt;by David Geary&lt;/em&gt;&#xD;
		&lt;/div&gt;&#xD;
&#xD;
					&lt;a style="color: #336699; text-decoration: none;" href="http://www.nofluffjuststuff.com/conference/speaker/david_geary&amp;utm_source=showWeeks8&amp;utm_medium=rss&amp;utm_campaign=showrss" target="new"&gt;&#xD;
				&lt;img src="http://www.nofluffjuststuff.com//s/images/bio/4_Geary_medium.jpg" width="100" border="0" align="left" style="margin: 5 5 5 5;"/&gt;&#xD;
			&lt;/a&gt;&#xD;
				This session covers advanced aspects of JSF 2.0.&#xD;
		&#xD;
			&lt;br style="clear: both; font: 1px/1px Arial;"/&gt;&#xD;
&#xD;
		&lt;/td&gt;&#xD;
	&lt;/tr&gt;&#xD;
&#xD;
	&#xD;
	&lt;tr&gt;&#xD;
		&lt;td&gt;&#xD;
&#xD;
		&lt;div style="margin: 5px 0 4px 0;"&gt;&#xD;
			&lt;b&gt;&lt;a style="color: #336699; text-decoration: none;" href="http://www.nofluffjuststuff.com/conference/orlando/2009/08/session?id=14762&amp;utm_source=showWeeks8&amp;utm_medium=rss&amp;utm_campaign=showrss" target="new"&gt;The Java Memory Model&lt;/a&gt;&lt;/b&gt;&#xD;
			&lt;br /&gt;&lt;em&gt;by Brian Goetz&lt;/em&gt;&#xD;
		&lt;/div&gt;&#xD;
&#xD;
					&lt;a style="color: #336699; text-decoration: none;" href="http://www.nofluffjuststuff.com/conference/speaker/brian_goetz&amp;utm_source=showWeeks8&amp;utm_medium=rss&amp;utm_campaign=showrss" target="new"&gt;&#xD;
				&lt;img src="http://www.nofluffjuststuff.com//s/images/bio/24_Goetz_medium.jpg" width="100" border="0" align="left" style="margin: 5 5 5 5;"/&gt;&#xD;
			&lt;/a&gt;&#xD;
				What's the worst thing that can happen when you fail to synchronize in a concurrent Java program?  Its probably worse than you think -- modern shared-memory processors can do some pretty weird things when left to their own devices.  &#xD;
		&#xD;
			&lt;br style="clear: both; font: 1px/1px Arial;"/&gt;&#xD;
&#xD;
		&lt;/td&gt;&#xD;
	&lt;/tr&gt;&#xD;
&#xD;
	&#xD;
	&lt;/table&gt;&#xD;
&#xD;
	&lt;/div&gt;&#xD;
&#xD;
&lt;/div&gt;</description>
      <pubDate>Tue, 30 Jun 2009 09:00:00 CDT</pubDate>
      <guid isPermaLink="true">http://www.nofluffjuststuff.com/conference/orlando/2009/08/home</guid>
    </item>
    <item>
      <title>Fan and Fortress at the Lambda Lounge</title>
      <link>http://www.nofluffjuststuff.com/blog/alex_miller/2009/06/fan_and_fortress_at_the_lambda_lounge.html?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;This month at the &lt;a href="http://lambdalounge.org"&gt;Lambda Lounge&lt;/a&gt; (Thursday, July 2nd, 6 pm), we will be bringing you two NEW languages that start with F.  &lt;/p&gt;
&lt;p&gt;First, I will be introducing you to a research language called &lt;a href="http://projectfortress.sun.com/Projects/Community"&gt;Fortress&lt;/a&gt; aimed at people doing scientific computation on large (peta-size) systems.  It is a language that explicitly tries to meet the challenge of running systems up to a million cores and is &amp;#8220;infested&amp;#8221; with parallelism.  This is a language for tomorrow.&lt;/p&gt;
&lt;p&gt;Next, &lt;a href="http://kablooie.puredanger.com/"&gt;Scott Bale&lt;/a&gt; will be talking about the &lt;a href="http://fandev.org/"&gt;Fan programming language&lt;/a&gt;.  This language takes the best of languages like Java and C#, throws out the cruft, and bleeds in some modern features.  Is it the next Java?  Java++?  Come find out&amp;#8230;&lt;/p&gt;
&lt;p&gt;Should be a great night with two languages making their debut at the Lounge.&lt;/p&gt;</description>
      <pubDate>Tue, 30 Jun 2009 08:00:01 CDT</pubDate>
      <guid isPermaLink="true">http://tech.puredanger.com/2009/06/29/fan-fortress-lounge/</guid>
      <dc:creator>Alex Miller</dc:creator>
    </item>
    <item>
      <title>Another Interview: NFJSOne</title>
      <link>http://www.nofluffjuststuff.com/blog/robert_fischer/2009/06/another_interview_nfjsone.html?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>Lots of interesting podcasts over on the NFJSOne Podcast site, including one with yours truly.&#xD;
&lt;br /&gt;Here&amp;#8217;s the summary of my interview from the NFJSOne podcast site:&#xD;
&lt;br /&gt;Robert and Jared talk about the wave of convention over configuration that&amp;#8217;s sweeping the Java software, a little about GORM versus Hibernate, and how Grails is leading the way for the [...]</description>
      <pubDate>Mon, 29 Jun 2009 16:00:01 CDT</pubDate>
      <guid isPermaLink="true">http://enfranchisedmind.com/blog/?p=1464</guid>
      <dc:creator>Robert Fischer</dc:creator>
    </item>
    <item>
      <title>Desert Southwest Software Symposium - Jul 24 - 26, 2009</title>
      <link>http://www.nofluffjuststuff.com/conference/phoenix/2009/07/home?utm_source=showWeeks4&amp;utm_medium=rss&amp;utm_campaign=showrss</link>
      <description>&lt;div style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 10pt;"&gt;&#xD;
&#xD;
&lt;p&gt;&#xD;
No Fluff Just Stuff is pleased to announce the &lt;a style="color: #336699; text-decoration: none;" href="http://www.nofluffjuststuff.com/conference/phoenix/2009/07/home?utm_source=showWeeks4&amp;utm_medium=rss&amp;utm_campaign=showrss" target="new"&gt;Desert Southwest Software Symposium&lt;/a&gt;, Jul 24 - 26, 2009.&#xD;
&lt;/p&gt;&#xD;
&#xD;
	&lt;div style="background-color: #0860A9; color: #EFCE52; font-weight: bold; padding: 5px 5px 5px 5px;"&gt;&#xD;
		&lt;em&gt;Catch these Featured Sessions&lt;/em&gt;&#xD;
	&lt;/div&gt;&#xD;
&#xD;
	&lt;div style="border: 1px solid #999999; padding: 0 5px 0 5px;"&gt;&#xD;
&#xD;
	&lt;table cellpadding="0" cellspacing="0" style="font-size: 10pt;"&gt;&#xD;
&#xD;
	&#xD;
	&lt;tr&gt;&#xD;
		&lt;td&gt;&#xD;
&#xD;
		&lt;div style="margin: 5px 0 4px 0;"&gt;&#xD;
			&lt;b&gt;&lt;a style="color: #336699; text-decoration: none;" href="http://www.nofluffjuststuff.com/conference/phoenix/2009/07/session?id=14495&amp;utm_source=showWeeks4&amp;utm_medium=rss&amp;utm_campaign=showrss" target="new"&gt;The Amazing Groovy Weight-loss Plan&lt;/a&gt;&lt;/b&gt;&#xD;
			&lt;br /&gt;&lt;em&gt;by Scott Davis&lt;/em&gt;&#xD;
		&lt;/div&gt;&#xD;
&#xD;
					&lt;a style="color: #336699; text-decoration: none;" href="http://www.nofluffjuststuff.com/conference/speaker/scott_davis&amp;utm_source=showWeeks4&amp;utm_medium=rss&amp;utm_campaign=showrss" target="new"&gt;&#xD;
				&lt;img src="http://www.nofluffjuststuff.com//s/images/bio/18_Davis_medium.jpg" width="100" border="0" align="left" style="margin: 5 5 5 5;"/&gt;&#xD;
			&lt;/a&gt;&#xD;
				"The central enemy of reliability is complexity." (Dr. Daniel Geer)&#xD;
&#xD;
Java is a powerful programming language. A smart developer can do nearly anything with Java. So the next question is, "How quickly can it be done? How many lines of code does it take to do common tasks?" Groovy greases the wheels of Java by decreasing the complexity of the language while preserving the raw power. At first glance, you might think that this talk is simply about how Groovy drastically reduces the lines of code you need to write. What this talk is really about is bringing simplicity, clarity, readability, and yes, beauty to your source code. &#xD;
		&#xD;
			&lt;br style="clear: both; font: 1px/1px Arial;"/&gt;&#xD;
&#xD;
		&lt;/td&gt;&#xD;
	&lt;/tr&gt;&#xD;
&#xD;
	&#xD;
	&lt;tr&gt;&#xD;
		&lt;td&gt;&#xD;
&#xD;
		&lt;div style="margin: 5px 0 4px 0;"&gt;&#xD;
			&lt;b&gt;&lt;a style="color: #336699; text-decoration: none;" href="http://www.nofluffjuststuff.com/conference/phoenix/2009/07/session?id=14586&amp;utm_source=showWeeks4&amp;utm_medium=rss&amp;utm_campaign=showrss" target="new"&gt;Test Driven Design&lt;/a&gt;&lt;/b&gt;&#xD;
			&lt;br /&gt;&lt;em&gt;by Neal Ford&lt;/em&gt;&#xD;
		&lt;/div&gt;&#xD;
&#xD;
					&lt;a style="color: #336699; text-decoration: none;" href="http://www.nofluffjuststuff.com/conference/speaker/neal_ford&amp;utm_source=showWeeks4&amp;utm_medium=rss&amp;utm_campaign=showrss" target="new"&gt;&#xD;
				&lt;img src="http://www.nofluffjuststuff.com//s/images/bio/21_Ford_medium.jpg" width="100" border="0" align="left" style="margin: 5 5 5 5;"/&gt;&#xD;
			&lt;/a&gt;&#xD;
				Most developers think that "TDD" stands for Test-driven Development. But it really should stand for "Test-driven Design". Rigorously using TDD makes your code much better in multiple ways.&#xD;
		&#xD;
			&lt;br style="clear: both; font: 1px/1px Arial;"/&gt;&#xD;
&#xD;
		&lt;/td&gt;&#xD;
	&lt;/tr&gt;&#xD;
&#xD;
	&#xD;
	&lt;tr&gt;&#xD;
		&lt;td&gt;&#xD;
&#xD;
		&lt;div style="margin: 5px 0 4px 0;"&gt;&#xD;
			&lt;b&gt;&lt;a style="color: #336699; text-decoration: none;" href="http://www.nofluffjuststuff.com/conference/phoenix/2009/07/session?id=14499&amp;utm_source=showWeeks4&amp;utm_medium=rss&amp;utm_campaign=showrss" target="new"&gt;JSF 2.0: An Introduction&lt;/a&gt;&lt;/b&gt;&#xD;
			&lt;br /&gt;&lt;em&gt;by David Geary&lt;/em&gt;&#xD;
		&lt;/div&gt;&#xD;
&#xD;
					&lt;a style="color: #336699; text-decoration: none;" href="http://www.nofluffjuststuff.com/conference/speaker/david_geary&amp;utm_source=showWeeks4&amp;utm_medium=rss&amp;utm_campaign=showrss" target="new"&gt;&#xD;
				&lt;img src="http://www.nofluffjuststuff.com//s/images/bio/4_Geary_medium.jpg" width="100" border="0" align="left" style="margin: 5 5 5 5;"/&gt;&#xD;
			&lt;/a&gt;&#xD;
				This session introduces JSF 2.0 fundamentals, with emphasis on new features in JSF 2.0.&#xD;
		&#xD;
			&lt;br style="clear: both; font: 1px/1px Arial;"/&gt;&#xD;
&#xD;
		&lt;/td&gt;&#xD;
	&lt;/tr&gt;&#xD;
&#xD;
	&#xD;
	&lt;/table&gt;&#xD;
&#xD;
	&lt;/div&gt;&#xD;
&#xD;
&lt;/div&gt;</description>
      <pubDate>Mon, 29 Jun 2009 15:00:00 CDT</pubDate>
      <guid isPermaLink="true">http://www.nofluffjuststuff.com/conference/phoenix/2009/07/schedule</guid>
    </item>
    <item>
      <title>JavaFX and Seam with Flamingo - Dzone article, part 2</title>
      <link>http://www.nofluffjuststuff.com/blog/max_katz/2009/06/javafx_and_seam_with_flamingo__dzone_article_part_2.html?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;Part &lt;a href="http://java.dzone.com/articles/java-fx-and-seam-flamingo-part"&gt;two&lt;/a&gt; of JavaFX and Seam with Flamingo article. Part one &lt;a href="http://java.dzone.com/articles/javafx-and-seam-flamingo"&gt;here&lt;/a&gt;. This part is a step-by-step tutorial on how to connect JavaFX to Seam with Flamingo. &lt;/p&gt;</description>
      <pubDate>Mon, 29 Jun 2009 13:00:00 CDT</pubDate>
      <guid isPermaLink="true">http://mkblog.exadel.com/?p=487</guid>
      <dc:creator>Max Katz</dc:creator>
    </item>
  </channel>
</rss>

