<?xml version="1.0" encoding='utf-8'?>
<?xml-stylesheet type="text/xsl" href="https://raibledesigns.com/roller-ui/styles/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom">
    <title type="html">Raible Designs</title>
    <subtitle type="html">Raible Designs is an Enterprise Open Source Consulting company. We specialize in UI and Full Stack Architectures using HTML5, CSS, JavaScript and Java. We love HTML5, Angular, Bootstrap, Spring Boot, and especially JHipster.</subtitle>
    <id>https://raibledesigns.com/rd/feed/entries/atom</id>
            <link rel="self" type="application/atom+xml" href="https://raibledesigns.com/rd/feed/entries/atom?tags=softwaresummit" />
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/" />
        <updated>2026-03-30T03:31:45-06:00</updated>
    <generator uri="http://roller.apache.org" version="5.0.3 (1388864191739:dave)">Apache Roller (incubating)</generator>
        <entry>
        <id>https://raibledesigns.com/rd/entry/the_end_of_colorado_software</id>
        <title type="html">The End of the Colorado Software Summit</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/the_end_of_colorado_software"/>
        <published>2009-06-04T14:39:20-06:00</published>
        <updated>2012-11-11T02:00:40-07:00</updated> 
        <category term="/Java" label="Java" />
        <category term="softwaresummit" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">It looks like the &lt;a href=&quot;http://softwaresummit.com&quot;&gt;Colorado Software Summit&lt;/a&gt; has come to an end.&lt;/p&gt;
