<?xml version="1.0"?>
<rss version="2.0">
<channel>
  <title>Joe Walker&#039;s Blog</title>
  <link>http://getahead.org/blog/joe/</link>
  <description>Various Thoughts on Web Development</description>
  <language>en</language>
  <copyright>Joe Walker</copyright>
  <lastBuildDate>Wed, 09 Apr 2008 19:49:56 GMT</lastBuildDate>
  <generator>Pebble (http://pebble.sourceforge.net)</generator>
  <docs>http://backend.userland.com/rss</docs>
  
  
  <item>
    <title>App Engine and Java</title>
    <link>http://getahead.org/blog/joe/2008/04/09/app_engine_and_java.html</link>
    
      
        <description>
          &lt;p&gt;The world is now split into Python programmers, making funny &#039;Goo&#039; noises over &lt;a href=&#034;http://code.google.com/appengine/&#034;&gt;App Engine&lt;/a&gt;, and everyone else who are wondering when/if this will be available in their language or if they are going to have to change their spots.&lt;/p&gt;

&lt;p&gt;Of all the languages to support, I guess Java must be one of the hardest because of the heavyweight runtime and the difficulty in separating code. But it also makes sense because supporting Java might give you quick access to Ruby/JavaScript/etc.&lt;/p&gt;

&lt;p&gt;I have no knowledge of if Google are going to support Java in App Engine, however there are some tea-leaves that can be stretched and rearranged to form a vague picture.&lt;/p&gt;

&lt;p&gt;Some time ago Google &lt;a href=&#034;http://www.infoq.com/news/jsr-284-early-draft&#034;&gt;hired Greg Czajkowski&lt;/a&gt; the lead of &lt;a href=&#034;http://research.sun.com/projects/barcelona/index.html&#034;&gt;Project Barcelona&lt;/a&gt; from Sun. Project Barcelona was where &lt;a href=&#034;http://bitser.net/isolate-interest/&#034;&gt;Isolates&lt;/a&gt; (&lt;a href=&#034;http://jcp.org/en/jsr/detail?id=121&#034;&gt;JSR-121&lt;/a&gt;) came from and the Resource Consumption API (&lt;a href=&#034;http://jcp.org/en/jsr/detail?id=284&#034;&gt;JSR 284&lt;/a&gt;), both of which would help you do this sort of thing. And both of which are now in Final Draft stage.&lt;/p&gt;

&lt;p&gt;I have no idea if this does mean that Google are working on App Engine for Java, but if they do I&#039;m going to claim bragging rights for having &lt;a href=&#034;http://getahead.org/blog/joe/2006/08/31/google_hosting_java_webapps_for_customers.html&#034;&gt;blogged about this 18 months ago&lt;/a&gt;.&lt;/p&gt;

        </description>
      
      
    
    
    
    <comments>http://getahead.org/blog/joe/2008/04/09/app_engine_and_java.html#comments</comments>
    <guid isPermaLink="true">http://getahead.org/blog/joe/2008/04/09/app_engine_and_java.html</guid>
    <pubDate>Wed, 09 Apr 2008 19:49:56 GMT</pubDate>
  </item>
  
  <item>
    <title>Commercial Support for DWR</title>
    <link>http://getahead.org/blog/joe/2008/03/14/commercial_support_for_dwr.html</link>
    
      
        <description>
          &lt;a href=&#034;http://sitepen.com/&#034;&gt;&lt;img src=&#034;http://getahead.org/images/sitepen-logo.png&#034; align=&#034;right&#034; style=&#034;margin:0px 10px&#034; border=&#034;0&#034; alt=&#034;sitepen logo&#034;/&gt;&lt;/a&gt;

&lt;p&gt;Short version: &lt;a href=&#034;http://sitepen.com/services/support.php&#034;&gt;Commercial support and development assistance&lt;/a&gt; is &lt;a href=&#034;http://www.sitepen.com/blog/2008/03/13/commercial-support-now-available-from-the-co-creators-and-contributors-of-the-dojo-toolkit-dwr-and-cometd/&#034;/&gt;now available&lt;/a&gt; for &lt;a href=&#034;http://getahead.org/dwr&#034;&gt;DWR&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Long version: &lt;a href=&#034;http://sitepen.com/&#034;&gt;SitePen&lt;/a&gt; has been offering support packages for a while, but you&#039;ve had to ask. But it&#039;s now an advertised service, if you want help with Dojo, DWR or Cometd, &lt;a href=&#034;http://sitepen.com/services/support.php?packages&#034;&gt;packages start from $995&lt;/a&gt;. The &lt;a href=&#034;http://getahead.org/dwr/support&#034;&gt;DWR mailing lists&lt;/a&gt; are not going away and is still going to be a good solution for many problems, but if you need a bit more care and attention, we can now do that too.&lt;/p&gt;

&lt;p&gt;The team of people that I&#039;m working with at SitePen are awesome. Aside from the obvious &lt;a href=&#034;http://getahead.org/dwr&#034;&gt;DWR&lt;/a&gt;, &lt;a href=&#034;http://dojotoolkit.org/&#034;&gt;Dojo&lt;/a&gt; and &lt;a href=&#034;http://cometd.com/&#034;&gt;Cometd&lt;/a&gt; projects, SitePen people have also created &lt;a href=&#034;http://turbogears.org/&#034;&gt;TurboGears&lt;/a&gt;, &lt;a href=&#034;http://code.google.com/p/persevere-framework/&#034;&gt;Persevere&lt;/a&gt; and &lt;a href=&#034;http://www.jspon.org/&#034;&gt;JSPON&lt;/a&gt;, are working specs for &lt;a href=&#034;http://svn.xantus.org/shortbus/trunk/bayeux/bayeux.html&#034;&gt;Bayeux&lt;/a&gt;, &lt;a href=&#034;http://www.json.com/json-schema-proposal/&#034;&gt;JSON schema&lt;/a&gt; and &lt;a href=&#034;http://jcp.org/en/jsr/detail?id=315&#034;&gt;Servlet 3.0&lt;/a&gt;, and author &lt;a href=&#034;http://www.json.com/&#034;&gt;json.com&lt;/a&gt; and &lt;a href=&#034;http://cometdaily.com/&#034;&gt;cometdaily.com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you need to know more check-out &lt;a href=&#034;http://sitepen.com/services/support.php&#034;&gt;the summary over on the SitePen site&lt;/a&gt;.&lt;/p&gt;
        </description>
      
      
    
    
    
    <comments>http://getahead.org/blog/joe/2008/03/14/commercial_support_for_dwr.html#comments</comments>
    <guid isPermaLink="true">http://getahead.org/blog/joe/2008/03/14/commercial_support_for_dwr.html</guid>
    <pubDate>Fri, 14 Mar 2008 11:25:36 GMT</pubDate>
  </item>
  
  <item>
    <title>IE8 Review</title>
    <link>http://getahead.org/blog/joe/2008/03/05/ie8_review.html</link>
    
      
        <description>
          &lt;p&gt;I&#039;ve been playing with IE8 beta 1, and I&#039;ve got some thoughts ...&lt;/p&gt;

&lt;p&gt;In terms of user visible HTML rendering features, I think IE 8 beta 1 is possibly the biggest release of IE in nearly 11 years since April 1997 when IE 4.0 alpha 1 was released. &lt;a href=&#034;http://en.wikipedia.org/wiki/History_of_Internet_Explorer&#034;&gt;The history&lt;/a&gt; shows mostly bug fixes, and chrome changes since then. Maybe transparent PNG or Bidi text are bigger than &lt;a href=&#034;http://www.microsoft.com/windows/products/winfamily/ie/ie8/readiness/DevelopersNew.htm&#034;&gt;Activities&lt;/a&gt;? It &lt;a href=&#034;http://ajaxian.com/archives/medium-shows-off-new-ie-8-features&#034;&gt;looks like&lt;/a&gt; that&#039;s going to be the feature that most people talk about, so I&#039;m going to talk about some of the other stuff. There are 3 big things I&#039;m interested in, and a few smaller features:&lt;/p&gt;

&lt;h2&gt;6 Connection Limit&lt;/h2&gt;

&lt;p&gt;I&#039;ve been testing the new 6 connection limit. It works perfectly in my testing, Without any cookie or window.name hacks, DWR can do reverse ajax using comet to more than 2 browser windows:&lt;/p&gt;

&lt;img src=&#034;http://getahead.org/images/ie8_connection_limit.png&#034;/&gt;

&lt;h2&gt;DOM Storage&lt;/h2&gt;

&lt;p&gt;IE is way behind everyone else in implementing HTML5 features. So this is catching up to everyone else. It will be interesting to hear from the Dojo guys on this.&lt;/p&gt;

&lt;pre&gt;
// sessionStorage also available
var store = window.globalStorage[&#034;http://www.example.com&#034;];
store.setItem(&#034;key&#034;, &#034;value&#034;);
var value = storage.getItem(&#034;key&#034;); // == &#034;value&#034;
store.removeItem(&#034;key&#034;);
&lt;/pre&gt;

&lt;h2&gt;JavaScript Debugger&lt;/h2&gt;

&lt;p&gt;Firebug has been a stick that&#039;s been used to beat up IE for a while, and they&#039;ve got an answer now. Unlike the other features, there isn&#039;t a screenshot in the release notes...&lt;/p&gt;

&lt;img src=&#034;http://getahead.org/images/ie8_debugger.png&#034;/&gt;

&lt;p&gt;Firebug is still much better, in my opinion so far. But this is certainly a huge step forward compared to fighting with Script [Editor|Debugger] or Visual WebDev.&lt;/p&gt;

&lt;h2&gt;Acid 3&lt;/h2&gt;

&lt;div style=&#034;float:right;margin:10px;&#034;&gt;
&lt;script type=&#034;text/javascript&#034;&gt;&lt;!--
google_ad_client = &#034;pub-1699539174292679&#034;;
google_ad_width = 250;
google_ad_height = 250;
google_ad_format = &#034;250x250_as&#034;;
google_ad_type = &#034;text_image&#034;;
//2006-10-31: high rank posts
google_ad_channel = &#034;1218320012&#034;;
google_color_border = &#034;FFFFFF&#034;;
google_color_bg = &#034;FFFFFF&#034;;
google_color_link = &#034;000000&#034;;
google_color_text = &#034;555555&#034;;
google_color_url = &#034;000066&#034;;
//--&gt;&lt;/script&gt;
&lt;script type=&#034;text/javascript&#034;
  src=&#034;http://pagead2.googlesyndication.com/pagead/show_ads.js&#034;&gt;
&lt;/script&gt;
&lt;/div&gt;

&lt;p&gt;IE 8 does very badly on &lt;a href=&#034;http://acid3.acidtests.org/&#034;&gt;Acid 3&lt;/a&gt; (17/100). However given that it&#039;s so new it&#039;s probably not fair to ding it too much. However it does need to improve big time:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;WebKit Nightly: 87%&lt;/li&gt;
&lt;li&gt;Opera 9.5b: 64%&lt;/li&gt;
&lt;li&gt;Firefox 3.0b3: 61%&lt;/li&gt;
&lt;li&gt;IE 8b1: 17%&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For comparison, the released versions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Firefox 2.0.0.12: 50%&lt;/li&gt;
&lt;li&gt;Opera 9.26: 46%&lt;/li&gt;
&lt;li&gt;Safari 3.0.4: 39%&lt;/li&gt;
&lt;li&gt;IE 7: 11%&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Given that they are innovating, I&#039;m prepared to give them time to get the number up.&lt;/p&gt;

&lt;h2&gt;URL Bar Goodness&lt;/h2&gt;

&lt;p&gt;I didn&#039;t see this in the &lt;a href=&#034;http://www.microsoft.com/windows/products/winfamily/ie/ie8/readiness/NewFeatures.htm&#034;&gt;release notes&lt;/a&gt; anywhere. On Firefox I&#039;ve got an add-on called &lt;a href=&#034;https://addons.mozilla.org/en-US/firefox/addon/4014&#034;&gt;LocationBar 2&lt;/a&gt; that does some nice widgetry with the URL Bar:&lt;/p&gt;

&lt;img src=&#034;http://getahead.org/images/ie8_ff_urlbar.png&#034;/&gt;

&lt;p&gt;Well it looks like IE8 has something similar built in too:&lt;/p&gt;

&lt;img src=&#034;http://getahead.org/images/ie8_urlbar.png&#034;/&gt;

&lt;h2&gt;Cross-Domain XHR&lt;/h2&gt;

&lt;p&gt;The standards are still evolving on this one, but somewhat annoyingly IE8 seems to be going in a different direction from everyone else:&lt;/p&gt;

&lt;pre&gt;
var xdr = new XDomainRequest(); 
xdr.open(&#034;POST&#034;, &#034;http://www.example.com/xdr.txt&#034;);
xdr.send(&#034;Data for post body&#034;);
&lt;/pre&gt;

&lt;h2&gt;What is missing?&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Lots&lt;/strong&gt;. Still. No SVG/Canvas. No updates to the JScript implementation at a language level (it looks like there have been some performance increases though).&lt;/p&gt;

&lt;p&gt;Let&#039;s not forget that Microsoft have more resources to get this right than almost anyone. If Opera can manage to create a first class browser, so should Microsoft.&lt;/p&gt;

&lt;h2&gt;And Finally ...&lt;/h2&gt;

&lt;p&gt;I loved the irony of the download recommendation. If you&#039;re downloading IE8, you might also like to download - IE6!:&lt;/p&gt;

&lt;img src=&#034;http://getahead.org/images/ie8_download_funny.png&#034;/&gt;

        </description>
      
      
    
    
    
    <comments>http://getahead.org/blog/joe/2008/03/05/ie8_review.html#comments</comments>
    <guid isPermaLink="true">http://getahead.org/blog/joe/2008/03/05/ie8_review.html</guid>
    <pubDate>Wed, 05 Mar 2008 19:53:58 GMT</pubDate>
  </item>
  
  <item>
    <title>InfoQ Interview</title>
    <link>http://getahead.org/blog/joe/2008/03/05/infoq_interview.html</link>
    
      
        <description>
          &lt;p&gt;InfoQ interviewed me, &lt;a href=&#034;http://www.infoq.com/news/2008/03/dwr_3.0&#034;&gt;and asked&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What are some of the major features planned for [DWR] version 3.0?&lt;/li&gt;
&lt;li&gt;When is 3.0 slated for release? Is it still sometime in June?&lt;/li&gt;
&lt;li&gt;What does the incremental release schedule look like before the final 3.0 release?&lt;/li&gt;
&lt;li&gt;What are the top small features or fixes in 3.0 that a developer will be thankful for?&lt;/li&gt;
&lt;li&gt;For someone who might have looked at DWR 2.0 and decided the time wasn&#039;t right, what might 3.0 provide to help &#034;make the deal&#034;?&lt;/li&gt;
&lt;li&gt;What happened to 2.1, why the jump to 3.0?&lt;/li&gt;
&lt;li&gt;What sort of impact will Tibco&#039;s role play in the future of DWR?&lt;/li&gt;
&lt;li&gt;What are the next major milestones for DWR after 3.0?&lt;/li&gt;
&lt;/ul&gt;

&lt;p style=&#034;float:right;&#034;&gt;&lt;a href=&#034;http://qcon.infoq.com/london/conference/&#034;&gt;&lt;img src=&#034;http://www.infoq.com/styles/i/qcon/qcon3_speaker11.jpg&#034; style=&#034;border:0;&#034;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;InfoQ is &lt;a href=&#034;http://www.infoq.com/about.jsp&#034;&gt;built using DWR&lt;/a&gt;, so it would be great if they could take advantage of features like automatic offline when 3.0 comes out.&lt;/p&gt;

&lt;p&gt;Taking of things &lt;strong&gt;Q&lt;/strong&gt;. Next week, I&#039;m &lt;a href=&#034;http://qcon.infoq.com/london/presentation/Interactive+websites%3A+Comet+and+DWR&#034;&gt;talking on DWR and Comet&lt;/a&gt; at &lt;a href=&#034;http://qcon.infoq.com&#034;&gt;QCon&lt;/a&gt;.&lt;/p&gt;

        </description>
      
      
    
    
    
    <comments>http://getahead.org/blog/joe/2008/03/05/infoq_interview.html#comments</comments>
    <guid isPermaLink="true">http://getahead.org/blog/joe/2008/03/05/infoq_interview.html</guid>
    <pubDate>Wed, 05 Mar 2008 09:13:43 GMT</pubDate>
  </item>
  
  <item>
    <title>DWR + Aptana Jaxer</title>
    <link>http://getahead.org/blog/joe/2008/03/04/dwr_aptana_jaxer.html</link>
    
      
        <description>
          &lt;p&gt;I&#039;ve been working with the guys from &lt;a href=&#034;http://www.aptana.com/&#034;&gt;Aptana&lt;/a&gt; for the past week or so on adapting &lt;a href=&#034;http://getahead.org/dwr&#034;&gt;DWR&lt;/a&gt; to be a remoting layer for &lt;a href=&#034;http://www.aptana.com/jaxer/&#034;&gt;Jaxer&lt;/a&gt;.&lt;/p&gt;

&lt;p style=&#034;float:right&#034;&gt;&lt;a href=&#034;http://www.aptana.com/jaxer/&#034;&gt;&lt;img src=&#034;http://getahead.org/images/jaxer-pageflow.png&#034; alt=&#034;jaxer page flow&#034; title=&#034;Jaxer&#034; border=&#034;0&#034;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Jaxer is a way to run JavaScript on the server. But it&#039;s not just JavaScript as an alternative to Java/Ruby/PHP/etc. Jaxer is Mozilla, on the server, with it&#039;s face ripped off and replaced by a snorkel to serialize the DOM to a web browser. &lt;a href=&#034;http://ejohn.org/blog/server-side-javascript-with-jaxer/&#034;&gt;John has a great introduction&lt;/a&gt;, or there&#039;s the &lt;a href=&#034;http://ajaxian.com/archives/audible-ajax-episode-24-aptana-jaxer-talk&#034;&gt;podcast that Ajaxian did&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The vision with DWR was always to say: We&#039;ve got Javascript in the browser, and Java on the server - lets connect them in the best possible way. This leads to the migration of view logic from the server to the client. But it&#039;s not safe to move it all; Validation is part of view logic, but that needs to be done on the server. With Jaxer you can specify scripts to be &lt;code&gt;runat=&#034;server&#034;&lt;/code&gt; or &lt;code&gt;runat=&#034;both&#034;&lt;/code&gt; to allow validation or other logic to be run in both places.&lt;/p&gt;

&lt;p&gt;Some of the changes that we&#039;ve made to DWR will only help you if you are using DWR inside Jaxer, but others could be generally useful.&lt;/p&gt;

&lt;p&gt;There are 2 basic changes. DWR on the Internet needs to make sure that the Internet only touches the code that you want it to touch. DWR in Jaxer doesn&#039;t have this problem because it&#039;s not accessible from the Internet, so we can do away with almost all configuration. Secondly latency inside a server-room is tiny compared with the net, which makes synchronous XHR viable.&lt;/p&gt;

&lt;p&gt;So as it stands at the moment in development, you can use DWR inside Jaxer like this (clearly this is subject to change):&lt;/p&gt;

&lt;pre&gt;
&amp;lt;&lt;span style=&#039;color:#800;&#039;&gt;script&lt;/span&gt; &lt;span style=&#039;color:#880;&#039;&gt;type&lt;/span&gt;=&lt;span style=&#039;color:#080;&#039;&gt;&#039;text/javascript&#039;&lt;/span&gt; &lt;span style=&#039;color:#880;&#039;&gt;runat&lt;/span&gt;=&lt;span style=&#039;color:#080;&#039;&gt;&#034;server&#034;&lt;/span&gt;&amp;gt;
Jaxer.dwr.pathToDwrServlet = &lt;span style=&#039;color:#080;&#039;&gt;&#034;http://localhost:8080/demoServer/dwr&#034;&lt;/span&gt;;
Jaxer.dwr.require(&lt;span style=&#039;color:#080;&#039;&gt;&#034;util&#034;&lt;/span&gt;, &lt;span style=&#039;color:#080;&#039;&gt;&#034;new/org.example.Demo&#034;&lt;/span&gt;);

&lt;span style=&#039;color:#00A;&#039;&gt;function&lt;/span&gt; loadServer() {
  &lt;span style=&#039;color:#00A;&#039;&gt;var&lt;/span&gt; data = Demo.getData();
  dwr.util.setValue(&lt;span style=&#039;color:#080;&#039;&gt;&#039;fillFromServer&#039;&lt;/span&gt;, data);
}
&amp;lt;/&lt;span style=&#039;color:#800;&#039;&gt;script&lt;/span&gt;&amp;gt;
&lt;/pre&gt;

&lt;p&gt;There are a number of benefits that come out of this even if you&#039;re not using Jaxer:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In dwr.xml you needed to specify javascript=&#039;ScriptName&#039;. If (as is common) ScriptName == Class.getShortName then you can just drop the attribute, it will default properly.&lt;/li&gt;
&lt;li&gt;Cross domain remoting is now automatically detected, and scriptTag remoting is used if needed.&lt;/li&gt;
&lt;li&gt;There is a new init-param &#039;useAbsolutePaths&#039; which might help people with trouble remapping DWR&#039;s location.&lt;/li&gt;
&lt;li&gt;All URLs are now reconfigurable.&lt;/li&gt;
&lt;li&gt;If you are using DWR in synchronous mode (which I don&#039;t recommend on the Internet) then you can use returned data in the normal way without needing a callback.&lt;/li&gt;
&lt;/ul&gt;

        </description>
      
      
    
    
    
    <comments>http://getahead.org/blog/joe/2008/03/04/dwr_aptana_jaxer.html#comments</comments>
    <guid isPermaLink="true">http://getahead.org/blog/joe/2008/03/04/dwr_aptana_jaxer.html</guid>
    <pubDate>Tue, 04 Mar 2008 14:29:07 GMT</pubDate>
  </item>
  
  <item>
    <title>IWebMvc Preview</title>
    <link>http://getahead.org/blog/joe/2008/03/04/iwebmvc_preview.html</link>
    
      
        <description>
          &lt;p&gt;Jose Noheda has released a preview of a &lt;a href=&#034;http://code.google.com/p/internna/&#034;&gt;library that glues together&lt;/a&gt; DWR, Dojo, Spring and Hibernate/JPA. It&#039;s a 0.1 release and he&#039;s &lt;a href=&#034;http://internna.blogspot.com/2008/03/iwebmvc-first-preview-version-available.html&#034;&gt;looking for feedback&lt;/a&gt;.&lt;/p&gt;

&lt;img src=&#034;http://getahead.org/images/iwebmvc-screenshot.png&#034;/&gt;

&lt;p&gt;Despite the name, it&#039;s not really another Web MVC framework, but more along the lines of AppFuse or Grails, as a way to kick-start a project and provide some sensible defaults without needing to learn everything from scratch.&lt;/p&gt;

&lt;p&gt;The source and release notes say it needs 1.6, so Mac heads will need to get the Apple Java6 preview.&lt;/p&gt;

&lt;p&gt;Jose&#039;s aims:&lt;/p&gt;

&lt;p class=&#034;quote&#034;&gt;In my mind what I really needed was a platform that:
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Is based on Java&lt;/b&gt;
&lt;br&gt;Although supporting Grooy / JRuby is a plus&lt;/li&gt;&lt;li&gt;&lt;b&gt;Helps me to kick start a project&lt;/b&gt;
&lt;br&gt;But simplifying the process by giving me the best (and this can be tricky) set of frameworks for each task&lt;/li&gt;&lt;li&gt;&lt;b&gt;Integrates both server and client sides&lt;/b&gt;
&lt;br&gt;And it&#039;s lightweight, robust and extensible. Read &lt;i&gt;enterprise quality&lt;/i&gt;.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Supports all the common tasks a web app has to handle&lt;/b&gt;
&lt;br&gt;I include here: User Management, CRUD operations, i18n support (both framework &amp;amp; data), AJAX and astounding visuals&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;

&lt;p&gt;Jose has done some brilliant work on DWR. He created a large chunk of our binary file support, and is currently the Spring integration maintainer, so it might be worth a &lt;a href=&#034;http://code.google.com/p/internna/downloads/list&#034;&gt;download&lt;/a&gt; to see if it can help you.&lt;/p&gt;

        </description>
      
      
    
    
    
    <comments>http://getahead.org/blog/joe/2008/03/04/iwebmvc_preview.html#comments</comments>
    <guid isPermaLink="true">http://getahead.org/blog/joe/2008/03/04/iwebmvc_preview.html</guid>
    <pubDate>Tue, 04 Mar 2008 13:16:21 GMT</pubDate>
  </item>
  
  <item>
    <title>2 Wrongs Making a Right: (false &amp;&amp; false) = true</title>
    <link>http://getahead.org/blog/joe/2008/02/28/2_wrongs_making_a_right_false_false_true.html</link>
    
      
        <description>
          &lt;p&gt;I just had one of those times when I thought I totally lost the ability to do simple logic. Take a look at this screenshot:&lt;/p&gt;

&lt;img src=&#034;http://getahead.org/images/firebug-bug.png&#034;/&gt;

&lt;p&gt;I&#039;ll break it down: &lt;code&gt;req.readyState = 4&lt;/code&gt;, and &lt;code&gt;batch.async = false&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Last time I checked &lt;code&gt;4 = 4&lt;/code&gt;. So blatantly &lt;code&gt;(4 != 4)&lt;/code&gt; is &lt;code&gt;false&lt;/code&gt;. And &lt;code&gt;false &amp;&amp; false&lt;/code&gt; is blatantly &lt;code&gt;uber false&lt;/code&gt;, as true as Alice Cooper covering Barbie Girl.&lt;/p&gt;

&lt;p&gt;So seeing firebug step through &lt;code&gt;if (false)&lt;/code&gt; and onto the return statement made about as much sense as trying to raise Schrodinger&#039;s cat in a séance.&lt;/p&gt;

&lt;p&gt;I think it&#039;s another &lt;a href=&#034;http://alex.dojotoolkit.org/?p=651&#034;&gt;quirk in Firebug&lt;/a&gt;. This time it&#039;s simply something funky going on with &#034;step over&#034;.&lt;/p&gt;

&lt;p&gt;The moral is: Firebug sometimes lies to you about where the current line is.&lt;/p&gt;

&lt;p&gt;This is all part of me adapting DWR so that it can be used as a connector between &lt;a href=&#034;http://www.aptana.com/jaxer&#034;&gt;Jaxer&lt;/a&gt; and some Java server. More on that in a bit.&lt;/p&gt;

        </description>
      
      
    
    
    
    <comments>http://getahead.org/blog/joe/2008/02/28/2_wrongs_making_a_right_false_false_true.html#comments</comments>
    <guid isPermaLink="true">http://getahead.org/blog/joe/2008/02/28/2_wrongs_making_a_right_false_false_true.html</guid>
    <pubDate>Thu, 28 Feb 2008 23:43:33 GMT</pubDate>
  </item>
  
  <item>
    <title>Microsoft Anti-Trust Retrospective</title>
    <link>http://getahead.org/blog/joe/2008/02/05/microsoft_anti_trust_retrospective.html</link>
    
      
        <description>
          &lt;p&gt;It was about 5 years between Netscape 4 and Mozilla 1.0.
In that time, they lost about 80% market share.&lt;/p&gt;

&lt;p&gt;It was about 5 years between IE6 and IE7. In that time, they lost about 10% market share.&lt;/p&gt;

&lt;p&gt;Just in case there was any doubt about the argument that Netscape killed themselves, clearly there were other forces at work. It wasn&#039;t just down to a &lt;a href=&#034;http://www.joelonsoftware.com/articles/fog0000000069.html&#034;&gt;much&lt;/a&gt; &lt;a href=&#034;http://www.joelonsoftware.com/articles/fog0000000027.html&#034;&gt;criticized&lt;/a&gt; rewrite decision. Perhaps a better remedy than trying to get Microsoft broken up, would have been to insist on the default installation of an alternate browser.&lt;/p&gt;

        </description>
      
      
    
    
    
    <comments>http://getahead.org/blog/joe/2008/02/05/microsoft_anti_trust_retrospective.html#comments</comments>
    <guid isPermaLink="true">http://getahead.org/blog/joe/2008/02/05/microsoft_anti_trust_retrospective.html</guid>
    <pubDate>Tue, 05 Feb 2008 13:39:23 GMT</pubDate>
  </item>
  
  <item>
    <title>The roller coaster of Open Source</title>
    <link>http://getahead.org/blog/joe/2008/01/28/the_roller_coaster_of_open_source.html</link>
    
      
        <description>
          &lt;p&gt;&lt;a href=&#034;http://www.zammetti.com/blog/&#034;&gt;Frank Zammetti&lt;/a&gt;, wrote &lt;a href=&#034;http://www.apress.com/book/view/9781590599419&#034;&gt;this&lt;/a&gt;, and as I&#039;d written &lt;a href=&#034;http://getahead.org/dwr&#034;&gt;bits of this&lt;/a&gt;, he asked me to write a forward, which goes something like this:&lt;/p&gt;

&lt;a href=&#034;http://www.apress.com/book/view/9781590599419&#034;&gt;&lt;img src=&#034;http://getahead.org/images/apress-dwr-book.jpg&#034; align=&#034;right&#034; style=&#034;margin:0px 10px&#034; border=&#034;0&#034; alt=&#034;dwr book cover&#034;/&gt;&lt;/a&gt;

&lt;p&gt;The funny thing about getting heavily involved in an open source project is the roller coaster ride you embark on. There&#039;s the buzz from seeing the hits to the web server and reading what people think of your project. There&#039;s the gnawing feeling of responsibility when you discover very large websites using your code, and you&#039;re worried about bugs you might have created. There&#039;s the total flat feeling when a friend tells you they&#039;re taking your code out of a project because they prefer an alternative; and there&#039;s the burnout when you just can&#039;t keep up with the volume of work, and realize that a huge percentage of what you do is not directly development related.&lt;/p&gt;

&lt;p&gt;My experiences with open source have opened a huge number of doors. I&#039;ve met people that I wouldn&#039;t have met otherwise and had job offers that I wouldn&#039;t have dreamed of before. There really is a magic buzz to open source.&lt;/p&gt;

&lt;p&gt;Marc Andreeson, one of the minds behind Netscape and Ning, wrote recently about how to hire good developers. To paraphrase Marc: &#034;&lt;a href=&#034;http://blog.pmarca.com/2007/06/how_to_hire_the.html&#034;&gt;Hire someone that has worked on open source software&lt;/a&gt;&#034;.&lt;/p&gt;

&lt;p&gt;Some companies rate candidates using trick questions: they get the developers that are good at typing &#034;interview questions&#034; into Google.&lt;/p&gt;

&lt;p&gt;Some companies rate candidates using industry certifications (MCSD, SCJD, etc): they get people that work at rich companies that depend on training not talent.&lt;/p&gt;

&lt;p&gt;Some companies rate candidates using CVs/resumes: they end up hiring ‘talent embroiderers’.&lt;/p&gt;

&lt;p&gt;Some companies rate candidates using interviews: they get the people that sound good and look good.&lt;/p&gt;

&lt;p&gt;Unsurprisingly, these selection techniques don’t get you the best candidates. So how do you find the developers that love writing good code, that get a buzz from solving the problem in a neat way, and that do take pride in their work?&lt;/p&gt;

&lt;p&gt;The answer according to Marc, and according to my experience, is to hire people who love their work enough to get involved with a project that was optional.&lt;/p&gt;

&lt;p&gt;So here&#039;s your invitation to get a leg up on getting a job with people that hire great developers—get into open source development. It doesn&#039;t have to be &lt;a href=&#034;http://getahead.org/dwr&#034;&gt;DWR&lt;/a&gt;, although we&#039;ve love to have the extra help. Just pick something that excites you and get involved.&lt;/p&gt;

&lt;p&gt;The problem with getting started is a typical crossing-the-chasm problem. The first few minutes are easy. You’ve used a project, liked it, and maybe joined the mailing list. You might even have found something you would like to work on. When you are involved in a project, you know what you are doing and can contribute. But there is a chasm between these places where you are learning the code, learning how the project does things, learning the process, and so on. While you are crossing the chasm, you are unproductive because you are in unfamiliar territory.&lt;/p&gt;

&lt;p&gt;So here are a few hints about how to cross the chasm. First, find somewhere that the chasm isn’t too wide – start by fixing something small. The chance of any IT project failing is inversely proportional to the size of the project. Start with a simple feature that makes something better. Almost all IT projects have these in abundance.&lt;/p&gt;

&lt;p&gt;Second, don’t think that because it’s tricky, you must be stupid, or the project must be misguided. There are always reasons why things are tricky. The answer could be historic: when the code was written, people didn’t expect the code to be used in this way. Or maybe there is some refactoring that needs doing that hasn’t been completed. DWR’s code is fairly good because the code is young and we’re fanatical about re-factoring, but some projects have more history to them.&lt;/p&gt;

&lt;p&gt;The difference between those that can cross the chasm and those that can’t is - drive. You don’t need to be a genius, to have a brilliant CV, or to look good at an interview. Even the ability to type ‘interview questions’ into Google is optional. The people that can cross the chasm are those with the drive to succeed.&lt;/p&gt;

&lt;p&gt;Getting involved can come in many forms, and sometimes it&#039;s even sort of tangential to the project itself, such as writing a book about the project. Sometimes the tangential help is some of the most valuable. The things developers leave out are often things they are bad at. For years I’ve wanted there to be a DWR book, but known I’m the wrong person to write it, so I’m particularly pleased to see Frank step forward to write the first DWR book. Thanks for having the drive to get involved, Frank.&lt;/p&gt;

&lt;hr/&gt;

&lt;p&gt;&lt;a href=&#034;http://www.apress.com/book/view/9781590599419&#034;&gt;Practical DWR 2 Projects&lt;/a&gt; by Frank Zammetti is out today - officially on the 30 Jan. You can &lt;a href=&#034;http://www.amazon.com/Practical-DWR-Projects/dp/1590599411&#034;&gt;order it from Amazon&lt;/a&gt; and many other good bookstores.&lt;/p&gt;

        </description>
      
      
    
    
    
    <comments>http://getahead.org/blog/joe/2008/01/28/the_roller_coaster_of_open_source.html#comments</comments>
    <guid isPermaLink="true">http://getahead.org/blog/joe/2008/01/28/the_roller_coaster_of_open_source.html</guid>
    <pubDate>Mon, 28 Jan 2008 12:22:03 GMT</pubDate>
  </item>
  
  </channel>
</rss>
