<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4457781382344670969</id><updated>2011-09-13T08:55:52.670-06:00</updated><category term='guitar hero'/><category term='JPA'/><category term='iPhone'/><category term='grumpy'/><category term='General'/><category term='speaking'/><category term='Maven'/><category term='Mac OS'/><category term='Seam'/><category term='apple'/><category term='JAXB'/><category term='tattoo'/><category term='portal'/><category term='community'/><category term='JavaOne'/><category term='gaming'/><category term='CommunityOne'/><category term='half life'/><category term='life'/><title type='text'>Chris Maki's Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://cmaki.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://cmaki.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Chris Maki</name><uri>http://www.blogger.com/profile/16510702653624658586</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/58/164933668_cceadb11bf.jpg?v=0'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>34</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4457781382344670969.post-3343572514539721546</id><published>2009-06-01T09:57:00.003-06:00</published><updated>2009-09-11T19:32:42.713-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaOne'/><category scheme='http://www.blogger.com/atom/ns#' term='CommunityOne'/><title type='text'>CommunityOne first impressions</title><content type='html'>&lt;div&gt;&lt;div&gt;I arrive about an hour before CommunityOne officially started, there wasn't as much buzz in the air as years past, I remember CommunityOne 2006, it seemed to be something more exciting than this year. &lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;Once I got checked in, I swung by the OSTK booth, we have a booth this year at JavaOne, only to find that the company that was to have custom panels installed hadn't done it yet.  I hope it's all good by this afternoon.&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;I'm now at the general session for CommunityOne, it's in the main conference hall, where the JavaOne general session is held, except this year, the room is turned sideways, much wider and not as deep.  I like this format better, everyone can feel closer to the stage.  BTW, I'm in the second row, right behind the Sun executives.  I wonder how this will compare to &lt;a href="http://developer.apple.com/WWDC/"&gt;WWDC&lt;/a&gt; next week.&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;First up is Dave Douglas, SVP of Cloud Computing @ SUN.  He is talking about how his team is new, only been together for about a year.  Then he touched on the changes since last year, aka: Oracle bought us :-)  Instead he is talking about the economy, Obama, etc. There is a new book coming out Citizen Engineering, looks like the cover of Mythical Man Month.  Dave is now talking about 20th Century initiatives vs. 21st Century, top down vs. community based.  Sounds a lot like what Thomas Friedman discusses in the World is Flat (great book btw).  Dave's challenge, think about "what can I do to help".  A little plug for OpenOffice, "available in 80 languages btw, more than Office".&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;Sun has a campus ambassador program at hundreds of campuses around the world.  On the stage four students, we all speak "open source" around the world.  There goes the Brazil cheer from the audience. "We are at an important time with community, we need to take this ideas and spread them out".  Up next is cloud computing.&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;Lew Tucker, Sun Cloud CTO.  Cloud computing is everywhere, the government is even looking into using this.  With a credit card and a few minutes you can have your own computer network.  The economics of cloud computing are very attractive, you can turn it on and then turn it off.  If you are a start-up, or any company, you can quickly and cheaply have your infrastructure up and running.  Two main parts of Cloud Computing, Compute Service and Storage Service, in the middle is open APIs and Services.  Lew is using a Mac and Safari for his demo.  Lew is showing a drag and drop network configuration tool to set up your cloud computing infrastructure, looks great.  The idea is any developer can setup their own cloud so they have the infrastructure you need.  The idea behind what Dave and Lew are showing is how an individual can create and manage a large scale system without the need for your own data center.&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;Not to bead a dead horse, but all this cloud computing infrastructure is enabling the flat world platform.  To make more sense of this statement, you need to read Thomas Friedman's &lt;a href="http://www.overstock.com/Books-Movies-Music-Games/The-World-Is-Flat/2536807/product.html?sec_iid=33969"&gt;The World is Flat&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;Dave is now talking about security, what does the cloud have for security.  Sun has been working with  Center for Internet Security on creating a secure virtual machine and today Sun deployed a secure virtual machine to Amazon.  One of the biggest uses of the cloud is for a development and test environment.  One open source community that has taken this idea to heart is Yahoo! and Hadoop.  What used to run on a 1,000 machines and only be known by two scientists in the world is now available to you and me.  BTW, the Yahoo Hadoop cloud has 4,000 nodes.&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;Up next is opensolaris. At least Sun has a sense of humor, the lead of opensolaris is pretending to be a news anchor, very funny.  He's also using this to give us an update on how opensolaris is being used.  They are now talking about &lt;a href="http://www.sun.com/bigadmin/content/dtrace/"&gt;DTrace&lt;/a&gt; and how it's been around for about five years now and can help you analyze your application across all levels OS to application.  Now we are talking about JavaFX and how easy it is.  In just four lines of code, they were able to add reflection to a full-motion video (a clip of &lt;a href="http://disney.go.com/disneypictures/up/"&gt;UP&lt;/a&gt; btw).&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;How has virtualization changed networking?  Traditionally, you have switches between the FW and the server, now SUN has created a virtual switch to virtually support virtual FWs and virtual Servers.  They are now talking about xbow, pronounced cross-bow, and how you can define a virtual network on anything from your laptop (the demo we are seeing now) to your server grade systems. xbow lets you simulate how your system may work under different loads from a fully functional system to a constrained network load allowing you to test you environment in many different modes. Networking rewritten for the virtual environment. Networking has always been complex but with opensolaris, xbow, and DTrace you can really examine what's happening.&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;&lt;a href="http://en.wikipedia.org/wiki/ZFS"&gt;ZFS&lt;/a&gt;, what is it? A discussion on what ZFS is and what it can do for you. ZFS takes away all the limits that were imposed on the file-system.  They skipped the 64bit fs and went to a 128bit fs.  They also showed one of the big features of ZFS, the ability to move through snapshots of your file-system over time.&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;Flash based storage is the first new storage technology in about 50 years. Not only does it support more io ops per second than a 15K HD, it takes less power.  This is redefining the way storage is put together today.  ZFS is the only file-system that supports flash storage natively.&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4457781382344670969-3343572514539721546?l=cmaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmaki.blogspot.com/feeds/3343572514539721546/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4457781382344670969&amp;postID=3343572514539721546' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/3343572514539721546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/3343572514539721546'/><link rel='alternate' type='text/html' href='http://cmaki.blogspot.com/2009/06/communityone-first-impressions.html' title='CommunityOne first impressions'/><author><name>Chris Maki</name><uri>http://www.blogger.com/profile/16510702653624658586</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/58/164933668_cceadb11bf.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4457781382344670969.post-1913648636093568562</id><published>2009-03-19T14:13:00.006-06:00</published><updated>2009-03-19T15:40:40.538-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Maven'/><title type='text'>Maven Meet Up at Sonatype part II</title><content type='html'>Brian is now talking about Nexus.  There are three types of repositories in Nexus:

&lt;ul&gt;
&lt;li&gt;Hosted - the repo lives on disk
&lt;/li&gt;&lt;li&gt;Proxy - this is a proxy to another repository
&lt;/li&gt;&lt;li&gt;Virtual - this allows you to convert between repository formats, say M1 is hosted, you can create a Virtual proxy that converts M1 to M2
&lt;/li&gt;&lt;/ul&gt;

&lt;br&gt;
&lt;p&gt;
You can schedule tasks like cleaning up snapshots.  There are RSS feeds for most of the things Nexus does so you know the state of your repo.  It will download remote repo indexes. There is no database required for Nexus. Nexus provides a full set of REST APIs to all its features.

&lt;br&gt;&lt;p&gt;
The only time you use a repository URL directly in Nexus is when you want to deploy an artifact.  With staging &amp;amp; promotion you don't even need to use a repo URL to deploy your artifacts.  Why have a stating &amp;amp; promotion strategy?  What if you want to test something before actually release it?  Enter Nexus stating &amp;amp; promotion. All release deployments occur against a single REST URL in Nexus.  The URL can be set once in the corp-pom for all projects, regardless of repository.  With templates you can define how Nexus creates this new stating repo. Currently, you can only stage your binary artifacts but not your site artifacts.  If you stage something many times and decide only to keep the last build, you'll need to manually remove all but the last site's you generated (this assumes that you don't overwrite your existing site with each release). Since all of Nexus is controlled by REST URLs, you can build your own work flow to control when a repo is promoted or not.

&lt;br&gt;&lt;p&gt;
Next up is procurement, how to control what artifacts are available to your projects. Procurement is effectively a firewall that separates the users from another repository (or repo group) in the system.  By default, everything is denied.

&lt;br&gt;&lt;p&gt;
Sonatype is planning on multiple versions of Nexus: Nexus (open source version, free), Nexus Pro, Nexus Enterprise (HA, Federation, etc.) and Nexus Compliance (legal, etc.).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4457781382344670969-1913648636093568562?l=cmaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmaki.blogspot.com/feeds/1913648636093568562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4457781382344670969&amp;postID=1913648636093568562' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/1913648636093568562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/1913648636093568562'/><link rel='alternate' type='text/html' href='http://cmaki.blogspot.com/2009/03/maven-meet-up-at-sonatype-part-ii.html' title='Maven Meet Up at Sonatype part II'/><author><name>Chris Maki</name><uri>http://www.blogger.com/profile/16510702653624658586</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/58/164933668_cceadb11bf.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4457781382344670969.post-2598521268945864162</id><published>2009-03-19T10:14:00.006-06:00</published><updated>2009-03-19T15:41:37.179-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Maven'/><title type='text'>Maven Meet Up at Sonatype part I</title><content type='html'>&lt;p&gt;Maven 3.0 will be fixing what we've learned in Maven 1.0 and 2.0.  Layered repository, at the command line there is really only one repo, but in an env like Eclipse there are many repositories, other projects, so Maven 3.0 will have the concept of layered repositories.  Jason said they have a lot of integration tests to ensure the backwards compatibility of Maven 3.0 with Maven 2.0.  Personally, I hope it goes better than the Maven 2.0.8 to Maven 2.0.9 transition.&lt;/p&gt;&lt;p&gt;Plugin extension points, something borrowed from Eclipse, plugins will have extension points.  This way you can extend a plugin without having to hack it.  Plugins will also be able to tell Maven, here are my output directories, this way in Eclipse Maven will not need to run all the plugins to get their generated source dirs.  This would be a big improvement.&lt;/p&gt;&lt;p&gt;Mercury is the new repository and transport layer for Maven.  Why Mercury?  Maven 2 has inaccurate conflict resolution, based on custom graph walking algorithm, hard to replace, API is too complex.  The resolution mechanism is too coupled to Plexus, cannot  use it from other environments.  Mercury is a general purpose library for artifact and repository management.  ArtifactMetadata - artifact comprehension info, not only do you need GAV (GroupId, ArtifactId, Version) but you also need classifier, type, etc.  Mercury repos can be local or remote, readable or read/write, this helps optimize Mercury.  It also supports global exclusions.&lt;/p&gt;&lt;p&gt;Mercury has it's own metadata cache to cache metadata for remove repositories.  The new transport layer is a Jetty client, supports connection multiplexing (NIO), concurrent connections, SSL support.  Webtide added stream verification , proxy support and authentication.
&lt;/p&gt;&lt;p&gt;Oleg is now talking about Sonatype Proviso, a tool for updating binaries (e.g. Maven).  Mercury Runner is a side project for Oleg, it gives you a way to run an application without defining a classpath.

Attribute based resolution, we don't just care about a JAR, or it's version, we actually want to know about it's quality, etc.  Like this:

&lt;/p&gt;&lt;pre&gt;
&amp;lt;project&amp;gt;
...
&amp;lt;version&amp;gt;1.2&amp;lt;/version&amp;gt;
...
&amp;lt;attributes&amp;gt;
  &amp;lt;servletApi&amp;gt;3.0&amp;lt;/servletApi&amp;gt;
  &amp;lt;coverage:pmd&amp;gt;80&amp;lt;/coverage:pmd&amp;gt;
  &amp;lt;quality&amp;gt;alpha&amp;lt;/quality&amp;gt;
&amp;lt;/attributes&amp;gt;
...
&amp;lt;project&amp;gt;
&lt;/pre&gt;

&lt;pre&gt;
&amp;lt;dependency&amp;gt;
 &amp;lt;servletApi&amp;gt;[2.5,)&amp;lt;/servletApi&amp;gt;
 &amp;lt;coverage:pmd&amp;gt;[80,)&amp;lt;/coverage:pmd&amp;gt;
&amp;lt;/dependency&amp;gt;
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4457781382344670969-2598521268945864162?l=cmaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmaki.blogspot.com/feeds/2598521268945864162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4457781382344670969&amp;postID=2598521268945864162' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/2598521268945864162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/2598521268945864162'/><link rel='alternate' type='text/html' href='http://cmaki.blogspot.com/2009/03/maven-meet-up-at-sonatype.html' title='Maven Meet Up at Sonatype part I'/><author><name>Chris Maki</name><uri>http://www.blogger.com/profile/16510702653624658586</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/58/164933668_cceadb11bf.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4457781382344670969.post-2303423324162579669</id><published>2009-02-16T00:14:00.009-07:00</published><updated>2009-02-16T00:34:58.723-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tattoo'/><title type='text'>SLC Tattoo Convention 2009</title><content type='html'>&lt;p&gt;On Saturday night, my &lt;a href="http://madebynicole.blogspot.com/"&gt;wife&lt;/a&gt; and I went to the SLC &lt;a href="http://www.slctattoo.com/"&gt;Tattoo Convention&lt;/a&gt;.  It was a great way to spend Valentines day and Nicole said it was a great date.  We saw a lot of amazing art and we were both inspired to spend  more time on our art.  As a result, I'm going to try and spend at least an hour a day for a year, or something close to that, on art.&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;My Dad was a professional artist and drawing was always a part of my childhood.  That said, I haven't done much since.  One of my boys loves to draw and he and I sometimes draw together, so I'm hoping he and my wife will join me on my 365 days of art.&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;So here it is, the first of at least 364 more drawings.  I won't post them all here ;-)&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm4.static.flickr.com/3424/3283406221_b0e8b2512b.jpg?v=0"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 383px; height: 500px;" src="http://farm4.static.flickr.com/3424/3283406221_b0e8b2512b.jpg?v=0" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4457781382344670969-2303423324162579669?l=cmaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmaki.blogspot.com/feeds/2303423324162579669/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4457781382344670969&amp;postID=2303423324162579669' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/2303423324162579669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/2303423324162579669'/><link rel='alternate' type='text/html' href='http://cmaki.blogspot.com/2009/02/slc-tattoo-convention-2009.html' title='SLC Tattoo Convention 2009'/><author><name>Chris Maki</name><uri>http://www.blogger.com/profile/16510702653624658586</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/58/164933668_cceadb11bf.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4457781382344670969.post-6339616123737518559</id><published>2008-11-06T08:55:00.005-07:00</published><updated>2008-11-12T09:39:29.016-07:00</updated><title type='text'>More Maven Best Practices @ ApacheCon by Brett Porter</title><content type='html'>&lt;div&gt;Here are my notes from Brett's talk about Maven.&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;More Apache Maven Best Practices, &lt;/span&gt;&lt;/span&gt;by Brett Porter