&lt;p class=&quot;quote&quot;&gt;
To Our Friends and Supporters,
&lt;br/&gt;&lt;br/&gt;
In these challenging economic times, business has slowed, many companies have had to resort to layoffs and/or closures, and everyone has been tightening their belts. Unfortunately, Colorado Software Summit has not been immune to this downturn. As have so many companies and individuals, we too have experienced a severe decline in our business, and as a result we are not able to continue producing this annual conference.
&lt;br/&gt;&lt;br/&gt;
This year would have been our 18th conference, and we had planned to continue through our 20th in 2011, but instead we must end it now. [&lt;a href=&quot;http://softwaresummit.com/&quot;&gt;Read More&lt;/a&gt;]
&lt;/p&gt;
&lt;p&gt;I first attended this conference in &lt;a href=&quot;http://raibledesigns.com/rd/entry/heading_to_the_summit&quot;&gt;October 2005&lt;/a&gt;. I enjoyed it so much, I returned again in &lt;a href=&quot;http://raibledesigns.com/rd/date/20061023&quot;&gt;2006&lt;/a&gt;, &lt;a href=&quot;http://raibledesigns.com/rd/date/20071023&quot;&gt;2007&lt;/a&gt; and &lt;a href=&quot;http://raibledesigns.com/rd/entry/going_to_colorado_software_summit&quot;&gt;2008&lt;/a&gt;. As I &lt;a href=&quot;http://raibledesigns.com/rd/entry/the_colorado_software_summit_and&quot;&gt;mentioned last year&lt;/a&gt;, this was my favorite conference.
&lt;/p&gt;
&lt;p class=&quot;quote&quot;&gt;
The reason I like it so much is because it&apos;s an annual gathering (this will be my 4th year) with friends and it&apos;s somewhat like a vacation, except you get to learn a lot.
&lt;/p&gt;
&lt;p&gt;While I&apos;m sad to see it go, I completely understand Wayne and Peggy&apos;s decision. If you ever attended this conference, I encourage you to join the &lt;a href=&quot;http://www.linkedin.com/groups?gid=1083347&quot;&gt;Colorado Software Summit LinkedIn Group&lt;/a&gt;. To see all my posts from the talks I attended at this conference, see my &lt;a href=&quot;http://raibledesigns.com/rd/tags/softwaresummit&quot;&gt;softwaresummit&lt;/a&gt;-tagged entries.
&lt;/p&gt;
&lt;p&gt;
To Wayne and Peggy: thanks for all the great memories and for putting together such an excellent conference. Cheers to you both!</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/colorado_software_summit_2008_wrapup</id>
        <title type="html">Colorado Software Summit 2008 Wrapup</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/colorado_software_summit_2008_wrapup"/>
        <published>2008-10-28T23:03:23-06:00</published>
        <updated>2014-05-08T19:47:19-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="ajax" scheme="http://roller.apache.org/ns/tags/" />
        <category term="maven" scheme="http://roller.apache.org/ns/tags/" />
        <category term="softwaresummit" scheme="http://roller.apache.org/ns/tags/" />
        <category term="spring" scheme="http://roller.apache.org/ns/tags/" />
        <category term="rest" scheme="http://roller.apache.org/ns/tags/" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="appcelerator" scheme="http://roller.apache.org/ns/tags/" />
        <category term="camel" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;a title=&quot;Snowman in Keystone&quot; href=&quot;http://blog.linkedin.com/blog/2008/10/colorado-softwa.html&quot;&gt;&lt;img alt=&quot;Snowman in Keystone&quot; src=&quot;//farm4.static.flickr.com/3057/2980923121_f44dd0dc42_t.jpg&quot; class=&quot;picture&quot; height=&quot;75&quot; width=&quot;100&quot;&gt;&lt;/a&gt;

Last week, I attended the Colorado Software Summit in Keystone and had a great time. Not only was the weather beautiful and the food delicious, the sessions I attended were awesome. If you ever get a chance to go to this conference, I highly recommend it. It&apos;s like being on vacation and learning with a bunch of old friends.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.linkedin.com/in/yan&quot;&gt;Yan Pujante&lt;/a&gt; also attended this conference and documents his experience, photography and presentations in &lt;a href=&quot;http://blog.linkedin.com/blog/2008/10/colorado-softwa.html&quot;&gt;Colorado Software Summit 2008&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;Below is a list of my entries for all the sessions I attended.&lt;/p&gt;
&lt;ul class=&quot;glassList&quot;&gt;
&lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/building_linkedin_s_next_generation&quot;&gt;Building LinkedIn&apos;s Next Generation Architecture with OSGi by Yan Pujante&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/comprehensive_project_intelligence_with_jason&quot;&gt;Comprehensive Project Intelligence with Jason van Zyl&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/what_s_coming_in_spring&quot;&gt;What&apos;s Coming in Spring 3.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/applying_flash_to_java_flex&quot;&gt;Applying Flash to Java: Flex and OpenLaszlo with Dustin Marx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/building_rich_applications_with_appcelerator&quot;&gt;Building Rich Applications with Appcelerator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/taking_apache_camel_for_a&quot;&gt;Taking Apache Camel for a Ride with Bruce Snyder&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/core_animation_with_bill_dudney&quot;&gt;Core Animation with Bill Dudney&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/restful_web_applications_with_subbu&quot;&gt;RESTful Web Applications with Subbu Allamaraju&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;p&gt;For next year, I think the conference should shorten its sessions (from 90 to 60 minutes), invite more speakers and cut the price in half (to $999 per person). How do you think the Software Summit could be improved?</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/restful_web_applications_with_subbu</id>
        <title type="html">RESTful Web Applications with Subbu Allamaraju</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/restful_web_applications_with_subbu"/>
        <published>2008-10-24T09:52:02-06:00</published>
        <updated>2009-06-04T20:04:17-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="jsf" scheme="http://roller.apache.org/ns/tags/" />
        <category term="webframeworks" scheme="http://roller.apache.org/ns/tags/" />
        <category term="sofea" scheme="http://roller.apache.org/ns/tags/" />
        <category term="appcelerator" scheme="http://roller.apache.org/ns/tags/" />
        <category term="softwaresummit" scheme="http://roller.apache.org/ns/tags/" />
        <category term="gwt" scheme="http://roller.apache.org/ns/tags/" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="rest" scheme="http://roller.apache.org/ns/tags/" />
        <category term="servlets" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">Subbu works at Yahoo! developing standards, patterns and practices for HTTP web languages. In the past, he was a web service and Java developer. He was also a standards contributor at BEA and an author of books on Java EE. His current passion is HTTP and REST. Subbu confesses that he&apos;s not a web developer, has no interest in the internals of programming models used for web frameworks and he&apos;s only interested in the visible aspects of the architecture.
&lt;/p&gt;
&lt;p&gt;&quot;The Web is Mostly Restful&quot;&lt;/p&gt;
&lt;p&gt;Being RESTful in an abstract sense means:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Resources are named by URIs&lt;/li&gt;
&lt;li&gt;Resources have representations (Atom, HTML, JSON, XML)&lt;/li&gt;
&lt;li&gt;Resources contain contextual links to allow navigation of state&lt;/li&gt;
&lt;li&gt;There&apos;s a Uniform Interface&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
In the web today, some resources and URIs are personalized, but most are not. Some depend on sessions, but most do not. The consequence of a personalized UI with a non-unique URI is you cannot rely on browser caching. &lt;/p&gt;
&lt;p&gt;The web is full of different representations (HTML, XML, JS, PDF, CSS, Flash). The problem with HTML is you can&apos;t tell links that you want a particular representation based of a link. The links are hard-coded to be a particular content-type. However, some media types on responses are ignored. This is often a problem with browsers and whether the user has plugins installed.&lt;/p&gt;
&lt;p&gt;The Uniform Interface for the web is HTML and primarily links and forms (GET and POST). There&apos;s still some misconceptions (e.g. POST is secure). However, it&apos;s not about security, it&apos;s about idempotency and safety. You need to make sure you only use POST when you&apos;re changing data. POSTs are not repeatable. GET URIs are not always refreshable, which is quite unfortunate. Users shouldn&apos;t have to fight the back button.&lt;/p&gt;
&lt;p&gt;Caching is a fundamental aspect of the web. Even in a personalized site, most of the content can be cached. The web is read-only for the most part. However, many enterprise web applications don&apos;t take advantage of caching. This is fine when there&apos;s not that many users, but it&apos;s bad when you want to scale to thousands of users. There&apos;s several frameworks that use cache-busting and prefer backend caching over HTTP caching. These frameworks are not using the web like they should.&lt;/p&gt;
&lt;p&gt;Backend caching (e.g. Memcached) uses a non-uniform interface and you need to explicitly program to it. Frontend/HTTP caching has a uniform interface that&apos;s pluggable. Backend caching is generally more expensive to develop and deploy. There are cases where data should be cached on the backend, but you shouldn&apos;t focus all on backend caching w/o doing some frontend caching.
&lt;/p&gt;
&lt;p&gt;With Ajax, you get more opportunities to be RESTful. XMLHttpRequest is another HTTP client that can be programmed to. It has full support for the uniform interface, which allows content negotiation, optimistic concurrency and caching. Cross-domain hacks can be done with &amp;lt;script&gt; and &amp;lt;iframe&gt; to tunnel requests over GET. The W3C has been working for the last two years on how to do cross-domain Ajax w/o using hacks. The problem with current cross-domain implementations is they often use GET for everything, which isn&apos;t very RESTful. Subbu recommends using a proxy on the same domain if you do need to talk to other domains. This will allow your Ajax code to remain RESTful.
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Web Frameworks&lt;/strong&gt;&lt;br/&gt;
Web development is hard because of all the moving pieces that exist. Because of this, many web frameworks have been created to solve the various problems. In 1997, there were servlets. They provided basic plumbing and closely reflected HTTP/1.1. Servlets provided a poor programming model, but it allowed a lot of frameworks to be built on top of it. We don&apos;t use servlets to write applications, only to write application frameworks. The second era came about in 2001 when Action-oriented frameworks became popular. In 2004, JSF and friends came to play. JSF is a component-based framework with known limitations (complex, slow, uses POST for almost everything, Ajax is difficult). These limitations have resulted in a number of third-party patches being developed to solve these issues.&lt;/p&gt;
&lt;p&gt;JSF was designed to use the request to create a component tree that maintains state. Unfortunately, the state is not something the developer has control over. It&apos;s not the state of the application, it&apos;s the state of the components. The client&apos;s knowledge of the state is mentioned with a cookie and the server keeps the state in the session. The problem with JSF is you don&apos;t have a choice of state in your application - you can&apos;t write stateless applications like you can with servlets.
&lt;/p&gt;
&lt;p&gt;JSF uses overloaded URIs for its resources. When you have one URI with multiple representations, there&apos;s no way to tell how a representation was chosen. JSF&apos;s compromise is to allow client-side state saving. However, they do this by putting hidden field in the form and requiring POST for navigation. 
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;JSF vs. REST&lt;/strong&gt;&lt;br/&gt;
Basically, these two are at opposite extremes. JSF is focused heavily on a UI component model. The people that developed it misinterpreted how the web works and made some fundamental questionable choices. You can patch it, but you can not fix it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Web 2.0 Frameworks&lt;/strong&gt;&lt;br/&gt;
GWT is a cross-compilation based framework. You write Java to generate JavaScript (b/c everyone hates writing JavaScript). It mashes client and server code into a single source. These layers communicate using GWT-RPC. Typical RPC concerns do not apply since code generation handles coupling and the client is downloaded from the same application. GWT-PRC does POSTs to the server and uses HTTP like a transport layer. To be fair, GWT does allow you to use a RequestBuilder to use the web like it should be used.
This class allows more control over HTTP requests, it supports GET and POST and it allows so-called RESTful layers (GWT-REST and GET-Restlet). GWT is focused heavily on ease-of-use, which is good. It&apos;s modeled after RPC and breaks the uniform interface and focuses on backend caching. Unlike JSF, GWT is fixable, but the community tends to use RPC instead of RequestBuilder.
&lt;/p&gt;
&lt;p&gt;SOFEA has a central promise of SOA. Business logic is a reusable service that changes less often. The presentation application calls those services and changes more often. The nice thing about this type of architecture is it allows a separation of concerns and loose coupling. However, it doesn&apos;t embrace REST like it should. Appcelerator is an implementation of SOFEA that has a Ruby on Rails-like usability. However, it uses a SOAP/HTTP style with messaging and POSTs to a single URI. Appcelerator is interesting, but it introduces a different style of coupling. It breaks URI opacity and client deals with POX instead of links. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br/&gt;
Don&apos;t fight the architecture of the web. Innovate and enhance instead of breaking. If nothing else, break judiciously. As developers, we should demand more from our frameworks and make sure they use the web and HTTP like it should be used.</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/core_animation_with_bill_dudney</id>
        <title type="html">Core Animation with Bill Dudney</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/core_animation_with_bill_dudney"/>
        <published>2008-10-23T16:03:18-06:00</published>
        <updated>2008-10-23T22:03:38-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="coreanimation" scheme="http://roller.apache.org/ns/tags/" />
        <category term="objective-c" scheme="http://roller.apache.org/ns/tags/" />
        <category term="iphone" scheme="http://roller.apache.org/ns/tags/" />
        <category term="softwaresummit" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opengl" scheme="http://roller.apache.org/ns/tags/" />
        <category term="billdudney" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">I&apos;m sitting in Bill Dudney&apos;s talk called &lt;a href=&quot;http://softwaresummit.com/2008/speakers/dudney.htm&quot;&gt;Core Animation on the iPhone: How to Build Animated UI&apos;s&lt;/a&gt;. All of the animations on the iPhone are done with Core Animation. Bill is going to start by doing a brief intro to Objective C. Objective C is a dynamic object-oriented language. It&apos;s C-based and has Smalltalk roots. Objective C is 2 files - one is a Header and one is the Implementation. They are marked with @implementation and @interface.  Properties are declared with a @property keyword and a get and set method are created for you.
&lt;/p&gt;
&lt;p&gt;Layers are nothing more than 2-dimensional layers living in a 3-dimensional space. You don&apos;t need to know anything about OpenGL to use Core Animation. All of the complexity is pushed behind the API and everything runs on the video card. This allows you to get really, really good performance. Core animation is actually built into Keynote on OS X and bill is showing some demos right in his presentation.
&lt;/p&gt;
&lt;p&gt;You can build user interfaces on the iPhone with Views or Layers. The best way is to use a View with Layers and Events. The View listens for Events and do the right thing. There are several methods you can implement when writing a view: &lt;code&gt;touchesBegan&lt;/code&gt;, &lt;code&gt;touchesMoved&lt;/code&gt; and &lt;code&gt;touchesEnded&lt;/code&gt;. These allow you to capture when a person touches the screen and they each take a set of NSSet objects, where one exists for each finger. On the iPhone simulator, you can use the Option + Mouse to simulate two fingers.&lt;/p&gt;
&lt;p&gt;Animation in Core Animation is implicit. If you change a value on a layer, the layer is going to animate that property change. They can interpolate floats and integers as well as origin (width and height). If you change colors, it&apos;ll fade between the two colors. The default animation length is 1/4 of a second. &lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;For the next 20 minutes, Bill did a bunch of live coding to show how easy it is to do animations, as well as how you can group animations together. It looked fairly easy if you know Objective-C.&lt;/p&gt;
&lt;p&gt;The iPhone OS is Unix, so you should be able to use any Unix utilities on it. The Mac is really good at drawing. Quartz is the underlying drawing framework on the Mac and iPhone. It&apos;s basically an API for Illustrator/Photoshop that allows you to programmatically do what those programs allow. Anything you can do with Illustrator/Photoshop can be done programmatically with Quartz. All of that power that&apos;s available on the Mac is available on the iPhone. The final piece of drawing technology is OpenGL. The &lt;a href=&quot;http://www.pangeasoft.net/cromag/index.html&quot;&gt;Cro-Mag Rally&lt;/a&gt; game was originally written 5 years ago for the Mac in OpenGL. The creators were able to port it to the iPhone in 1.5 weeks.&lt;/p&gt;
&lt;p&gt;Bill then went into OpenGL and how you can use it to build a trackball application. Good presentation, great speaker. Even though Bill did a good job of explaining how animations work, it&apos;s obvious that you must know Objective-C to do this stuff. I can&apos;t imagine what the code behind some of the cool iPhone games (i.e. Monkey Ball, Asphalt4) looks like.</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/taking_apache_camel_for_a</id>
        <title type="html">Taking Apache Camel for a Ride with Bruce Snyder</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/taking_apache_camel_for_a"/>
        <published>2008-10-23T14:25:30-06:00</published>
        <updated>2014-05-09T17:18:11-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="eip" scheme="http://roller.apache.org/ns/tags/" />
        <category term="camel" scheme="http://roller.apache.org/ns/tags/" />
        <category term="apache" scheme="http://roller.apache.org/ns/tags/" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="servicemix" scheme="http://roller.apache.org/ns/tags/" />
        <category term="spring" scheme="http://roller.apache.org/ns/tags/" />
        <category term="softwaresummit" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <category term="brucesnyder" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;a href=&quot;http://activemq.apache.org/camel/&quot;&gt;Camel&lt;/a&gt; is a Java API that allows you to do message routing very easily. It implements many of the patterns found in &lt;a href=&quot;http://activemq.apache.org/camel/enterprise-integration-patterns.html&quot;&gt;Enterprise Integration Patterns&lt;/a&gt;. It doesn&apos;t require a container and can be run in any Java-based environment. Camel has a whole bunch of components - Bruce is showing a 6 x 10 grid with a component name in each grid. In other words, there&apos;s 60 components that Camel can use. Examples include: ActiveMQ, SQL, Velocity, File and iBATIS. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;http://www.chrisrichardson.net/&quot;&gt;Chris Richardson&lt;/a&gt; asks &quot;What&apos;s left inside of ServiceMix&quot;. Why use ServiceMix if you have Camel? ServiceMix is a container that can run standalone or inside an app server. You can run distributed ServiceMix as a federated ESB. Camel is much smaller and lightweight and is really just a Java API. ServiceMix 4 changed from a JBI-based architecture to OSGi (based on Apache Felix). They also expect to create your routes for ServiceMix 4 with Camel instead of XML. To process messages, you can use many different languages: BeanShell, JavaScript, Groovy, Python, PHP, Ruby, JSP EL, OGNL, SQL, XPath and XQuery. 
&lt;/p&gt;
&lt;p&gt;
Camel has a &lt;code&gt;CamelContext&lt;/code&gt; that&apos;s similar to Spring&apos;s &lt;code&gt;ApplicationContext&lt;/code&gt;. You can initialize it in Java and add your routes to it:&lt;/p&gt;
&lt;pre&gt;
CamelContext context = new DefaultCamelContext();
context.addRoutes(new MyRouterBuilder());
context.start();
&lt;/pre&gt;
&lt;p&gt;Or you can initialize it using XML:&lt;/p&gt;
&lt;pre&gt;
&amp;lt;camelContext xmlns=&quot;http://activemq.apache.org/camel/schema/spring&quot;&amp;gt;
    &amp;lt;package&amp;gt;com.acme.routes&amp;lt;/package&amp;gt;
&amp;lt;/camelContext&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Camel&apos;s &lt;code&gt;&lt;a href=&quot;http://activemq.apache.org/camel/routebuilder.html&quot;&gt;RouteBuilder&lt;/a&gt;&lt;/code&gt; contains a &lt;a href=&quot;http://activemq.apache.org/camel/dsl.html&quot;&gt;fluid API&lt;/a&gt; that allows you to define to/from and other criteria. At this point, Bruce is showing a number of examples using the Java API. He&apos;s showing a Content Based Router, a Message Filter, a Splitter, an Aggregator, a Message Translator, a Resequencer, a Throttler and a Delayer.&lt;/p&gt;
&lt;p&gt;Bruce spent the last 10 minutes doing a demo using Eclipse, m2eclipse, the camel-maven-plugin and ActiveMQ. It&apos;s funny to see a command-line guy like Bruce say he can&apos;t live w/o m2eclipse. I guess Maven&apos;s XML isn&apos;t so great after all. &lt;img src=&quot;https://raibledesigns.com/images/smileys/wink.gif&quot; class=&quot;smiley&quot; alt=&quot;;-)&quot; title=&quot;;-)&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Camel is built on top of Spring and has good integration. Apparently, the Camel developers tried to get it added to Spring, but the SpringSource guys didn&apos;t want it. Coincidentally, &lt;a href=&quot;http://www.springframework.org/spring-integration&quot;&gt;Spring Integration&lt;/a&gt; was &lt;a href=&quot;http://blog.springsource.com/2007/12/14/spring-integration-a-new-addition-to-the-spring-portfolio/&quot;&gt;released&lt;/a&gt; about a year later.&lt;/p&gt;
&lt;p&gt;Camel also allows you to use &quot;beans&quot; and bind them to Camel Endpoints with annotations. For example:

&lt;pre&gt;
public class Foo {

    @MessageDriven (uri=&quot;activemq:cheese&quot;)
    public void onCheese(String name) {
        ...
    }
}
&lt;/pre&gt;
&lt;p&gt;Other annotations include @XPath, @Header and @EndpointInject. 
&lt;/p&gt;
&lt;p&gt;Camel can also be used for BAM (Business Activity Monitoring). Rather than using RouteBuilder, you can use ActivityBuilder to listen for activities and create event notifications.&lt;/p&gt;
&lt;p&gt;Bruce had quite a few folks show up for this presentation. I had trouble finding a seat because I was late. I think he did a good job of showing what Camel is and how you might use it.</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/building_rich_applications_with_appcelerator</id>
        <title type="html">Building Rich Applications with Appcelerator</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/building_rich_applications_with_appcelerator"/>
        <published>2008-10-22T16:18:42-06:00</published>
        <updated>2014-05-08T19:47:19-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="gwt" scheme="http://roller.apache.org/ns/tags/" />
        <category term="appcelerator" scheme="http://roller.apache.org/ns/tags/" />
        <category term="softwaresummit" scheme="http://roller.apache.org/ns/tags/" />
        <category term="webframeworks" scheme="http://roller.apache.org/ns/tags/" />
        <category term="ria" scheme="http://roller.apache.org/ns/tags/" />
        <category term="flex" scheme="http://roller.apache.org/ns/tags/" />
        <category term="presentation" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">This afternoon, I delivered my &lt;a href=&quot;http://softwaresummit.com/2008/speakers/raible.htm&quot;&gt;Building Rich Applications with Appcelerator&lt;/a&gt; talk for the 3rd time at Colorado Software Summit. When I first proposed this topic, I hadn&apos;t used &lt;a href=&quot;http://appcelerator.org&quot;&gt;Appcelerator&lt;/a&gt; and saw this as a good opportunity to learn more about it. I&apos;m glad I did.
&lt;/p&gt;
&lt;p&gt;
IMO, Appcelerator is a lot like Dojo in how it parses pages and turns HTML with special attributes into JavaScript widgets. I can&apos;t help but think a pre-compilation step would be nice to speed things up. I like Appcelerator&apos;s extensive &lt;a href=&quot;http://doc.appcelerator.org/reference/widget_reference/index.html&quot;&gt;Widget Library&lt;/a&gt;, and I especially like that they re-use many widgets rather than re-creating their own. Finally, I really dig the &quot;SOA in a browser&quot; approach where everything is a message and you can easily publish and subscribe to events - on the client and server. Below is my presentation, please let me know if you have any questions.
&lt;/p&gt;
&lt;div style=&quot;text-align: center&quot;&gt;&lt;object style=&quot;margin:0px&quot; width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://static.slideshare.net/swf/ssplayer2.swf?doc=building-rich-applications-with-appcelerator-12002&amp;stripped_title=building-rich-applications-with-appcelerator&quot; /&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;/&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;/&gt;&lt;embed src=&quot;//static.slideshare.net/swf/ssplayer2.swf?doc=building-rich-applications-with-appcelerator-12002&amp;stripped_title=building-rich-applications-with-appcelerator&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style=&quot;font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;&quot;&gt;&lt;a style=&quot;text-decoration:underline;&quot; href=&quot;http://www.slideshare.net/mraible/building-rich-applications-with-appcelerator?type=powerpoint&quot; title=&quot;View Building Rich Applications with Appcelerator on SlideShare&quot;&gt;View on Slideshare&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/applying_flash_to_java_flex</id>
        <title type="html">Applying Flash to Java: Flex and OpenLaszlo with Dustin Marx</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/applying_flash_to_java_flex"/>
        <published>2008-10-22T14:31:10-06:00</published>
        <updated>2008-10-22T20:33:08-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="comparison" scheme="http://roller.apache.org/ns/tags/" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="softwaresummit" scheme="http://roller.apache.org/ns/tags/" />
        <category term="webframeworks" scheme="http://roller.apache.org/ns/tags/" />
        <category term="flash" scheme="http://roller.apache.org/ns/tags/" />
        <category term="ria" scheme="http://roller.apache.org/ns/tags/" />
        <category term="openlaszlo" scheme="http://roller.apache.org/ns/tags/" />
        <category term="flex" scheme="http://roller.apache.org/ns/tags/" />
        <category term="adobe" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">If you&apos;re going to choose Flex or OpenLaszlo, chances are you&apos;re targeting Flash. The Flash Player allows you to abstract the browser idiosyncrasies and give users a better experience. It hides the browser quirks from both developers and users. It&apos;s also a highly ubiquitous web browser runtime environment. It provides a user experience way beyond traditional HTTP request-response. Also, its visual effects and &quot;richness&quot; rival of non-browser desktop applications.
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://marxsoftware.blogspot.com/&quot;&gt;Mark&apos;s blog&lt;/a&gt; stats show that 95% of readers are using Flash 9 and 1% is Flash 10. All others don&apos;t have their version exposed. Most other sources claim that Flash 9 has 98% penetration in mature markets. One of the nicest things about Flash is it frees users from limitations of traditional web applications. Request/response is largely a thing of the past and Ajax-like behavior was built-in from the beginning.
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Flash Criticisms&lt;/strong&gt;: has reduced SEO as well as bookmarking and URL history support. 
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Flash Player Criticisms&lt;/strong&gt;: not open source, no significant alternative, no 64-bit player, loading performance and it&apos;s only useful for games, movies and annoying advertisements.&lt;/p&gt;
&lt;p&gt;
The good news is Flash is getting better. There&apos;s currently a SWF Searchability initiative with Google and Yahoo!. For bookmarking and URL History, you can use &quot;deep linking&quot; with &lt;code&gt;mx.managers.BrowserManager&lt;/code&gt; and &lt;code&gt;mx.managers.HistoryManager&lt;/code&gt;. Flash Player issues are also being addressed. There&apos;s a Flash Open Screen Project, there&apos;s a 64-bit player in Adobe Labs and Flash 9/10 is much better than in the past.
&lt;/p&gt;
&lt;p&gt;
To prove that Flash is a compelling technology, all you have to do is look at Microsoft&apos;s Silverlight and Sun&apos;s JavaFX. These are direct competitors that are fairly new and prove that companies like what Flash has.
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Flex&lt;/strong&gt;&lt;br/&gt;
Flex is not Flash. Flex requires Flash (9+), but Flash does not require Flex. Flex is a language and framework and applications are compiled into &lt;strong&gt;.swf&lt;/strong&gt; files. Flash is the runtime environment that executes .swf files. Flex 3 is FREE. The Flex SDK, compiler and debugger are open source. They have no license costs. BlazeDS is also open source and has no license cost.
&lt;/p&gt;
&lt;p&gt;Flex MXML was formerly called &lt;em&gt;Macromedia XML&lt;/em&gt;. It&apos;s an XML-based presentation/layout language that&apos;s editable with any text editor or IDE. MXML is to ActionScript 3 as JSP is to Java. MXML provides the layout and ActionScript provides the dynamic business logic.
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ActionScript&lt;/strong&gt;&lt;br/&gt;
ActionScript is an ECMAScript implementation that&apos;s been proposed as the Edition 4 implementation. It&apos;s not your older sibling&apos;s JavaScript. It uses class-based object-oriented features and static typing. Thanks to the Flash Player, it works the same across multiple browsers. Most of the things you can do with MXML, you can do with ActionScript. However, MXML typically requires less LOC.
&lt;/p&gt;
&lt;p&gt;ActionScript allows packages, interfaces, inheritance, objects and methods. It includes extensive XML Support, particularly E4X (ECMAScript for XML). It has a large class library and can talk directly to the Flash Player. Finally, it has many Java-like features and it&apos;s syntax looks similar.
&lt;/p&gt;
&lt;p&gt;At this point, Dustin started doing demos of two popular Flex components: RichText Editor (which creates horrible HTML) and Data Grid. More third-party Flex components seem to appear every day. Examples include &lt;a href=&quot;http://code.google.com/p/flexlib/&quot;&gt;flexlib&lt;/a&gt;, &lt;a href=&quot;http://code.google.com/p/asdia/&quot;&gt;ASDIA&lt;/a&gt; as well as all those listed on &lt;a href=&quot;http://flexbox.mrinalwadhwa.com/&quot;&gt;FlexBox&lt;/a&gt;. Additionally, it&apos;s not too difficult to create your own Flex components (no proof provided).&lt;/p&gt;
&lt;p&gt;
Flex&apos;s property binding is one of Dustin&apos;s favorite features, but he says he has a difficult time conveying how cool it is. Property binding allows you to tie data in one object to data in another object. Updates in one object affect another. To use it in MXML, you can use curly braces or the &lt;code&gt;&lt;mx:Binding&gt;&lt;/code&gt; tag. In ActionScript, you can use the &lt;code&gt;BindingUtils&lt;/code&gt; object. You can also use Flex&apos;s metadata annotation &quot;Bindable&quot; to denote bindable objects.
&lt;/p&gt;
&lt;p&gt;To compile Flex applications, you can use &lt;strong&gt;mxmlc&lt;/strong&gt; from the command line. You can use Ant with the &lt;code&gt;&amp;lt;exec&gt;&lt;/code&gt; task or using Flex&apos;s Ant Tasks. You can also invoke mxmlc from Java as long as you include mxmlc.jar in your classpath. FlexBuilder is an Eclipse-based IDE that&apos;s not included with the free Flex SDK. It&apos;s not a free product and can be used as a plugin or a standalone IDE.
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Flex and Java&lt;/strong&gt;&lt;br/&gt;
There&apos;s two predominant out-of-the-box methods for Flex to communicate with Java EE backends.
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;HttpService&lt;/strong&gt;: traditional HTTP request/response.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WebService&lt;/strong&gt;: SOAP-based Web Services.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If the above two methods aren&apos;t fast enough, you can use BlaseDS and it&apos;s additional options.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Web Messaging&lt;/strong&gt;: HTTP publish/subscribe with JMS, ColdFusion and/or other Flash/Ajax client.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Remoting with AMF&lt;/strong&gt;: access server-side objects from Flash client-tier as if they were hosted there.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Flash applications can access either a client&apos;s machine or a remote site, but not both. You can use a &lt;em&gt;crossdomain.xml&lt;/em&gt; file on your server to allow remote Flash clients to connect. This file allows access for both Flex and OpenLaszlo applications.
&lt;/p&gt;
&lt;p&gt;BlazeDS adds proxy server support for HTTPService and WebService. To use, set the &lt;em&gt;useProxy&lt;/em&gt; attribute to &quot;true&quot;. Features include authentication and logging. It adds a new RPC mechanisms called &lt;strong&gt;RemoteObject&lt;/strong&gt;. This object allows ActionScript and Java EE transparent integration. It also adds publish/subscribe messaging with a JMS Adapter available. Lastly, it adds Ajax support to your Flex application.&lt;/p&gt;
&lt;p&gt;GraniteDS is an open-source (LGPL) alternative to Adobe LiveCycle and is similar to BlazeDS. It has COMET-like functionality and supports Spring, Spring Security, EJB 3, Seam and Guice.&lt;/p&gt;
&lt;p&gt;Flex Frameworks: Cairngorm (Adobe Consulting), Pure MVC, Mate and many others.&lt;/p&gt;
&lt;p&gt;Flex 4 (Gumbo) will have improvements for designers (easier customization, better tool support), improvements for developers (faster compiler, two-way data binding) and will leverage new features of Flash 10.
&lt;p&gt;&lt;strong&gt;OpenLazlo&lt;/strong&gt;&lt;br/&gt;
OpenLaszlo 4 is XML-based and uses an XPath syntax for data access. OpenLaszlo was actually created before Flex and is ECMAScript-based. Unlike Flex that requires Flash 9, OpenLaszlo is architected to deploy on different runtime environments, including: Flash 7/8/9 and DHTML. Dustin believes OpenLaszlo would be a lot more appealing if your source code could be compiled into Silverlight or JavaFX.
&lt;/p&gt;
&lt;p&gt;OpenLaszlo&apos;s syntax looks a lot like Flex, except it does not use namespaces. OpenLaszlo&apos;s Constraints are similar to Flex&apos;s property binding, except the syntax is a bit different. You use &lt;code&gt;${}&lt;/code&gt; in LZX tags or &lt;code&gt;applyConstraint()&lt;/code&gt; and &lt;code&gt;LzDelegate&lt;/code&gt; in scripts. OpenLaszlo&apos;s event handling is similar to Flex and JavaScript event handling. All attributes have an implicit &quot;on&quot; event that is triggered when an attribute&apos;s value is changed. Event handlers can be written CSS-style in LZX nodes or using the &lt;code&gt;&amp;lt;handler&gt;&amp;lt;/handler&gt;&lt;/code&gt; tag. Script code can be embedded in LZX XML in many ways:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Inside event attributes&lt;/li&gt;
&lt;li&gt;Within &lt;code&gt;&amp;lt;script&gt;&amp;lt/script&gt;&lt;/code&gt; tags&lt;/li&gt;
&lt;li&gt;Within &lt;code&gt;&amp;lt;method&gt;&amp;lt/method&gt;&lt;/code&gt; tags&lt;/li&gt;
&lt;li&gt;Within &lt;code&gt;&amp;lt;handler&gt;&amp;lt/handler&gt;&lt;/code&gt; tags&lt;/li&gt;
&lt;li&gt;In a separate file (&lt;code&gt;&amp;lt;script src=&quot;someFile.js&quot; /&gt;&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dustin believes the debugger and view-source tools in OpenLaszlo are much better than the ones available for Flex.&lt;/p&gt;
&lt;p&gt;For the rest of the presentation, Dustin covered many of Laszlo&apos;s feature, how they relate to Java as well as how to integrate SWF and HTML. &lt;a href=&quot;http://code.google.com/p/swfobject/&quot;&gt;SWFObject&lt;/a&gt; is Dustin&apos;s preferred method for adding Flash to HTML. One of its nifty features is it allows SWF-to-SWF communication.&lt;/p&gt;
&lt;p&gt;This talk was an excellent and in-depth overview of Flash, Flex and OpenLaszlo. I especially liked all the details on ActionScript and the different methods for remote communication. &lt;em&gt;Nice job Dustin!&lt;/em&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/what_s_coming_in_spring</id>
        <title type="html">What&apos;s Coming in Spring 3.0</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/what_s_coming_in_spring"/>
        <published>2008-10-22T11:51:12-06:00</published>
        <updated>2014-05-08T19:47:19-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="spring" scheme="http://roller.apache.org/ns/tags/" />
        <category term="springframework" scheme="http://roller.apache.org/ns/tags/" />
        <category term="rest" scheme="http://roller.apache.org/ns/tags/" />
        <category term="presentation" scheme="http://roller.apache.org/ns/tags/" />
        <category term="annotations" scheme="http://roller.apache.org/ns/tags/" />
        <category term="webframeworks" scheme="http://roller.apache.org/ns/tags/" />
        <category term="softwaresummit" scheme="http://roller.apache.org/ns/tags/" />
        <category term="springexpressionlanguage" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">This morning, I delivered my &lt;a href=&quot;http://softwaresummit.com/2008/speakers/raible.htm&quot;&gt;What&apos;s Coming in Spring 3.0&lt;/a&gt; talk for the 2nd time at Colorado Software Summit. Since there is no Spring 3.0 source code to speak of, I was unable to do the &quot;Choose Your Own Adventure&quot; demo at the end. &lt;img src=&quot;https://raibledesigns.com/images/smileys/sad.gif&quot; class=&quot;smiley&quot; alt=&quot;:(&quot; title=&quot;:(&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;
The good news is I was able to easily upgrade the &lt;a href=&quot;http://spring-kickstart.googlecode.com&quot;&gt;Spring Kickstart&lt;/a&gt; application from Spring 2.0 to Spring 2.5.5 (using annotations). When 3.0 is released, I hope to update this project to use 3.0 as well as show what I needed to change. If I get ambitious, I might even change the UI to use Flex or Ext JS to show a RESTful client. Below is my presentation - hope you enjoy.
&lt;/p&gt;
&lt;div style=&quot;text-align:center&quot;&gt;&lt;object style=&quot;margin:0px&quot; width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://static.slideshare.net/swf/ssplayer2.swf?doc=whats-coming-in-spring-30-18636&amp;stripped_title=whats-coming-in-spring-30&quot; /&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;/&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;/&gt;&lt;embed src=&quot;//static.slideshare.net/swf/ssplayer2.swf?doc=whats-coming-in-spring-30-18636&amp;stripped_title=whats-coming-in-spring-30&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style=&quot;font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;&quot;&gt;&lt;a style=&quot;text-decoration:underline;&quot; href=&quot;http://www.slideshare.net/mraible/whats-coming-in-spring-30?type=powerpoint&quot; title=&quot;View What&amp;#39;s Coming in Spring 3.0 on SlideShare&quot;&gt;View on Slideshare&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/comprehensive_project_intelligence_with_jason</id>
        <title type="html">Comprehensive Project Intelligence with Jason van Zyl</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/comprehensive_project_intelligence_with_jason"/>
        <published>2008-10-21T14:35:13-06:00</published>
        <updated>2014-05-08T19:47:19-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="m2eclipse" scheme="http://roller.apache.org/ns/tags/" />
        <category term="softwaresummit" scheme="http://roller.apache.org/ns/tags/" />
        <category term="hudson" scheme="http://roller.apache.org/ns/tags/" />
        <category term="maven" scheme="http://roller.apache.org/ns/tags/" />
        <category term="nexus" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">In this talk, &lt;a href=&quot;http://blogs.sonatype.com/people/jvanzyl/&quot;&gt;Jason&lt;/a&gt; is going to talk about &lt;a href=&quot;http://m2eclipse.codehaus.org/&quot;&gt;m2eclipse&lt;/a&gt;, &lt;a href=&quot;http://nexus.sonatype.org/&quot;&gt;Nexus&lt;/a&gt;, &lt;a href=&quot;https://hudson.dev.java.net/&quot;&gt;Hudson&lt;/a&gt; and &lt;a href=&quot;http://maven.apache.org/&quot;&gt;Maven&lt;/a&gt;. On his Maven bullet-point, it says &quot;The best is yet to come (and we&apos;ll fix a bunch of stuff)!&quot; 
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;m2eclipse&lt;/strong&gt;&lt;br/&gt;The m2eclipse plugin has improved greatly in the last 4 months - there&apos;s now 5 full-time developers working on it. If you use the m2eclipse plugin, you never have to leave the IDE for your Maven-related work. m2eclipse has a Configuration Framework that turns Maven&apos;s mumbo-jumbo (Jason&apos;s words, not mine) into Eclipse talk. The m2eclipse+configuration framework has integration for WTP, JDT, AJDT and they&apos;re working on one for Flex. Below is a screenshot of how m2eclipse helps developers stay away from using command-line Maven.&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;http://farm4.static.flickr.com/3042/2962624266_05dc42835c_o.png&quot; title=&quot;m2eclipse Configuration Framework&quot; rel=&quot;lightbox[m2eclipse]&quot;&gt;&lt;img src=&quot;//farm4.static.flickr.com/3042/2962624266_cbf14978ff_m.jpg&quot; width=&quot;240&quot; height=&quot;188&quot; alt=&quot;m2eclipse Configuration Framework&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Now Jason is showing a demo of m2eclipse and creating a new Maven project from existing archetypes. It looks like m2eclipse uses &quot;Nexus Indexer&quot; as its Catalog. Presumably this is a Sonatype-hosted service. The Nexus Indexer contains an of Maven Central and is very fast. It&apos;s dynamically updated as new things are deployed to Maven Central.&lt;/p&gt;

&lt;p&gt;If you use m2eclipse and open a pom.xml, you&apos;ll get a visual view rather than an XML view. This UI has tabs for Overview, Dependencies, Repositories, Build, Plugins, Reporting, Profiles, Team, a Dependency Hierarchy and Dependency Graph. You can easily add new dependencies and it finds things quickly because it&apos;s using the Nexus index. In addition to visually adding dependencies, you can modify the raw XML and get things like groupId and version code-completion. 
&lt;/p&gt;
&lt;p&gt;
Once you have your dependencies listed in a &quot;Maven Dependencies&quot; container to you can &quot;Materialize Project&quot; to create a project from the binary dependency. You&apos;ll get the source as a new project in your workspace as well as having your binary dependency turned into a source dependency.&lt;/p&gt;

&lt;p&gt;You can easily create a run configuration that runs certain goals, allows you to activate profiles and uses an embedded version of Maven or an external installation. I asked Jason if the Dependency Hierarchy had a right-click -&gt; exclude feature and he said it doesn&apos;t exist yet, but it will in the release after next. For now, the &lt;em&gt;pom editor&lt;/em&gt; is just eye candy and doesn&apos;t have actions.
&lt;/p&gt;
&lt;p&gt;For Maven Plugins, m2eclipse has workspace resolution so you can develop a plugin and use it in a project at the same time w/o having to install the plugin over and over.&lt;/p&gt;
&lt;p&gt;Sonatype has created a Project Materializer Plugin that allows a team lead to create a project for developers. It allows you to create a welcome page that has links, cheat sheets, News and Updates and Tasks for the developer. It also materializes Eclipse projects in the background. Cheat Sheets are a series of tasks that can be run to show developers how to do things.&lt;/p&gt;
&lt;p&gt;Another big feature in m2eclipse is nested project support. It only works in Eclipse 3.4 though.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nexus&lt;/strong&gt;&lt;br/&gt;Nexus is a repository manager that allows you to keep the cruft from the outside world out of your system. It&apos;s primarily for Repository and Configuration Management. It has fine-grained security for authentication and authorization.  One nice feature of its security system is you can prevent certain users from seeing source JARs. It also has &lt;em&gt;virtual&lt;/em&gt; repositories (a savior for OSGi lovers). UI is written in Ext JS and acts as a simple REST client for Nexus. It has a full REST API using RESTlet.
&lt;/p&gt;&lt;p&gt;A repository manager allows you to protect yourself from the &lt;strong&gt;Open Source Ghetto&lt;/strong&gt;. The OS Maven Ghetto has bad POMs, repositories in POMs, mixed snapshot and release dependencies and screwed up metadata. Not only does it offer protection, but it allows you to aggregate repositories and publish your internal artifacts to it. It also allows you to schedule tasks that clean out snapshots so your repositories don&apos;t grow out of control.
&lt;/p&gt;
&lt;p&gt;Typically people deal with OSGi runtimes manually. OSGi can dynamically update dependencies that you drop into your bundle repository. However, many folks maintain their OSGi runtime and bundle repository locally. Some people are trying to get an OSGi runtime to resolve against a P2 repository. P2 is what Eclipse uses for their repository management. Nexus has the ability to lock down the versions that are available to an OSGi runtime. Furthermore, you can use Nexus to manage the versions that get deployed to all your servers. This makes it a lot easier for QA and Production to manage versions of your artifacts. OSGi is great for modularity and solving classpath issues, but it does have issues with versions and how its ranges work.&lt;/p&gt;
&lt;p&gt;You can see Nexus in action at &lt;a href=&quot;http://repository.sonatype.org/&quot;&gt;http://repository.sonatype.org&lt;/a&gt;. It can be configured entirely through the UI, an XML file or through the REST API. RSS feeds exist for configuration and repository updates.
&lt;/p&gt;
&lt;p&gt;Nexus is free and open source with a GPL license. The next version (1.2) will contain a Plugin API to allow extensions. All of Sonatype&apos;s enhancements for its commercial version will be written as plugins. A matrix of what&apos;s available in the open source version vs. commercial version should be published sometime next week.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hudson&lt;/strong&gt;&lt;br/&gt;
Jason believes that Hudson is the future of continuous integration, on-demand results and release management. They&apos;re writing all their extension points in Hudson as Maven plugins and Plexus components (with the work they&apos;ve done, using Spring components should also be possible). Other enhancements they&apos;ve made to Hudson:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Integration of JSecurity&lt;/li&gt;
&lt;li&gt;Implementing a similar REST layer as Nexus and creating a UI using Ext JS&lt;/li&gt;
&lt;li&gt;Automatic installation of external Maven installations&lt;/li&gt;
&lt;li&gt;Drools Workflow Integration&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;They&apos;ve also enhanced Hudson so it can easily test/publish Maven projects without using the free-form project template. Hudson works well for doing Eclipse headless builds for Eclipse plugins. If you need to test against multiple databases, multiple OS&apos;s, it does support a grid-based system that&apos;s easy to setup. Hudson does have web services integration that allows you to kick off builds from within Eclipse. Sonatype uses Hudson to run all their nightly builds of Maven.
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Maven - the best is yet to come&lt;/strong&gt;&lt;br/&gt;
The three big things coming in the next version of Maven are:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Refactored Project Builder: includes a spec for building a pom, domain-specific parsers (attribute-based XML, Groovy and Ruby) and mixins.&lt;/li&gt;
&lt;li&gt;Mercury: a new repository and transport layer. Developed by the Jetty people and is super fast (async client with connection pooling and parallelization). Has atomic downloads and deployments (with Nexus), full PGP support and a WebDAV client built-in.&lt;/li&gt;
&lt;li&gt;Maven Embedder: re-written to actually work.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Overall, a good talk with lots of demos. I&apos;m definitely looking forward to Maven improvements in the future.</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/building_linkedin_s_next_generation</id>
        <title type="html">Building LinkedIn&apos;s Next Generation Architecture with OSGi by Yan Pujante</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/building_linkedin_s_next_generation"/>
        <published>2008-10-20T11:20:09-06:00</published>
        <updated>2009-06-04T20:03:31-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="rpc" scheme="http://roller.apache.org/ns/tags/" />
        <category term="eclipse" scheme="http://roller.apache.org/ns/tags/" />
        <category term="glassfish" scheme="http://roller.apache.org/ns/tags/" />
        <category term="yanpujante" scheme="http://roller.apache.org/ns/tags/" />
        <category term="linkedin" scheme="http://roller.apache.org/ns/tags/" />
        <category term="infiniflow" scheme="http://roller.apache.org/ns/tags/" />
        <category term="tomcat" scheme="http://roller.apache.org/ns/tags/" />
        <category term="apache" scheme="http://roller.apache.org/ns/tags/" />
        <category term="osgi" scheme="http://roller.apache.org/ns/tags/" />
        <category term="spring" scheme="http://roller.apache.org/ns/tags/" />
        <category term="architecture" scheme="http://roller.apache.org/ns/tags/" />
        <category term="softwaresummit" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">This week, I&apos;m attending the &lt;a href=&quot;http://softwaresummit.com&quot;&gt;Colorado Software Summit&lt;/a&gt; in Keystone, Colorado. Below are my notes from an &lt;strong&gt;OSGi at LinkedIn&lt;/strong&gt; presentation I attended by &lt;a href=&quot;http://www.linkedin.com/in/yan&quot;&gt;Yan Pujante&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
LinkedIn was created in March of 2003. Today there&apos;s close to 30M members. In the first 6 months, there was 60,000 members that signed up. Now, 1 million sign up every 2-3 weeks. LinkedIn is profitable with 5 revenue lines and there&apos;s 400 employees in Mountain View.
&lt;/p&gt;
&lt;p&gt;
Technologies: 2 datacenters (~600 machines). SOA with Java, Tomcat, Spring Framework, Oracle, MySQL, Servlets, JSP, Cloud/Graph, OSGi. Development is done on Mac OS X, production is on Solaris.
&lt;/p&gt;
&lt;p&gt;
The biggest challenges for LinkedIn are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Growing Engineering Team on a monolithic code base (it&apos;s modular, but only one source tree)&lt;/li&gt;
&lt;li&gt;Growing Product Team wanting more and more features faster&lt;/li&gt;
&lt;li&gt;Growing Operations Team deploying more and more servers&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Front-end has many BL services in one webapp (in Tomcat). The backend is many wars in 5 containers (in Jetty) with 1 service per WAR. Production and Development environments are very different. Total services in backend is close to 100, front-end has 30-40.
&lt;p&gt;
&lt;strong&gt;Container Challenges&lt;/strong&gt;&lt;br/&gt;
1 WAR with N services does not scale for developers (conflicts, monolithic). N wars with 1 service does not scale for containers (no shared JARs). You can add containers, but there&apos;s only 12GB of RAM available.
&lt;/p&gt;
&lt;p&gt;
Upgrading back-end service to new version requires downtime (hardware load-balancer does not account for version). Upgrading front-end service to new version requires redeploy. Adding new backend services is also painful because there&apos;s lots of configuration (load-balancer, IPs, etc.).
&lt;/p&gt;
&lt;p&gt;
Is there a solution to all these issues? Yan believes that OSGi is a good solution.  OSGi stands for &lt;strong&gt;Open Services Gateway initiative&lt;/strong&gt;. Today that term doesn&apos;t really mean anything. Today it&apos;s a spec with several implementations: Equinox (Eclipse), Knoplerfish and Felix (Apache). 
&lt;/p&gt;
&lt;p&gt;
OSGi has some really, really good features. These include smart class loading (multiple versions of JARs is OK), it&apos;s highly dynamic (deploy/undeploy built-in), it has a service registry and is highly extensible/configurable. An OSGi bundle is simply a JAR file with an OSGi manifest.
&lt;/p&gt;
&lt;p&gt;
In LinkedIn&apos;s current architecture, services are exported with Spring/RPC and services in same WAR can see each other. The problem with this architecture comes to light when you want to move services to a 2nd web container. You cannot share JARs and can&apos;t talk directly to the other web app. With OSGi, the bundles (JARs) are shared, services are shared and bundles can be dynamically replaced. OSGi solves the container challenge.
&lt;/p&gt;
&lt;p&gt;
One thing missing from OSGi is allowing services to live on multiple containers. To solve this, LinkedIn has developed a way to have &lt;strong&gt;Distributed OSGi&lt;/strong&gt;. Multicast is used to see what&apos;s going on in other containers. Remote servers use the OSGi lifecycle and create dynamic proxies to export services using Spring RPC over HTTP. Then this service is registered in the service registry on the local server. 
&lt;/p&gt;
&lt;p&gt;
With Distributed OSGi, there&apos;s no more N-1 / 1-N problem. Libraries and services can be shared in one container (memory footprint is much smaller). Services can be shared across containers. The location of the services is transparent to the clients. There&apos;s no more configuration to change when adding/removing/moving services. This architecture allows the software to be the load balancer instead of using a hardware load balancer.
&lt;/p&gt;
&lt;p&gt;
Unfortunately, everything is not perfect. OSGi has quite a few problems. OSGi is great, but the tooling is not quite there yet. Not every library is a bundle and many JARs doesn&apos;t have OSGi manifests. OSGi was designed for embedded devices and using it for the server-side is very recent (but very active).
&lt;/p&gt;
&lt;p&gt;
OSGi is pretty low-level, but there is some work being done to hide the complexity. Spring DM helps, as do vendor containers. SpringSource has Spring dm Server, Sun has GlassFish, and Paremus has Infiniflow. OSGi is container centric, but next version will add distributed OSGi, but will have no support for load-balancing.
&lt;/p&gt;
&lt;p&gt;
Another big OSGi issue is version management. If you specify &lt;code&gt;version=1.0.0&lt;/code&gt;, it means &lt;code&gt;[1.0.0, &amp;#8734;]&lt;/code&gt;. You should at least use &lt;code&gt;version=[1.0.0,2.0.0]&lt;/code&gt;. When using OSGi, you have to be careful and follow something similar to &lt;a href=&quot;http://apr.apache.org/versioning.html&quot;&gt;Apache&apos;s APR Project Versioning Guidelines&lt;/a&gt; so that you can easily identify release compatibility.
&lt;/p&gt;
&lt;p&gt;At LinkedIn, the OSGi implementation is progressing, but there&apos;s still a lot of work to do. First of all, a bundle repository needs to be created. Ivy and bnd is used to generate bundles. Containers are being evaluated and Infiniflow is most likely the one that will be used. LinkedIn Spring (an enhanced version of Spring) and SCA will be used to deploy composites. Work on load-balancing and distribution is in progress as is work on tooling and build integration (Sigil from Paremus). 
&lt;/p&gt;
&lt;p&gt;In conclusion, LinkedIn will definitely use OSGi but they&apos;ll do their best to hide the complexity from the build system and from developers. For more information on OSGi at LinkedIn, stay tuned to the &lt;a href=&quot;http://blog.linkedin.com/blog/engineering/&quot;&gt;LinkedIn Engineering Blog&lt;/a&gt;. Yan has promised to blog about some of the challenges LinkedIn has faced and how he&apos;s fixed them.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; Yan has posted his presentation on the &lt;a href=&quot;http://blog.linkedin.com/blog/2008/10/colorado-softwa.html&quot;&gt;LinkedIn Engineering Blog&lt;/a&gt;.</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/going_to_colorado_software_summit</id>
        <title type="html">Going to Colorado Software Summit? Bring your skis!</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/going_to_colorado_software_summit"/>
        <published>2008-10-17T11:47:55-06:00</published>
        <updated>2014-05-08T19:47:19-06:00</updated> 
        <category term="/General" label="General" />
        <category term="coloradosoftwaresummit" scheme="http://roller.apache.org/ns/tags/" />
        <category term="skiing" scheme="http://roller.apache.org/ns/tags/" />
        <category term="softwaresummit" scheme="http://roller.apache.org/ns/tags/" />
        <category term="keystone" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">As I mentioned &lt;a href=&quot;http://raibledesigns.com/rd/entry/the_colorado_software_summit_and&quot;&gt;last week&lt;/a&gt; the Colorado Software Summit begins this weekend. I don&apos;t know what to expect weather-wise, but the &lt;a href=&quot;http://www.wunderground.com/US/CO/Keystone.html&quot;&gt;Keystone forecast&lt;/a&gt; looks like it might snow a bit. &lt;a href=&quot;http://www.arapahoebasin.com/ABasin/&quot;&gt;A-Basin&lt;/a&gt; is open and tickets are only $49 per day. Since it&apos;s only a few miles from Keystone, I think I&apos;ll bring my skis and hit the slopes. If you&apos;re coming to the show and would like to join me, let me know. 
&lt;/p&gt;
&lt;p&gt;
Based on my &lt;a href=&quot;http://www.softwaresummit.com/2008/spkrsched.htm&quot;&gt;schedule&lt;/a&gt;, I&apos;m currently thinking of going Tuesday, Thursday or Friday morning. If the conditions are good, I may even go a couple times. Below are a couple pictures I took during the conference in years past. It&apos;ll be interesting to see what the weather is like this year.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;http://www.flickr.com/photos/mraible/279846778/&quot; title=&quot;Snow in Keystone by mraible, on Flickr&quot;&gt;&lt;img src=&quot;//farm1.static.flickr.com/122/279846778_b583107f15_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot; alt=&quot;Snow in Keystone&quot; style=&quot;border: 1px solid black&quot;/&gt;&lt;/a&gt;
  
&lt;a href=&quot;http://www.flickr.com/photos/mraible/55774219/&quot; title=&quot;Keystone by mraible, on Flickr&quot;&gt;&lt;img src=&quot;//farm1.static.flickr.com/31/55774219_23926a362e_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot; alt=&quot;Keystone&quot; style=&quot;border: 1px solid black; margin-left: 10px&quot;/&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/the_colorado_software_summit_and</id>
        <title type="html">The Colorado Software Summit and Spring 3.0&apos;s SVN</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/the_colorado_software_summit_and"/>
        <published>2008-10-09T08:23:21-06:00</published>
        <updated>2014-05-08T19:47:19-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="softwaresummit" scheme="http://roller.apache.org/ns/tags/" />
        <category term="appcelerator" scheme="http://roller.apache.org/ns/tags/" />
        <category term="coloradosoftwaresummit" scheme="http://roller.apache.org/ns/tags/" />
        <category term="keystone" scheme="http://roller.apache.org/ns/tags/" />
        <category term="spring" scheme="http://roller.apache.org/ns/tags/" />
        <category term="colorado" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;a href=&quot;http://www.softwaresummit.com&quot;&gt;&lt;img src=&quot;//static.raibledesigns.com/repository/images/css-logo.gif&quot; width=&quot;300&quot; height=&quot;135&quot; class=&quot;picture&quot; style=&quot;border: 0&quot;/&gt;&lt;/a&gt;

In a little over two weeks, my &lt;a href=&quot;http://www.softwaresummit.com&quot;&gt;favorite conference&lt;/a&gt; begins in Keystone, Colorado. The reason I like it so much is because it&apos;s an annual gathering (this will be my 4th year) with friends and it&apos;s somewhat like a vacation, except you get to learn a lot. This year I&apos;ll be speaking about &lt;a href=&quot;http://www.softwaresummit.com/2008/speakers/raible.htm&quot;&gt;Appcelerator and Spring 3.0&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;A few weeks ago, I wondered &lt;a href=&quot;http://raibledesigns.com/rd/entry/re_how_open_source_is&quot;&gt;How open source is Spring&lt;/a&gt; and expressed my frustration in not being able to find the source code. At almost the same time, SpringSource&apos;s &lt;a href=&quot;http://www.theserverside.com/news/thread.tss?thread_id=50727&quot;&gt;controversial maintenance policy was announced&lt;/a&gt;. Developers booed, &lt;a href=&quot;http://freespring.org/&quot;&gt;Free Spring&lt;/a&gt; was founded and &lt;a href=&quot;http://blog.springsource.com/2008/10/07/a-question-of-balance-tuning-the-maintenance-policy/&quot;&gt;SpringSource changed their tune&lt;/a&gt;. In addition, someone sent me the &lt;a href=&quot;https://fisheye.springframework.org/browse/spring-framework&quot;&gt;FishEye URL&lt;/a&gt; for Spring 3.0&apos;s SVN. From that, I was able to figure out how to get Spring 3.0&apos;s source code.&lt;/p&gt;
&lt;pre&gt;
svn co https://src.springframework.org/svn/spring-framework/trunk spring-3.0
&lt;/pre&gt;
&lt;p&gt;The only bad news is FishEye shows the last change as &quot;17 September 2008 ... (21 days ago)&quot;. If Spring 3.0 M1 is supposed to be released &lt;em&gt;any day now&lt;/em&gt;, you&apos;d think there would be more SVN commits. Anyone from SpringSource care to comment?</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/talks_for_the_colorado_software</id>
        <title type="html">Talks for the Colorado Software Summit</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/talks_for_the_colorado_software"/>
        <published>2008-05-29T15:40:13-06:00</published>
        <updated>2008-05-29T21:41:33-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="coloradosoftwaresummit" scheme="http://roller.apache.org/ns/tags/" />
        <category term="colorado" scheme="http://roller.apache.org/ns/tags/" />
        <category term="softwaresummit" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">I&apos;m looking forward to another great year at the &lt;a href=&quot;http://softwaresummit.com&quot;&gt;Colorado Software Summer&lt;/a&gt; in October. I submitted a couple &lt;a href=&quot;http://softwaresummit.com/2008/speakers/raible.htm&quot;&gt;abstracts&lt;/a&gt; back in April and have recently been granted the opportunity to change one. 
&lt;/p&gt;
&lt;p&gt;
The reason for the change is &lt;a href=&quot;http://www.linkedin.com/in/madonnax&quot;&gt;Yan Pujante&lt;/a&gt; (founder at &lt;a href=&quot;http://www.linkedin.com&quot;&gt;LinkedIn&lt;/a&gt;) is going to do my talk on &lt;strong&gt;Building LinkedIn&apos;s Next Generation Architecture with OSGi and Spring&lt;/strong&gt;. Since he&apos;s been very integral in writing the existing codebase, as well as the move to OSGi, it seemed more appropriate for him to do this talk. I&apos;d like to keep my talk on &lt;a href=&quot;http://www.appcelerator.org&quot;&gt;Appcelerator&lt;/a&gt;, but I&apos;m having a hard time deciding between four other options.&lt;/p&gt;
&lt;p&gt;If you&apos;re planning on attending CSS this year, let me know which one you&apos;d like to see most.&lt;/p&gt;
&lt;ul class=&quot;glassList&quot;&gt;
&lt;li&gt;What&apos;s New (or coming) in Spring 3.0&lt;/li&gt;
&lt;li&gt;Implementing Spring Security, OpenID and OAuth&lt;/li&gt;
&lt;li&gt;Comparing RESTful Web Frameworks: Struts 2 vs. Spring MVC&lt;/li&gt;
&lt;li&gt;How &lt;a href=&quot;http://developer.yahoo.com/performance/&quot;&gt;Yahoo&apos;s Rules for High Performance Web Sites&lt;/a&gt; made LinkedIn 50% Faster&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I could see changing the first option to Spring Web specifically. I could also see adding Rails and Grails to the 3rd choice. The 4th one is a lofty goal as the project has just begun. If we succeed, it could be a great talk.</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/the_perfect_day</id>
        <title type="html">The Perfect Day for a Homecoming</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/the_perfect_day"/>
        <published>2007-10-26T16:25:30-06:00</published>
        <updated>2014-05-08T19:47:19-06:00</updated> 
        <category term="/The Bus" label="The Bus" />
        <category term="softwaresummit" scheme="http://roller.apache.org/ns/tags/" />
        <category term="keystone" scheme="http://roller.apache.org/ns/tags/" />
        <category term="thebus" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">Today was a great day and a terrific start to a fun-filled weekend. The morning, I delivered my last talk at the Colorado Software Summit then drove home on a beautiful Colorado day. See proof below:&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;http://farm3.static.flickr.com/2249/1763584899_1e54c20423_o.jpg&quot; title=&quot;Lake Dillon&quot; rel=&quot;lightbox[perfectday]&quot;&gt;&lt;img src=&quot;//farm3.static.flickr.com/2249/1763584899_956fca36e3.jpg&quot; width=&quot;500&quot; height=&quot;375&quot; alt=&quot;Lake Dillon&quot; style=&quot;border: 1px solid black&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I got home just in time to meet the tow truck who was hauling my bus home. The shop were it was at was too slow. I&apos;ve been talking to &lt;a href=&quot;http://www.motorworksrestorations.com/&quot;&gt;MotorWorks Restorations&lt;/a&gt; (in the Springs) and I hope to get it into their shop w/in the next couple of weeks. After they&apos;ve completed the body and paint (and possibly electrical), I hope to rebuild the engine, finish the interior and have it on the road by next summer.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;http://farm3.static.flickr.com/2130/1763584481_82c65f2348_o.jpg&quot; title=&quot;Homecoming&quot; rel=&quot;lightbox[perfectday]&quot;&gt;&lt;img src=&quot;//farm3.static.flickr.com/2130/1763584481_c4f90cc66d_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot; alt=&quot;Homecoming&quot; style=&quot;border: 1px solid black&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I missed my delivery of Leopard this morning, but I can still get it before Monday if I can make it to the Fedex store before 7PM tonight. With happy hour starting at 5:30 and the Homecoming DU Hockey game at 7, this day just keeps getting better. 
&lt;/p&gt;
&lt;p&gt;
Hope y&apos;all have a great weekend!</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/introduction_to_grails_with_scott</id>
        <title type="html">Introduction to Grails with Scott Davis at the Colorado Software Summit</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/introduction_to_grails_with_scott"/>
        <published>2007-10-25T19:03:42-06:00</published>
        <updated>2014-05-08T19:47:19-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="grails" scheme="http://roller.apache.org/ns/tags/" />
        <category term="groovy" scheme="http://roller.apache.org/ns/tags/" />
        <category term="softwaresummit" scheme="http://roller.apache.org/ns/tags/" />
        <category term="webframeworks" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;a href=&quot;http://grails.org&quot;&gt;&lt;img src=&quot;//static.raibledesigns.com/repository/images/grails-logo-20070903.jpg&quot; alt=&quot;Grails&quot; width=&quot;280&quot; height=&quot;84&quot; class=&quot;picture&quot; style=&quot;border: 0&quot;/&gt;&lt;/a&gt;
According to Scott, today&apos;s Java-based web frameworks are partial solutions at best. They&apos;re only solving one piece of the puzzle - you still need to manage persistence, deployment, etc. &lt;em&gt;all by yourself&lt;/em&gt;.
&lt;/p&gt;&lt;p&gt;
We&apos;re moving into a new era of web frameworks. The expectation now is a full-stack solution. Grails is a fully integrated modern Java web application in a box. It contains Spring, Hibernate, Quartz, Log4J, Jetty, HSQL, JUnit and Ant. You&apos;re not limited to using Jetty, you can type &quot;grails war&quot; and create a WAR that you can deploy to any application server. In a single zip/tar, you get the whole thing - including the database and servlet container. You get a lot of good default for free, but you&apos;re not limited to those defaults.
&lt;/p&gt;&lt;p&gt;
What does &quot;modern&quot; in a framework mean? It means it uses Convention over Configuration - Grails autowires components together based on naming conventions. Struts 1.x uses Configuration over Configuration - the more XML the better. 
&lt;/p&gt;&lt;p&gt;
The Wisdom of Crowds - why are the many smarter than the few? What is the wisdom of crowds when it comes to web frameworks. &lt;strong&gt;Struts&lt;/strong&gt; is the wisdom of crowds when it comes to web frameworks. It&apos;s based on sound principles (MVC) and was written by Craig McClanahan. He was the architect of &quot;Catalina&quot; Tomcat 4 and wrote Struts shortly thereafter. David Geary was contributor #2 to Struts. It has a proven track record and has a 60%-70% market share. Struts must be the perfect framework - especially since it has such a great pedigree.
&lt;/p&gt;&lt;p&gt;
So what&apos;s wrong with Struts? 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It&apos;s 7 years old&lt;/li&gt;
&lt;li&gt;It&apos;s verbose and overly complex (reflective of the EJB 2.x era)&lt;/li&gt;
&lt;li&gt;Splintered community: Craig moved on to JSF -&gt; created Shale, then the WebWork merger&lt;/li&gt;
&lt;li&gt;While Struts 1.x was an unqualified success, Struts 2.x can&apos;t seem to build that critical mass - it can&apos;t seem to reach The Tipping Point like Struts 1.x did&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Recipe for a Tipping Point: Contagiousness / viral, tiny &quot;tweaks&quot; to a proven model can yield big, disproportionate effects, the rise is not &quot;slow and steady&quot; - the effect is dramatic and immediate.
&lt;/p&gt;&lt;p&gt;
Ruby on Rails won the hype award. It&apos;s largely worth the hype, but it&apos;s not revolutionary - it&apos;s &lt;em&gt;evolutionary&lt;/em&gt;. It has tiny tweaks to the proven MVC-driven approach: Convention over Configuration, Scaffolding and Unified Technology Stack. 
&lt;/p&gt;&lt;p&gt;
The one thing that Rails is lacking is Java support. Grails, on the other hand, offers the same experience using known, proven Java solutions.
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
Rails =&gt; &quot;replacement&quot;&lt;/li&gt;
&lt;li&gt;Grails =&gt; &quot;upgrade&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Scott drank the Rails Kool-Aid for a while and enjoyed it, but found it difficult to switch from Ruby in the morning to Java in the afternoon. With Grails, he doesn&apos;t have to do as much context switching, as well as all the Java libraries are available - the ones you know and love.
&lt;/p&gt;&lt;p&gt;
You can drop groovy.jar into your classpath and write Groovy code. One nice thing about Groovy is you can rename your existing .java files to .groovy and they&apos;ll work just fine. Included Ajax support: Script.aculo.us and Protoype as well as YUI. YUI is battle-tested since it&apos;s used by Yahoo and very well documented.  You can use &quot;grails install-dojo&quot; to install the Dojo toolkit. Grails has a wealth of plugins available at &lt;a href=&quot;http://grails.org/plugins&quot;&gt;http://grails.org/plugins&lt;/a&gt;. 
&lt;/p&gt;&lt;p&gt;
Now we&apos;re going to crack our nuckles and build some code - slides are over.

&lt;pre&gt;
 grails create-app conference
 cd conference
 grails create-domain-class Speaker (add some fields)
 grails generate-all Speaker
 grails run-app
&lt;/pre&gt;
&lt;p&gt;The impressive things about this set of commands is I was able to 1) download Grails and 2) run all these commands at the same time that Scott did. I was definitely impressed (I knew I would be).

Auto-scaffolding - you can get the same thing as &quot;generate-all&quot;, but it generates controllers and views at runtime &lt;em&gt;in-memory&lt;/em&gt;. All you need to do is create a domain object (i.e. Talk) and then create a TalkController that has the following line in it:
&lt;/p&gt;
&lt;pre&gt;
def scaffold = Talk
&lt;/pre&gt;
&lt;p&gt;As a test, I tried this at the same time that Scott did and got the following error. It looks like Grails/Jetty isn&apos;t smart enough to pick up new classes as they&apos;re added. 
&lt;/p&gt;
&lt;pre&gt;
[263102] commons.DefaultGrailsApplication Class not found attempting to load class Talk
java.lang.ClassNotFoundException: Talk
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
&lt;/pre&gt;
&lt;p&gt;Grails comes with a number of environments. &lt;strong&gt;Dev&lt;/strong&gt; (the default) auto-reloads changes to Controllers, Views and even the Model (this is helpful for rapid development). &lt;strong&gt;Prod&lt;/strong&gt; loads all items statically for maximum performance. To change the environments - you can change DataSource.groovy.
&lt;/p&gt;
&lt;p&gt;For some reason, adding/removing some properties on my Talk object and my application hasn&apos;t been the same since. Now when I try to access my TalkController, I see the following stack trace:
&lt;/p&gt;
&lt;pre&gt;
org.springframework.orm.hibernate3.HibernateQueryException: could not resolve property: difficulty of: Talk; nested exception is org.hibernate.QueryException: could not resolve property: difficulty of: Talk
	at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:640)
	at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
	at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:378)
	at org.springframework.orm.hibernate3.HibernateTemplate.executeFind(HibernateTemplate.java:342)
	at org.codehaus.groovy.grails.scaffolding.DefaultScaffoldDomain.list(DefaultScaffoldDomain.java:112)
