<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>marklai.com</title>
	<atom:link href="http://marklai.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://marklai.com</link>
	<description>marklai.com</description>
	<pubDate>Tue, 24 Jun 2008 20:44:32 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Effective Java - Second Edition</title>
		<link>http://marklai.com/2008/05/effective-java-second-edition/</link>
		<comments>http://marklai.com/2008/05/effective-java-second-edition/#comments</comments>
		<pubDate>Wed, 14 May 2008 05:45:41 +0000</pubDate>
		<dc:creator>mark</dc:creator>
		
		<category><![CDATA[programming]]></category>

		<category><![CDATA[Effective Java]]></category>

		<guid isPermaLink="false">http://marklai.com/?p=22</guid>
		<description><![CDATA[Pre-order your copy of Effective Java (2nd Edition).
Joshua Bloch presented these items at JavaOne 2008 TS-6623, More Effective Java:

Generics (Item 28)

Enum types (Items 31–34, 77)
Lazy initialization (Item 71)

]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.amazon.com/gp/product/0321356683?ie=UTF8&#038;tag=mj04-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0321356683">Pre-order your copy of Effective Java (2nd Edition)</a><img src="http://www.assoc-amazon.com/e/ir?t=mj04-20&#038;l=as2&#038;o=1&#038;a=0321356683" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />.</p>
<p>Joshua Bloch presented these items at JavaOne 2008 TS-6623, More Effective Java:</p>
<ul>
<li>Generics (Item 28)</li>
<li>
Enum types (Items 31–34, 77)</li>
<li>Lazy initialization (Item 71)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://marklai.com/2008/05/effective-java-second-edition/feed/</wfw:commentRss>
		</item>
		<item>
		<title>JavaOne - Day Five</title>
		<link>http://marklai.com/2008/05/javaone-day-five/</link>
		<comments>http://marklai.com/2008/05/javaone-day-five/#comments</comments>
		<pubDate>Sat, 10 May 2008 06:46:51 +0000</pubDate>
		<dc:creator>mark</dc:creator>
		
		<category><![CDATA[programming]]></category>

		<category><![CDATA[Ajax]]></category>

		<category><![CDATA[JavaOne]]></category>

		<category><![CDATA[LinkedIn]]></category>

		<category><![CDATA[Security]]></category>

		<category><![CDATA[Undo]]></category>

		<guid isPermaLink="false">http://marklai.com/?p=21</guid>
		<description><![CDATA[What&#8217;s New in Ajax - Ben Galbraith, Dion Almaer
New frameworks, plug-ins, UI toolkits.  Browser can become a bottleneck (single thread only) but is virtually multi-threaded using Google Gears,  message communication with browser.
Cloud computing services: Amazon EC2, Google App Engine, Aptana Cloud - takes care of hosting infrastructure freeing developers to focus on applications.

Prototype [...]]]></description>
			<content:encoded><![CDATA[<p><strong>What&#8217;s New in Ajax - <span class="title" style="color: #be6d00;"><span style="color: #000000;">Ben Galbraith, Dion Almaer</span></span></strong></p>
<p>New frameworks, plug-ins, UI toolkits.  Browser can become a bottleneck (single thread only) but is virtually multi-threaded using Google Gears,  message communication with browser.</p>
<p>Cloud computing services: Amazon EC2, Google App Engine, Aptana Cloud - takes care of hosting infrastructure freeing developers to focus on applications.</p>
<ul>
<li>Prototype - Lightweight Ajax/JavaScript helpers</li>
<li>GWT - hate JavaScript? Use Java</li>
<li>jQuery - new DOM-centric JavaScript helper (start with a page and add to it)</li>
<li>dojo - soup-to-nuts Ajax/JavaScript platform</li>
</ul>
<p><strong>LinkedIn Communication Architecture - Ruslan Belkin, Sean Dawson</strong></p>
<p>100% Java, Spring glue for entire architecture.  Parallel collection using java.util.concurrent to improve performance.  Asynchronous communication with JMS.</p>
<p><strong>Enterprise Undo - Andrew Dinn, Jonathan Halliday</strong></p>
<p>JTA and EJB 3.0 annotation based ACID transaction management are insufficient for extended transactions.</p>
<p>Use Business Activity Framework.</p>
<p>e.g.</p>
<blockquote><p>@BACompensatedBy (&#8221;cancelHotelRoom&#8221;)</p>
<p>public int bookHotelRoom(int roomNumber)</p>
<p>public boolean cancelHotelRoom(int reservation number)</p></blockquote>
<p><strong>Detecting and Defending Against Security Vulnerabilities for Web 2.0 - Ray Lai</strong></p>
<p>Use tools to detect.  No one tool will catch all; need to use them all.</p>
<p>Use defensive coding and testing tools.</p>
<p><strong>Addressing Tomorrow&#8217;s Security Requirements in Enterprise Applications - Ben Alex</strong></p>
<ul>
<li>Simple web application security</li>
<li>Single Sign On and Federated Identity</li>
<li>Method authorization</li>
</ul>
<p>Use Spring Security 2</p>
<p>Tips</p>
<ul>
<li>Use a proven security framework; don&#8217;t roll your own</li>
<li>Start simply, and add complexity incrementally</li>
<li>Consider user registration requirements</li>
<li>Plan for federated identity, particularly involving OpenID</li>
<li>For in-house applications, consider NTLM and CAS</li>
<li>Employ Captcha techniques to mitigate DoS attacks</li>
<li>Favor method authorization over web authorization</li>
<li>Annotations-based authorization metadata is quick and easy</li>
<li>Very carefully consider any domain object instance security</li>
<li>Prefer Basic authentication for RESTful, HTTPS interactions</li>
<li>Leverage WSS for transport-independent SOAP</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://marklai.com/2008/05/javaone-day-five/feed/</wfw:commentRss>
		</item>
		<item>
		<title>JavaOne - Day four</title>
		<link>http://marklai.com/2008/05/javaone-day-four/</link>
		<comments>http://marklai.com/2008/05/javaone-day-four/#comments</comments>
		<pubDate>Fri, 09 May 2008 05:56:55 +0000</pubDate>
		<dc:creator>mark</dc:creator>
		
		<category><![CDATA[programming]]></category>

		<category><![CDATA[ant]]></category>

		<category><![CDATA[build]]></category>

		<category><![CDATA[JavaOne]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[maven]]></category>

		<category><![CDATA[patterns]]></category>

		<category><![CDATA[Scala]]></category>

		<category><![CDATA[scalability]]></category>

		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://marklai.com/?p=19</guid>
		<description><![CDATA[Top 10 Patterns for Scaling Out Java Technology Based Applications - Cameron Purdy
#10  Understand the problem
#9  Define the requirements
#8  Architecture trumps technology
#7  Understand the basics
#6  Visualize the network
#5  Visualize the design
#4a  Plan for overload
#4b  Partition for scalability
#3a  Plan for failure
#3b  Replicate for availability
#2  Tier [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Top 10 Patterns for Scaling Out Java Technology Based Applications - Cameron Purdy</strong></p>
<p>#10  Understand the problem</p>
<p>#9  Define the requirements</p>
<p>#8  Architecture trumps technology</p>
<p>#7  Understand the basics</p>
<p>#6  Visualize the network</p>
<p>#5  Visualize the design</p>
<p>#4a  Plan for overload</p>
<p>#4b  Partition for scalability</p>
<p>#3a  Plan for failure</p>
<p>#3b  Replicate for availability</p>
<p>#2  Tier where it makes sense</p>
<p>#1  Simplify</p>
<p>It&#8217;s still a balancing act.  Reliability, durability, scalability, latency&#8230;</p>
<p><strong>Advanced Web Application Security - Jeremiah Grossman, Joe Walker</strong></p>
<p>Practical advice:  the best we can do is slow down the bad guys from getting into our websites.</p>
<p>CSRF - Cross Site Request Forgery</p>
<ul>
<li>Forcing users to log off and checking referrer headers help.</li>
<li>The only complete solution is to include an authentication token in the body of EVERY request.</li>
</ul>
<p>JavaScript hijacking</p>
<ul>
<li>JavaScript lets you re-define almost anything</li>
<li>JSON must be used properly - especially wrap data with {&#8230;} and wrap keys in &#8221;</li>
</ul>
<p>XSS - Cross-site Scripting</p>
<ul>
<li>At risk any time user submitted content that could contain scripts is allowed</li>
<li>Filter content both on the way in and on the way out</li>
</ul>
<p>Web worms</p>
<ul>
<li>Grows faster than email worms</li>
<li>If site isn&#8217;t 100% secure against CSRF &amp; XSS, users can attack their &#8220;friends&#8221; with scripts</li>
<li>Samy hacked MySpace profile to add friends and update profile with worm.  1 million users infected in one day.</li>
</ul>
<p><strong>Programming with Functional Objects in Scala - Martin Odersky</strong></p>
<p>Scala is the Java programming language of the future.  It&#8217;s interoperable with Java environment, and &#8220;is just another Java library&#8221;.</p>
<p>What is it?  It&#8217;s a scripting language, a composition language, an object-oriented language, a functional language.  What amazed me is the ability to implement new control structures.  Now that&#8217;s a &#8220;dynamic&#8221; language.</p>
<p>Compared to Java:</p>
<p><a href="http://marklai.com/wp-content/uploads/2008/05/dsc_8472.jpg"><img class="alignnone size-medium wp-image-20" title="dsc_8472" src="http://marklai.com/wp-content/uploads/2008/05/dsc_8472-300x199.jpg" alt="" width="300" height="199" /></a></p>
<p><strong>Patterns for Integrating Java and JavaScript Technology: Tales from the Front Lines - David Caldwell</strong></p>
<p>JSR 223 &amp; Rhino</p>
<p>Patterns from most to least JavaScript code</p>
<ul>
<li>JavaScript with Java as necessary</li>
<li>JavaScript with parts in Java</li>
<li>Java with parts in JavaScript</li>
<li>Java with JavaScript as desired</li>
</ul>
<p>Seems somewhat useful to me, but messy.  If you ever get lost doing HTML/JavaScript/Java in a JSP, well&#8230; I don&#8217;t know what to say.  Change career to fashion modeling or something.</p>
<p><strong>Pimp My Build: 10 Ways to Make Your Build Rock - Conor MacNeill, Matt Quail</strong></p>
<ol>
<li><span class="title" style="color: #be6d00;"><span style="color: #000000;">Use Imports</span></span></li>
<li><span class="title" style="color: #be6d00;"><span style="color: #000000;">Use macros and presets</span></span></li>
<li>Don&#8217;t build stuff you don&#8217;t need</li>
<li>Spice up your build</li>
<li>Don&#8217;t be afraid to write tasks</li>
<li>Use scripts</li>
<li>Use conditional tasks  (using ant-contrib tasks)</li>
<li>Don&#8217;t do one-off analysis</li>
<li>Document your build</li>
<li><span class="title" style="color: #be6d00;"><span style="color: #000000;">Maven best practice tips</span></span></li>
</ol>
<p>Maven best practice tips</p>
<ul>
<li>Use a remote repository proxy - Archiva</li>
<li>Create a local repository for private artifacts - your own and missing 3rd party artifacts</li>
<li>Local repository for public artifacts</li>
<li>You need to manage your build infrastructure</li>
</ul>
<p>Spice up your build</p>
<ul>
<li>Add a splash image</li>
<li>Add some sound - blame train toot when the build fails</li>
</ul>
<p><strong>Amazon Code Ninja Puzzles</strong></p>
<p>New puzzle for each day they were at the JavaOne Pavilion.  Since I&#8217;m bringing these home, here are some hints.</p>
<p>Puzzle #2:  &#8220;x % y&#8221; What happens when y is a negative number?</p>
<p>Puzzle #3:  Bits &#8216;&amp;&#8217; binary.</p>
<p>#2 is not much of a hint.  Actually not a hint at all.  I just felt like I needed to know it for solving the puzzle; it didn&#8217;t help.  <img src='http://marklai.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://marklai.com/2008/05/javaone-day-four/feed/</wfw:commentRss>
		</item>
		<item>
		<title>JavaOne - Day Three</title>
		<link>http://marklai.com/2008/05/javaone-day-three/</link>
		<comments>http://marklai.com/2008/05/javaone-day-three/#comments</comments>
		<pubDate>Thu, 08 May 2008 06:13:04 +0000</pubDate>
		<dc:creator>mark</dc:creator>
		
		<category><![CDATA[programming]]></category>

		<category><![CDATA[data race]]></category>

		<category><![CDATA[Groovy]]></category>

		<category><![CDATA[JavaOne]]></category>

		<category><![CDATA[JRuby]]></category>

		<category><![CDATA[Jython]]></category>

		<category><![CDATA[Scala]]></category>

		<category><![CDATA[Struts 2]]></category>

		<category><![CDATA[user experience]]></category>

		<guid isPermaLink="false">http://marklai.com/?p=17</guid>
		<description><![CDATA[The Script Bowl: A Rapid Fire Comparison of Scripting Languages - Guillaume Laforge, Charles Nutter; Jorge Ortiz, Raghavan Srinivas, Frank Wierzbicki

Contenders:  Groovy, JRuby, Jython, Scala
Rounds:

Rich Client Application
Web application
Open (free format)

Impressive how little code is needed in each of these.
Hands-on Struts 2 - Ian Roughley

Similar on the outside with Struts 1; all changes under the [...]]]></description>
			<content:encoded><![CDATA[<p><strong>The Script Bowl: A Rapid Fire Comparison of Scripting Languages - Guillaume Laforge, Charles Nutter; Jorge Ortiz, Raghavan Srinivas, Frank Wierzbicki<br />
</strong></p>
<p>Contenders:  Groovy, JRuby, Jython, Scala</p>
<p>Rounds:</p>
<ol>
<li>Rich Client Application</li>
<li>Web application</li>
<li>Open (free format)</li>
</ol>
<p>Impressive how little code is needed in each of these.</p>
<p><strong>Hands-on Struts 2 - Ian Roughley<br />
</strong></p>
<p>Similar on the outside with Struts 1; all changes under the hood.  Threading model is the biggest change.</p>
<p><a href="http://marklai.com/wp-content/uploads/2008/05/dsc_8278.jpg"><img class="alignnone size-medium wp-image-18" title="What changed in Struts 2" src="http://marklai.com/wp-content/uploads/2008/05/dsc_8278-300x199.jpg" alt="" width="300" height="199" /></a></p>
<p>Dependency injection to access business services, e.g. Guice or Spring.</p>
<p><strong>Debugging Data Race - Cliff Click<br />
</strong></p>
<p>More of a theoretical talk.  Talk easier to follow than slides.</p>
<p>Bad news:  Available tools suck and even require PhD to use.  What we do today with visual inspection and logging/printing is state of the art.</p>
<p>Good news: java.util.concurrent helps. &#8220;volatile&#8221; keyword fixes double check locking</p>
<p><strong>Creating a Compelling User Experience - Ben Galbraith<br />
</strong></p>
<p>Sex sells.  It works in advertising, and it works in software.  It&#8217;s all about managing user expectations.  Aesthetically pleasing software is perceived as easier to use, even when it&#8217;s not.  One theory is that users like how it looks and are thinking more creatively in its use.</p>
<p><strong>Applications for the Masses by the Masses:  Why Engineers Are an Endangered Species - Todd Fast</strong></p>
<p>Social networking software with large user base of high school &amp; college users.  Facebook as a platform.  Widgets on blogs.</p>
<p>????</p>
<p><em>I don&#8217;t know about this.  I could add a bunch of widgets to my blog, but that&#8217;s not the same as creating a new and useful application.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://marklai.com/2008/05/javaone-day-three/feed/</wfw:commentRss>
		</item>
		<item>
		<title>JavaOne - Day Two</title>
		<link>http://marklai.com/2008/05/javaone-day-two/</link>
		<comments>http://marklai.com/2008/05/javaone-day-two/#comments</comments>
		<pubDate>Wed, 07 May 2008 06:08:01 +0000</pubDate>
		<dc:creator>mark</dc:creator>
		
		<category><![CDATA[programming]]></category>

		<category><![CDATA[concurrency]]></category>

		<category><![CDATA[defective code]]></category>

		<category><![CDATA[Effective Java]]></category>

		<category><![CDATA[fork/join]]></category>

		<category><![CDATA[JavaFX]]></category>

		<category><![CDATA[JavaOne]]></category>

		<category><![CDATA[Spring Framework]]></category>

		<guid isPermaLink="false">http://marklai.com/?p=16</guid>
		<description><![CDATA[I realized my day numbers may be off since I&#8217;m counting the Java University as day one.  Consider this a 1 based indexing.
The conference kicked off with Sun&#8217;s general session &#8220;Java + You&#8221;.  Some intro and demo on devices, including Amazon&#8217;s Kindle; impressive JavaFX applications that crashes, but still exciting nonetheless; Neil Young&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>I realized my day numbers may be off since I&#8217;m counting the Java University as day one.  Consider this a 1 based indexing.</p>
<p>The conference kicked off with Sun&#8217;s general session &#8220;Java + You&#8221;.  Some intro and demo on devices, including Amazon&#8217;s Kindle; impressive JavaFX applications that crashes, but still exciting nonetheless; <a href="http://www.google.com/search?q=neil+young+javaone">Neil Young&#8217;s music archive project</a> running on Java &amp; PS3.</p>
<p>On to the technical sessions.</p>
<p><strong>Overview of the JavaFX Script Programming Language - Christopher Oliver</strong></p>
<p>Language features:</p>
<ul>
<li>Integrated with Java</li>
<li>Object-Oriented</li>
<li>Closures</li>
<li>First-class Functions</li>
<li>Multiple Inheritance</li>
<li>Imperative and Declarative Syntax</li>
<li>Statically Typed with Type-inference</li>
<li>Time is a first class type</li>
<li>Key frame animation</li>
</ul>
<p>Too bad it followed immediately after Sun&#8217;s JavaFX demo, which made examples in this session look really really boring.  3D HD video rendering vs a spinning box&#8230;</p>
<p><strong>More &#8220;Effective Java&#8221; - Joshua Bloch</strong></p>
<p>Lots of people went to this.  A bit of a fiasco with line control.  There were people everywhere and the coordinators tried to do a snake line.  Only problem is, we didn&#8217;t know that.  The quote of the day would be &#8220;They are not lined up properly.  I&#8217;m not going to let them in.&#8221;</p>
<p>Back to topic:  Effective Java 2nd Edition is out.  New stuff:</p>
<ul>
<li>Chapter 5: Generics</li>
<li>Chapter 6: Enums and Annotations</li>
<li>Java 5 language features</li>
<li>Concurrency (renamed from Threads) for java.util.concurrent</li>
<li>Existing items updated to reflect current best practices</li>
<li>57 items in first edition; 78 in second edition</li>
</ul>
<p><strong>Spring Framework 2.5: New and Notable - Rod Johnson</strong></p>
<p>Lots of new stuff.  Strong preference for using annotation based dependency injection.  Here&#8217;s one slide on pros and cons of using annotation-based DI.</p>
<p>Pros:</p>
<ul>
<li>Annotations can reduce or eliminate external configuration</li>
<li>More concise mechanism because you specify <em>what</em> would be injected, with the location of the annotation providing <em>where</em></li>
</ul>
<p>Cons:</p>
<ul>
<li>Annotations are per-type not per-instance</li>
<li>Doesn&#8217;t work for legacy code with existing classes without annotations</li>
<li>Need to recompile Java code to modify configuration</li>
<li>Not well suited for externalizing simple types</li>
</ul>
<p>That&#8217;s 2-4.  Obviously not equally weighed points.</p>
<p><strong>Defective Java Code:  Turning WTF Code into a Learning Experience - William Pugh</strong></p>
<p>Some examples taken from <a href="http://thedailywtf.com/">The Daily WTF</a>.</p>
<ul>
<li>Don&#8217;t synchronize on String constants; they get interned.  Use new Object().  A rare case of appropriate use in instantiating an Object object.</li>
<li>DateFormat not synchronized.  This tip would&#8217;ve been handy 2-3 years go.  <img src='http://marklai.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  Create a new instance of DateFormat (fast) each time or use ThreadLocal.</li>
<li>War on equals() implementation:  instanceof vs getClass()</li>
<li><a href="http://findbugs.sourceforge.net/">FindBugs</a></li>
</ul>
<p><strong>Let&#8217;s Resync:  What&#8217;s New for Concurrency on the Java Platform, Standard - Brian Goetz</strong></p>
<p>Moore&#8217;s law still in effect, only it shifted from CPU clock rate to number of CPU cores.  &#8212;&gt;  Many more programmers are becoming concurrent programmers whether they want to or not.</p>
<p>Parallelization technique:  divide-and-conquer, much like the merge sort algorithm.</p>
<p><a href="http://www.google.com/search?q=java+fork-join">Java Fork/Join framework</a> to the rescue.</p>
<ul>
<li>Create a limited number of worker threads</li>
<li>Each worker thread maintains a private double-ended work queue (deque)</li>
<li>When forking, worker pushes new task at the <em>head </em>of its deque</li>
<li>When waiting or idle, worker pops a task off the <em>head </em>of its deque and executes it (instead of sleeping)</li>
<li>If worker&#8217;s deque is empty, steals an element off the <em>tail </em>of the deque of another randomly chosen worker</li>
</ul>
<p><strong>Code Ninja</strong></p>
<p>The folks at Amazon&#8217;s booth dubbed me a Code Ninja for solving their coding puzzle.   I&#8217;m bringing the puzzle back home.  Here&#8217;s one hint:  it has to do with adding numbers.</p>
]]></content:encoded>
			<wfw:commentRss>http://marklai.com/2008/05/javaone-day-two/feed/</wfw:commentRss>
		</item>
		<item>
		<title>JavaOne - Day One</title>
		<link>http://marklai.com/2008/05/javaone-day-one/</link>
		<comments>http://marklai.com/2008/05/javaone-day-one/#comments</comments>
		<pubDate>Tue, 06 May 2008 03:13:30 +0000</pubDate>
		<dc:creator>mark</dc:creator>
		
		<category><![CDATA[programming]]></category>

		<category><![CDATA[GWT]]></category>

		<category><![CDATA[JavaOne]]></category>

		<category><![CDATA[jMaki]]></category>

		<category><![CDATA[Security]]></category>

		<category><![CDATA[Web Service]]></category>

		<guid isPermaLink="false">http://marklai.com/?p=14</guid>
		<description><![CDATA[Monday is the Java University, or the free Community One which is a mix of vendor presentations, I believe.  (Update: Saw the aftermath.  Looks like it&#8217;s mostly white board booths, with some partying.)
Morning course:  Designing and Implementing Secure Java Technology Web Services

Presented by John Ranta
6 days course packed into 2.5 hours
Brief description [...]]]></description>
			<content:encoded><![CDATA[<p>Monday is the Java University, or the free Community One which is a mix of vendor presentations, I believe.  (Update: Saw the aftermath.  Looks like it&#8217;s mostly white board booths, with some partying.)</p>
<p><strong>Morning course:  <a href="http://java.sun.com/javaone/sf/javauniversity.jsp#M1"><span class="bluearrows">Designing and Implementing Secure Java Technology Web Services</span></a></strong></p>
<ul>
<li>Presented by <a href="http://java.sun.com/javaone/sf/javauniversitybios.jsp#jranta">John Ranta</a></li>
<li>6 days course packed into 2.5 hours</li>
<li>Brief description of Java technologies for web services &amp; platforms</li>
<li>Brief description of web services processing and the bigger-than-military-use list of acronyms</li>
<li>Crammed/skipped the section on securing Java web services security using message-layer security (there&#8217;s an acronym for this:  WTF)</li>
<li>Demo on Netbeans and the packaged Glassfish V2 to quickly create a web service project and web service client project</li>
<li>Concluded with a presentation of <a href="http://metro.dev.java.net/">Metro Web Services Stack</a> (Tango + JAX-WS + JAXB) by Jiandong Guo &amp; Marek Potociar</li>
</ul>
<p><strong>Afternoon course: <a href="http://java.sun.com/javaone/sf/javauniversity.jsp#A2">Web 2.0: Leveraging the Project jMaki and Google Web Toolkits for Rapid Website Development</a></strong></p>
<p><strong>jMaki</strong></p>
<ul>
<li><a href="https://ajax.dev.java.net/">jMaki</a> presented by <a href="http://java.sun.com/javaone/sf/javauniversitybios.jsp#etroyka">Evan Troyka</a></li>
<li>convention over configuration in building Web 2.0 applications quickly</li>
<li>extracts javascript details; project went further to extract lots of widgets to a common interface</li>
<li>drag-n-drop GUI builder</li>
</ul>
<p><strong>Google Web Toolkits</strong></p>
<ul>
<li><a href="http://code.google.com/webtoolkit/">Google Web Toolkit</a> presented by <a href="http://java.sun.com/javaone/sf/javauniversitybios.jsp#dgeary">David Geary</a></li>
<li>Author of many books:  <a href="http://www.amazon.com/dp/0130796670/?tag=mj04-20">Graphic Java 2 Swing</a>, <a href="http://www.amazon.com/dp/0131738860/?tag=mj04-20">Core Java Server Faces</a>, <a href="http://www.amazon.com/dp/0130307041/?tag=mj04-20">Advanced JavaServer Pages</a>, <a href="http://www.amazon.com/dp/0132344815/?tag=mj04-20">GWT Solutions</a> - see the theme here?</li>
<li>Memeber of JSTL and JSF 1.0/2.0 Expert Groups, 2nd Struts committer, inventor of Struts Template Library, wrote questions for Sun&#8217;s Web Dev. Cert. Exam, President of <a href="http://gearyworks.com/">Clarity Training, Inc.</a></li>
<li>GWT enables Ajax web application development in pure Java using familiar idioms from AWT, SWT and Swing</li>
<li>GWT compiles Java to JavaScript for most browser flavors and automatically detects the correct JavaScript library to use for the client.  Don&#8217;t trust Java &#8211;&gt; JavaScript &#8220;compilation&#8221;?  It&#8217;s just like compiling Java source into Java byte code.  Trust Google!</li>
<li>Drag and drop not yet supported, but can be implemented using AbsolutePanel, FocusPanel and MouseListener</li>
<li><a href="http://coolandusefulgwt.com/">GWT Solutions book site</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://marklai.com/2008/05/javaone-day-one/feed/</wfw:commentRss>
		</item>
		<item>
		<title>2008 JavaOne Conference</title>
		<link>http://marklai.com/2008/05/2008-javaone-conference/</link>
		<comments>http://marklai.com/2008/05/2008-javaone-conference/#comments</comments>
		<pubDate>Sun, 04 May 2008 15:15:39 +0000</pubDate>
		<dc:creator>mark</dc:creator>
		
		<category><![CDATA[programming]]></category>

		<category><![CDATA[JavaOne]]></category>

		<guid isPermaLink="false">http://marklai.com/?p=6</guid>
		<description><![CDATA[Off to JavaOne!  It&#8217;ll be a fun &#38; busy week.


]]></description>
			<content:encoded><![CDATA[<p>Off to <a href="http://java.sun.com/javaone/sf/">JavaOne</a>!  It&#8217;ll be a fun &amp; busy week.</p>
<p><img class="alignnone size-medium wp-image-9" title="onbridge11small" src="http://marklai.com/wp-content/uploads/2008/05/onbridge11small-300x225.jpg" alt="" width="300" height="225" /></p>
<p><img class="alignnone size-medium wp-image-8" title="dukeaskeith-daylightsmall" src="http://marklai.com/wp-content/uploads/2008/05/dukeaskeith-daylightsmall-300x256.png" alt="" width="300" height="256" /></p>
]]></content:encoded>
			<wfw:commentRss>http://marklai.com/2008/05/2008-javaone-conference/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Legos Terminator - coming soon to get you</title>
		<link>http://marklai.com/2008/04/legos-terminator-coming-soon-to-get-you/</link>
		<comments>http://marklai.com/2008/04/legos-terminator-coming-soon-to-get-you/#comments</comments>
		<pubDate>Tue, 29 Apr 2008 20:28:29 +0000</pubDate>
		<dc:creator>mark</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://marklai.com/?p=5</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/uIn-sMq8-Ls&#038;hl=en"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/uIn-sMq8-Ls&#038;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://marklai.com/2008/04/legos-terminator-coming-soon-to-get-you/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Programming quote of the month</title>
		<link>http://marklai.com/2008/04/programming-quote-of-the-month/</link>
		<comments>http://marklai.com/2008/04/programming-quote-of-the-month/#comments</comments>
		<pubDate>Tue, 29 Apr 2008 16:56:43 +0000</pubDate>
		<dc:creator>mark</dc:creator>
		
		<category><![CDATA[programming]]></category>

		<category><![CDATA[quote]]></category>

		<guid isPermaLink="false">http://marklai.com/?p=4</guid>
		<description><![CDATA[hi ho, hi ho, it&#8217;s off to qa we go
]]></description>
			<content:encoded><![CDATA[<blockquote><p>hi ho, hi ho, it&#8217;s off to qa we go</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://marklai.com/2008/04/programming-quote-of-the-month/feed/</wfw:commentRss>
		</item>
		<item>
		<title></title>
		<link>http://marklai.com/2008/04/3/</link>
		<comments>http://marklai.com/2008/04/3/#comments</comments>
		<pubDate>Tue, 29 Apr 2008 16:52:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[quote]]></category>

		<guid isPermaLink="false">http://marklai.com/?p=3</guid>
		<description><![CDATA[When I was younger, I could remember anything, whether it had happened or not.  - Mark Twain
]]></description>
			<content:encoded><![CDATA[<p>When I was younger, I could remember anything, whether it had happened or not.  - Mark Twain</p>
]]></content:encoded>
			<wfw:commentRss>http://marklai.com/2008/04/3/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