General Principles from last years presentation
&lt;ul&gt;&lt;li&gt;Set up your environment in advance
&lt;/li&gt;&lt;li&gt;A repository manager is a must (e.g. Archiva)
&lt;/li&gt;&lt;li&gt;Keep your POM simple, write your build like you write code
&lt;/li&gt;&lt;li&gt;Keep the build portable
&lt;/li&gt;&lt;li&gt;Avoid hard coding
&lt;/li&gt;&lt;li&gt;Make artifacts portable and minimize resource filtering 
&lt;/li&gt;&lt;li&gt;Keep db config out of the project 
&lt;/li&gt;&lt;li&gt;Make sure the build is reproducible
&lt;/li&gt;&lt;li&gt;Lock down versions, lock down environmental variations (don't rely on getting the latest, use version numbers)
&lt;/li&gt;&lt;li&gt;Use the Enforcer plugin (&lt;a href="http://maven.apache.org/plugins/maven-enforcer-plugin/"&gt;http://maven.apache.org/plugins/maven-enforcer-plugin/&lt;/a&gt;)
&lt;/li&gt;&lt;li&gt;Use this plugin to ensure other modules do not use automatic versions like latest and latestRelease
&lt;/li&gt;&lt;li&gt;Release your project early and often&lt;/li&gt;&lt;/ul&gt;Dependency Management
&lt;ul&gt;&lt;li&gt;Transitive dependencies are a big part of Maven, however sometimes dependencies get messed up, use &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;mvn dependency:tree&lt;/span&gt; to analyze your dependencies. 
&lt;/li&gt;&lt;li&gt;Use enforcer plugin to ban specific dependencies and then you can use global exclusions to keep that dependency out of the project
&lt;/li&gt;&lt;li&gt;Specify only what you need, specify scope, USE &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;dependencyManagement&lt;/span&gt;
&lt;/li&gt;&lt;li&gt;Use &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;dependency:analyze&lt;/span&gt;, find out what you're using but not declaring, find out what you're declaring but not using&lt;/li&gt;&lt;/ul&gt;Integration Testing
&lt;ul&gt;&lt;li&gt;Unfortunately, an afterthought in Maven 2.0.x, at least in lifecycle
&lt;/li&gt;&lt;li&gt;Tests in a separate module, tests in same project, you'll most likely need to use profiles
&lt;/li&gt;&lt;li&gt;In Maven, plugin ITs are in the project
&lt;/li&gt;&lt;li&gt;Using a separate project, most common pattern in Maven.  If you're testing multiple modules put tests in another module
&lt;/li&gt;&lt;li&gt;create a parallel module, use the regular &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;src/test/java&lt;/span&gt; directory, add a  dependency on the module being tested, you will typically put this in a profile to control when it's run (e.g. in your CI env)
&lt;/li&gt;&lt;li&gt;If you are testing in the same project (e.g. a plugin or framework example), use another source dir, like &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;src/it&lt;/span&gt; or use the &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;src/test/java&lt;/span&gt; path and exclude a package from the general test so they can be used during integration testing (this is the easiest approach)
&lt;/li&gt;&lt;/ul&gt; Maven sites and reporting
&lt;ul&gt;&lt;li&gt;There are two technologies working here, reporting and rendering, they are not the same thing!
&lt;/li&gt;&lt;li&gt;Site tips, avoid reports and documentation sites, some minimal project reports, like mailing lists, source repository may be relevant&lt;/li&gt;&lt;li&gt;use site inheritance, just like in your pom, you can break down the site.xml file, they sit along side your pom.xml file
&lt;/li&gt;&lt;li&gt;Use versioning in the URL
&lt;/li&gt;&lt;li&gt;Include release notes in the versioned usage documentation
&lt;/li&gt;&lt;li&gt;Report tips&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Set up what you'll use!  Don't create reports with thousands of issues&lt;/li&gt;&lt;li&gt;It won't be used if, too much information or there is irrelevant information&lt;/li&gt;&lt;li&gt;Don't settle for the default settings&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Use active checks, not passive reports, fail the build
&lt;/li&gt;&lt;li&gt;Use profiles to control reports, you don't need to run the reports all the time&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Plugin Development
&lt;ul&gt;&lt;li&gt;Sometimes it is easier to use a script for short, one-off, customizations, e.g. &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;antrun&lt;/span&gt; plugin, &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;jruby&lt;/span&gt;, &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;groovy&lt;/span&gt; plugin, etc.
&lt;/li&gt;&lt;li&gt;If you might use it twice, consider writing a plugin
&lt;/li&gt;&lt;li&gt;Writing a plugin isn't a big deal, you can write it in Java, Ruby, Groovy, etc.
&lt;/li&gt;&lt;li&gt;Write your functionality in components, with the Mojo as a "wrapper"
&lt;/li&gt;&lt;li&gt;Minimize Maven API dependencies and component exposure, e.g. use &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;maven-artifact&lt;/span&gt;, not &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;maven-core&lt;/span&gt; (be aware of your dependencies, only use what you need)
&lt;/li&gt;&lt;li&gt;Do as we say, not as we do.  Maven fails to implement many of these practices in various projects.  Maven commiters learned the hard way!
&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;You can get Brett's slides &lt;a href="http://us.apachecon.com/c/acus2008/sessions/50"&gt;here&lt;/a&gt;.&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4457781382344670969-6339616123737518559?l=cmaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmaki.blogspot.com/feeds/6339616123737518559/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4457781382344670969&amp;postID=6339616123737518559' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/6339616123737518559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/6339616123737518559'/><link rel='alternate' type='text/html' href='http://cmaki.blogspot.com/2008/11/more-maven-best-practices-apachecon-by.html' title='More Maven Best Practices @ ApacheCon by Brett Porter'/><author><name>Chris Maki</name><uri>http://www.blogger.com/profile/16510702653624658586</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/58/164933668_cceadb11bf.jpg?v=0'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4457781382344670969.post-6940156960427169591</id><published>2008-08-08T09:58:00.009-06:00</published><updated>2008-08-10T10:57:47.111-06:00</updated><title type='text'>Seam and Maven</title><content type='html'>A while back I &lt;a href="http://cmaki.blogspot.com/2008/02/overstockcom-and-seam.html"&gt;mentioned&lt;/a&gt; that I'd post a Maven project that would make building Seam applications with Maven a little easier. Here it is, I've got three projects actually.  For the impatient, you can see all the projects over &lt;a href="http://code.google.com/p/maven-additions/"&gt;here&lt;/a&gt; on Google code.  

The three projects I created are:&lt;ol&gt;&lt;li&gt;&lt;b&gt;basic-settings&lt;/b&gt;, this is a parent pom project to define the JBoss repository, set your compiler to Java SE 5 (Maven defaults to Java SE 1.3), and sets some defaults for the Maven eclipse plugin. 
  &lt;li&gt;&lt;b&gt;seam-dependencies&lt;/b&gt; this project defines all your Seam dependencies.  You will use this as a dependency in your Seam project.  This defines the Hibernate and Seam JARs you need to get your Seam application working.
  &lt;li&gt;&lt;b&gt;seam-example&lt;/b&gt; this is a sample application that uses both &lt;b&gt;basic-settings&lt;/b&gt; and &lt;b&gt;seam-dependencies&lt;/b&gt;, to illustrate how to put it all together.  This application is a simplified version of the JPA-booking example that comes with Seam.&lt;/ol&gt;These projects do not use Java EE in any way, so there isn't even a JBoss embedded dependency.  My reason for doing this was to make building and deploying an application as easy as possible.  

To get to the projects, you need to download the the source from my Google code project, which you can find &lt;a href="http://code.google.com/p/maven-additions/"&gt;here&lt;/a&gt;, once at the project page, click the "Project" tab and that will tell you how to check out the code. Now that you've got the code checked out, run &lt;tt&gt;mvn install&lt;/tt&gt; for these projects:&lt;ol&gt;&lt;li&gt;basic-settings&lt;li&gt;seam-dependencies&lt;/ol&gt;With everything installed, you can try out the &lt;b&gt;seam-example&lt;/b&gt; project.  To run the project, use the Maven &lt;a href="http://docs.codehaus.org/display/JETTY/Maven+Jetty+Plugin"&gt;Jetty&lt;/a&gt; plugin, like this:&lt;pre&gt;&lt;code&gt;cd seam-example
mvn jetty:run&lt;/code&gt;&lt;/pre&gt;You can access the app from port 9090, using this URL:  &lt;a href="http://localhost:9090/seam-example"&gt;http://localhost:9090/seam-example&lt;/a&gt;

I also did a Seam presentation at the &lt;a href="http://www.ujug.org/web/content/view/111/1/"&gt;July&lt;/a&gt; 2008 &lt;a href="http://www.ujug.org"&gt;UJUG&lt;/a&gt; meeting.  You can see the presentation &lt;a href="http://www.ujug.org/sponsors/Seamcolor.pdf"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4457781382344670969-6940156960427169591?l=cmaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmaki.blogspot.com/feeds/6940156960427169591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4457781382344670969&amp;postID=6940156960427169591' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/6940156960427169591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/6940156960427169591'/><link rel='alternate' type='text/html' href='http://cmaki.blogspot.com/2008/08/seam-and-maven.html' title='Seam and Maven'/><author><name>Chris Maki</name><uri>http://www.blogger.com/profile/16510702653624658586</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/58/164933668_cceadb11bf.jpg?v=0'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4457781382344670969.post-2861801649609885001</id><published>2008-04-02T08:46:00.003-06:00</published><updated>2008-04-02T13:46:33.508-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac OS'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>Accepted into the iPhone Developer Program</title><content type='html'>I was surprised last night with an email from Apple letting me know that my application to join the &lt;a href="http://developer.apple.com/iphone/program/"&gt;iPhone Developer Program&lt;/a&gt; had been accepted.  

I &lt;a href="http://www.jroller.com/cmaki/entry/the_state_of_the_hibernate"&gt;started&lt;/a&gt; my career as a NEXTSTEP developer so coming back to Mac OS X should be a lot of fun.  I have a couple of ideas for iPhone apps, now if I could only change time like &lt;a href="http://en.wikipedia.org/wiki/Energy_Policy_Act_of_2005#Change_to_daylight_saving_time"&gt;Dubya&lt;/a&gt; and get 30 hours in a day :-)

Stay tuned, I'll post info on the apps I attempt to create here.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4457781382344670969-2861801649609885001?l=cmaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmaki.blogspot.com/feeds/2861801649609885001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4457781382344670969&amp;postID=2861801649609885001' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/2861801649609885001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/2861801649609885001'/><link rel='alternate' type='text/html' href='http://cmaki.blogspot.com/2008/04/accepted-into-iphone-developer-program.html' title='Accepted into the iPhone Developer Program'/><author><name>Chris Maki</name><uri>http://www.blogger.com/profile/16510702653624658586</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/58/164933668_cceadb11bf.jpg?v=0'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4457781382344670969.post-4997537589559009290</id><published>2008-03-06T16:16:00.003-07:00</published><updated>2008-03-06T16:25:56.448-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac OS'/><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>iPhone SDK now available</title><content type='html'>I totally forgot that today &lt;a href="http://www.apple.com"&gt;Apple&lt;/a&gt; had an iPhone event scheduled for today.  I'm currently watching the session while I write this.  I just signed up for the &lt;a href="http://developer.apple.com/iphone"&gt;iPhone SDK&lt;/a&gt; and cannot wait to get back into Objective-C.  I used to be a NeXT (predecessor to Mac OS X) developer so seeing some of the familiar API's and language will be great.  

The best part is the Exchange integration that will be coming in June, finally I will be able to get my work email on my iPhone (wait, is that something I really want?).

So are you going to build your own iPhone apps?

As I start to develop some apps, I'll post my experiences here asap.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4457781382344670969-4997537589559009290?l=cmaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmaki.blogspot.com/feeds/4997537589559009290/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4457781382344670969&amp;postID=4997537589559009290' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/4997537589559009290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/4997537589559009290'/><link rel='alternate' type='text/html' href='http://cmaki.blogspot.com/2008/03/iphone-sdk-now-available.html' title='iPhone SDK now available'/><author><name>Chris Maki</name><uri>http://www.blogger.com/profile/16510702653624658586</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/58/164933668_cceadb11bf.jpg?v=0'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4457781382344670969.post-6671599185401734264</id><published>2008-03-02T20:46:00.003-07:00</published><updated>2008-03-02T21:05:49.555-07:00</updated><title type='text'>JavaPosse Roundup 2008</title><content type='html'>I'm off to the JavaPosse &lt;a href="http://www.artima.com/weblogs/viewpost.jsp?thread=221098"&gt;Roundup 2008&lt;/a&gt; tomorrow morning (Monday March 3, 2008).  Three of us from Overstock.com are going together.  It should be a real blast.  Late last year, &lt;a href="http://www.jamesward.org/wordpress/"&gt;James Ward&lt;/a&gt; of Adobe came out to speak at the November &lt;a href="http://www.ujug.org"&gt;UJUG&lt;/a&gt; meeting about &lt;a href="http://www.adobe.com/products/flex/"&gt;Flex&lt;/a&gt;.  After the meeting we were out at a local pub called, &lt;a href="http://www.redrockbrewing.com/"&gt;Red Rock&lt;/a&gt; and James said if there was one conference you were going to go to in 2008, the &lt;a href="http://www.javaposse.com"&gt;Java Posse&lt;/a&gt; Roundup 2008 should be it.  

So I'll be there tomorrow afternoon, and cannot wait to meet everyone and to go skiing at &lt;a href="http://www.skicb.com/"&gt;Crested Butte&lt;/a&gt;.

I also put together a collection of past Posse episodes for the drive down, here they are:
&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://media.libsyn.com/media/dickwall/JavaPosse009.mp3"&gt;Episode 9&lt;/a&gt;, interview with Josh Bloch
  &lt;li&gt;&lt;a href="http://media.libsyn.com/media/dickwall/JavaPosse014.mp3"&gt;Episode  14&lt;/a&gt;, interview with Jonathan Schwartz
  &lt;li&gt;&lt;a href="http://media.libsyn.com/media/dickwall/JavaPosse025.mp3"&gt;Episode  25&lt;/a&gt;, first episode with Joe Nuxoll
  &lt;li&gt;&lt;a href="http://media.libsyn.com/media/dickwall/JavaPosse032.mp3"&gt;Episode  32&lt;/a&gt;, interview with Gavin King
  &lt;li&gt;&lt;a href="http://media.libsyn.com/media/dickwall/JavaPosse070.mp3"&gt;Episode 70&lt;/a&gt;, interview with Brett Porter of Maven 
  &lt;li&gt;&lt;a href="http://media.libsyn.com/media/dickwall/JavaPosse099.5.mp3"&gt;Episode  99.5&lt;/a&gt;, interview with Charles Nutter and Thomas Enebo (JRuby)
  &lt;li&gt;&lt;a href="http://media.libsyn.com/media/dickwall/JavaPosse100.mp3"&gt;Episode 100&lt;/a&gt;, the number says it all
  &lt;li&gt;&lt;a href="http://media.libsyn.com/media/dickwall/JavaPosse107.mp3"&gt;Episode 107&lt;/a&gt;, special from JavaPosse Roundup 2007
  &lt;li&gt;&lt;a href="http://media.libsyn.com/media/dickwall/JavaPosse155.mp3"&gt;Episode 155&lt;/a&gt;, interview with Martin Odersky (Scala)
&lt;/ul&gt;

See you there!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4457781382344670969-6671599185401734264?l=cmaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmaki.blogspot.com/feeds/6671599185401734264/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4457781382344670969&amp;postID=6671599185401734264' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/6671599185401734264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/6671599185401734264'/><link rel='alternate' type='text/html' href='http://cmaki.blogspot.com/2008/03/javaposse-roundup-2008.html' title='JavaPosse Roundup 2008'/><author><name>Chris Maki</name><uri>http://www.blogger.com/profile/16510702653624658586</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/58/164933668_cceadb11bf.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4457781382344670969.post-4241056502283243584</id><published>2008-03-02T20:08:00.000-07:00</published><updated>2008-03-02T21:06:53.139-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>Update on my dad</title><content type='html'>A quick update on my dad.  After having a &lt;a href="http://cmaki.blogspot.com/2008/01/very-sad-day.html"&gt;stroke&lt;/a&gt; on January 31, 2008, and a good family friend &lt;a href="http://cmaki.blogspot.com/2008/02/goodbye-to-family-friend.html"&gt;passing away&lt;/a&gt; a few days later, I'm happy to say that my dad has come home.  After being in the hospital for about three weeks and catching the virus that caused the hospital to be locked down  (meaning that he had no visitors  for 10 days right after Bill K passed away), he was discharged because the virus had another breakout.  Last weekend was a little scary, his blood sugar levels were way up, and his blood pressure was too high.  My mom tried to reach a doctor but no one was available (the Canadian health care system for you).

My folks finally got to a doctor on Wednesday and it turns out that he had the wrong prescription for his diabetes.  Once the prescription was straightened out, he started to feel better.  It will take several weeks for him to really feel the full impact of the medication but I can hear it in his voice already.  He is starting to do much better.  One more good thing, he can talk like his old self, fortunately the stroke only affected his balance which he is working on correcting.

To everyone that contacted me, thank you very much for your thoughts, concerns, and comments.

Dad - its great to have you back home, I love you very much!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4457781382344670969-4241056502283243584?l=cmaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmaki.blogspot.com/feeds/4241056502283243584/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4457781382344670969&amp;postID=4241056502283243584' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/4241056502283243584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/4241056502283243584'/><link rel='alternate' type='text/html' href='http://cmaki.blogspot.com/2008/02/update-on-my-dad.html' title='Update on my dad'/><author><name>Chris Maki</name><uri>http://www.blogger.com/profile/16510702653624658586</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/58/164933668_cceadb11bf.jpg?v=0'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4457781382344670969.post-7906097670259286792</id><published>2008-02-27T21:10:00.003-07:00</published><updated>2008-02-27T21:40:18.098-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='half life'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><category scheme='http://www.blogger.com/atom/ns#' term='guitar hero'/><category scheme='http://www.blogger.com/atom/ns#' term='portal'/><category scheme='http://www.blogger.com/atom/ns#' term='gaming'/><title type='text'>Guitar Hero III -  Where have you been?</title><content type='html'>For Christmas my wife and I got our family (we have three boys 11, 10, and 9) an &lt;a href="http://www.xbox.com/ "&gt;XBox 360&lt;/a&gt;.  But not any old XBox, the Halo 3 &lt;a href="http://www.xbox.com/en-US/hardware/x/xbox360halo3console/default.htm"&gt;edition&lt;/a&gt;.  My 10 year old and I have been playing Halo for years (&lt;a href="http://en.wikipedia.org/wiki/Halo:_Combat_Evolved"&gt;Halo&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Halo_2"&gt;Halo 2&lt;/a&gt;), so getting the 360 late last year once &lt;a href="http://www.halo3.com/"&gt;Halo 3&lt;/a&gt; came out, seemed a no brainer.  Since I'd been playing &lt;a href="http://en.wikipedia.org/wiki/Half-Life_2"&gt;Half Life 2&lt;/a&gt; for a while on our old &lt;a href="http://en.wikipedia.org/wiki/Xbox"&gt;XBox&lt;/a&gt;, my wife also got me the &lt;a href="http://orange.half-life2.com/"&gt;Organge Box&lt;/a&gt; for Christmas (great set of gifts btw, thanks honey).

I've always liked Halo but Half Life is a way more engaging game, the physics are better, you can interact with just about everything and the &lt;a href="http://jin-saotome.deviantart.com/art/Half-Life-Gravity-Gun-74928646"&gt;gravity gun&lt;/a&gt; is hard to beat.  I also think the the story is way more interesting.  However, for pure game play, not much else comes close to &lt;a href="http://orange.half-life2.com/portal.html"&gt;Portal&lt;/a&gt;, Valve's new game introduced as part of the Orange Box.  So Christmas was great I played a lot of Half Life 2 and &lt;a href="http://orange.half-life2.com/hl2ep1.html"&gt;Half Life 2 Episode One&lt;/a&gt; (almost finished).  Then it happened...

A couple of weeks back we were at our local &lt;a href="http://www.bestbuy.com"&gt;Best Buy&lt;/a&gt; and they had a pallet of &lt;a href="http://www.guitarhero.com/"&gt;Guitar Hero III&lt;/a&gt; wireless guitar and game bundles.  We've been talking about getting &lt;a href="http://www.rockband.com"&gt;Rock Band&lt;/a&gt; so we could all play, but we thought we'd start with GH3 first.  When we got home I started to play on easy to get the feel of the game and ended up almost finishing the solo-career game.  

I'm not sure how to describe the experience you get playing the game but the first thing that came to mind was "this is the ultimate air guitar experience."  If you've ever listened to your favorite song and wished you could play the guitar (I know, I should have learned to play the guitar, but I didn't and now I'm too lazy), then GH is for you. After playing for a couple of weeks, my wife started to play and it has been a blast.  We are almost through the co-op career on Medium but &lt;a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewAlbum?i=162994173&amp;id=162993934&amp;s=143441"&gt;Knights of Cydonia&lt;/a&gt; is kicking our ass!

So if you were wondering where the &lt;a href="http://www.jboss.com/products/seam"&gt;Seam&lt;/a&gt; Maven &lt;a href="http://maven.apache.org/guides/introduction/introduction-to-archetypes.html"&gt;archetype&lt;/a&gt; is, now you know, GH3 has taken all my free time, and what a great ride it's been.

BTW, now I find myself wishing all my favorite songs were in GH3.  While driving to work I keep thinking, I want to play that on my plastic wireless guitar :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4457781382344670969-7906097670259286792?l=cmaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmaki.blogspot.com/feeds/7906097670259286792/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4457781382344670969&amp;postID=7906097670259286792' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/7906097670259286792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/7906097670259286792'/><link rel='alternate' type='text/html' href='http://cmaki.blogspot.com/2008/02/guitar-hero-iii-where-have-you-been.html' title='Guitar Hero III -  Where have you been?'/><author><name>Chris Maki</name><uri>http://www.blogger.com/profile/16510702653624658586</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/58/164933668_cceadb11bf.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4457781382344670969.post-8783378663590942694</id><published>2008-02-14T11:00:00.003-07:00</published><updated>2008-02-14T20:47:57.168-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Seam'/><category scheme='http://www.blogger.com/atom/ns#' term='Maven'/><title type='text'>Overstock.com and Seam</title><content type='html'>As I mentioned a while &lt;a href="http://cmaki.blogspot.com/2007/08/good-bye-consulting-hello-overstockcom.html"&gt;back&lt;/a&gt;, I now work at &lt;a href="http://www.overstock.com"&gt;Overstock.com&lt;/a&gt;.  One of the things I've been working on for a couple of months is bringing &lt;a href="http://www.jboss.com/products/seam"&gt;JBoss Seam&lt;/a&gt; to Overstock.  First off, just to clarify where we are using Seam:  We will not be using Seam for the public Overstock.com website, the one you might be familiar with &lt;a href="http://www.overstock.com"&gt;here&lt;/a&gt; however; we will be using it for internal application development.

This is a really exciting time for me at Overstock because I'm helping to usher in some new technologies like Seam and my other favorite open source project, &lt;a href="http://maven.apache.org"&gt;Maven&lt;/a&gt;.  Since something like Seam is new to Overstock, I've had to put together some training courses, get "the seam &lt;a href="http://www.michaelyuan.com/blog/seam-next-gen-web-framework/"&gt;Book&lt;/a&gt;" and put together a Maven &lt;a href="http://maven.apache.org/plugins/maven-archetype-plugin/"&gt;Archetype&lt;/a&gt; to jump start projects.

Over the next couple of days, I'll be posting a working pom file (along with a download) you can use for your own Seam/Maven project.  My efforts are based on Michael Yuan's &lt;a href="http://www.michaelyuan.com/blog/2007/10/02/jboss-seam-project-setup-with-maven/"&gt;posts&lt;/a&gt; &lt;a href="http://www.michaelyuan.com/blog/2007/10/09/jboss-seam-project-setup-with-maven-—-part-2-ear-deployment/"&gt;about&lt;/a&gt; Seam and Maven, with tweaks so you don't have to inherit from the Seam pom.

One last thing on the Seam front, in case you &lt;a href="http://in.relation.to/8577.lace"&gt;missed&lt;/a&gt; &lt;a href="http://raibledesigns.com/rd/entry/leasons_learned_from_using_seam"&gt;it&lt;/a&gt;, there is a new Seam &lt;a href="http://seamframework.org"&gt;community site&lt;/a&gt; now available.  The best part of all is that it is built on Seam.  If you cannot eat your own dog food than your framework sucks :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4457781382344670969-8783378663590942694?l=cmaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmaki.blogspot.com/feeds/8783378663590942694/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4457781382344670969&amp;postID=8783378663590942694' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/8783378663590942694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/8783378663590942694'/><link rel='alternate' type='text/html' href='http://cmaki.blogspot.com/2008/02/overstockcom-and-seam.html' title='Overstock.com and Seam'/><author><name>Chris Maki</name><uri>http://www.blogger.com/profile/16510702653624658586</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/58/164933668_cceadb11bf.jpg?v=0'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4457781382344670969.post-5079988054353279298</id><published>2008-02-03T10:08:00.000-07:00</published><updated>2008-02-04T20:08:46.060-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Goodbye to a family friend</title><content type='html'>On Thursday, January 31st my Dad, Bill Maki, and a &lt;a href="http://cmaki.blogspot.com/2008/01/very-sad-day.html"&gt;stroke&lt;/a&gt;.  What I didn't know till later in the day was that a longtime family friend (45+ year  and my Dad's best friend, Bill Kapush (another Bill), was admitted to the hospital with chest pain.  There is only one hospital in my home town and they were down the hall from one another.  The next day, Friday February 1st, while still in the hospital, in the care of a nurse  and in mid sentence, Bill Kapush put his head down and died!

I couldn't believe it, on Wednesday, January 30th, Bill Kapush, Bill Maki, and my mom were having dinner together and everything seemed okay.  Two days later and my dad has had several strokes, has been diagnosed with dimensia and cannot talk too well and Bill Kapush is dead.  My dad and Bill had stated to talk to one another every day for the last few years, it was part of their routine, another change my dad will have to make.

I'd like to offer my condolences  to the Kapush family, I know it was a big shock to all of you and my thoughts and prayers are with you.

If you live near your parents, why don't you drop by and say hi, if you don't live near them call them today to say hi, or better still let them know you love them, you never know how fast life can change everything.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4457781382344670969-5079988054353279298?l=cmaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmaki.blogspot.com/feeds/5079988054353279298/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4457781382344670969&amp;postID=5079988054353279298' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/5079988054353279298'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/5079988054353279298'/><link rel='alternate' type='text/html' href='http://cmaki.blogspot.com/2008/02/goodbye-to-family-friend.html' title='Goodbye to a family friend'/><author><name>Chris Maki</name><uri>http://www.blogger.com/profile/16510702653624658586</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/58/164933668_cceadb11bf.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4457781382344670969.post-5538566698643544355</id><published>2008-01-31T16:09:00.000-07:00</published><updated>2008-01-31T16:23:44.908-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>A very sad day</title><content type='html'>Unlike my usual posts, this one is not technical in nature.  I've had a really rough day and wanted to record it so I could look back and remember how things went.

So today is my birthday, another year older and probably the scariest day of my life so far.  This morning around 8:30 my folks called to wish me a happy birthday and when I talked to my dad (who is 76 btw) I noticed he was having a real hard time talking, then he started to slur, at that point I realized something was up.  My mom took my dad to the ER and it turns out that he had had a &lt;a href="http://en.wikipedia.org/wiki/Stroke"&gt;stroke&lt;/a&gt;, a couple perhaps.  Unfortunately, there was worse news, he has &lt;a href="http://en.wikipedia.org/wiki/Dementia"&gt;dementia&lt;/a&gt;.  I guess this explains why my mom has beens saying for a while that my dad is forgetting things, not aware of what's happening, etc.

I think the scariest thing, for me at least, is talking to him.  He doesn't sound like my dad, and when he talks I just want to hug him and make it better (I guess that's what happens when you yourself are a dad).  It seems that he isn't really aware of his diagnosis, so maybe that is a good thing.