&lt;/pre&gt;
&lt;p&gt;I asked Scott about this error and he proved that removing properties from domain objects should work. I told him restarting Jetty didn&apos;t fix the problem and he suggested dropping the &quot;Talk&quot; table and letting Grails re-create it. Unfortunately, I have no idea where this database is, so that&apos;s difficult to do. Doh - now I realize what was causing the problem. Before I dropped the &quot;difficulty&quot; property, I had clicked on the column and that property was still referenced in the URL. When I&apos;d refresh the browser, the stack trace occurred. I don&apos;t know if I&apos;d consider this a bug or not.
&lt;/p&gt;
&lt;p&gt;
dbCreate = hibernate.hbm2ddl.auto is used. When in development &lt;strong&gt;create-drop&lt;/strong&gt; is used. In production and test environments, it uses &lt;strong&gt;update&lt;/strong&gt; and saves the data between restarts.
&lt;/p&gt;
&lt;p&gt;
You can turn off Hibernate&apos;s automatic schema alteration by commenting out &quot;dbCreate&quot; line in DataSource.groovy. 
&lt;/p&gt;
&lt;p&gt;To run your application in Tomcat instead of Jetty, you can run &quot;grails war&quot; and copy the WAR to Tomcat. The WAR is created with the production environment by default, so you may need to pass in arguments or set environment variables if you want the WAR created in dev mode.
&lt;/p&gt;
&lt;p&gt;At this point, my battery died. Scott continued to cover how to order form elements (when using scaffolding) with &quot;static constraints&quot; and how to add validation rules. It was an excellent presentation and Grails definitely looks like a really cool web framework. The best part is I learned most of what you need to know to use it - in an hour!
&lt;/p&gt;
&lt;p&gt;
I might have to try Grails soon - I love the concept of &lt;a href=&quot;http://www.theserverside.com/news/thread.tss?thread_id=47213&quot;&gt;Life above the Service Tier&lt;/a&gt; and Grails would work nicely for serving up &lt;a href=&quot;http://grails.codehaus.org/REST+plugin&quot;&gt;REST&lt;/a&gt;. I think YUI, GWT-Ext and Flex are probably the best frameworks for developing a SOFEA client. The question is - when using YUI, how do you download all pages in the application at once?</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/choosing_a_jvm_web_framework2</id>
        <title type="html">Choosing a JVM Web Framework</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/choosing_a_jvm_web_framework2"/>
        <published>2007-10-23T14:20:13-06:00</published>
        <updated>2009-06-04T19:58:37-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="webframeworks" scheme="http://roller.apache.org/ns/tags/" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="softwaresummit" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">This morning I delivered my &lt;a href=&quot;http://www.softwaresummit.com/2007/speakers/raible.htm&quot;&gt;Choosing a JVM Web Framework&lt;/a&gt; presentation at the &lt;a href=&quot;http://softwaresummit.com&quot;&gt;Colorado Software Summit&lt;/a&gt;. One of my goals for the talk was to get more audience participation and stories of how folks thought it best to choose a web framework. The room was packed and the crowd was interested, so we barely even used the slides I prepared. One of the most interesting things about the audience was that over 60% (of 50-60 people) were using Struts 1. Most of them came to learn about frameworks they might think about migrating too. Unfortunately, I didn&apos;t talk a whole lot about the frameworks and their features, but a few members had advice concerning frameworks *not* to use based on their experiences. Overall, it was a lot of fun to interact so much with the audience and hear their thoughts on web development for the Java Platform.
