Sunday, 28 October 2007
Reflections on the Colorado Software Summit 2007
« Rails, the 15 minutes is Almost Up. Meet Erlang. | Main | Yes you do need a Product Road Map »
I just returned from my third visit to the Colorado Software Summit. 2007 was another great year. This conference is unlike any other: it's just a bunch of developers talking shop. There are other conferences that try to do this, but this one seems to have the best speaker quality by far. I always have a strange feeling when I come back from this conference: it's sort of humbling to in an intimate setting with so many heavy hitters, yet it's sort of emboldening to have so much knowledge poured into your head in one week.
The opening keynote was a "big picture" talk by John Soyring of IBM. I really don't think I can summarize it without writing a whole blog on it other than to say: there are big social forces that require changes to our computing and programming models. The main keynote was given by Simon Phipps of Sun. He's the guy that lead the effort to GPL java, so he's on my "you rock" list. His main point: open source is going beyond main stream to the dominant paradigm. Like it or not, this means legal challenges. Patents and trademark issues matter now and we'd better learn better ways to deal with them.
A big topic this year was REST. I went to three talks on this, which reminds me that I need to finish my blog series on this. It seems that several people believe that REST is or will be the basis of "Web Services 2.0" (as Scott Davis put it). I was really hoping to understand the implications of REST's Uniform Interface better, and I certainly made progress, but I'm still struggling with translating the technical differences between it and than the SOAP approach (which I think I fully understand) into useful advice on what the architectural pros and cons are. Since I'm on record in this blog as saying that service contracts are the big problem that has to be solved for REST to take first chair from SOAP inside the enterprise, I was keen to here talk of these solutions. Most speakers acknowledged that there is more interest in this lately and talked about WSDL 2.0 or WADL. I also got a new idea that I need to consider more deeply: using ATOM for data and embed schema information within it. This is sort of a half-contract: it's uniform behavior on custom objects. I kind of like the idea of a "standard contract" on behavior.
Dan Pritchett, aka "the eBay guy" gave several talks. His talks all concerned challenges that eBay faced as it tried to scale. It's interesting to know that eBay runs on Java and Oracle, with the Java using Tomcat running servlets. eBay's search is comparable in magnitude to Google's (they may even answer more searches). Their search infrastructure is really interesting: they message their data in a "rows and columns" grid with data partitioning and replication, and the replication crosses data centers. They use different indexes for different use cases. Changes are messaged to each node and applied locally by a custom search engine indexer. Dan said they had to go to this model over the centralized index building because the latency and bandwidth involved in pushing index out with all the updates they do was a killer.
I consider mastery of a subject to mean knowing when to sacrifice the sacred cows, and Dan's discussions on ACID vs BASE transactions really impressed me. Since we were all little kids, we've been told that the quintessential example of two-phase commit (e.g. using XA) is transferring money from one account to another in a different database. eBay basically rejected this as unworkable at scale and came up with a rigorous way to meet their needs without it.
I went to a couple talks on messaging technologies. For JMS, ActiveMQ really seems like a no brainer for best-of-breed. It has beautiful Spring integration, features galore including many for HA environments, and lots of flexibility. I just wish I could get one of the STOMP clients to work from python. I still have a couple more to try. I was also impressed by AMQP, which will likely bring us platform independent fully featured messaging. I hope the JMS vendors take note and play ball with it. Gregor Hohpe gave a great look at some coding patterns for event driven programming. He has this way of making you feel like it's obviously dumb that we aren't all using messaging and event driven architectures as the norm.
Progress in the XML technologies is slow, but steady, and a couple sessions hit on this. XQuery is looking quite useful as a way to turn XPath 2.0 into a query language. XSLT 2.0 also harnesses XPath 2.0 and may be a little more grokable. I think I have had to restudy XSLT 1.0 at least five times as it just doesn't "stick" in my brain due to it's unnatural programming model. I'm very optimistic that XSLT 2.0 improves this. Noel Bergman gave a really good overview of the state of SOAP standards and the progress of the WS-I interoperability efforts. He also gave one of the talks on REST, which is probably not a coincidence.
In the "that's just cool" category: both grails and google gears look like good technologies to learn more about. One thing that grails uses that I'm really enamored with is gant. I've been dabbling with mixing in groovy to our build at work and gant takes this one step farther and turns it upside down: you mix in ant ot your groovy build scripts. I've tried twice to drink the Maven kool-aid (but couldn't swallow it), but now I think I'm going interested in with the other direction. Gears is most often viewed as an offline client tool, but I see it as having more impact as rich browser side caching.
Matt Raible gave his updated talk comparing web frameworks. He had some criteria for when to use different classes of frameworks and based on those, I think the project I'm on now at work chose well to go with GWT. Matt made two really useful observations: First, with the rise of high quality javascript libraries (e.g. Ext, YUI, Scriptaculous) it becomes easier to switch web frameworks while keeping view layer skills (and look and feel) intact. Second, your team will get a bigger productivity increase by shutting off email, canceling meetings, and using better computing resources than it will by changing to the next great web framework of the day.
Some of the other cool topics I learned a little more about: Eclipse plugin writing and grid computing. It looks like it's easier to develop an eclipse plugin than it is to think of something that needs an Eclipse plugin.
I'm also already sold that groovy is important, but I picked up some power user examples of groovy. Eric Schreiner did an awesome example of the groovy XML builder where he took a map of item/value pairs and produced an SVG chart in a rediculously small amount of code.
As always, I love this conference as a way to "scan the horizon" for frameworks, toolkits, and solutions that I hadn't heard of before or need to "bump up" my interest level on. Here's my list of "cool things to check out":
- Apache Mina, a high performance and high scalability network applications framework
- Apache Camel, a rule based routing and mediation engine. Sort of "EIP in a box".
- Esper, an event stream processing tool in the Complex Event Processing category.
- Gridgain open source grid toolkit with a cool example on distributed unit testing
- Some AMQP implementations: QPID (in java) and RabbitMQ in Erlang
- EclpseLink: Hibernate may not be the best JPA implementation
- eXist, an open source native XML database, with XQuery support.
- GANT the groovy/ant build system, as seen in Grails like RAILS but based on java/spring/hibernate
- YSlow a firebug plugin that analyses web pages for performance best practices
Technorati Tags: colorado-software-summit conference java
Posted by at 1:24 AM in stuff about java
[Trackback URL for this entry]