So have you had a loved one that has gone through this?  If so, how did you handle it?  What did your family do, did they gather around one another or stay away? 

I was planning on going to my home town tonight but my mom asked me not to, to give them a few days to work it out.

Dad - if you read this, I love you and hope you know what a great dad you are!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4457781382344670969-5538566698643544355?l=cmaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmaki.blogspot.com/feeds/5538566698643544355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4457781382344670969&amp;postID=5538566698643544355' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/5538566698643544355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/5538566698643544355'/><link rel='alternate' type='text/html' href='http://cmaki.blogspot.com/2008/01/very-sad-day.html' title='A very sad day'/><author><name>Chris Maki</name><uri>http://www.blogger.com/profile/16510702653624658586</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/58/164933668_cceadb11bf.jpg?v=0'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4457781382344670969.post-8958550710735430764</id><published>2007-12-20T20:19:00.000-07:00</published><updated>2007-12-20T20:27:10.083-07:00</updated><title type='text'>All Apple Fan, All Geek?</title><content type='html'>So after reading &lt;a href="http://raibledesigns.com/rd/entry/part_apple_fan_part_geek"&gt;Matt Raible's&lt;/a&gt; post, I had to know how I measured up.  So here it is:

&lt;a href="http://www.justsayhi.com/bb/geek" style="text-decoration: none; background: url('http://assets.justsayhi.com/badges/910/161/geek_badge1_green.ipkdy5k321.jpg') no-repeat; display: block; width: 268px; height: 82px;"&gt;&lt;span style="display: block; padding-left: 125px; padding-top: 28px; color: #000; font-family: Arial; font-size: 22px;"&gt;73% Geek&lt;/span&gt;&lt;/a&gt;

&lt;a href="http://www.justsayhi.com/bb/apple_addiction" style="color: #80A9DD; text-decoration: none; display: block; width: 286px; height: 128px; padding-top: 50px; padding-left: 17px; background: url(http://assets.justsayhi.com/badges/691/479/apple_addiction.ocopv3ot8f.jpg) no-repeat; font-family: Times New Roman, sans-serif; font-size: 30px;"&gt;89%&lt;span style="display: none;"&gt;How Addicted to Apple Are You?&lt;/span&gt;&lt;/a&gt;

For fun, my wife and I thought we'd see how we'll do in the pending &lt;a href="http://www.justsayhi.com/bb/zombie"&gt;Zombie Apocalypse&lt;/a&gt;, we got a 55% chance (I tried to copy the URL and reloaded the page, maybe I should re-evaluate my Geek percentage).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4457781382344670969-8958550710735430764?l=cmaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmaki.blogspot.com/feeds/8958550710735430764/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4457781382344670969&amp;postID=8958550710735430764' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/8958550710735430764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/8958550710735430764'/><link rel='alternate' type='text/html' href='http://cmaki.blogspot.com/2007/12/all-apple-fan-all-geek.html' title='All Apple Fan, All Geek?'/><author><name>Chris Maki</name><uri>http://www.blogger.com/profile/16510702653624658586</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/58/164933668_cceadb11bf.jpg?v=0'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4457781382344670969.post-5852620406068399509</id><published>2007-11-06T20:04:00.001-07:00</published><updated>2007-11-06T20:19:10.259-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='speaking'/><category scheme='http://www.blogger.com/atom/ns#' term='Maven'/><category scheme='http://www.blogger.com/atom/ns#' term='JPA'/><title type='text'>Rocky Mountain Software Symposium</title><content type='html'>I just finished uploading my slides for this weekends &lt;a href="http://www.nofluffjuststuff.com/show_view.jsp?showId=110"&gt;Rocky Mountain Software Symposium&lt;/a&gt; (aka NFJS Denver).  I have two sessions, one on JPA and another on Maven 2.