&lt;/p&gt;
&lt;p&gt;You can download a PDF version of my presentation from my &lt;a href=&quot;http://raibledesigns.com/rd/page/publications&quot;&gt;presentations page&lt;/a&gt;. Thanks to all the  folks who responded to my &lt;a href=&quot;http://raibledesigns.com/rd/entry/choosing_a_jvm_web_framework1&quot;&gt;Stories Wanted&lt;/a&gt; post - I used many of these comments as part of the &quot;Case Studies&quot; in the presentation. </content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/apache_roller_acegi_security_ldap</id>
        <title type="html">Apache Roller, Acegi Security, LDAP and JA-SIG CAS</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/apache_roller_acegi_security_ldap"/>
        <published>2007-10-23T01:38:40-06:00</published>
        <updated>2009-06-04T20:05:40-06:00</updated> 
        <category term="/Roller" label="Roller" />
        <category term="security" scheme="http://roller.apache.org/ns/tags/" />
        <category term="ldap" scheme="http://roller.apache.org/ns/tags/" />
        <category term="roller" scheme="http://roller.apache.org/ns/tags/" />
        <category term="softwaresummit" scheme="http://roller.apache.org/ns/tags/" />
        <category term="acegi" scheme="http://roller.apache.org/ns/tags/" />
        <category term="cas" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">Earlier today, I delivered my talk on &lt;a href=&quot;http://www.softwaresummit.com/2007/speakers/raible.htm&quot;&gt;Apache Roller, Acegi Security and Single Sign-on&lt;/a&gt;. As part of this talk, I put together a couple of tutorials you might find useful:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://cwiki.apache.org/confluence/display/ROLLER/Roller+4.0+with+LDAP+and+CAS&quot;&gt; Roller 4.0 with LDAP and CAS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://cwiki.apache.org/confluence/display/ROLLER/Roller+4.0+on+Geronimo&quot;&gt;Roller 4.0 on Geronimo&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;smokey&quot;&gt;