&lt;a href="http://www.nofluffjuststuff.com/show_topics.jsp?showId=110#speaker6749"&gt;Here&lt;/a&gt; are my presentations.  I hope to see you there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4457781382344670969-5852620406068399509?l=cmaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmaki.blogspot.com/feeds/5852620406068399509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4457781382344670969&amp;postID=5852620406068399509' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/5852620406068399509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/5852620406068399509'/><link rel='alternate' type='text/html' href='http://cmaki.blogspot.com/2007/11/rocky-mountain-software-symposium.html' title='Rocky Mountain Software Symposium'/><author><name>Chris Maki</name><uri>http://www.blogger.com/profile/16510702653624658586</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/58/164933668_cceadb11bf.jpg?v=0'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4457781382344670969.post-764262504274604025</id><published>2007-11-05T12:44:00.000-07:00</published><updated>2007-11-06T20:19:35.587-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>Eclipse Tip</title><content type='html'>Are you tired of seeing all Java files in your Eclipse project showing this icon: &lt;img src="http://help.eclipse.org/help31/topic/org.eclipse.jdt.doc.user/images/org.eclipse.jdt.ui/obj16/jcu_obj.png" /&gt;  Would you like to know if a Java file is an &lt;a href="http://java.sun.com/j2se/1.5.0/docs/guide/language/enums.html"&gt;enum&lt;/a&gt;, an Interface, or maybe an &lt;a href="http://java.sun.com/j2se/1.5.0/docs/guide/language/annotations.html"&gt;annotation&lt;/a&gt;?  Just turn on the &lt;i&gt;Java Type Indicator&lt;/i&gt; preference and your class icons will change from this:
&lt;img src="http://www.rateyourwriting.com/without.png" /&gt;
to this:
&lt;img src="http://www.rateyourwriting.com/with.png" /&gt;.

For detailed instructions on how to turn this preference on, check out this Eclipse &lt;a href="http://help.eclipse.org/help32/index.jsp?topic=/org.eclipse.jdt.doc.user/concepts/cjavaviews_decorators.htm"&gt;help&lt;/a&gt; page.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4457781382344670969-764262504274604025?l=cmaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmaki.blogspot.com/feeds/764262504274604025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4457781382344670969&amp;postID=764262504274604025' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/764262504274604025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/764262504274604025'/><link rel='alternate' type='text/html' href='http://cmaki.blogspot.com/2007/11/eclipse-tip.html' title='Eclipse Tip'/><author><name>Chris Maki</name><uri>http://www.blogger.com/profile/16510702653624658586</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/58/164933668_cceadb11bf.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4457781382344670969.post-5002577100848579183</id><published>2007-10-28T22:46:00.001-06:00</published><updated>2007-10-28T23:22:20.146-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='grumpy'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac OS'/><title type='text'>Upgrade to Leopard, the story so far</title><content type='html'>I was really looking forward to upgrading to Leopard today but I'm not sure if I'm happier now that it's all done.  Apple is starting to do some really &lt;a href="http://gizmodo.com/gadgets/screw-paper/apple-sets-two-iphone-limit-no-cash-accepted-315858.php"&gt;stupid&lt;/a&gt; things lately.  I've been a Apple/Next user/developer since 1992, eight years on Next and the last seven years on Apple.  I have to ask, what the hell are they thinking?  &lt;b&gt;No Java 6 support&lt;/b&gt;, key bindings removed for Front Row, you cannot use an AirDisk with Time Machine, AirDisks don't work and so on.

I guess I'll have to see how things go over the next week or two, but I'm not going to install Leopard on any other mac in my house till things get better.  On a similar note, I bought a Apple TV a few months back and returned it after two days.  I've never been unhappy with an Apple product before, but this seems to be becoming a trend :-)  I love my iPhone, but Apple's tendency to control every aspect of my computer is really starting to piss me off.  BTW, wtf is up with Front Row, when I browse out of the "Music" section the music stops, Front Row 1.x didn't do this, it played music till you picked something else for it to play.

I'm going to watch a movie, I'm sure that will be more enjoyable than the last hour has been.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4457781382344670969-5002577100848579183?l=cmaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmaki.blogspot.com/feeds/5002577100848579183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4457781382344670969&amp;postID=5002577100848579183' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/5002577100848579183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/5002577100848579183'/><link rel='alternate' type='text/html' href='http://cmaki.blogspot.com/2007/10/upgrade-to-leopard-story-so-far.html' title='Upgrade to Leopard, the story so far'/><author><name>Chris Maki</name><uri>http://www.blogger.com/profile/16510702653624658586</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/58/164933668_cceadb11bf.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4457781382344670969.post-1418373013705022442</id><published>2007-10-11T05:54:00.001-06:00</published><updated>2008-03-12T07:50:10.347-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Maven'/><title type='text'>Getting Maven and Eclipse to work together to filter resources</title><content type='html'>I don't really care for any of the &lt;a href="http://www.eclipse.org/"&gt;Eclipse&lt;/a&gt; plugins currently available for Maven (&lt;a href="http://m2eclipse.codehaus.org/"&gt;m2eclipse&lt;/a&gt; or &lt;a href="http://code.google.com/p/q4e/"&gt;Q4E&lt;/a&gt;), however I do like the Maven &lt;a href="http://maven.apache.org/plugins/maven-eclipse-plugin/"&gt;plugin&lt;/a&gt; for eclipse (it seems to be the only one that works).  At &lt;a href="http://www.overstock.com/"&gt;Overstock.com&lt;/a&gt; everyone uses Eclipse, so as we are moving to Maven it is important that Maven work well in the IDE.  Most folks checkout their code, develop and then check there code back into &lt;a href="http://subversion.tigris.org/"&gt;svn&lt;/a&gt; via Eclipse, never hitting the command line.  Obviously, the Maven Eclipse plugin won't be good for them, so currently we are using m2eclipse for Eclipse/Maven integration.  One of the problems I've been running into is filtering resources, I believe if you are using m2eclipse and you choose (from the popup menu) &lt;tt&gt;Maven -&gt; Update Source Folders&lt;/tt&gt; all your resources will be filtered (if you have filtering turned on in your &lt;tt&gt;pom.xm&lt;/tt&gt;).  I don't want to do that and folks will forget to do it, furthermore, since I do use the Maven Eclipse plugin (requiring the command line) and I don't use m2eclipse, this won't work for me.  So how do you get Maven and Eclipse to work together?

This &lt;a href="http://jira.codehaus.org/browse/MNGECLIPSE-343"&gt;feature request&lt;/a&gt; for m2eclipse provides some pointers.  Eugene suggests using a Maven build(er), but I cannot do that (because I'm not using m2ecilpse and I couldn't get it to work correctly when I tried), so I'll use a Program builder instead.  In the &lt;b&gt;Package Explorer&lt;/b&gt;, right click on your project and select properties, this brings up the &lt;tt&gt;Properties for xxx&lt;/tt&gt; dialog box.  In the list on the left, choose Builders, as shown in the image below (click on any of the images below for a larger version):

&lt;a href="http://farm3.static.flickr.com/2237/1541445443_05b2f61b04_o.jpg"&gt;&lt;img src="http://farm3.static.flickr.com/2125/1541445095_36ea97f882_o.jpg"/&gt;&lt;/a&gt;

Next, click the &lt;tt&gt;New...&lt;/tt&gt; button and choose the Program builder:

&lt;a href="http://farm3.static.flickr.com/2026/1542307598_88e28037ae_o.jpg"&gt;&lt;img src="http://farm3.static.flickr.com/2354/1541445257_336f2cf0f6.jpg?v=0"/&gt;&lt;/a&gt;

In the &lt;tt&gt;Properties for New_Builder (1)&lt;/tt&gt; dialog box, use the &lt;tt&gt;Browse File System...&lt;/tt&gt; button to locate your copy of the mvn executable.  For the &lt;tt&gt;Working Directory&lt;/tt&gt; section, click the &lt;tt&gt;Browse Workspace...&lt;/tt&gt; button and select your project.  For the &lt;tt&gt;Arguments&lt;/tt&gt; section add the following: &lt;pre&gt;&lt;tt&gt;resources:resources resources:testResources&lt;/tt&gt;&lt;/pre&gt; Here is how the dialog should look like so far:

&lt;a href="http://farm3.static.flickr.com/2261/1541445879_2dcc255088_o.jpg"&gt;&lt;img src="http://farm3.static.flickr.com/2032/1542306928_9d4ded4f92_o.jpg"/&gt;&lt;/a&gt;

To finish things off, select the &lt;tt&gt;Build Options&lt;/tt&gt; tab at the top of the &lt;tt&gt;Properties for New_Build (1)&lt;/tt&gt; dialog box and make sure the &lt;tt&gt;During auto builds&lt;/tt&gt; check box is selected (actually you want all check boxes under &lt;tt&gt;Run the builder&lt;/tt&gt; to be checked except for &lt;tt&gt;During a "Clean"&lt;/tt&gt;).  Next select the &lt;tt&gt;Specify working set of relevant resources&lt;/tt&gt; check box and then click &lt;tt&gt;Specify Resources...&lt;/tt&gt;.  In the dialog box that pops up, navigate to your &lt;tt&gt;src/main/resources&lt;/tt&gt; and &lt;tt&gt;src/test/resources&lt;/tt&gt; folders and click the check box to the left so these folders are included in your working set, click &lt;tt&gt;Finish&lt;/tt&gt;.  Here is what the &lt;tt&gt;Build Options&lt;/tt&gt; tab should look like: 

&lt;a href="http://farm3.static.flickr.com/2098/1542347942_cba7b29525_o.jpg"&gt;&lt;img src="http://farm3.static.flickr.com/2376/1542347734_12f30e00b1.jpg?v=0"/&gt;&lt;/a&gt;

That's it, now when you refresh your workspace, try to run a unit test, etc. all your resources are filtered just as if you were doing it from the command line.

If you have a way to do this correctly with m2eclipse or Q4E please let me know.

&lt;b&gt;Update:&lt;/b&gt; you may want to add the &lt;tt&gt;-o&lt;/tt&gt; command line switch for Maven so that it doesn't try to look for JARs to download.  You will want to add &lt;tt&gt;-o&lt;/tt&gt; to the &lt;tt&gt;resources:resources...&lt;/tt&gt; code above.

&lt;b&gt;Update 2:&lt;/b&gt; If you are using the m2eclipse plugin, check out &lt;a href="http://www.jroller.com/eu/entry/maven_resource_filtering"&gt;Eugene Kuleshov's response&lt;/a&gt; to this post.  Also, if you decide to keep using an external builder, you'll want to make sure the &lt;tt&gt;"Refresh resources upon completion."&lt;/tt&gt; check box is selected on the &lt;tt&gt;Refresh&lt;/tt&gt; tab of the builder dialog box.

&lt;b&gt;Update 3/12/08:&lt;/b&gt; In the "Build Options" section above you'll need to select all options under "Run the builder", so that it runs both during and after a clean.  Also, I no longer use the m2eclipse builder, I only use a Program Builder.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4457781382344670969-1418373013705022442?l=cmaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmaki.blogspot.com/feeds/1418373013705022442/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4457781382344670969&amp;postID=1418373013705022442' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/1418373013705022442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/1418373013705022442'/><link rel='alternate' type='text/html' href='http://cmaki.blogspot.com/2007/10/getting-maven-and-eclipse-to-work.html' title='Getting Maven and Eclipse to work together to filter resources'/><author><name>Chris Maki</name><uri>http://www.blogger.com/profile/16510702653624658586</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/58/164933668_cceadb11bf.jpg?v=0'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4457781382344670969.post-4928025382952033066</id><published>2007-10-10T09:07:00.000-06:00</published><updated>2007-10-10T09:18:23.127-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>Welcome to the Twilight Zone</title><content type='html'>Since I'm caught up on the latest &lt;a href="http://www.javaposse.com"&gt;Java Posse&lt;/a&gt; episode, I thought I'd listen to the &lt;a href="http://www.alpine-usa.com/US-en/products/product.php?model=iDA-X001"&gt;radio&lt;/a&gt; on my way into work today. It turns out my &lt;a href="http://www.kcpw.org"&gt;local&lt;/a&gt; NPR station just started it's fall membership drive.  After about five minutes of listening, one of the local sponsor's (a car dealership) joked about programming everyone's car radios to always tune to an NPR station.  Laughing, I decided to switch stations, well guess what?  Every station I turned to was NPR.  No kidding, it was so bizarre  that I had to call my wife to tell her.  When I turned the radio back on, it was on another station.  Then when I went back to NPR, all stations played NPR.

I'm not sure what was going on but it seems that my radio only wants NPR ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4457781382344670969-4928025382952033066?l=cmaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmaki.blogspot.com/feeds/4928025382952033066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4457781382344670969&amp;postID=4928025382952033066' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/4928025382952033066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/4928025382952033066'/><link rel='alternate' type='text/html' href='http://cmaki.blogspot.com/2007/10/welcome-to-twilight-zone.html' title='Welcome to the Twilight Zone'/><author><name>Chris Maki</name><uri>http://www.blogger.com/profile/16510702653624658586</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/58/164933668_cceadb11bf.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4457781382344670969.post-4364665694776534689</id><published>2007-09-28T09:52:00.000-06:00</published><updated>2007-09-28T11:20:46.699-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JAXB'/><title type='text'>Annotated JAXB Classes</title><content type='html'>Over the last week or so, I've started to use JAXB along with the &lt;a href="http://www.restlet.org/"&gt;Restlet&lt;/a&gt; framework.  We are actively developing &lt;a href="http://www.oreilly.com/catalog/9780596529260/"&gt;RESTful web services&lt;/a&gt; here at &lt;a href="http://www.overstock.com"&gt;Overstock.com&lt;/a&gt;.  So being new to the Restlet framework, I was eager to get started.  One type of representation supported by Restlet is of course XML.  To generate XML representations we are using &lt;a href="http://jcp.org/en/jsr/detail?id=222"&gt;JAXB 2&lt;/a&gt;.  Being an &lt;a href="http://www.theserverside.com/tt/articles/article.tss?l=JPAObjectModel"&gt;advocate&lt;/a&gt; of &lt;a href="http://www.theserverside.com/news/thread.tss?thread_id=46926#239918"&gt;annotations&lt;/a&gt;, I thought I'd start with annotated &lt;a href="http://chris-richardson.blog-city.com/"&gt;POJO's&lt;/a&gt; and let the JAXB provider do the rest (I assumed this would be a  lot like JPA).  I ran into a problem however, trying to create a JAXBContext for my package, I got this error:&lt;pre&gt;&lt;code&gt;WARNING: Problem creating Marshaller
javax.xml.bind.JAXBException: "com.overstock" doesnt contain ObjectFactory.class or jaxb.index&lt;/code&gt;&lt;/pre&gt;It took me a while to figure out what went wrong.  So now that I've got things working correctly, I thought I'd post this example and solution to hopefully save you some time.