&lt;strong&gt;NOTE:&lt;/strong&gt; These tutorials are using Roller&apos;s trunk as we found some things to simplify LDAP integration tonight.
&lt;/p&gt;
&lt;p&gt;You can download a PDF version of my presentation from my &lt;a href=&quot;http://raibledesigns.com/rd/page/publications&quot;&gt;publications page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;During the presentation I did a number of demos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Installing Roller on Tomcat&lt;/li&gt;
&lt;li&gt;Integrating Roller with Apache Directory Server&lt;/li&gt;
&lt;li&gt;Integration Roller with CAS&lt;/li&gt;
&lt;li&gt;Integrating CAS with LDAP&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Rather than saving the demo for the end, I did it as the first part of my presentation. This worked extremely well - especially since I didn&apos;t have to worry about running out of time. 
&lt;/p&gt;
&lt;p&gt;
If you&apos;re using Roller, have you integrated it with LDAP or another SSO solution? If so, is it working well for you?</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/first_snow</id>
        <title type="html">First Snow!</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/first_snow"/>
        <published>2007-10-21T12:02:30-06:00</published>
        <updated>2014-05-08T19:47:19-06:00</updated> 
        <category term="/General" label="General" />
        <category term="softwaresummit" scheme="http://roller.apache.org/ns/tags/" />
        <category term="firstsnow2007" scheme="http://roller.apache.org/ns/tags/" />
        <category term="denver" scheme="http://roller.apache.org/ns/tags/" />
        <category term="firstsnow" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">It usually snows in September in Denver. This year, it waited until today. It was awesome to wake up this morning and see the white stuff coming down. Bring on Ski Season - I&apos;m ready!&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;http://farm3.static.flickr.com/2390/1676020560_a4ddba8cef_o.jpg&quot; title=&quot;First snow in Denver - Winter 2007&quot; rel=&quot;lightbox&quot;&gt;&lt;img src=&quot;//farm3.static.flickr.com/2390/1676020560_1f709580cf_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot; alt=&quot;First snow in Denver - Winter 2007&quot; style=&quot;border: 1px solid black&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;&lt;p&gt;
Bill mentions that &lt;a href=&quot;http://bill.dudney.net/roller/bill/entry/20071015&quot;&gt;A-Basin is open&lt;/a&gt;. If you&apos;re going to this year&apos;s &lt;a href=&quot;http://softwaresummit.com&quot;&gt;Colorado Software Summit&lt;/a&gt; (starts today), you may want to bring your skis. Then again, who wants to ski greens? &lt;img src=&quot;https://raibledesigns.com/images/smileys/wink.gif&quot; class=&quot;smiley&quot; alt=&quot;;-)&quot; title=&quot;;-)&quot; /&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/colorado_software_summit_are_you</id>
        <title type="html">Colorado Software Summit - are you coming?</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/colorado_software_summit_are_you"/>
        <published>2007-09-24T18:44:03-06:00</published>
        <updated>2012-11-08T14:37:11-07:00</updated> 
        <category term="/Java" label="Java" />
        <category term="roller" scheme="http://roller.apache.org/ns/tags/" />
        <category term="softwaresummit" scheme="http://roller.apache.org/ns/tags/" />
        <category term="colorado" scheme="http://roller.apache.org/ns/tags/" />
        <category term="webframeworks" scheme="http://roller.apache.org/ns/tags/" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">Are you coming to the &lt;a href=&quot;http://softwaresummit.com&quot;&gt;Colorado Software Summit&lt;/a&gt; this year? I&apos;m excited to go because I wrote &lt;a href=&quot;http://www.softwaresummit.com/2007/speakers/raible.htm&quot;&gt;new presentations&lt;/a&gt; and I think they&apos;ll be a lot of fun to deliver. Also, as I&apos;ve &lt;a href=&quot;http://raibledesigns.com/rd/entry/the_colorado_software_summit_in&quot;&gt;said before&lt;/a&gt;, I really enjoy this conference because it&apos;s so relaxing. It&apos;s a full-week long, which is a tough commitment, but I like to think of it as a vacation. You do have to deliver your talks 3 times each, so you still have to &lt;em&gt;work&lt;/em&gt; every day, but there&apos;s also a great opportunity to learn from other speakers. And you don&apos;t feel rushed since each talk is given 3 times. This means you can treat some days like real vacation days where you only work a couple hours and others you can pack it in and get a brain full of stuff.
&lt;/p&gt;
&lt;p&gt;Here&apos;s my &lt;strong&gt;Choosing a JVM Web Framework&lt;/strong&gt; abstract?&lt;/p&gt;
&lt;p class=&quot;quote&quot;&gt;
One of the most difficult things to do (in Java web development) today is to pick which web framework to use when developing an application. A few years ago, there were over 50 Java web frameworks available, most of them open source. Since then, the number hasn&apos;t gone down, but the quality of choices has certainly improved. Should you use the standard JSF, or something like Tapestry or Wicket? What about Struts&apos; successor ? is Struts 2 better than Spring MVC or Stripes? And what about the slick-looking applications that Flex and OpenLaszlo can create? Should you use Rails on GlassFish or Grails with Groovy? Is ZK really the next best thing? Where does RIFE fit into all of this? The choice hasn&apos;t gotten easier over the years.
&lt;br/&gt;&lt;br/&gt;
This session is a discussion about choosing the best tool for the job. Not only will various frameworks and their features be discussed, but so will important factors for choosing a web framework. Is ease of development more important, or future maintenance? Is the project community an important factor? All of these questions will be discussed and answers will be provided. If you are about to choose a web framework, or if you have an opinion about a web framework, this session is for you.&lt;/p&gt;
&lt;p&gt;I think it&apos;s important to note that this talk is going to be a &lt;em&gt;discussion&lt;/em&gt;. I don&apos;t plan on offering my opinions as much as I plan on extracting them from others. This talk probably wouldn&apos;t work with the Norway crowd (they don&apos;t like to participate much), but I think it&apos;ll work with the Colorado folks.&lt;/p&gt;
&lt;p&gt;If you&apos;re attending &lt;a href=&quot;http://www.us.apachecon.com/&quot;&gt;ApacheCon&lt;/a&gt; this year, which talk would you rather attend - Comparing or Choosing? Or maybe &quot;choosing&quot; would fit in better as a BOF?</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/css_2006_mike_milinkovich_s</id>
        <title type="html">[CSS 2006] Mike Milinkovich&apos;s Keynote</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/css_2006_mike_milinkovich_s"/>
        <published>2006-10-26T22:39:24-06:00</published>
        <updated>2009-06-04T20:08:35-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="softwaresummit" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">I&apos;m sitting in Mike Milinkovich&apos;s Keynote at the &lt;a href=&quot;http://softwaresummit.com&quot;&gt;Colorado Software Summit&lt;/a&gt; in Keystone, Colorado. Mike is the Executive Director of the Eclipse Foundation - his picture can be seen on his &lt;a href=&quot;http://www.itconversations.com/shows/detail167.html&quot;&gt;IT Conversations&lt;/a&gt; page. Mike had fun getting up here - driving through the snow - and waiting on the freeway for a couple hours while the &quot;rock slide&quot; was cleared.
&lt;br/&gt;&lt;br/&gt;
Mike&apos;s presentation is titled &quot;All About Platforms, Lessons learned from Eclipse&quot;. Mike used to work for Oracle, and he&apos;s been at the Eclipse Foundation for 2 years.  Before that, he was at WebGain. The company that &quot;would not believe that Visual Cafe sucked&quot;. He&apos;s been in the Tools Business for a long time, and has never bothered to learn Java. He used to do a lot in SmallTalk and that&apos;s they last time he programmed. The &quot;repository thingy&quot; in Visual Age for Java was his fault.</summary>
        <content type="html">I&apos;m sitting in Mike Milinkovich&apos;s Keynote at the &lt;a href=&quot;http://softwaresummit.com&quot;&gt;Colorado Software Summit&lt;/a&gt; in Keystone, Colorado. Mike is the Executive Director of the Eclipse Foundation - his picture can be seen on his &lt;a href=&quot;http://www.itconversations.com/shows/detail167.html&quot;&gt;IT Conversations&lt;/a&gt; page. Mike had fun getting up here - driving through the snow - and waiting on the freeway for a couple hours while the &quot;rock slide&quot; was cleared.