Given this class:&lt;pre&gt;&lt;a name="line1"&gt; 1&lt;/a&gt; &lt;span style="color:0000ff;"&gt;&lt;strong&gt;package com.overstock;&lt;/strong&gt;&lt;/span&gt;
&lt;a name="line2"&gt; 2&lt;/a&gt;
&lt;a name="line3"&gt; 3&lt;/a&gt; &lt;span style="color:0000ff;"&gt;&lt;strong&gt;import javax.xml.bind.annotation.XmlAccessType;&lt;/strong&gt;&lt;/span&gt;
&lt;a name="line4"&gt; 4&lt;/a&gt; &lt;span style="color:0000ff;"&gt;&lt;strong&gt;import javax.xml.bind.annotation.XmlAccessorType;&lt;/strong&gt;&lt;/span&gt;
&lt;a name="line5"&gt; 5&lt;/a&gt; &lt;span style="color:0000ff;"&gt;&lt;strong&gt;import javax.xml.bind.annotation.XmlElement;&lt;/strong&gt;&lt;/span&gt;
&lt;a name="line6"&gt; 6&lt;/a&gt; &lt;span style="color:0000ff;"&gt;&lt;strong&gt;import javax.xml.bind.annotation.XmlRootElement;&lt;/strong&gt;&lt;/span&gt;
&lt;a name="line7"&gt; 7&lt;/a&gt;
&lt;a name="line8"&gt; 8&lt;/a&gt; @&lt;span style="color:#2040a0;"&gt;XmlRootElement&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:#2040a0;"&gt;name&lt;/span&gt;&lt;span style="color:4444FF;"&gt;=&lt;/span&gt;&lt;span style="color:#008000;"&gt;"example"&lt;/span&gt;, &lt;span style="color:#2040a0;"&gt;namespace&lt;/span&gt;&lt;span style="color:4444FF;"&gt;=&lt;/span&gt;&lt;span style="color:#008000;"&gt;"http://overstock.com/example"&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;
&lt;a name="line9"&gt; 9&lt;/a&gt; @&lt;span style="color:#2040a0;"&gt;XmlAccessorType&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:#2040a0;"&gt;XmlAccessType&lt;/span&gt;.&lt;span style="color:#2040a0;"&gt;FIELD&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;
&lt;a name="line10"&gt;10&lt;/a&gt; &lt;strong&gt;public&lt;/strong&gt; &lt;strong&gt;class&lt;/strong&gt; &lt;span style="color:#2040a0;"&gt;ExampleJaxbClass&lt;/span&gt; &lt;span style="color:4444FF;"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/span&gt;
&lt;a name="line11"&gt;11&lt;/a&gt;
&lt;a name="line12"&gt;12&lt;/a&gt;   @&lt;span style="color:#2040a0;"&gt;XmlElement&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:#2040a0;"&gt;required&lt;/span&gt;&lt;span style="color:4444FF;"&gt;=&lt;/span&gt;&lt;strong&gt;true&lt;/strong&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;
&lt;a name="line13"&gt;13&lt;/a&gt;   &lt;strong&gt;private&lt;/strong&gt; &lt;span style="color:#2040a0;"&gt;String&lt;/span&gt; &lt;span style="color:#2040a0;"&gt;elementOne&lt;/span&gt;&lt;span style="color:4444FF;"&gt;;&lt;/span&gt;
&lt;a name="line14"&gt;14&lt;/a&gt;   &lt;strong&gt;private&lt;/strong&gt; &lt;span style="color:#2040a0;"&gt;String&lt;/span&gt; &lt;span style="color:#2040a0;"&gt;elementTwo&lt;/span&gt;&lt;span style="color:4444FF;"&gt;;&lt;/span&gt;
&lt;a name="line15"&gt;15&lt;/a&gt;
&lt;a name="line16"&gt;16&lt;/a&gt;   &lt;strong&gt;protected&lt;/strong&gt; &lt;span style="color:#2040a0;"&gt;ExampleJaxbClass&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt; &lt;span style="color:4444FF;"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/span&gt;
&lt;a name="line17"&gt;17&lt;/a&gt;     &lt;strong&gt;super&lt;/strong&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:4444FF;"&gt;;&lt;/span&gt;
&lt;a name="line18"&gt;18&lt;/a&gt;   &lt;span style="color:4444FF;"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/span&gt;
&lt;a name="line19"&gt;19&lt;/a&gt;
&lt;a name="line20"&gt;20&lt;/a&gt;   &lt;strong&gt;public&lt;/strong&gt; &lt;span style="color:#2040a0;"&gt;String&lt;/span&gt; &lt;span style="color:#2040a0;"&gt;getElementOne&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt; &lt;span style="color:4444FF;"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/span&gt;
&lt;a name="line21"&gt;21&lt;/a&gt;     &lt;strong&gt;return&lt;/strong&gt; &lt;span style="color:#2040a0;"&gt;elementOne&lt;/span&gt;&lt;span style="color:4444FF;"&gt;;&lt;/span&gt;
&lt;a name="line22"&gt;22&lt;/a&gt;   &lt;span style="color:4444FF;"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/span&gt;
&lt;a name="line23"&gt;23&lt;/a&gt;   &lt;strong&gt;public&lt;/strong&gt; &lt;strong&gt;void&lt;/strong&gt; &lt;span style="color:#2040a0;"&gt;setElementOne&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:#2040a0;"&gt;String&lt;/span&gt; &lt;span style="color:#2040a0;"&gt;elementOne&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt; &lt;span style="color:4444FF;"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/span&gt;
&lt;a name="line24"&gt;24&lt;/a&gt;     &lt;strong&gt;this&lt;/strong&gt;.&lt;span style="color:#2040a0;"&gt;elementOne&lt;/span&gt; &lt;span style="color:4444FF;"&gt;=&lt;/span&gt; &lt;span style="color:#2040a0;"&gt;elementOne&lt;/span&gt;&lt;span style="color:4444FF;"&gt;;&lt;/span&gt;
&lt;a name="line25"&gt;25&lt;/a&gt;   &lt;span style="color:4444FF;"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/span&gt;
&lt;a name="line26"&gt;26&lt;/a&gt;   &lt;strong&gt;public&lt;/strong&gt; &lt;span style="color:#2040a0;"&gt;String&lt;/span&gt; &lt;span style="color:#2040a0;"&gt;getElementTwo&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt; &lt;span style="color:4444FF;"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/span&gt;
&lt;a name="line27"&gt;27&lt;/a&gt;     &lt;strong&gt;return&lt;/strong&gt; &lt;span style="color:#2040a0;"&gt;elementTwo&lt;/span&gt;&lt;span style="color:4444FF;"&gt;;&lt;/span&gt;
&lt;a name="line28"&gt;28&lt;/a&gt;   &lt;span style="color:4444FF;"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/span&gt;
&lt;a name="line29"&gt;29&lt;/a&gt;   &lt;strong&gt;public&lt;/strong&gt; &lt;strong&gt;void&lt;/strong&gt; &lt;span style="color:#2040a0;"&gt;setElementTwo&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:#2040a0;"&gt;String&lt;/span&gt; &lt;span style="color:#2040a0;"&gt;elementTwo&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt; &lt;span style="color:4444FF;"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/span&gt;
&lt;a name="line30"&gt;30&lt;/a&gt;     &lt;strong&gt;this&lt;/strong&gt;.&lt;span style="color:#2040a0;"&gt;elementTwo&lt;/span&gt; &lt;span style="color:4444FF;"&gt;=&lt;/span&gt; &lt;span style="color:#2040a0;"&gt;elementTwo&lt;/span&gt;&lt;span style="color:4444FF;"&gt;;&lt;/span&gt;
&lt;a name="line31"&gt;31&lt;/a&gt;   &lt;span style="color:4444FF;"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/span&gt;
&lt;a name="line32"&gt;32&lt;/a&gt; &lt;span style="color:4444FF;"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/span&gt;&lt;/pre&gt;You can easily convert it to XML via the &lt;code&gt;javax.xml.bind.Marshaller&lt;/code&gt; class, like this:&lt;pre&gt;&lt;a name="line1"&gt; 1&lt;/a&gt; &lt;strong&gt;public&lt;/strong&gt; &lt;strong&gt;class&lt;/strong&gt; &lt;span style="color:#2040a0;"&gt;ExampleTest&lt;/span&gt; &lt;span style="color:4444FF;"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/span&gt;
&lt;a name="line2"&gt; 2&lt;/a&gt;
&lt;a name="line3"&gt; 3&lt;/a&gt;   @&lt;span style="color:#2040a0;"&gt;Test&lt;/span&gt;
&lt;a name="line4"&gt; 4&lt;/a&gt;   &lt;strong&gt;public&lt;/strong&gt; &lt;strong&gt;void&lt;/strong&gt; &lt;span style="color:#2040a0;"&gt;generateXml&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt; &lt;strong&gt;throws&lt;/strong&gt; &lt;span style="color:#2040a0;"&gt;JAXBException&lt;/span&gt; &lt;span style="color:4444FF;"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/span&gt;
&lt;a name="line5"&gt; 5&lt;/a&gt;     &lt;span style="color:#2040a0;"&gt;ExampleJaxbClass&lt;/span&gt; &lt;span style="color:#2040a0;"&gt;ex&lt;/span&gt; &lt;span style="color:4444FF;"&gt;=&lt;/span&gt; &lt;strong&gt;new&lt;/strong&gt; &lt;span style="color:#2040a0;"&gt;ExampleJaxbClass&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:4444FF;"&gt;;&lt;/span&gt;
&lt;a name="line6"&gt; 6&lt;/a&gt;     &lt;span style="color:#2040a0;"&gt;ex&lt;/span&gt;.&lt;span style="color:#2040a0;"&gt;setElementOne&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:#008000;"&gt;"first Element Value"&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:4444FF;"&gt;;&lt;/span&gt;
&lt;a name="line7"&gt; 7&lt;/a&gt;     &lt;span style="color:#2040a0;"&gt;ex&lt;/span&gt;.&lt;span style="color:#2040a0;"&gt;setElementTwo&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:#008000;"&gt;"second Element Value"&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:4444FF;"&gt;;&lt;/span&gt;
&lt;a name="line8"&gt; 8&lt;/a&gt;
&lt;a name="line9"&gt; 9&lt;/a&gt;     &lt;span style="color:#444444;"&gt;// Get a JAXB Context for the object we created above&lt;/span&gt;
&lt;a name="line10"&gt;10&lt;/a&gt;     &lt;span style="color:#2040a0;"&gt;JAXBContext&lt;/span&gt; &lt;span style="color:#2040a0;"&gt;context&lt;/span&gt; &lt;span style="color:4444FF;"&gt;=&lt;/span&gt; &lt;span style="color:#2040a0;"&gt;JAXBContext&lt;/span&gt;.&lt;span style="color:#2040a0;"&gt;newInstance&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:#2040a0;"&gt;ex&lt;/span&gt;.&lt;span style="color:#2040a0;"&gt;getClass&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:4444FF;"&gt;;&lt;/span&gt;
&lt;a name="line11"&gt;11&lt;/a&gt;
&lt;a name="line12"&gt;12&lt;/a&gt;     &lt;span style="color:#444444;"&gt;// To convert ex to XML, I need a JAXB Marshaller&lt;/span&gt;
&lt;a name="line13"&gt;13&lt;/a&gt;     &lt;span style="color:#2040a0;"&gt;Marshaller&lt;/span&gt; &lt;span style="color:#2040a0;"&gt;marshaller&lt;/span&gt; &lt;span style="color:4444FF;"&gt;=&lt;/span&gt; &lt;span style="color:#2040a0;"&gt;context&lt;/span&gt;.&lt;span style="color:#2040a0;"&gt;createMarshaller&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:4444FF;"&gt;;&lt;/span&gt;
&lt;a name="line14"&gt;14&lt;/a&gt;
&lt;a name="line15"&gt;15&lt;/a&gt;     &lt;span style="color:#444444;"&gt;// Make the output pretty&lt;/span&gt;
&lt;a name="line16"&gt;16&lt;/a&gt;     &lt;span style="color:#2040a0;"&gt;marshaller&lt;/span&gt;.&lt;span style="color:#2040a0;"&gt;setProperty&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:#2040a0;"&gt;Marshaller&lt;/span&gt;.&lt;span style="color:#2040a0;"&gt;JAXB_FORMATTED_OUTPUT&lt;/span&gt;, &lt;strong&gt;true&lt;/strong&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:4444FF;"&gt;;&lt;/span&gt;
&lt;a name="line17"&gt;17&lt;/a&gt;     &lt;span style="color:#2040a0;"&gt;StringWriter&lt;/span&gt; &lt;span style="color:#2040a0;"&gt;sw&lt;/span&gt; &lt;span style="color:4444FF;"&gt;=&lt;/span&gt; &lt;strong&gt;new&lt;/strong&gt; &lt;span style="color:#2040a0;"&gt;StringWriter&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:4444FF;"&gt;;&lt;/span&gt;
&lt;a name="line18"&gt;18&lt;/a&gt;
&lt;a name="line19"&gt;19&lt;/a&gt;     &lt;span style="color:#444444;"&gt;// marshall the object to XML&lt;/span&gt;
&lt;a name="line20"&gt;20&lt;/a&gt;     &lt;span style="color:#2040a0;"&gt;marshaller&lt;/span&gt;.&lt;span style="color:#2040a0;"&gt;marshal&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:#2040a0;"&gt;ex&lt;/span&gt;, &lt;span style="color:#2040a0;"&gt;sw&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:4444FF;"&gt;;&lt;/span&gt;
&lt;a name="line21"&gt;21&lt;/a&gt;
&lt;a name="line22"&gt;22&lt;/a&gt;     &lt;span style="color:#444444;"&gt;// print it out for this example&lt;/span&gt;
&lt;a name="line23"&gt;23&lt;/a&gt;     &lt;span style="color:#2040a0;"&gt;System&lt;/span&gt;.&lt;span style="color:#2040a0;"&gt;out&lt;/span&gt;.&lt;span style="color:#2040a0;"&gt;println&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:#2040a0;"&gt;sw&lt;/span&gt;.&lt;span style="color:#2040a0;"&gt;toString&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:4444FF;"&gt;;&lt;/span&gt;
&lt;a name="line24"&gt;24&lt;/a&gt;   &lt;span style="color:4444FF;"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/span&gt;
&lt;a name="line25"&gt;25&lt;/a&gt; &lt;span style="color:4444FF;"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div&gt;Here is the XML generated by the annotations above:&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version="1.0" encoding="UTF-8" standalone="yes"?&amp;gt;
&amp;lt;ns2:example xmlns:ns2="http://overstock.com/example"&amp;gt;
&amp;lt;elementOne&amp;gt;first Element Value&amp;lt;/elementOne&amp;gt;
&amp;lt;elementTwo&amp;gt;second Element Value&amp;lt;/elementTwo&amp;gt;
&amp;lt;/ns2:example&amp;gt;&lt;/code&gt;&lt;pre&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;Now for the problem. To create a marshaller, you first need to create a &lt;code&gt;JAXBContext&lt;/code&gt; via its &lt;code&gt;newInstance()&lt;/code&gt; factory method.  You can create a context for a specific JAXB class, as in the example above, or you can create a context for a list of packages (check out the javadoc &lt;a href="http://java.sun.com/webservices/docs/1.6/api/javax/xml/bind/JAXBContext.html"&gt;page&lt;/a&gt; for more).  When using the Restlet class &lt;code&gt;JaxbRepresentation&lt;/code&gt; (only available in Restlet 1.1m1), it uses the package version of &lt;code&gt;newInstance()&lt;/code&gt;, that's when I got my error above.  I didn't want to create an &lt;code&gt;ObjectFactory &lt;/code&gt;(apparently this is another way to get around the above error), at least not yet if I could help it, so I wanted to get some more info on the &lt;code&gt;jaxb.index&lt;/code&gt; file.  I couldn't find out much, I even looked at the JSR-222 &lt;a href="http://jcp.org/aboutJava/communityprocess/mrel/jsr222/index.html"&gt;spec&lt;/a&gt;.  Well, it turns out that all you need to do is add class names to the file and place the file in the package (directory) where your JAXB annotated classes reside (it's similar in one way to a jpa persistence.xml file but without the xml).  Here is the content of my &lt;code&gt;jaxb.index&lt;/code&gt; file for the example class above:&lt;/div&gt;&lt;pre&gt;&lt;code&gt;ExampleJaxbClass&lt;/code&gt;&lt;/pre&gt;As you can see, its just the class name, not the fully qualified name (the package name is determined by the directory you placed the file in) or the &lt;code&gt;.class&lt;/code&gt; name.

If you want to test this out, we need to slightly change the test above.  Modify line 10 in the unit test above to look like this:
&lt;pre&gt;&lt;span style="color:#2040a0;"&gt;JAXBContext&lt;/span&gt; &lt;span style="color:#2040a0;"&gt;context&lt;/span&gt; &lt;span style="color:4444FF;"&gt;=&lt;/span&gt; &lt;span style="color:#2040a0;"&gt;JAXBContext&lt;/span&gt;.&lt;span style="color:#2040a0;"&gt;newInstance&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:#2040a0;"&gt;ex&lt;/span&gt;.&lt;span style="color:#2040a0;"&gt;getClass&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;.&lt;span style="color:#2040a0;"&gt;getPackage&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;.&lt;span style="color:#2040a0;"&gt;getName&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:4444FF;"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:4444FF;"&gt;;&lt;/span&gt;&lt;/pre&gt;
If the package &lt;code&gt;com.overstock&lt;/code&gt; does not have &lt;code&gt;jaxb.index&lt;/code&gt; file, this change will cause the test to throw the &lt;code&gt;JAXBException&lt;/code&gt;.  Add the file and everything works great.

If you know where there is good documentation on this let me know I couldn't find any :-)
&lt;div&gt;
&lt;/div&gt;&lt;div&gt;Code formatting courtesy of &lt;a href="http://www.palfrader.org/code2html/code2html.html"&gt;Code2HTML&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4457781382344670969-4364665694776534689?l=cmaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmaki.blogspot.com/feeds/4364665694776534689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4457781382344670969&amp;postID=4364665694776534689' title='19 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/4364665694776534689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/4364665694776534689'/><link rel='alternate' type='text/html' href='http://cmaki.blogspot.com/2007/09/annotated-jaxb-classes.html' title='Annotated JAXB Classes'/><author><name>Chris Maki</name><uri>http://www.blogger.com/profile/16510702653624658586</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/58/164933668_cceadb11bf.jpg?v=0'/></author><thr:total>19</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4457781382344670969.post-1031998386401425192</id><published>2007-09-14T22:00:00.000-06:00</published><updated>2007-09-16T12:17:51.209-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='JPA'/><title type='text'>Goodbye consulting, hello Overstock.com</title><content type='html'>It would have been much better if I'd posted this month's ago but I've been so busy with work and the &lt;a href="http://www.ujug.org/"&gt;UJUG&lt;/a&gt; (Utah Java User Group) that I haven't had much time to blog.  I'm hopping this will change from today onward. 

So my first bit of news is that after being a consultant for most of the last eight years or so I've finally decided to take a full-time job with &lt;a href="http://www.overstock.com/"&gt;Overstock.com&lt;/a&gt;.  I actually started back in April of this year, so I've been there for a while now.  I must say that I'm having more fun at Overstock.com than I've had in years.  That is part of the reason I haven't been blogging, my day job is so satisfying that when I get home I don't need to challenge myself with something interesting, I get to do interesting stuff all day long.

I'm hoping to start blogging a little more often (like more than every two months) and talk a little bit about what we are doing, from a technology standpoint that is.

On another note, I just finished an article on JPA for &lt;a href="http://www.theserverside.com/"&gt;TheServerSide.com&lt;/a&gt;.  I think it will be posted on Tuesday of next week (Sept. 18th).  If you are interested in looking at the source, you can check out the project page &lt;a href="http://www.rateyourwriting.com/maven2/site"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4457781382344670969-1031998386401425192?l=cmaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmaki.blogspot.com/feeds/1031998386401425192/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4457781382344670969&amp;postID=1031998386401425192' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/1031998386401425192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/1031998386401425192'/><link rel='alternate' type='text/html' href='http://cmaki.blogspot.com/2007/08/good-bye-consulting-hello-overstockcom.html' title='Goodbye consulting, hello Overstock.com'/><author><name>Chris Maki</name><uri>http://www.blogger.com/profile/16510702653624658586</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/58/164933668_cceadb11bf.jpg?v=0'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4457781382344670969.post-8713700374264527829</id><published>2007-07-20T05:04:00.000-06:00</published><updated>2007-07-31T14:29:24.553-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac OS'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><title type='text'>Salsa and the iPhone</title><content type='html'>On Tuesday my wife and I (along with our three boys) went out for dinner. At some point my wife asked what time it was, so I reached down, grabbed my mobile phone (&lt;a href="http://direct.motorola.com/hellomoto/slvr/"&gt;SLVR&lt;/a&gt;) and much to my surprise, it slipped out of my hands and right into the salsa in front of me.  Once I cleaned it off, I told my wife it was 6 PM or something.  Then I realized that the USB port was full of salsa.  I cleaned it out the best I could and hoped that I hadn't toasted another phone (the last time I had a &lt;a href="http://www.sonyericsson.com/spg.jsp?cc=us&amp;lc=en&amp;ver=4000&amp;template=ps1_1_2_3&amp;zone=ps&amp;lm=ps1&amp;pid=9932"&gt;"cool"&lt;/a&gt; phone was about three years ago and that one was washed with the rest of my clothes about a week after I got it).  When we got home, I plugged it in and let it charge all night.  The next day, around 9 AM or so, I started to get the low-batter warning.  Around 10 AM, it shut off.  Another phone, gone.

Joking around I said, now it's time for an iPhone.  After talking with my wife for a while I realized that it would be really cool to get an iPhone.  After all, I was now phoneless (never mind the beaten up, featureless one I had at home).  A quick run down to our local &lt;a href="http://www.apple.com/retail/thegateway/week/20070729.html"&gt;Apple store&lt;/a&gt;, and I had an 8GB iPhone.

&lt;img src="http://images.apple.com/iphone/images/contentfooter_activation20070625.png"/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4457781382344670969-8713700374264527829?l=cmaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmaki.blogspot.com/feeds/8713700374264527829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4457781382344670969&amp;postID=8713700374264527829' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/8713700374264527829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/8713700374264527829'/><link rel='alternate' type='text/html' href='http://cmaki.blogspot.com/2007/07/salsa-and-iphone.html' title='Salsa and the iPhone'/><author><name>Chris Maki</name><uri>http://www.blogger.com/profile/16510702653624658586</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/58/164933668_cceadb11bf.jpg?v=0'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4457781382344670969.post-8741313728600595072</id><published>2007-07-13T22:12:00.000-06:00</published><updated>2007-07-15T13:22:07.063-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='community'/><title type='text'>I was on the Java Posse?</title><content type='html'>&lt;img hspace="10" align="left" src="http://groups.google.com/group/javaposse/icon?v=2&amp;pfb=do"/&gt;I was really surprised last week wen I was listening to the &lt;a href="http://javaposse.com/"&gt; Java Posse&lt;/a&gt; and who are they interviewing at the java.net booth?  &lt;a href="http://java.sun.com/community/usergroups/"&gt;Java User Group&lt;/a&gt; folks, and low and behold there I am.  Check out &lt;a href="http://javaposse.com/index.php?post_id=228551 "&gt;episode #129&lt;/a&gt; at the 39:29 mark to hear about the &lt;a href="http://www.ujug.org"&gt;Utah Java User Group&lt;/a&gt;. 

BTW, if you don't already listen to the Posse, I'd highly recommend it, it's a great source for the latest news and interviews with the who's who of the Java community.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4457781382344670969-8741313728600595072?l=cmaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmaki.blogspot.com/feeds/8741313728600595072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4457781382344670969&amp;postID=8741313728600595072' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/8741313728600595072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/8741313728600595072'/><link rel='alternate' type='text/html' href='http://cmaki.blogspot.com/2007/07/i-was-on-java-posse.html' title='I was on the Java Posse?'/><author><name>Chris Maki</name><uri>http://www.blogger.com/profile/16510702653624658586</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/58/164933668_cceadb11bf.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4457781382344670969.post-2730403335135830821</id><published>2007-06-12T07:55:00.000-06:00</published><updated>2007-06-12T08:24:21.634-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac OS'/><title type='text'>Safari 3.0 Public Beta</title><content type='html'>After hearing about the various &lt;a href="http://www.apple.com/macosx/leopard/"&gt;Mac OS X Leopard&lt;/a&gt; announcements, I was happy to see a public beat for &lt;a href="http://www.apple.com/safari/"&gt;Safari&lt;/a&gt;.  I downloaded it yesterday and started to play around with it.  I was really surprised, it is a lot faster than Safari 2.x.  Not only is it faster, but I cannot live without the new inline find feature - it is so cool.  Yes Firefox has had this for years, but not as usable as Safari's implementation.  As a longtime &lt;a href="http://www.gnu.org/software/emacs/"&gt;emacs&lt;/a&gt; user, I've always liked inline searching way more than the popup finder window most applications have.

If you haven't tried out the new Safari yet, I'd suggest you give it a try.  If you are a windows user, have you tried it yet?  The closest I get to windows is &lt;a href="http://www.parallels.com/en/products/desktop/"&gt;Parallels&lt;/a&gt; on my mac and I try to avoid that if possible too.

Oh yeah, Apple also fixed the annoying quit "feature" where Safari would just quit, no matter how many windows you had open, if you hit apple-q (or Safari-&gt;Quit Safair).  Again, another Firefox feature but a welcome addition nonetheless. 

Go windows?  Let me know how Safari performs.

&lt;b&gt;Update&lt;/b&gt;: I just installed Safari in Windows via Parallels, and to my surprise not only did Safari get installed but so did &lt;a href="http://www.apple.com/macosx/upgrade/softwareupdates.html"&gt;Software Update&lt;/a&gt;.  Wow, Software Update is an integral part of Mac OS X.  Does this mean that Apple is starting to take over the Windows desktop?  What do you think?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4457781382344670969-2730403335135830821?l=cmaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmaki.blogspot.com/feeds/2730403335135830821/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4457781382344670969&amp;postID=2730403335135830821' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/2730403335135830821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/2730403335135830821'/><link rel='alternate' type='text/html' href='http://cmaki.blogspot.com/2007/06/safari-30-public-beta.html' title='Safari 3.0 Public Beta'/><author><name>Chris Maki</name><uri>http://www.blogger.com/profile/16510702653624658586</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/58/164933668_cceadb11bf.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4457781382344670969.post-6660258439654307742</id><published>2007-05-08T16:21:00.000-06:00</published><updated>2007-05-09T15:29:05.619-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaOne'/><title type='text'>CommunityOne comments so far</title><content type='html'>After JavaOne last year, I told myself I'd attend NetBeans day in 2007.  A month or so ago I registered for JavaOne and signed up for NetBeans day (not a very smooth process, I actually had to call someone to register for NB days because I'd already registered for J1) anyway, just after that Sun started to promote CommunityOne Day.  So here I am at the first CommunityOne day, the day before JavaOne starts.  The reason I wanted to come to NetBeans day (now CommunityOne day) was because it is so small.  &lt;a href="http://blogs.sun.com/jag/"&gt;James Gosling&lt;/a&gt; just walked by me and he wasn't mobbed :-)  I attended a presentation earlier today where &lt;a href="http://blogs.sun.com/jonathan/"&gt;Jonathan Schwartz&lt;/a&gt; was speaking and he was standing right behind me before the session started.  Where else could you talk to Jonathan Schwartz with only 100+ people in the room?  

The message today has been pretty clear, Sun is going to open source all of its SW and &lt;b&gt;innovation&lt;/b&gt; is the key.  Almost every talk I went to today emphasized innovation.  The argument goes like this, if Sun isn't trying to control everything, then their engineers are free to think about and work on innovation, it's what will set Sun apart from the others.  Jonathan described the market as a really big pie and that there is plenty of room for many players.  He also described how Sun will make money with this strategy, pull-through business by selling support, services and hardware.  

I think for me personally, I'm really excited about what Sun is doing.  By making everything open source and freely available, means I can use the SW at home and on my own personal projects and in turn I can use it at work.

I can see CommunityOne day being really big in a year or three so if you get a chance, I'd suggest trying to attend next year, before it's as big as JavaOne itself.  For me, being able to talk to Jonathan or stop James in the hall is reason enough to come to CommunityOne.  The content is somewhat different from J1.  Instead of only being about Java (you could argue J1 is also going this way) you get exposure to everything Sun is doing in the open source space.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4457781382344670969-6660258439654307742?l=cmaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmaki.blogspot.com/feeds/6660258439654307742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4457781382344670969&amp;postID=6660258439654307742' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/6660258439654307742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/6660258439654307742'/><link rel='alternate' type='text/html' href='http://cmaki.blogspot.com/2007/05/communityone-comments-so-far.html' title='CommunityOne comments so far'/><author><name>Chris Maki</name><uri>http://www.blogger.com/profile/16510702653624658586</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/58/164933668_cceadb11bf.jpg?v=0'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4457781382344670969.post-472369656664121561</id><published>2007-05-08T15:01:00.000-06:00</published><updated>2007-05-08T22:39:23.822-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaOne'/><title type='text'>Java SE: Present and Future</title><content type='html'>Presented by Danny Coward Java SE Platform Lead, Sun Microsystems (&lt;a href="http://blogs.sun.com/dannycoward"&gt;blogs.sun.com/dannycoward&lt;/a&gt;)

Everything you need to know about what's going on in the Java Platform, Standard Edition (Java SE platform).  The goal is to give you an overview of everything that has happened over the last year or so.  Danny will talk about things available today and things that will be covered in SE 7 tomorrow.

Agenda, it's all about Java SE 6 Platform, the making of Java SE:

java speaks in many tongues,

breaking up is hard to do,

Java SE on the desktop,

some important upgrades.

Changing the face of java, we are shown a slide with a timeline showing the various Java releases: JDK 1.0 pre 1997, J2SE 1.2 pre '99, J2SE 1.3 around 2000, j2SE 1.4 2002, pre 2005 J2SE 5.0 and just before 07 Java SE 6.  Java SE 7 may be available just before 2009.  

Year in review, JDK 6 adoption, slightly more than half of all downloads of the JDK are SE 6.0. Java 6 JRE was release in April of 07.  There are about 50,000,000 JDK downloads a month.

&lt;a href="http://blogs.sun.com/dannycoward/entry/java_se_6_top_ten"&gt;The top 10&lt;/a&gt; new features in SE 6, Web Services, Scripting,  database, more desktop API's (SwingWorker, JTable sorting and filtering, GroupLayout - the layout manager used by Matisse), monitoring and management, compiler access, pluggable annotations (define your own annotations), desktop deployment, security, the -ilities: quality, compatibility, stability. 

Tools as part of SE 6: jconsole, jps, jmap, jhat (analyze memory usage), jstack (see BOF-2816), you don't need to start the JVM with any special options to use the probs, they attach dynamically.  Java SE 6 is much faster than previous version of Java.

Today, Java SE is open sourced, available under GPL.  There are a couple of components only available in binary format due to licensing issues.  As part of Java SE 6, the team started to do weekly builds and that made the move to open source much easier.

Open JDK Community now available at &lt;a href="http://openjdk.java.net/"&gt;openjdk.java.net&lt;/a&gt;.  An interim governance board has also been establish (see &lt;a href="http://cmaki.blogspot.com/2007/05/javaone-general-session.html"&gt;Opening Session&lt;/a&gt; for member names).

How Java SE Platform gets developed, the JCP defines API Specifications and OpenJDK implements those specifications.