&lt;br/&gt;&lt;br/&gt;
Mike&apos;s presentation is titled &quot;All About Platforms, Lessons learned from Eclipse&quot;. Mike used to work for Oracle, and he&apos;s been at the Eclipse Foundation for 2 years.  Before that, he was at WebGain. The company that &quot;would not believe that Visual Cafe sucked&quot;. He&apos;s been in the Tools Business for a long time, and has never bothered to learn Java. He used to do a lot in SmallTalk and that&apos;s they last time he programmed. The &quot;repository thingy&quot; in Visual Age for Java was his fault.
&lt;br/&gt;&lt;br/&gt;
November 7th, 2001 was the day the Eclipse servers got turned on. November 7th was when the code shipped, November 29th was when IBM got their act together and did their press release. The biggest thing that&apos;s come out of Eclipse is the consortium of companies around it. There&apos;s an &lt;a href=&quot;http://birthday.eclipse.org&quot;&gt;online birthday card&lt;/a&gt; for Eclipse.
&lt;br/&gt;&lt;br/&gt;
Agenda: Why Platforms Matter &amp;raquo; Four Key Elements of a Platform &amp;raquo; What the Future Holds.
&lt;br/&gt;&lt;br/&gt;
Part of what happens in &quot;platforms&quot; is building software architectures that will stand the test of time.  Today&apos;s programs are expected to last all the way until 2050! 80% of the code that goes into a product or application &lt;em&gt;just doesn&apos;t matter&lt;/em&gt;. This is STDNM = Shit That Does Not Matter.  Not enough time is being spent on real innovation and differentiation. 
&lt;br/&gt;&lt;br/&gt;
&quot;One of the great things about open source is it allows the collaboration of organizations to build software together.&quot;
&lt;br/&gt;&lt;br/&gt;
WebTools is the best example of this - it&apos;s lead by BEA, but worked on by Oracle and JBoss folks as well. They get to collaborate on the STDNM. Focus on More Cool Stuff and make $$$ for your company. The companies that build the platforms that stand the test of time have generated more wealth than any other part of any other human endeavor.
&lt;/p&gt;
&lt;p class=&quot;quote&quot;&gt;
&quot;In the very beginning, people said you couldn&apos;t make relational databases fast enough tto be commercially viable.&quot; &lt;em&gt;- Larry Ellison&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;There is an &lt;i&gt;entire&lt;/i&gt; generation of software developers that think Win32 is the de-facto development platform. 
&lt;br/&gt;&lt;br/&gt;
&lt;strong style=&quot;color: #666&quot;&gt;Four Key Elements of a Platform&lt;/strong&gt;
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Great technology&lt;/li&gt;
&lt;li&gt;Community Passion&lt;/li&gt;
&lt;li&gt;Culture&lt;/li&gt;
&lt;li&gt;Wide Adoption&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Changing to the OSGi model was a &lt;i&gt;good&lt;/i&gt; idea, they never expected it to be a &lt;i&gt;great&lt;/i&gt; idea. The folks that are building the Eclipse project are using the same plugin API as plugin developers are.  The real goal is software modules that you can simply &lt;i&gt;plug in&lt;/i&gt;. The amazing thing is it&apos;s scaling really well - they&apos;ve heard of folks running the Eclipse Workbench with over 1000 plugins (yeah right!).
&lt;br/&gt;&lt;br/&gt;
The Java Community thing of Eclipse as a &quot;Java thing&quot;, but it&apos;s always been designed to be a &quot;Tools Framework&quot;. There&apos;s a ton of tools today being built on Eclipse: RadRails, CFEEclipse, PHPEclipse, fx, PyDev, SQL, D, Photran, TI, RDT, Eclipse JDT, Eclipse CDT, Eclipse PHP. Texas Instruments designed an environment for building digital equipment processors on top of Eclipse. And then there&apos;s Eclipse RCP - the Rich Client Platform.
&lt;br/&gt;&lt;br/&gt;
RCP was one of those things that Eclipse didn&apos;t want to do.  They were dragged kicking and screaming into it. One good example of a company building something in RCP is JPMorgan.  They built a tool to do currency training and bond valuation.  They used to be doing it in Excel.  They used RCP and they built their own domain-specific platform.  
&lt;br/&gt;&lt;br/&gt;
Community Passion: Brand Hijack is a book about &quot;marketing without marketing&quot;. Let the community define what &quot;Eclipse&quot; means. It&apos;s the antithesis of traditional marketing where you let the community take over. If you dive into the &quot;Eclipse Community&quot;, you will find their 3 sets of folks: Users, Committers and Plug-In Developers. Past that, there&apos;s technology-based communities: Java Developers, rich client, modeling, embedded developers, PHP Developers, Report Developers, etc. Within each of the technology-based communities, the triangle exists as well.
&lt;br/&gt;&lt;br/&gt;
Metcalfe&apos;s Law works for communities as well. The value of a community is proportional to the number of functioning relationships b/w the people and the groups within the community.&lt;br/&gt;
&lt;br/&gt;
What is the interaction b/w the users and the development team? Eclipse 3.1 metrics:
&lt;/p&gt;
&lt;ul class=&quot;glassList&quot;&gt;
&lt;li&gt;Number of newsgroup posts: 32,233&lt;/li&gt;
&lt;li&gt;Number of mailing list posts: 7,792&lt;/li&gt;
&lt;li&gt;Number of Eclipse-specific blogs: 27&lt;/li&gt;
&lt;li&gt;Bugzilla reports fixed: 9,871&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
How do you get there?  How do you &quot;create passionate users&quot;?  Mike has a picture from Kathy Sierra&apos;s blogs and tells how it&apos;s one of his favorite blog posts. Blogs are (of course) &quot;conversational marketing&quot; and work well for building communities.
&lt;/p&gt;
&lt;p class=&quot;quote&quot;&gt;
what really distinguishes open source is not just source, but an &quot;architecture of participation&quot; &lt;em&gt;- &lt;a href=&quot;http://oreillynet.com/pub/wlg/3017?wlg=yes&quot;&gt;Tim O&apos;Reilly&lt;/a&gt;&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;There are 152 members of the Eclipse foundation. There&apos;s 15 companies that pay over $200K per year to be &lt;i&gt;Some Fancy Title&lt;/i&gt; of the Eclipse Foundation. Governance matters in open source.  It helps to manage the project and make it a viable product.
&lt;br/&gt;&lt;br/&gt;
The Board of Directors has &quot;elected committer reps&quot;. All the votes from the committers are collapsed by company name.  This means that all the IBM votes only count as one. Projects at Eclipse are lead by many different companies - there were 8 major companies listed on the slide that Mike showed.&lt;br/&gt;&lt;br/&gt;
Company Behavior regarding open source appears to follow a maturity model:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Denial&lt;/li&gt;
&lt;li&gt;User&lt;/li&gt;
&lt;li&gt;Collaboration&lt;/li&gt;
&lt;li&gt;Champion&lt;/li&gt;
&lt;li&gt;Strategist&lt;/li&gt;
&lt;li&gt;Aggressive&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Marketing 101 talks about the product lifecycle - where the graph shows a bell curve. In the 1990s, there were many books about this topic, explaining how to get from the early adopter stage to the next stage. Earlier Adopters are folks like us at this conference. Early Majority are the guys you know, that listen to what we have to say. The Guys you don&apos;t know are next, followed the Guys you Don&apos;t Want to Know. The last two are located on the right side of the bell curve.
&lt;br/&gt;&lt;br/&gt;
Success Means Broad Adoption - when pathfinders start to adopt the platform, things are moving in the right direction.  Following these folks are ISVs, Product Developers - followed by the build of people: Application Developers. 
&lt;br/&gt;&lt;br/&gt;
&lt;strong style=&quot;color: #666&quot;&gt;What does the Future Hold?&lt;/strong&gt;
&lt;br/&gt;&lt;br/&gt;
He&apos;s got a picture of a little chawawa talking to a big dog with a little note in his mouth.  The note says &quot;Fuck you&quot;. Mike says &quot;bullshit&quot; to the fact that future platform for desktops is up for grabs. 
&lt;br/&gt;&lt;br/&gt;
The .NET 3.0 Stack in Vista is what he&apos;s referring to - not Vista itself. Microsoft has had an unparalleled string of successes, but one &quot;oh shit&quot; can erase a thousand &quot;atta boys&quot;. WinFX is backwards compatible, but it&apos;s not forwards compatible. No matter how good of a partner program that Microsoft builds, it&apos;s still not open source.  They&apos;re locked into the &quot;volume geo markets&quot; - they&apos;re going to have a hard time getting penetration into those markets. To outfit hundreds of millions of users in China would be extremely expensive. Many of these counties are using open source because they can&apos;t afford Windows.
&lt;br/&gt;&lt;br/&gt;
A couple of years ago, folks thought the desktop wars were over.  However, today you&apos;re seeing a lot more Macs and a fair amount of folks using Desktop Linux. It&apos;s not just a Windows world anymore. If you think back to Windows 95, try finding the  products build for Vista.  When 95 and XP where launched, there were literally hundreds of products listed on their website.  This isn&apos;t happening with Vista.
&lt;br/&gt;&lt;br/&gt;
The world&apos;s Largest Software Company has forgotten how to ship software. They can&apos;t get an operating system out the door. They tried to scale something that worked for small projects, but got surprised when it didn&apos;t work. They didn&apos;t plan ahead enough to figure out what they needed to do to scale their world.
&lt;/p&gt;
&lt;p class=&quot;quote&quot;&gt;
Microsoft&apos;s Avalon is the J2EE of GUI APIs... Avalon marks the end of the American Dream. - &lt;em&gt;Miguel de Icaza.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;The Challengers to Microsoft: Eclipse RCP, OpenAjax Alliance, KDE, Flex, Java, Flash. Lessons of History: &quot;Hubris gets &apos;em every time.&quot; - &lt;em&gt;William Shakespeare, 1596&lt;/em&gt;. The sin of pride leads to downfall. Other examples of this are IBM PS/2 and the Intel Itanium. A lot of money went into these platforms and not a lot of money came out.
&lt;br/&gt;&lt;br/&gt;
&lt;strong style=&quot;color: #666&quot;&gt;.NET 3.0&lt;/strong&gt;&lt;br/&gt;
It&apos;s a great technology; it solves a hard problem with grace and style. It has a single standard and implementation (which is actually a plus). It used to have a passionate (and happy) community, but there&apos;s been a lot of unhappy blog posts lately. Historically, they&apos;re good at developing a Culture of Participation. They fail on the ecosystem and governance model. Once you start making real money, Microsoft gets mad. &lt;br/&gt;&lt;br/&gt;
&lt;strong style=&quot;color: #666&quot;&gt;Ajax&lt;/strong&gt;&lt;br/&gt;
It is a great technology, but XHR is not a platform. There&apos;s no single Ajax technology beyond the simple stuff. There&apos;s definitely no single standard or implementation. It doesn&apos;t have a passionate community, but it fails both architecture and ecosystem in its Culture of Participation because it&apos;s just a &lt;i&gt;bunch of stuff&lt;/i&gt;. The ecosystem is not sharing technology, they&apos;re just rallying around the word. The good news is there is a lot of broad adoption.&lt;br/&gt;&lt;br/&gt;
&lt;strong style=&quot;color: #666&quot;&gt;Desktop Linux&lt;/strong&gt;&lt;br/&gt;
It&apos;s a great technology, but doesn&apos;t really solve a hard problem with grace and style. Now Mike is dissing on OS X because it doesn&apos;t run on &quot;commodity hardware&quot;. Apple isn&apos;t aspiring to be the volume leader, that&apos;s why he didn&apos;t analyze it. Mike thinks that Linux developers have failed from the Ecosystem perspective because there&apos;s not a lot of company&apos;s building products for Desktop Linux.&lt;br/&gt;&lt;br/&gt;
&lt;strong style=&quot;color: #666&quot;&gt;Eclipse RCP&lt;/strong&gt;&lt;br/&gt;
It&apos;s a great technology and solves a hard problem with grace and style, as well as has a single standard or implementation. Interest and awareness in RCP is going up really fast. It has a good architecture and has a strong ecosystem. 
&lt;br/&gt;&lt;br/&gt;
Microsoft is becoming IBM because they&apos;re going to have incompatible platforms to support.  With RCP, it works on all Microsoft platforms/versions.
</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/css_2006_snow_in_keystone</id>
        <title type="html">[CSS 2006] Snow in Keystone</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/css_2006_snow_in_keystone"/>
        <published>2006-10-26T07:57:06-06:00</published>
        <updated>2014-05-08T19:47:19-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="softwaresummit" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">Looks like a good day for skiing...
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;http://static.flickr.com/122/279846778_b583107f15_o.jpg&quot; title=&quot;Snow in Keystone&quot; rel=&quot;lightbox&quot;&gt;&lt;img src=&quot;//static.flickr.com/122/279846778_b583107f15.jpg&quot; width=&quot;500&quot; height=&quot;375&quot; alt=&quot;Snow in Keystone&quot; style=&quot;border: 1px solid black&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/css_2006_day_3</id>
        <title type="html">[CSS 2006] Day 3</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/css_2006_day_3"/>
        <published>2006-10-25T18:04:47-06:00</published>
        <updated>2009-06-04T20:08:23-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="softwaresummit" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">This morning, I gave both my talks back-to-back and was done by noon.  After lunch, I attended &lt;a href=&quot;http://www.softwaresummit.com/2006/speakers/blum.htm&quot;&gt;Scott Blum&apos;s Taming AJAX with GWT&lt;/a&gt;. It was a good talk with some impressive demos.  I definitely need to dig into GWT more - it looks like very cool technology.  I can&apos;t help but think it&apos;s the &quot;widget framework&quot; that JSF was supposed to be.&lt;br/&gt;&lt;br/&gt;
I was planning on heading back to Denver tonight, but it started snowing and Julie said they expect 10&quot; in East Denver.  Who knows if it&apos;ll actually snow that much (the weatherfolks are often wrong), but I don&apos;t want to be on the roads.</summary>
        <content type="html">This morning, I gave both my talks back-to-back and was done by noon.  After lunch, I attended &lt;a href=&quot;http://www.softwaresummit.com/2006/speakers/blum.htm&quot;&gt;Scott Blum&apos;s Taming AJAX with GWT&lt;/a&gt;. It was a good talk with some impressive demos.  I definitely need to dig into GWT more - it looks like very cool technology.  I can&apos;t help but think it&apos;s the &quot;widget framework&quot; that JSF was supposed to be.&lt;br/&gt;&lt;br/&gt;
I was planning on heading back to Denver tonight, but it started snowing and Julie said they expect 10&quot; in East Denver.  Who knows if it&apos;ll actually snow that much (the weatherfolks are often wrong), but I don&apos;t want to be on the roads.
&lt;br/&gt;&lt;br/&gt;
In the afternoon, I attended &lt;a href=&quot;http://davisworld.org&quot;&gt;Scott Davis&apos;s&lt;/a&gt; &lt;a href=&quot;http://www.softwaresummit.com/2006/speakers/davis.htm&quot;&gt;Real World AJAX&lt;/a&gt; presentation.  Scott is an excellent speaker, so it was definitely a good talk. He did spend a fair amount of time explaining basic XHTML (divs) and CSS, but he also showed some cool Prototype code (Event.observe is a great way to add behavior to your divs and other elements).  Scott&apos;s books? JBoss At Work, Google Maps API and Pragmatic GIS.&lt;br/&gt;&lt;br/&gt;
I believe Scott&apos;s &lt;a href=&quot;http://www.mapmap.org/ryogm/&quot;&gt;Roll Your Own Google Maps&lt;/a&gt; is the sample application for his Google Maps API book, but I&apos;m not sure. This is a 12-step tutorial that shows you how easy it is build your own version of Google Maps. The one thing I noticed that Scott did really well was explain the basic concepts of everything; from CSS to Prototype to AJAX in general. Even more impressive was he did it in a way where you were still &lt;i&gt;interested&lt;/i&gt;, even if you knew everything he was talking about.
&lt;br/&gt;&lt;br/&gt;
For the last session, I attended Tom Bender&apos;s &lt;a href=&quot;http://www.softwaresummit.com/2006/speakers/bender.htm&quot;&gt;Introduction to Wireless Sensor and Control Networks&lt;/a&gt;. This talk had a lot of information that was way over my head, but I&apos;m sure my Dad would have enjoyed it.  He&apos;s a big radio/wi-fi guy and digs all the communication stuff.</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/css_2006_to_esb_or</id>
        <title type="html">[CSS 2006] To ESB or not to ESB?</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/css_2006_to_esb_or"/>
        <published>2006-10-24T18:08:48-06:00</published>
        <updated>2009-06-04T20:07:51-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="softwaresummit" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;em&gt;Do you have to have an ESB to have a SOA?&lt;/em&gt;&lt;br/&gt;&lt;br/&gt;
I&apos;m sitting in &lt;a href=&quot;&quot;&gt;Denise Hatzidakis&lt;/a&gt;&apos;s talk titled &quot;To ESB or not to ESB&quot; as requested by &lt;a href=&quot;http://raibledesigns.com/page/rd?entry=the_colorado_software_summit_in#comment1&quot;&gt;Mick Huisking&lt;/a&gt;.  Dinese is the Chief Technologist at &lt;a href=&quot;http://perficient.com&quot;&gt;Perficient, Inc.&lt;/a&gt;.  It&apos;s interesting, on her opening slide she has a @perficient.com e-mail address, as well as an @us.ibm.com  address.
&lt;br/&gt;&lt;br/&gt;
&quot;SOA stands for Same Old Architecture&quot;
&lt;br/&gt;&lt;br/&gt;
This talk focuses on using an ESB and how to build it.  There&apos;s a lot of ESB products out there. An ESB is not about a product - it&apos;s about what kind of connectivity you need between your systems.</summary>
        <content type="html">&lt;em&gt;Do you have to have an ESB to have a SOA?&lt;/em&gt; I&apos;m sitting in &lt;a href=&quot;&quot;&gt;Denise Hatzidakis&lt;/a&gt;&apos;s talk titled &quot;To ESB or not to ESB&quot; as requested by &lt;a href=&quot;http://raibledesigns.com/page/rd?entry=the_colorado_software_summit_in#comment1&quot;&gt;Mick Huisking&lt;/a&gt;.  Dinese is the Chief Technologist at &lt;a href=&quot;http://perficient.com&quot;&gt;Perficient, Inc.&lt;/a&gt;.  It&apos;s interesting, on her opening slide she has a @perficient.com e-mail address, as well as an @us.ibm.com  address.
&lt;br/&gt;&lt;br/&gt;
&quot;SOA stands for Same Old Architecture&quot;
&lt;br/&gt;&lt;br/&gt;
This talk focuses on using an ESB and how to build it.  There&apos;s a lot of ESB products out there. An ESB is not about a product - it&apos;s about what kind of connectivity you need between your systems. 
&lt;/p&gt;
&lt;p class=&quot;quote&quot;&gt;
An ESB is an &quot;Architectural Pattern&quot;. In fact, it&apos;s possible to construct service buses from a variety of different underlying integration technologies.... The architecture pattern remains valid and is a guiding priciple to enable the integration and federation of mulitpler service bus instantiations
&lt;br/&gt;&lt;br/&gt;
&lt;em&gt;--Rob High, SOA Foundation Chief Architect&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
An ESB enables standards-based integration between loosely-coupled apps and services within and across:&lt;/p&gt;
&lt;ul class=&quot;glassList&quot;&gt;
&lt;li&gt;&lt;b&gt;services oriented architectures&lt;/b&gt; - where distributed applications are composed of granular re-usable services with well-defined, published and standards-compliant interfaces&lt;/li&gt;
&lt;li&gt;&lt;b&gt;message driven architectures&lt;/b&gt; - where applications send messgaes through the ESB to receiving apps&lt;/li&gt;
&lt;li&gt;&lt;b&gt;event driven architectures&lt;/b&gt; - where applications generate and consume messages anonymously&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&quot;SOA - it was EJBs a couple of years ago&quot;
&lt;br/&gt;&lt;br/&gt;
When implementing a &quot;Virtual Provider&quot;, who is responsible for building that?
&lt;/p&gt;
&lt;ul class=&quot;glassList&quot;&gt;
&lt;li&gt;The Service Consumer?&lt;/li&gt;
&lt;li&gt;The Prospective Service Provider?&lt;/li&gt;
&lt;li&gt;The Service Broker?&lt;/li&gt;
&lt;li&gt;The Internal Enterprise-wide Governance Body on SOA?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
The Service Consumer may have to foot the bill or agree to split it with the prospective provider. The provider may not be ready or willing (no funding or not a priority) to build a service interface for the consumer.
&lt;br/&gt;&lt;br/&gt;
The &lt;em&gt;biggest&lt;/em&gt; barrier to ESB implementation success is often political - it rarely has anything to do with technology.
&lt;br/&gt;&lt;br/&gt;
There&apos;s 3 core layers in an ESB:&lt;/p&gt;
&lt;ul class=&quot;glassList&quot;&gt;
&lt;li&gt;Micro Composition/Decomposition &amp;amp; Customized Routing: 
Protocol mapping, pattern recognition (where you deal with the messages), message validation, service brokering&lt;/li&gt;
&lt;li&gt;Enterprise Service Bus - Core Layer&lt;/li&gt;
&lt;li&gt;Bus Connections: HTTP, JDBC, etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
The &lt;i&gt;key&lt;/i&gt; USB purpose is &lt;b&gt;Routing Service Requests&lt;/b&gt;. The ESB proxies the means to manage the service infrastructure and the capability to operate in today&apos;s distributed, heterogeneous environment. Denise said she told IBM not to build an ESB, because it&apos;s not about the product, it&apos;s about the architecture. However, apparently one CEO wouldn&apos;t buy the IBM Stack because &quot;ESB&quot; wasn&apos;t on the purchase order.
&lt;br/&gt;&lt;br/&gt;
ESB Capabilities: Communications, Service Interaction, Integration (databases, legacy, etc.), Quality of Service, etc.
&lt;br/&gt;&lt;br/&gt;
An ESB leverages underlying communication fabrics of SOA infrastructure - providing &lt;i&gt;on-ramps&lt;/i&gt; and &lt;i&gt;off-ramps&lt;/i&gt;. Typical requirements are: HTTP (SAOP/HTTP, XML/HTTP), MQ (SOAP/JMS/MQ, XML/MQ, text/MQ), Adapters, WS-I, WS-Security, RAMP. Web services are a key enabler of SOA, but they certainly aren&apos;t a requirement.
&lt;br/&gt;&lt;br/&gt;
&lt;strong style=&quot;color: #666&quot;&gt;Message Models&lt;/strong&gt;&lt;/p&gt;
&lt;ul class=&quot;glassList&quot;&gt;
&lt;li&gt;Describe messages exchanged with requesters and providers&lt;/li&gt;
&lt;li&gt;Based on Meta-models&lt;/li&gt;
&lt;li&gt;An ESB supports one or more message meta-models&lt;/li&gt;
&lt;li&gt;An ESB supports multiple message content models
&lt;ul class=&quot;glassList&quot;&gt;
&lt;li&gt;Can include industry standard model as well as enterprise specific models&lt;/li&gt;
&lt;li&gt;Can include weakly-typed models&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;a href=&quot;http://en.wikipedia.org/wiki/Canonicalization&quot;&gt;Canonicalize&lt;/a&gt; on the message format itself (using something like SOAP or JMS, just agree on which one).  Let the business logic reside in the message itself.  You will want an ESB that supports multiple content models.
&lt;br/&gt;&lt;br/&gt;
&lt;strong style=&quot;color: #666&quot;&gt;Mediation Flows:&lt;/strong&gt; process messages exchanged between requester and provider via ESB (large grained, moderately reusable, constructed from &lt;i&gt;Mediation Patterns&lt;/i&gt;.
&lt;br/&gt;&lt;br/&gt;
&lt;strong style=&quot;color: #666&quot;&gt;Mediation Patterns and Message Processing:&lt;/strong&gt; Allow manipulation of messages during a message flow (provided by a mediation framework).
&lt;br/&gt;&lt;br/&gt;
Mediation enables Service Virtualization of &lt;i&gt;identity&lt;/i&gt; via routing, &lt;i&gt;interaction&lt;/i&gt; vi conversion and &lt;i&gt;interface&lt;/i&gt; via transformation.
&lt;br/&gt;&lt;br/&gt;
Mediation enabled Aspect Oriented Connectivity - Security &amp;amp; Management, Logging Auditing, Dynamic Routing, etc.
&lt;br/&gt;&lt;br/&gt;
Example Mediation Patterns: request/response, request/multi-response, event propagation, distribute, correlate, monitor, gateway, transform - log - route. 
&lt;br/&gt;&lt;br/&gt;
Connectivity, Message Model and Message Flows are the 3 main components in an ESB. What&apos;s not in the ESB? &lt;i&gt;Everything else!&lt;/i&gt;
&lt;br/&gt;&lt;br/&gt;
Do you have to have an ESB to do an SOA? &lt;i&gt;No&lt;/i&gt;.
&lt;br/&gt;&lt;br/&gt;
Do get a good ROI from your SOA, you need to have a &lt;b&gt;loose coupling&lt;/b&gt; in your implementation. Tighter coupling tends to cost more over time, but looser coupling requires greater investment up front. There&apos;s more design work and more implementation work that happens in the beginning.  You might not need a full-blown ESB (is this starting to sound like EJB containers), you can probably do an SOA architecture with your current tools and technologies. When I was at Xcel Energy last year, a bunch of good friends built an ESB on top of JBoss - using Quartz, JMS, EJB, Spring and Hibernate.
&lt;br/&gt;&lt;br/&gt;
What does &quot;loosely coupled&quot; mean? It&apos;s not a well defined term.  We now what &quot;coupled&quot; and &quot;decoupled&quot; means, but there&apos;s a lot of grey in between. 
&lt;br/&gt;&lt;br/&gt;
At this point, my battery began to die. Denise was a good speaker, but she had a lot of information on her slides - makes a real-time blogger&apos;s fingers hurt. ;-)
&lt;br/&gt;&lt;br/&gt;
Tonight, I&apos;ll be attending the Q &amp; A, followed by a Spring BOF. Should be fun.</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/using_maven_2_to_get</id>
        <title type="html">[CSS 2006] Using Maven 2 to get control over your Development Process</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/using_maven_2_to_get"/>
        <published>2006-10-24T15:53:43-06:00</published>
        <updated>2009-06-04T20:08:05-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="softwaresummit" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">This afternoon I attended &lt;a href=&quot;http://softwaresummit.com/2006/speakers/opstvedt.htm&quot;&gt;Hermod Opstvedt&lt;/a&gt;&apos;s talk on Using Maven 2 to get control over your Development Process. Most of it was review for me, but I took some notes anyway.  About halfway through, I quit taking notes and just listened.  The most interesting part for me was seeing how the &lt;a href=&quot;http://maven.apache.org/guides/mini/guide-embedding-m2.html&quot;&gt;Maven Embedder&lt;/a&gt; works. Since Maven doesn&apos;t currently allow you to &lt;a href=&quot;http://jira.codehaus.org/browse/ARCHEENGINE-31&quot;&gt;create archetypes from existing projects&lt;/a&gt; the embedder seems like a good workaround. I&apos;d rather code in Java rather than XML any day. </summary>
        <content type="html">This afternoon I attended &lt;a href=&quot;http://softwaresummit.com/2006/speakers/opstvedt.htm&quot;&gt;Hermod Opstvedt&lt;/a&gt;&apos;s talk on Using Maven 2 to get control over your Development Process. Most of it was review for me, but I took some notes anyway.  About halfway through, I quit taking notes and just listened.  The most interesting part for me was seeing how the &lt;a href=&quot;http://maven.apache.org/guides/mini/guide-embedding-m2.html&quot;&gt;Maven Embedder&lt;/a&gt; works. Since Maven doesn&apos;t currently allow you to &lt;a href=&quot;http://jira.codehaus.org/browse/ARCHEENGINE-31&quot;&gt;create archetypes from existing projects&lt;/a&gt; the embedder seems like a good workaround. I&apos;d rather code in Java rather than XML any day. 
&lt;/p&gt;&lt;p&gt;
Near the end, Hermod tried to show us how you can easily create an Ant-based Mojo (Maven plugin), but his demo bombed thanks to an invalid pom in one of the plugin snapshots.  Made Maven look pretty bad IMO - but snapshots always mess things up. ;-) The room was packed.  Here&apos;s my notes:&lt;/p&gt;
&lt;div style=&quot;border: 1px solid silver; padding: 5px&quot;&gt;
&lt;strong style=&quot;color: #666&quot;&gt;What is Maven?&lt;/strong&gt;
&lt;br/&gt;
It&apos;s a kind of project management tool. It focuses on standards and best practices, uses convention over configuration, shared language for build management, repeatable robust builds and acts as a central point in the Project Object Model (POM).
&lt;br/&gt;&lt;br/&gt;
&lt;strong style=&quot;color: #666&quot;&gt;Maven History&lt;/strong&gt;
&lt;br/&gt;
Maven is a result of trying to make several Apache Software Foundation (ASF) project work in the same predictable way.  Offshoot of the Turbine project and started by Jason van Zyl.
&lt;br/&gt;&lt;br/&gt;
&lt;strong style=&quot;color: #666&quot;&gt;Objectives&lt;/strong&gt;
&lt;br/&gt;
Creates a common and understandable build infrastructure.  If you know Maven, moving from one project to the next means you can focus on the problem at hand and not spend time trying to figure out the build system.
&lt;br/&gt;&lt;br/&gt;
Common problems in a project: Traditionally, the larger the project, the more complex and build system becomes.  Very often the build system is copied form a previous project that the senior developers participate in.  Setting up an initial project through copy and past obviously can lead to interesting issues. Versioning of a project often becomes a nightmare if a strict regime of code management is not introduced. Documentation process is often &quot;put off until later&quot;.  Testing infrastructure is generally mediocre at best.
&lt;br/&gt;&lt;br/&gt;
Maven solves these problems by introducing common build logic and uses a standard naming convention.  There is also a single output from a single Maven project (often a contentious issue).
&lt;br/&gt;&lt;br/&gt;
The &lt;a href=&quot;http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html&quot;&gt;Maven standard build lifecycle&lt;/a&gt; provides a lifecycle to hook into to perform custom logic with plugins.
&lt;br/&gt;&lt;br/&gt;
&lt;strong style=&quot;color: #666&quot;&gt;Archetypes&lt;/strong&gt;
&lt;br/&gt;
What is an archetype? It&apos;s a template of a project which is combined with some user input to produce a working Maven project that has been tailored to your requirements. It&apos;s used to initialize a new project of a particular kind. To use the archetype plugin, it&apos;s as simple as running:
&lt;pre style=&quot;margin-top: 10px&quot;&gt;
mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-webapp -DarchetypeArtifactId=maven-archetype-webapp
&lt;/pre&gt;

For more information, see &lt;a href=&quot;http://maven.apache.org/guides/mini/guide-webapp.html&quot;&gt;Maven&apos;s Guide to Webapps&lt;/a&gt;.

Archetypes are very dumb for the most part - they&apos;re just a flat directory structure with files in it. However, if you want to create complex archetypes that &lt;em&gt;execute&lt;/em&gt; something, it can&apos;t be done using the regular way.  The solution is:

&lt;ol style=&quot;margin-top: 10px&quot;&gt;
&lt;li&gt;Start out by creating an archetype for your standard structure&lt;/li&gt;
&lt;li&gt;Then in the pom for the project, add an &amp;lt;scm&gt; section that will point to where your code is stored.&lt;/li&gt;
&lt;li&gt;Run &quot;mvn archetype:create&quot;.&lt;/li&gt;
&lt;li&gt;Change to the root of your newly created project and run &quot;mvn scm:update&quot;.&lt;/li&gt;
&lt;/ol&gt;

An alternative to all this is to create an Ant-based mojo.  A &lt;a href=&quot;http://maven.apache.org/guides/introduction/introduction-to-plugins.html&quot;&gt;Mojo&lt;/a&gt; is a Maven plugin that executes some code at a given lifecycle. It can run Java code, Ant scripts and more. the reason for using an Ant based mojo is that to be able to run more than one task in a mojo, we need to us what is known as the Maven Embedder.
&lt;/div&gt;
&lt;p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/css_2006_day_1</id>
        <title type="html">[CSS 2006] Day 1</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/css_2006_day_1"/>
        <published>2006-10-23T18:30:59-06:00</published>
        <updated>2009-06-04T20:07:23-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="softwaresummit" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">Today, I woke up early and made it to the conference in time for breakfast and &lt;a href=&quot;http://www.softwaresummit.com/2006/speakers/soyring.htm&quot;&gt;John Soyring&apos;s Keynote&lt;/a&gt;.  While I didn&apos;t stay tuned in the whole time, it looked like he had some good slides and he was definitely an eloquent speaker.  It did turn into an IBM sales pitch at times, but overall it was pretty good.  One thing I didn&apos;t know is apparently Wayne Kovsky (the conference organizer) , used to have John&apos;s job at IBM.  John &quot;provides global business leadership for a multi-billion dollar annual revenue portion of the IBM software business&quot; - so apparently he&apos;s doing pretty well. 
&lt;br/&gt;&lt;br/&gt;
After Soyring&apos;s talk, I attended Bill Dudney&apos;s &lt;a href=&quot;http://www.softwaresummit.com/2006/speakers/dudney.htm&quot;&gt;Introducing Cayenne&lt;/a&gt; presentation.  I didn&apos;t listen as good I should have (notice the timestamp on the &lt;a href=&quot;http://raibledesigns.com/page/rd?entry=appfuse_1_9_4_released&quot;&gt;AppFuse 1.9.4 Release&lt;/a&gt;), but I did learn that the Demo Gods were having a case of the Mondays. After lunch, my &lt;a href=&quot;http://www-128.ibm.com/developerworks/java/library/j-appfuse&quot;&gt;Seven Simple Reasons to use AppFuse&lt;/a&gt; talk started at 1:00.  It was the first time I&apos;d presented the talk, so I didn&apos;t know how long it&apos;d go.  The first demo worked, the second one bombed.  I shoulda typed &lt;span style=&quot;background: #ffd&quot;&gt;&lt;code&gt;@spring.validator type=&quot;required&quot;&lt;/code&gt;&lt;/span&gt; instead of &lt;span style=&quot;background: #ffd&quot;&gt;&lt;code&gt;@spring.validator required=&quot;true&quot;&lt;/code&gt;&lt;/span&gt;. Oh well.
&lt;br/&gt;&lt;br/&gt;
This afternoon, I went to &lt;a href=&quot;http://www.softwaresummit.com/2006/speakers/bowler.htm&quot;&gt;Mike Bowler&apos;s Ruby for Java Programmers&lt;/a&gt; talk. I was a bit late, but it was an excellent presentation.  I&apos;d recommend it to anyone.  That raps up Day 1, tomorrow I hope to hit &lt;a href=&quot;http://www.softwaresummit.com/2006/speakers/snyder.htm&quot;&gt;Event Driven Architecture with Apache ActiveMQ and POJOs&lt;/a&gt; and &lt;a href=&quot;http://www.softwaresummit.com/2006/speakers/hatzidakis.htm&quot;&gt;To ESB or Not to ESB&lt;/a&gt;.</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/the_colorado_software_summit_in</id>
        <title type="html">The Colorado Software Summit in Keystone</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/the_colorado_software_summit_in"/>
        <published>2006-10-23T08:56:47-06:00</published>
        <updated>2014-05-08T19:47:19-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="softwaresummit" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">This week I&apos;m &lt;a href=&quot;http://softwaresummit.com/2006/speakers/raible.htm&quot;&gt;speaking&lt;/a&gt; at the &lt;a href=&quot;http://softwaresummit.com&quot;&gt;Colorado Software Summit&lt;/a&gt; in Keystone, CO.  I love this conference because it&apos;s so close to home (only an hour drive) and because it&apos;s so relaxed. The organizers, Wayne and Peggy Kovsky, do an excellent job of organizing the show.  I&apos;ve never felt more cared for as a speaker, including the fact that they plan and communicate with speakers for the preceding 6 months to the show. Not only that, but it&apos;s in one of the most beautiful places in the world.  Check out the view from our condo this morning.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;http://static.raibledesigns.com/repository/images/keystone-ss2006.jpg&quot; title=&quot;Keystone - October 2006&quot; rel=&quot;lightbox&quot;&gt;&lt;img src=&quot;//static.raibledesigns.com/repository/images/keystone-ss2006.jpg&quot; width=&quot;400&quot; style=&quot;border: 1px solid black&quot;/&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;If there&apos;s any &lt;a href=&quot;http://softwaresummit.com/2006/spkrsched.htm&quot;&gt;sessions&lt;/a&gt; you&apos;d like me to attend and blog about, let me know!</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/pictures_from_the_colorado_software</id>
        <title type="html">Pictures from the Colorado Software Summit</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/pictures_from_the_colorado_software"/>
        <published>2005-10-27T10:52:05-06:00</published>
        <updated>2014-05-08T19:47:19-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="softwaresummit" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">Here&apos;s a few pictures from the last few days - including a few shots while driving up yesterday.  One thing that&apos;s interesting about this conference is there&apos;s a huge contingent of Tapestry users and enthusiasts.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;http://www.flickr.com/photos/mraible/56620214/&quot; title=&quot;Photo Sharing&quot;&gt;&lt;img src=&quot;//static.flickr.com/31/56620214_da6c7693bb_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot; alt=&quot;&quot; style=&quot;border: 1px solid black&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.flickr.com/photos/mraible/56622699/&quot; title=&quot;Photo Sharing&quot;&gt;&lt;img src=&quot;//static.flickr.com/31/56622699_ab51aa7690_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot; alt=&quot;&quot; style=&quot;border: 1px solid black; margin-left: 10px&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.flickr.com/photos/mraible/56622766/&quot; title=&quot;Photo Sharing&quot;&gt;&lt;img src=&quot;//static.flickr.com/26/56622766_1075489a24_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot; alt=&quot;&quot; style=&quot;border: 1px solid black; margin-left: 10px&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/the_zen_of_open_observations</id>
        <title type="html">[CSS] The Zen of Open (Observations of a New Bear) by Simon Phipps</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/the_zen_of_open_observations"/>
        <published>2005-10-27T10:19:04-06:00</published>
        <updated>2009-06-04T19:58:06-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="softwaresummit" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">Simon used to work for IBM, on a video conferencing product. In 1994, Simon would fly all over the world to tell everyone about it. The last 10 years have brought many changes.  When Simon used to travel in 1994, he needed cash and travellers checks, airline tickets, telephone kiosks and sent mail through the regular ol&apos; postal system.  Fast forward to 2004, and we have ATM cards and a &quot;global identity card&quot; (a Visa card), e-tickets, GSM mobile phones and e-mail.  We&apos;re now in the &lt;em&gt;participation age&lt;/em&gt;.