Why go multi-lingual?  the Java programming language is the best general purpose language!  Many other languages, many other virtues, rapid prototyping and experimentation, particular styles of programming, mixing different types of developers, or just for fun.  In Java SE 6, Sun implemented JSR 223, Scripting for the Java Platform, developer APIs to mix script fragments in, Framework APIs for adding script engines, Collecting conforming scripting engines, see scripting.java.net, Sun added a JavaScript technology engine, JavaScript technology works out of the box.  Here is a code sample:

&lt;tt&gt;ScriptEngineManager m = new ScriptEngineManager();
ScriptEngine js = m.getEngineByExtension("js");
js.eval("print('Hello, world!')");&lt;/tt&gt;

Check out the SE 6 demo directory for examples of how to use the new features.

Multiple Languages in JDK Version 7, turbo-charging scripting engines, new bytecode for dynamic method dispatch, 'supporting dynamically typed languages on the Java Platform (JSR 292)', investigate hot swapping.  Bundling more dynamic languages and engines, see JSR 274, JRuby, Jython, BeanShell, JavaFX technology script.  Java SE is an enabling technology for these new technologies.

Changes in Java SE 7 (for a complete list, check out Alex Miller's &lt;a href="http://tech.puredanger.com/java7"&gt;blog&lt;/a&gt;), reading is more important than writing, one language same meaning; everywhere, simplicity matters.  Seeking a small number of changes for SE 7.  Candidate changes for Java SE 7, superpackages, extensions to the annotation syntax, language support for java technology properties, control abstraction constructs (closures, CICE, first-class methods), operator overloading,rough edges (shorter variable declaration, strings in switch statements, etc. 

Modularity in Java SE 6, deployment time, interfaces and implementation classes, information hiding, assertions.  Deployment time, JAR and Resources framework.  One of the problems is with the packaging structure, let's say you have a picture and text package and they in turn use a data package, but the client can access all three package.  What if you only want to selectively provide access to packages or classes in the package you can use superpackages.  For an indepth discussion see the &lt;a href="http://blogs.sun.com/andreas/resource/superpackage_strawman.html"&gt;Strawman Proposal&lt;/a&gt; for JSR 294.

Packaging, as in ZIP files and later JAR files, was originally put together for applets, but the specification hasn't changed in quite a while.  This will allow you to define versions, dependencies, etc. and will likely be called JAM files, JAR file will still be supported however.  For modularity see superpackages JSR 294, modularity 277 &amp; 291 OSGi interoperability.  They both have open mailing lists.

Swing development, swing is a powerful toolkit, some developers are put off, time to make it easier.  See JSR 295, 303, and 296 for how Swing will be simplified. However, SE 7 is a ways off, so what can we do for SE 6?  How does Java stack-up against Flash?  Not well, start-up time is poor, installing the JRE is slow, install tool is not consumer friendly and the size of the JRE keeps getting bigger and bigger (~ 12 MB).  To fix these problems, Sun is going to release a consumer JRE release in late 2007 early 2008.  Qickstarter, pre-load the cache, before launch, not the same as having a running VM, cooperates with the OS, a radically improved experience.

Java Technology-based kernel, modularizing the JRE software, just enough to run "hello world", install the rest in the background: referencing a class, Class.getResource or equivalent, System.loadLibrary() or equivalent, custom JRE version for applications that need it.  As a prototype, the team put together some trial, to run "hello world" the JRE was 2 MB, the SwingSet2 demo was just under 4 MB, whereas the whole JRE is 12MB.

In SE 7, JMX is going to be revamped, see JSR-255 Java Management Extensions v 2.0 (JMX) and JSR-262 for web services connector for JMX agents. JSR-203, in early draft, a new file system API, java.nio.filesystem.Filesystem, listen for file-system changes.  Other Kiri's to note 360 Javadoc Tag Technology Update and JSR 310 Date and Time API.  

Java SE 6 is available today, Open JDK is being built

See &lt;a href="http://planetjdk.org/"&gt;planetjdk.org&lt;/a&gt; for Java SE blogs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4457781382344670969-472369656664121561?l=cmaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmaki.blogspot.com/feeds/472369656664121561/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4457781382344670969&amp;postID=472369656664121561' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/472369656664121561'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/472369656664121561'/><link rel='alternate' type='text/html' href='http://cmaki.blogspot.com/2007/05/java-se-present-and-future.html' title='Java SE: Present and Future'/><author><name>Chris Maki</name><uri>http://www.blogger.com/profile/16510702653624658586</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/58/164933668_cceadb11bf.jpg?v=0'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4457781382344670969.post-1399635650847617906</id><published>2007-05-08T14:34:00.000-06:00</published><updated>2007-07-15T13:20:57.571-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaOne'/><title type='text'>JavaOne General Session</title><content type='html'>Well, I managed to almost get a front row seat, I'm in row three, right in front of the main podium, very cool.  They have a DJ (Anna, &lt;a href="http://www.anon-music.com/"&gt;http://www.anon-music.com/&lt;/a&gt; - not sure if this is the right link but I think that's what John said) playing some good trance music (if you like that sort of thing) and now the DJ is being shown on the big screen,she's mixing songs, and she even has a record player she's using (BTW, she's using a mac and a Dell, I think it's a Dell).  One interesting thing, all the web browser being shown on giant screens are &lt;a href="http://www.apple.com/safari/"&gt;Safari&lt;/a&gt;, the Mac OS browser, I guess the folks at Sun like Apple.  Another Apple note, the two laptops on the podium's are &lt;a href="http://www.apple.com/macbookpro"&gt; MacBook Pro&lt;/a&gt;'s and there's also a PS 3.

Here is a list of some of the pages shown being shown on the screens up front: &lt;a href="www.foundmagazine.com"&gt;www.foundmagazine.com&lt;/a&gt;, &lt;a href="www.mulletsgalore.com/"&gt;www.mulletsgalore.com/&lt;/a&gt;, &lt;a href="www.wired.com"&gt;www.wired.com&lt;/a&gt;, &lt;a href="www.sciencedaily.com"&gt;www.sciencedaily.com&lt;/a&gt;, &lt;a href="http://www.zdnet.com/"&gt;http://www.zdnet.com/&lt;/a&gt;, &lt;a href="http://www.abc.go.com/"&gt;http://www.abc.go.com/&lt;/a&gt; (showing the Lost page), &lt;a href="www.foodnetwork.com"&gt;www.foodnetwork.com&lt;/a&gt;, &lt;a href="www.justin.tv"&gt;www.justin.tv&lt;/a&gt;, &lt;a href="www.tv.com"&gt;www.tv.com&lt;/a&gt;, &lt;a href="espn.go.com"&gt;espn.go.com&lt;/a&gt;, &lt;a href="www.oreillynet.com"&gt;www.oreillynet.com&lt;/a&gt;, the Vine from E! on-line, they are also running some animations on &lt;a href="http://earth.google.com/"&gt;Google earth&lt;/a&gt;, and &lt;a href="http://www.ff0000.com/"&gt;http://www.ff0000.com/&lt;/a&gt;.  They are also showing videos of folks walking down to the session.

It's 8:30, so the session should be starting any minute now... ah, it's starting now, they just asked everyone to take their seats.  Okay, I thought it was starting but it seems we are still waiting, I guess everyone hasn't sat down yet.  BTW, I just stood up and looked around, the room it completely packed, there are people as far as I can see, looks like there is a good attendance this year.

Rich Green is pacing around, getting ready to talk I think.  The music just got a lot louder and then faded out.  John Gage was just announced and is now on stage.  "Welcome to the 12th annual JavaOne Conference", said John Gage.  John read from an article in today's &lt;a href="http://www.nytimes.com/2007/05/08/technology/08sun.html?_r=1&amp;oref=slogin"&gt;NY Times&lt;/a&gt;.  John held up the SavJe phone and said Sun is going to Open Source all the SW that made up the phone.  Sun wants to make the phones so ubiquitous that the cost comes down.  We need to remove our dependency on power and create new power sources (e.g. solar).  

John asked that everyone forget that they are British, Norwegian, etc. and be Brazilian!  Then all the Brazilians started to yell and holler, "that's what Brazilians are like, warm and friendly".  Don't sit with someone you know, sit with someone you don't know.  Next he had everyone stand up and then asked those first-time attendees to sit down, then 2nd, 3rd, 4th, etc. and ended with quite a few 12th time attendees still standing.

One of the goals for this year's J1 is to be &lt;a href="http://www.carbonfund.org/"&gt;zero-carbon&lt;/a&gt;  or &lt;a href="http://en.wikipedia.org/wiki/Carbon_neutral"&gt;carbon-neutral&lt;/a&gt;, that is, all carbon expended for travel, catering, toilet flushing, etc. be accounted.  They didn't realize just how massive an undertaking this would be, so they are going to work towards being carbon-neutral for next year's JavaOne.  One key to being carbon-neutral is having small devices instead of large one's we've used before.  

We are now shown a video on how Java technology effects all of our lives.

Next up is Rich Green, EVP Software, Sun Microsystems, Inc.  We are going to have some big name guests on the stage today.  Later we will talk about some new things we are going to be doing with Java.  Rich is taking about, technology as a catalyst, the network is an unstopable social force.  More than 1/2 a billion folks joined the network this year compared to millions (I missed the number) connecting via traditional computers.  This is Rich's one year anniversary of returning to Sun.  Here are some numbers for Java, 6M Developers, 5.5B Devices, 2.5M GFD downloads, 800M desktops, 1,8B phones, 11M phones.  

Here is a state of Java summary: GF from Enterprise to Media, V2 is an enterprise ready with scripting source (JRuby), available for Solaris, Windows, Linux and Mac OS X.  GF is an enterprise transaction system, but it can do a lot more, so using the GF technology as a server-side technology.  

Rich asks up Martin Harriman, VP Marketing &amp; Biz Dev from Ericsson to join him to talk about how Ericsson is going to open source (they are not doing a good job of telling us what it is, they mentioned it once and I missed it) multi-media IMS using GF on the server-side.

Real time java: Ultimate predictability, finance, telecom, aviation, industrial-control and more, real-time with conventional tools and standard operating system.

Given this code: 

&lt;tt&gt;java.lang.Thread&lt;/tt&gt;

can now be replaced with

&lt;tt&gt;javax.realtime.RealtimeThread&lt;/tt&gt;

The CIO of NASDAQ is coming up Anna Ewing, the NASDAQ has more transaction per day than the next two equity exchanges combined,  for a total of 150,378 transactions per second and it's all on Java technology.  Anna is really excited about real-time Java and NASDAQ will be using real time Java.  Her team is currently working with Rich's at Sun on using this technology.

Java is Digital Entertainment, meet millions of consumers where they live - engage, PS 3, Blu-ray Disc, set top boxes.  Next up is Tom Hallman, the VP of production operation Digital Authoring Center, Sony.  Tom is talking about BDJ (Blu-ray Disc Java) and online connectivity.  So this year when you buy S-M 3 at Christmas you'll see trailers relevant to 07, but next year you'll see trailers for '08 (live content).  Tom shows us Open Season on BD and how Java technology is being used for animation and Tom said they are looking for Java folks to do something new.

NetBeans 6: Unlock you potential, dynamic scripting with Java: JRuby 1.0 and JavaScript, GUI builder further simplifies client apps, robust new editor, modular packs for everything you need (Mobility, C/C++, Web, and more). Announcing today, OpenJDK, Sun is announcing the completion of open sourcing Java. Next, the governing board for Java, Doug Lea (State University of NY), Fabiane Nardo (CTO VIDATIS), Simon Phipps, Mark Reinhold, Dalibor Topic are the board.  Also announced today, is the open sourcing of the TCK to ensure compatibility across the OSS community (note: I wonder if Harmony will be happy with this or not). So why did Sun choose GPLv2 as the license for Java?  The GPL license forces all the development to be done in the open to keep all versions compatible.  Java and NB will be part of the next Ubuntu release all thanks to the GPL licensing of these tools.

Using a MacBook Pro, Rich is composing an email to the openjdk.net community, body: Today begins the next phase for Java.  I am pleased to announce that we have completed the open source release of Open JDK.  It's a great day for innovation - and remember compatibility matters! Rich.  The email was sent off to the Open JDK community.  We are now done open sourcing Java.

Open equals opportunity, so what's next?  It's open so what do we do now... Rich said some things could be done better, Java on servers is great, they are on mobile devices and desktops, but there is something else folks want them to do.  It's time to reach the rest of the planet, Humankind: the biggest opportunity of all. Everyone want's Java to be faster, faster, faster (download, execution, etc.)  The following releases of JDK 6 will all be focused on making all areas faster.

But wouldn't it be cool if... let's a new focus on media, a new platform, JavaFX.  Introducing JavaFX, consumer focused family of Java technologies, high impact consumer markets, based on Java SE.  It's all based on Java SE.


The big announcement is: &lt;b&gt;JavaFX&lt;/b&gt;.


Introducing JavaFX Script, scripting language for rich Internet applications, road map for content authoring tools, designed for content professionals, leverages Java's unmatched reach, stability and security.  Rich is going to show us a demo, and is asking up Dr. James Gosling (the father of Java).  James things JavaFX script is a really exciting new technology, created by one of the Sun engineers Chris Oliver.  The system is all about creating really rich, exciting Java interfaces.  Rich said, this is Sun at it's best, an engineer at Sun working on his own.  Chris Oliver joins James and Rich on stage.  First demo is a rewrite of a Motorola site using JavaFX.  Underneath is Java, Swing, and Java 2D.  It took Chris three days to reproduce a really cool looking site from Motorola, (see studiomoto for an example of what was reproduced).  Next is a partial recreation of Tesla Motors site but all in JavaFX.  A demo release is now available.  JavaFX script runs on all JavaSE release out there without modification.

But, wouldn't it be cooler if we could reach everyone else?  Is there a way to take the power of Java on the desktop and make it available to everyone else?  JavaFX Mobile, The network in your hand.  Complete and fully integrated Java software system for mobile devices. Open, standards-based Java technologies, Supports JavaFX content authoring tools.  When Rich went to show the demo it turns out he had the wrong handset.  Then he shows a (editor note: iPhone like) phone all written in/with JavaFX. It is an open development platform. Sun wants to separate the OS from the phone much like we would do with a desktop and it's OS. This will be run as a traditional OEM business model. 

Now Rich is going to show us a showcase application, first Rich asks up Marco Boerries, SVP of Yahoo!, Yahoo! Go. Yahoo! Go, reinvents mobile search, to create a set of search results that are mobile phone friendly.  We see flickr, maps, news, etc. Yahoo! Go is an open system, later this year, Yahoo! will let developers get access to the code so they can add their own content.

Reaching humankind: now you can.  

Next up is Jonathan Schwartz, CEO and President Sun.  Jonathan thanked Rich for doing what he had hoped Rich would do, drive creativity like JavaFX. Not only does Sun want to reach the largest companies and countries of the world but they also want to reach the smallest companies and countries in the world.  While in the US we are used to computers as the gateway to the Internet the rest of the world uses mobile devices.  

Jonathan welcomes up, Dr. Djibril Diallo, NY Office of Sport for Development and Peace (&lt;a href="http://www.un.org/youthsummit/home.asp?page=home"&gt;www.un.org/youthsummit&lt;/a&gt;).  It is unacceptable that 1.5 B people will go to bed tonight hungry.  The UN is fighting for equality between women and men through out the world (no country teats their men and women the same). Sun is going to establish, engineers without boards (like doctors without borders).  Sun is going to work with the UN on how to start connecting SW engineers and connect them to other engineers in the world. Jonathan asked Scott McNealy (Chairman and Co-Founder Chairman, Sun Federal, Inc.to join them on the stage to talk about bringing education to the world.  Scott said that with Rich Green, Sun now has it's own version of Steve Jobs, everyone laughed. When Scott went to look for free open information for his kids and couldn't find anything, so Sun started curriki.org.  The goal is to give the entire world access to a first grade to twelveth grad education.  

Final slides: Unstoppable growth, java joined world's largest OSS community, rich Internet applications, network in your hand.  Imagine the possibilities...

java.net the source for Java Technology Collaboration, Get Involved... Contribute... Innovate.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4457781382344670969-1399635650847617906?l=cmaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmaki.blogspot.com/feeds/1399635650847617906/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4457781382344670969&amp;postID=1399635650847617906' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/1399635650847617906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/1399635650847617906'/><link rel='alternate' type='text/html' href='http://cmaki.blogspot.com/2007/05/javaone-general-session.html' title='JavaOne General Session'/><author><name>Chris Maki</name><uri>http://www.blogger.com/profile/16510702653624658586</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/58/164933668_cceadb11bf.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4457781382344670969.post-7028649137308911448</id><published>2007-05-07T15:21:00.000-06:00</published><updated>2007-05-08T22:22:32.891-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaOne'/><title type='text'>GlassFish: Getting Started and What's New in GlassFish V2</title><content type='html'>I don't have anything planned till noon, so I thought I'd check out the "GlassFish: Getting Started and What's New in GlassFish V2" talk.  Eduardo Pelegri-Llopart of Sun and the GlassFish Team (Karen) are giving an overview of GF V2. 

I got to see a preview of GF V2 last year, so I'm hoping to see some more cool things this time around.  

Karen started off, welcoming everyone to the first ever, "GlassFish Day".  Since the are looking for user feedback, they've offered everyone who fills out a survey either a T-Shirt, memory stick (with GF v2 preloaded), or a sticker.  Karen told us that instead of meeting Jonathan for lunch, he'll join us in this room for a Q&amp;A for about 30 minutes, then it's lunch.

Next up is Eduardo to talk about what's new in GF.  In order to best answer everyone's questions, the leads for each technology in GF are here to answer questions, after the presentation.  

For more info on GF, check out &lt;a href="http://blogs.sun.com/theaquarium"&gt;http://blogs.sun.com/theaquarium&lt;/a&gt;, &lt;a href="http://blogs.sun.com/stories/"&gt;http://blogs.sun.com/stories/&lt;/a&gt;, &lt;a href="https://glassfish.dev.java.net/"&gt;https://glassfish.dev.java.net/&lt;/a&gt;.  He is now showing a time-line of Project GlassFish, showing the launch of GF June '05, v1 final JavaOne '06, V2 beta 2 J1 '07.  What is Gf?  It's the Java EE 5 RI, it's enterprise quality, bases for Sun's AS 9.0 &amp; 9.1.  What does RI mean?  When you create a JSR, the EG also needs to produce either a proof-of-concept or implementation to prove the technology can be created.  Earlier RI of other JSR's were proof-of-concept, but in the case of GF, this RI is actually production ready, not a prototype.  It has a dual license, either CDDL or GPL v2, you as the user of the framework get to decide the type of license you want.   GF is also a community, like Apache, but not nearly as large - Eduardo's words, not mine :-)  In addition, GF is also a collection of other projects, like jMaki, Phobos, BlogApps, JAX-RS, etc.  An important note, all GF related discussions, etc. are kept outside of Sun, except for a few instances, GF is it's own project run outside of Sun, outside of the firewall.

Next slide, "A Taste of Java EE 5", for those who have not seen it yet...  first we are shown an overview of J2EE 1.4, its powerful, a standard, but too difficult to get started, ever simple apps need boring boilerplate, in Java EE 5 we eliminate the boiler plate, and make simple things simple.  Java EE 5.0 = (J2EE 1.4).next, the theme of Java EE 5 is "Ease of Development".  It's embraces a POJO based programming model.  We are shown the standard, here is how it was and here is what it's like now slides for JAX-RPC,  of course the Java EE 5 version is about 5 lines of code with no deployment descriptor (compared to the 30 lines of code and 50 lines of XML for the J2EE 1.4 version). Bill Shannon said, "Not your father's J2EE".  That's it about Java EE 5, just a taste.

Now on to the GF community, the principles of the community are:
&lt;ul&gt;
  &lt;li&gt;industry-leading technology, (no secret sauce)
  &lt;li&gt;want adoption of code base (no secrete sauce for code base
  &lt;li&gt;this is all of it (editors note: aka not like JBoss)
  &lt;li&gt;community centered
  &lt;li&gt;transparency
  &lt;li&gt;continuous improvements
  &lt;li&gt;participation
  &lt;li&gt;integrated
  &lt;li&gt;open standards - JCP
  &lt;li&gt;etc.
  &lt;li&gt;OSI License
  &lt;li&gt;clear copyright (SCA).
&lt;/ul&gt;

If you contribute code to GF you keep the copyright but you also give the copyright to GF (very similar to what Apache does).  Why is Sun doing Open Source?  Ubiquity, lower barrier to adoption, better products, more know-how, larger, faster adoption of Java EE 5.  Revenue - training, support, consulting, systems (HW).  Sun get big portion of pie, as pie gets bigger so does Sun's share.

Code donations include Sun Microsystems, Oracle, TmaxSoft, BEA, JBoss, Jetty, etc. etc.

GF v1 has been released, last year at J1 '06.  GF v2 includes everything that could not make it into GF v1, new WS stack, load balancing, cluster management, some scripting support, community, transparency, adoption.  GF v3 better modularization, better scripting, etc.  GF would like everyone using Tomcat to start using GF.

For memory replication Sun used to use a HADB (High availability DB), here they would store the HTTP session state, EJB's, etc. Now GF also has memory replication, which most customers will likely use.  Memory replication of of the box, create a domain, use the cluster admin profile, create cluster and instances deploy your application with availability-enabled=true and that is it.  The underlying technology used for memory replication is JXTA, originally developed for peer-to-peer but is good for managing memory replication.

JAX-WS and JAXB implementations, considering giving this a new name because of their popularity.  JAXB RI is the de-facto industry standard, JAX-WE is much faster than Axis. 

Next is JBI (Java Business Integration), built in support for JBI (JSR-208), JDB run-time OpenESB.

As for GF, there used to be multiple profiles, platform, enterprise, etc. now there is just one download and the developer/administrator choose the profile  the time of domain creating.  Improve user experience based on the profile chosen, GF v2 will support Developer, Cluster, and Enterprise profiles.

There are some security enhancements, JSR-196, ECC (Elliptic Curve Cryptography), JNKS (java key store), support for "assign-groups" in security realm, support for JDBCRealm.  

One the Web Container, includes JSF, JSP, Grizzly, ARP (Asynchronous Request Processing) and comet, non-blocking SSL, Apache ajp protocol, in-memory JSR 199 style JSP compilations, generic NIO framework Grizzly 1.5)

Top Link Essentials/ JPA, oracle contribution, very active community Oracle, Sun, TmaxSoft, independents, Pluggable in GF, JEUS, Jonas, Tomcat, etc.

GF V3 will have a modular system, you only load what you need, open, starts in 0.5 seconds on the best PC, 0.7 on Eduardo's laptop&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4457781382344670969-7028649137308911448?l=cmaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmaki.blogspot.com/feeds/7028649137308911448/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4457781382344670969&amp;postID=7028649137308911448' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/7028649137308911448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/7028649137308911448'/><link rel='alternate' type='text/html' href='http://cmaki.blogspot.com/2007/05/glassfish-getting-started-and-whats-new.html' title='GlassFish: Getting Started and What&apos;s New in GlassFish V2'/><author><name>Chris Maki</name><uri>http://www.blogger.com/profile/16510702653624658586</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/58/164933668_cceadb11bf.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4457781382344670969.post-2815066582091409856</id><published>2007-05-07T09:12:00.000-06:00</published><updated>2007-05-08T22:22:32.891-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaOne'/><title type='text'>Q &amp; A Session with Jonathan Schwartz and Rich Green</title><content type='html'>Very cool, Jonathan Schwartz was right behind my seat and I didn't even see him. &lt;a href="http://www.oreillynet.com/pub/au/2349"&gt;Steve Olson&lt;/a&gt; just joined me, so we are going to listen to Rich and Jonathan together.

Jonathan is talking about the the minimal foot print for GlassFish and how it can now run on a phone (GF v3). Jonathan and Rich are doing everything they can to remove all obstructions.  There was an old saying at Sun, "Innovation happens elsewhere" and they want to foster innovation.  They want to breakdown barriers and foster innovation.  

Investors keep asking Jonathan why Sun keeps giving away their ideas and an engineer @ Sun said they are not afraid of running out of ideas.  

Question about convergence, OSGi vs Java Modules, etc. Rich could not really answer the question but he did say, if we use late binding for the implementation, we can then decide on the right solution at deployment and not have to make a decision @ development.  &lt;b&gt;Editorial comment:&lt;/b&gt; I'm not sure how viable this suggestion really is.  Companies that handle really large volumes of data cannot wait till later to chose the technology but I'm many applications will be able to leverage this type of architecture or development style.

Jonathan talked about the choice to Open Source their software and how he sees the value Sun provides.  If you are self-sufficient (as most are) you shouldn't have to pay for SW, however, if it is important for you to have immediate support when something goes down or you don't want to support it yourself, Sun can provide support and that is where the value is.  The more open the more folks can innovate, so Sun is really moving towards the real revenue.  Sun isn't Costco, they are not interested in bulk, they are interested in innovation.  In a sense, they don't have a plan, that is to day you cannot plan innovation, it happens but you can plan for and create an environment that fosters innovation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4457781382344670969-2815066582091409856?l=cmaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmaki.blogspot.com/feeds/2815066582091409856/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4457781382344670969&amp;postID=2815066582091409856' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/2815066582091409856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/2815066582091409856'/><link rel='alternate' type='text/html' href='http://cmaki.blogspot.com/2007/05/q-session-with-jonathan-schwartz-and.html' title='Q &amp; A Session with Jonathan Schwartz and Rich Green'/><author><name>Chris Maki</name><uri>http://www.blogger.com/profile/16510702653624658586</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/58/164933668_cceadb11bf.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4457781382344670969.post-8211323237130788944</id><published>2007-04-19T09:10:00.000-06:00</published><updated>2007-05-08T22:22:32.892-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaOne'/><title type='text'>JavaOne 2007</title><content type='html'>A lot has been going on since my last post, I've changed jobs, almost crashed my car - twice, and I'm going to JavaOne.  I hope to provide the same coverage as I did &lt;a href="http://jroller.com/page/cmaki?catname=%2FJavaOne+2006"&gt;last year&lt;/a&gt;, which is to take almost transcript like notes for all sessions I attend, then I'll post them here.  If you are going to be at JavaOne let me know so we can plan a meet-up.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4457781382344670969-8211323237130788944?l=cmaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmaki.blogspot.com/feeds/8211323237130788944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4457781382344670969&amp;postID=8211323237130788944' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/8211323237130788944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/8211323237130788944'/><link rel='alternate' type='text/html' href='http://cmaki.blogspot.com/2007/04/javaone-2007.html' title='JavaOne 2007'/><author><name>Chris Maki</name><uri>http://www.blogger.com/profile/16510702653624658586</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/58/164933668_cceadb11bf.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4457781382344670969.post-5347067864902964675</id><published>2007-03-06T08:48:00.000-07:00</published><updated>2007-03-06T09:38:04.378-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JPA'/><title type='text'>JPA 101 on The ServerSide</title><content type='html'>Chapter 7 of JPA 101 is now available on &lt;a href="http://www.theserverside.com/tt/articles/article.tss?l=JPA101_Chapter"&gt;TheServerSide.com&lt;/a&gt;.

I've got some JPA related material I need to put on this site, so check back later today for the Maven 2 JPA archetype and some other stuff :-)

If you are interested in purchasing this book, you can find it &lt;a href="http://www.sourcebeat.com/books/jpa.html"&gt;here&lt;/a&gt; at &lt;a href="http://www.sourcebeat.com"&gt;SourceBeat.com&lt;/a&gt;.

Let me know what you think of the chapter.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4457781382344670969-5347067864902964675?l=cmaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmaki.blogspot.com/feeds/5347067864902964675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4457781382344670969&amp;postID=5347067864902964675' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/5347067864902964675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/5347067864902964675'/><link rel='alternate' type='text/html' href='http://cmaki.blogspot.com/2007/03/jpa-101-on-serverside.html' title='JPA 101 on The ServerSide'/><author><name>Chris Maki</name><uri>http://www.blogger.com/profile/16510702653624658586</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/58/164933668_cceadb11bf.jpg?v=0'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4457781382344670969.post-3326145240505573301</id><published>2007-02-20T21:10:00.000-07:00</published><updated>2007-07-15T13:22:17.543-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac OS'/><title type='text'>AirPort Extreme - I want one</title><content type='html'>I was just reading an &lt;a href="http://www.computerworld.com/action/article.do?command=viewArticleBasic&amp;articleId=9011378&amp;pageNumber=1"&gt;article&lt;/a&gt; on the new &lt;a href="http://www.apple.com/airportextreme/specs.html"&gt;AirPort Extreme&lt;/a&gt; and I think I know where my next $200 - $500 is going :-)  I've been thinking for a while now that Apple needs a good &lt;a href="http://en.wikipedia.org/wiki/Network-attached_storage"&gt;NAS&lt;/a&gt; solution, and &lt;a href="http://www.apple.com/airportextreme/sharing.html"&gt;here&lt;/a&gt; it is.  It looks totally awesome.   Now adding an &lt;a href="http://www.apple.com/appletv/"&gt;AppleTV&lt;/a&gt; to my home network makes a lot more sense and besides I have a few episodes of &lt;a href="http://en.wikipedia.org/wiki/Heroes_%28TV_series%29"&gt;Heroes&lt;/a&gt; that I'd like to watch, so what better reason to get some new toys.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4457781382344670969-3326145240505573301?l=cmaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmaki.blogspot.com/feeds/3326145240505573301/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4457781382344670969&amp;postID=3326145240505573301' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/3326145240505573301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/3326145240505573301'/><link rel='alternate' type='text/html' href='http://cmaki.blogspot.com/2007/02/airport-extreme-i-want-one.html' title='AirPort Extreme - I want one'/><author><name>Chris Maki</name><uri>http://www.blogger.com/profile/16510702653624658586</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/58/164933668_cceadb11bf.jpg?v=0'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4457781382344670969.post-2289751015583665425</id><published>2007-02-01T23:46:00.000-07:00</published><updated>2007-07-15T13:22:23.849-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='community'/><title type='text'>Good-bye JRoller hello eBlogger</title><content type='html'>I don't know how many of you use JRoller but it has just sucked the last couple of months.  When I first started to use JRoller about a year ago it was pretty good, now it seems something is always broken.  The referrer page has been broken for months and the summary of blog stats one the front page hasn't work for months either.  What's going on guys?

I decided instead of waiting for things to get better I'd just switch blogging software.  As an avid Java user and champion it pains me to leave JRoller but like everything else if it doesn't work, fix it or replace it.

So welcome to my new home.  In case you check my old page from time to time you'll want to redirect your bookmark to this site.

I'm sorry to say good-bye to JRoller but the time has come to move on.  

RIP JRoller.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4457781382344670969-2289751015583665425?l=cmaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cmaki.blogspot.com/feeds/2289751015583665425/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4457781382344670969&amp;postID=2289751015583665425' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/2289751015583665425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4457781382344670969/posts/default/2289751015583665425'/><link rel='alternate' type='text/html' href='http://cmaki.blogspot.com/2007/02/good-bye-jroller-hello-blogger.html' title='Good-bye JRoller hello eBlogger'/><author><name>Chris Maki</name><uri>http://www.blogger.com/profile/16510702653624658586</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/58/164933668_cceadb11bf.jpg?v=0'/></author><thr:total>3</thr:total></entry></feed>