&lt;br /&gt;&lt;br /&gt;
If we were massively connected:
&lt;/p&gt;
&lt;p style=&quot;margin-left: 40px&quot;&gt;
Security would no longer concern only boundaries.  Before the participation age, security was a matter of &quot;how do I keep you out&quot;.  Now it&apos;s &quot;who are you can you prove that&quot;.  It&apos;s all about digital identity now.
&lt;br /&gt;&lt;br /&gt;
Software would have nowhere and everyone to run.  Service orientation is how software is build today.  Simon believes it&apos;ll happen through REST-based services, rather than by employing web services.
&lt;br /&gt;&lt;br /&gt;
Software pricing should not track ephemera [&lt;a href=&quot;http://www.answers.com/ephemera&quot;&gt;definition&lt;/a&gt;].  We&apos;re now switching to value-based pricing.
&lt;br /&gt;&lt;br /&gt;
Markets would become conversations (from The Cluetrain Manifesto). This idea led Simon to start &lt;a href=&quot;http://blogs.sun.com&quot;&gt;blogs.sun.com&lt;/a&gt;.
&lt;br /&gt;&lt;br /&gt;
Closed-room development would be insufficient.  The old way was lock smart people in a room and slide pizza under the door - and then charge others admission fees to watch them work. Software that&apos;s developed out in the open gets better and better b/c you can get &lt;em&gt;all&lt;/em&gt; the experts working on it.  This is called Open Source.  The initial objective of Open Source was to undermine companies like Microsoft and Sun - but now it&apos;s the best way to write software in a connected society.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Open Source in a Nutshell:&lt;/strong&gt; a community of developers, sharing a code commons, create &quot;wealth&quot; from the commons, enriching the commons in the process.  The &quot;craft guilds&quot; have been rediscovered in a sense.  Open source is not communism, but more like &lt;em&gt;Connected Capitalism&lt;/em&gt;.
&lt;/p&gt;
&lt;p&gt;
There are a number of different open source licenses:
&lt;/p&gt;
&lt;ul class=&quot;glassList&quot;&gt;
&lt;li&gt;Class A: &quot;Unrestricted&quot;, create any work, no restrictions on licensing.  BSD-style license, with the gold standard being the Apache License.&lt;/li&gt;
&lt;li&gt;Class B: &quot;File-based&quot;, files derived from commons must use license B, files added may use any license. Mozilla-style, CDDL v1.&lt;/li&gt;
&lt;li&gt;Class C: &quot;Project-based&quot;, all files in project must use license C if any files use commons files, GPL.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;According to Simon, &lt;strong&gt;the best license is the one that gives the most freedom to the most people&lt;/strong&gt;.  Class A licenses promote freedom to &lt;em&gt;innovate&lt;/em&gt;, but do not protect the commons.  Class C licenses promote constant growth of the commons but limit the freedom of the developer to use their own innovation however they want. Class B licenses &lt;em&gt;balance both freedoms&lt;/em&gt; protecting and enriching the commons but leaving innovators free to use their work in any commons. 
&lt;br /&gt;&lt;br /&gt;
The overlooked corners of open source:  it&apos;s not licenses, there&apos;s no more limelight needed for those.  However, there is a problem now - and that&apos;s &lt;em&gt;license proliferation&lt;/em&gt;.  There&apos;s too many licenses, we need fewer so it&apos;s easier to choose.  We need better motivational models: how do we leave room for the motivations of diverse contributors?
&lt;br /&gt;&lt;br /&gt;
&lt;strong&gt;The overlooked corner of open source is Governance.&lt;/strong&gt;  Apache is a good example of how Governance should be done. Bad governance is the primary vector for disease in open source. If the only way to contribute back is to go through one company that chooses committers, the project is likely doomed.
&lt;br /&gt;&lt;br /&gt;
Software Patents happen, get over it.  &quot;Parallel Filing&quot; means Corporations own patents on pretty much anything they touch.  If you don&apos;t, your competitor will. The nature of US law means all must play.  Using patents defensively is a routine element of corporation-to-corporation interaction.  Software patents are a zone on the continuum - even their detractors have to deal with them.  Until world trade is reformed, software patents happen.
&lt;br /&gt;&lt;br /&gt;
So how do you protect yourself?  
&lt;/p&gt;
&lt;ul class=&quot;glassList&quot;&gt;
&lt;li&gt;Patent Grants: Research specific patents and give a broad usage grant to open source use.&lt;/li&gt;
&lt;li&gt;Compulsory licensing: Blanket grant of patents, restricted to licensed code.  This is the strategy that Sun has used with OpenSolaris.&lt;/li&gt;
&lt;li&gt;Non-Assert Covenants: Covenant not to assert rights against &lt;em&gt;bona fides&lt;/em&gt; community.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Simon believes all 3 approaches are needed to protect ourselves from software patents.  He believes that #2 and #3 should be mandatory for standards bodies and open source projects.
&lt;br /&gt;&lt;br /&gt;
Summary: The next phase of F/L/OSS is upon us.  The Virtuous Cycle of open source needs a health check.  We need to reduce license proliferation by dealing with its causes.  We need to leave room for the motivations of all contributors.  Don&apos;t sacrifice the freedom of developers for an ideology.  Governance best practice needs an advocate. 
&lt;br /&gt;&lt;br /&gt;
F/L/OSS Alone is not enough for freedom - we need standards.  Open standards set end users free to choose.  Development and deployment are not the same thing.  Standard Formats + Open Source = Freedom.
&lt;br /&gt;&lt;br /&gt;
Software Patents demand multiple defenses.  We need to lobby the governing bodies of our countries and put a stop to patents.
</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/css_apache_geronimo_architecture_and</id>
        <title type="html">[CSS] Apache Geronimo Architecture and Community by Bruce Snyder</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/css_apache_geronimo_architecture_and"/>
        <published>2005-10-26T16:08:08-06:00</published>
        <updated>2009-06-04T19:57:41-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="softwaresummit" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">The main reason that Geronimo was started was to have a BSD-style licensed Java application server.  The other two open-source application servers are JOnAS and JBoss, both of which are LGPL.  The advantage of having a BSD/Apache licensed container is that companies can put it into their products, or develop products with it - w/o worrying about licensing issues.  Bruce says IBM just validated the goals of Geronimo with their &lt;a href=&quot;http://www-128.ibm.com/developerworks/opensource/library/os-ag-cosbybuck/&quot;&gt;WebSphere Community Edition&lt;/a&gt;.
&lt;br /&gt;&lt;br /&gt;
Geronimo&apos;s architecture is designed around GBeans - which are services that are pluggable inside of the kernel.  To learn more about GBeans, see Jeff Genender&apos;s article &quot;&lt;a href=&quot;http://www.ibm.com/developerworks/opensource/library/os-ag-thirdparty/&quot;&gt;Integrate third-party components into Geronimo&lt;/a&gt;&quot;.  The GBean is an IoC container in itself.  Bruce is now showing a GBean Descriptor for ActiveMQ.  There are only a few main elements in this XML file: multiple &amp;lt;dependency&amp;gt; elements and &amp;lt;gbean&amp;gt; elements.  The dependency element refers to a JAR and the idea was borrowed from the Maven project. 
&lt;/p&gt;
&lt;p style=&quot;margin-left: 40px; font-style: italic&quot;&gt;Bruce, the &lt;a href=&quot;http://www.eweek.com/article2/0,1895,1871924,00.asp&quot;&gt;poster-boy for Maven 2&lt;/a&gt; only made it 15 minutes before he mentioned Maven. &lt;img src=&quot;https://raibledesigns.com/images/smileys/wink.gif&quot; class=&quot;smiley&quot; alt=&quot;;-)&quot; title=&quot;;-)&quot; /&gt;&lt;/p&gt;
&lt;p&gt;For more information about integrating ActiveMQ in Geronimo, see Sing Li&apos;s article &quot;&lt;a href=&quot;http://www-128.ibm.com/developerworks/opensource/library/os-ag-jmsbeans/&quot;&gt;Magic with JMS, MDBs, and ActiveMQ in Geronimo&lt;/a&gt;&quot;.
&lt;br /&gt;&lt;br /&gt;
&lt;strong&gt;Deployers vs. Builders&lt;/strong&gt;: Deployers are J2EE specific, Builders are Geronimo specific. The Geronimo Deployer is &lt;a href=&quot;http://www.jcp.org/en/jsr/detail?id=88&quot;&gt;JSR-88 compliant&lt;/a&gt; and handles both deployment and distribution.  Personally, I&apos;m a little disappointed that Geronimo doesn&apos;t support hot-deploy out-of-the-box, but I can understand their desire to be spec-compliant first, and developer-friendly 2nd.  After all, it is an IBM product. &lt;img src=&quot;https://raibledesigns.com/images/smileys/wink.gif&quot; class=&quot;smiley&quot; alt=&quot;;-)&quot; title=&quot;;-)&quot; /&gt;
&lt;br /&gt;&lt;br /&gt;
Geronimo&apos;s deployer is currently a script that you can pass arguments into.  There is also a webapp console (developed and donated by Gluecode) that&apos;s based on portlets.  It uses JetSpeed under the covers and looks to be a pretty slick little webapp.  Bruce started up Geronimo and showed us the console UI - it appears Geronimo&apos;s default footprint is about 20 MB.
&lt;br /&gt;&lt;br /&gt;
&lt;strong&gt;Custom Assemblies:&lt;/strong&gt; One of the nice things about Geronimo is that it&apos;s so configurable. Because of it&apos;s architecture, you can easily create custom assemblies.  Here&apos;s a few examples:
&lt;/p&gt;
&lt;ul class=&quot;glassList&quot;&gt;
&lt;li&gt;Tomcat + Derby + Jetspeed + ActiveMQ&lt;/li&gt;
&lt;li&gt;Jetty + Apache DS + ActiveMQ + OpenEJB&lt;/li&gt;
&lt;li&gt;Jetty + JOTM + Derby + OpenEJB&lt;/li&gt;
&lt;li&gt;Tomcat + ActiveMQ + Spring Kernel + ServiceMix&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The Geronimo Kernel and GBeans make all of this possible.  This is pretty cool IMO, especially with the whole Agile Java EE movement. Bruce thinks this is real future of Geronimo: the stacks that can be created with it.  He expects the innovation and ideas in this area will come from the community and what users want.
&lt;br /&gt;&lt;br /&gt;
&lt;strong&gt;Geronimo Community:&lt;/strong&gt; Made up of many different open-source projects: MX4J, ActiveMQ, Tomcat, ActiveCluster, HOWL, JOTM, TranQL, Derby, Jetty, ServiceMix, OpenEJB.  Rather than re-creating everything (the ol&apos; NIH syndrome), the Geronimo team has tried to embrace and re-use other open source projects as much as possible. Many of the committers on the aforementioned projects are Geronimo committers or founders.
&lt;/p&gt;
&lt;p&gt;Bruce&apos;s favorite quote: &lt;em&gt; In open source, we come for the code, we stay for the people.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Project Status:&lt;/strong&gt; Now a top-level Apache project.  Has officially  passed J2EE 1.4 certification tests.  The official 1.0 release date is &quot;when it&apos;s done it&apos;s done&quot;, but the developers are hoping to finish by ApacheCon.</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/css_mule_a_detailed_look</id>
        <title type="html">[CSS] Mule - A Detailed Look at an Enterprise Service Bus by Tom Bender</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/css_mule_a_detailed_look"/>
        <published>2005-10-26T14:46:55-06:00</published>
        <updated>2014-05-08T19:47:19-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="softwaresummit" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">Below are notes I took while attending Tom Bender&apos;s talk on Mule at the &lt;a href=&quot;http://softwaresummit.com&quot;&gt;Colorado Software Summit&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;
&lt;strong&gt;SOA:&lt;/strong&gt; A collection of services with well-defined interfaces and a shared communication model is called a service-oriented architecture.
&lt;br /&gt;&lt;br /&gt;
&lt;strong&gt;ESB:&lt;/strong&gt; Provides a light weight, loosely coupled, event-driven SAO with a highly distributed universe of naming routing destinations across a multi-protocol message bus.
&lt;br /&gt;&lt;br /&gt;
&lt;strong&gt;
Four Tenets of SAO (as proposed by Don Box):&lt;/strong&gt;
&lt;/p&gt;
&lt;ul class=&quot;glassList&quot;&gt;
&lt;li&gt;Boundaries are Explicit&lt;/li&gt;
&lt;li&gt;Services are Autonomous&lt;/li&gt;
&lt;li&gt;Services share Schema and Contract, not Class&lt;/li&gt;
&lt;li&gt;Compatibility is based upon Policy&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;Properties of an ESB:&lt;/strong&gt; Light Weight, Loosely Coupled, Event-Driven, Transactional, Securable, Distributed Network Topologies, Abstract Endpoints, Intelligent Routing, Message Transformation (inbound/outbound), Multi-Protocol Message Bus.
&lt;br /&gt;&lt;br /&gt;
One of the main differences between application servers and ESBs is appservers are traditionally integrated with a hub-and-spoke architecture.  ESBs, on the other hand, use a distributed integration architecture.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Mule - What is it?&lt;/strong&gt;
&lt;br /&gt;&lt;br /&gt;
Ross Mason is the founder and primary developer of &lt;a href=&quot;http://mule.codehaus.org/&quot;&gt;Mule&lt;/a&gt;. From its homepage:&lt;/p&gt;
&lt;p class=&quot;quote&quot;&gt;
Mule is an Enterprise Service Bus (ESB) messaging framework. It is a scalable, highly distributable object broker that can seamlessly handle interactions with services and applications using disparate transport and messaging technologies.&lt;/p&gt;
&lt;p&gt;Mule is an event-based architecture.  Actions within a Mule network are triggered by either events occurring in Mule or in external systems.  It&apos;s a light-weight messaging framework that&apos;s highly distributable and very pluggable (i.e. for multiple transports and protocols).  Mule supports Web Services using Axis or Glue.
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A Closer Look at Mule&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;
The basic building block is a &quot;UMO Component&quot;.  This component is used to wire applications together - it&apos;s basically a POJO that can optionally implement interfaces if it wants to hook into lifecycle events. An application communicates with the UMO component through a channel (i.e. TCP/IP or JMS).  This channel talks to a message receiver that works with a connector that&apos;s backed by a transformer and formats it for the UMO component (whoa, that&apos;s a mouthful - and that&apos;s only inbound!).  When going to the receiving application, the process starts from the UMO component, goes though the outbound router - and plows through the whole transformer &amp;raquo; connector &amp;raquo; message dispatch &amp;raquo; channel &amp;raquo; application process again. Here&apos;s a diagram of this process that I found on &lt;a href=&quot;http://mule.codehaus.org/Architecture+Guide&quot;&gt;Mule&apos;s website&lt;/a&gt;:
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;http://mule.codehaus.org/Architecture+Guide&quot; title=&quot;View Mule Site&quot;&gt;&lt;img src=&quot;//www.muleumo.org/images/mule-overview.gif&quot; alt=&quot;Mule Overview&quot; width=&quot;660&quot; height=&quot;100&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Mule supports many different endpoints: POP3/SMTP, JMS Topic or Queue, HTTP, File, VM (w/in the JVM), SOAP, RMI and EJB.  Each of these have their own URI prefix.
&lt;br /&gt;&lt;br /&gt;
I tuned out for the rest of Tom&apos;s talk (sorry Tom). The whole ESB topic is pretty dry IMO, but Tom seemed to do a good job of keeping the audience interested.</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/the_best_part_about_the</id>
        <title type="html">The best part about the Colorado Software Summit</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/the_best_part_about_the"/>
        <published>2005-10-26T06:09:23-06:00</published>
        <updated>2009-06-04T20:12:02-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="softwaresummit" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">The best part about the &lt;a href=&quot;http://softwaresummit.com&quot;&gt;Colorado Software Summit&lt;/a&gt; has been the fact that I can travel home at night.  Keystone is beautiful, the conference is well organized - but hopping in my car and sleeping in my own bed last night was awesome. This morning, I&apos;ll be heading to breakfast with the family, taking Abbie to school and then driving back up for some dynamite sessions this afternoon.
&lt;br /&gt;&lt;br /&gt;
Tom Bender is speaking at 1:00 on &quot;Mule - A Detailed Look at an Enterprise Service Bus&quot;, followed by &lt;a href=&quot;http://jroller.com/page/bsnyder&quot;&gt;Bruce&apos;s&lt;/a&gt; &quot;Apache Geronimo Architecture and Community&quot;.  I&apos;m staying with both of these guys in a nice condo on the lake (across from the conference center) so it should be fun to hear them speak.  I&apos;ll do my best to blog both sessions.</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/my_favorite_quote_from_the</id>
        <title type="html">My favorite quote from the Colorado Software Summit</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/my_favorite_quote_from_the"/>
        <published>2005-10-26T04:40:29-06:00</published>
        <updated>2009-06-04T19:56:56-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="softwaresummit" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">Here&apos;s a good quote from &lt;a href=&quot;http://www.softwaresummit.com/2005/speakers/soyring.htm&quot;&gt;John Soyring&apos;s&lt;/a&gt; keynote on Monday:&lt;/p&gt;
&lt;p class=&quot;quote&quot;&gt;... Geronimo is a subset of Websphere ...&lt;/p&gt;
&lt;p&gt;I especially enjoyed this b/c I was sitting next to &lt;a href=&quot;http://www.softwaresummit.com/2005/speakers/snyder.htm&quot;&gt;Bruce Snyder&lt;/a&gt;, one of the founders of Geronimo.
&lt;br /&gt;&lt;br /&gt;
This quote seems to have been backed up yesterday with IBM&apos;s release of &lt;a href=&quot;http://www-128.ibm.com/developerworks/opensource/library/os-ag-cosbybuck/&quot;&gt;WebSphere Community Edition&lt;/a&gt;.</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/keystone</id>
        <title type="html">Keystone</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/keystone"/>
        <published>2005-10-24T18:10:56-06:00</published>
        <updated>2014-05-08T19:47:19-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="softwaresummit" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;/p&gt;&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;http://www.flickr.com/photos/mraible/55774233/&quot; title=&quot;Photo Sharing&quot;&gt;&lt;img src=&quot;//static.flickr.com/33/55774233_b6593f00f3_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot; alt=&quot;Opening Keynote at Colorado Software Summit&quot; style=&quot;border: 1px solid black&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.flickr.com/photos/mraible/55774219/&quot; title=&quot;Photo Sharing&quot;&gt;&lt;img src=&quot;//static.flickr.com/31/55774219_23926a362e_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot; alt=&quot;Keystone&quot; style=&quot;border: 1px solid black; margin-left: 10px&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.flickr.com/photos/mraible/55774199/&quot; title=&quot;Photo Sharing&quot;&gt;&lt;img src=&quot;//static.flickr.com/28/55774199_edb4773a5f_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot; alt=&quot;Keystone&quot;  style=&quot;border: 1px solid black; margin-left: 10px&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/heading_to_the_summit</id>
        <title type="html">Heading to the Summit</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/heading_to_the_summit"/>
        <published>2005-10-23T11:19:23-06:00</published>
        <updated>2014-05-08T19:47:19-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="softwaresummit" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p style=&quot;text-align: center&quot;&gt;&lt;a href=&quot;http://softwaresummit.com&quot;&gt;&lt;img src=&quot;//softwaresummit.com/graphics/logo2.gif&quot; width=&quot;300&quot; height=&quot;135&quot; alt=&quot;Colorado Software Summit&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;&lt;p&gt;
In a couple of hours (after my fraternity&apos;s annual Alumni vs. Actives softball game), I&apos;ll be heading up to Keystone to attend the &lt;a href=&quot;http://softwaresummit.com&quot;&gt;Colorado Software Summit&lt;/a&gt;. I&apos;m pretty excited about going; it&apos;s at one of my favorite places to ski, and it&apos;s the first time I&apos;ll be attending. I&apos;ve heard great things about this conference, and I&apos;m sure it&apos;ll live up to its reputation.  &lt;br /&gt;&lt;br /&gt;
On the other hand, I have a good case of the &quot;it figures&quot;.  I caught a nasty cold from the kids a couple of days ago and it&apos;s sure to be in full force by tomorrow.  With any luck, I&apos;ll lose my voice sometime before a talk this week - or perhaps cough my way through one of them.  Do you have a good story about speaking when you&apos;re sick?  If so, please share.</content>
    </entry>
</feed>

