Thursday, April 2, 2009

Phoenix Scrum user group at Infusionsoft

Last night was the kickoff meeting for the Phoenix Scrum user group. It was hosted at Infusionsoft, a local company which makes marketing automation software for small businesses, and which boasts an indoor football field. Here we are set up in the corner, waiting for the presentation to begin:



Through the magic of technology and streaming video, Ken Schwaber presented "Scrum, But" in which he talked about the various ways people modify the Scrum framework to fit their needs, (and why that's not necessarily a good thing long term.)

I'm looking forward to learning more about Scrum in future meetings of this newly formed group.

Tuesday, March 24, 2009

Apachecon EU Day 2

Training

On Tuesday I attended Chad Michael Davis' Ajax on Struts 2 training. Chad is one of the authors of Manning's Struts 2 in Action book, and it was great to get to meet him in person. In the class, we saw how to start with the skeleton of a webapp and turn it into a Struts 2 app (add the necessary jars, add a filter to web.xml, add the struts.xml config file) and then moved on to adding Ajax to an existing app, using JQuery.

At one point, Chad mentioned that we might want to save a copy of the app because we were going to make some major changes... for me that wasn't necessary, because I had learned enough about git in Scott's BarCamp session that I had done 'git init' immediately when we started, and had been committing changes all along. It's great to be able to put even trivial example projects under version control so simply and easily.

ApacheCon EU Day 1

Travel

The flight to Amsterdam was uneventful, if wakeful. I had brought ear plugs, but not a sleep mask, and reading lights going on in nearby rows would disturb me. It wasn't a particularly turbulent flight, but it seemed that every time I'd almost get to sleep, we'd hit some rough air. So I landed in Amsterdam on Monday morning with very little sleep, and a full day ahead.

BarCamp

First up was BarCampApache Amsterdam 2009. This is an "unconference" which means there is no agenda until the attendees get together and create one. There were excellent talks on Mahout, Lucene phrase detection, open geo data, teaching OSS, a discussion about open source and open society, an introduction to git, a call for help with testing Tomcat, some reasons to contribute to the ESME incubator project, and an overview of Synapse.

Maven Meetup

After dinner we had a Maven Meetup with 30+ attendees. The general idea of a Meetup is a bit more formal than BarCamp, but since we hadn't gotten many session proposals beforehand, we simply brainstormed topics that people wanted to hear about or were prepared to present. Several people wanted to hear about Eclipse integration, so Carlos talked about the Eclipse IAM (Integration for Apache Maven) and M2Eclipse. Next we heard about archetypes for the Alfresco project, and in general how developing archetypes can ease packaging customizations for webapps. After running back to the room for my video connector (in a room full of MacBooks, no one had the one I needed!) I talked about the Release plugin and gave a quick demo of releasing a simple project. We talked about how to get artifacts into the central repository, and why cleaning it up by deleting things isn't a good idea for build reproducibility. Another topic we covered was what's coming in Maven 3.0, as well as some of the new features in 2.1 which is just out. Preventing re-deployment of released artifacts came up, and I mentioned that there are feature requests in both the Deploy Plugin and Archiva for this, while I believe Nexus already supports it.

We had a short break and never made it back to the remaining topics as people had formed into groups discussing various things. We wrapped up at 10pm, and after being awake for 30 hours, I was happy to get some sleep!

Thanks to the conference organizers for providing free space to both BarCamp and the various Meetups, which were open to everyone, not just registered conference attendees.

ApacheCon EU Day 0

Travel

I left Phoenix mid-morning Sunday for a short hop to Houston and then a long leg over to Amsterdam. Last year I flew through Newark, which split the trip into 5 and 7 hour flights. I prefer this year's itinerary, which was 2 and 10. I'd rather get all the changing planes and running through airports over with, and just relax. Heading out of Phoenix, the flight was over-sold and I didn't get a seat assignment until they were halfway through boarding. I had only 40 minutes to connect in Houston, and of course they moved the departure gate to E20 which is the farthest possible gate out in the corner of the terminal. Luckily, the arrival gate changed to E12 instead of the original C gate, so instead of being a dash across the entire airport, it was just around the corner and down the hall. I had been worried about having so little time, and indeed they were already boarding when I got to the gate, but we ended up being delayed, apparently waiting for a small group to arrive from another connection. The flight to Amsterdam was not full, and there was plenty of room to spread out and relax.

[updated: empty post earlier due to blogspot.com + Safari problem -- pasted text displays at the bottom of the page rather than in the box.]

Saturday, February 28, 2009

Cargo adds support for multiple data sources

Recently I've been working on getting the Selenium tests for the Apache Continuum project working again. Continuum is normally packaged in a Jetty bundle with everything it needs, but in order to automate the tests, I need to deploy just the webapp into a standard servlet container.

For a long time, Cargo only supported a single data source, so it wasn't possible to configure the Cargo Maven plugin to add the three data sources that Continuum needs -- two databases, for users and builds, plus one for sending email.

That changed recently, but when I tested out the new support for multiple data sources, I ran into a problem with the JNDI mail session. Just mentioning that on the Cargo dev list resulted in a quick fix.

It hasn't been released yet, but using the latest snapshot built from trunk, multiple data sources can be configured for the Cargo Maven plugin as follows:


<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<configuration>
...
<configuration>
<home>${project.build.directory}/tomcat5x</home>
<type>standalone</type>
<properties>
<cargo.servlet.port>9595</cargo.servlet.port>
<cargo.datasource.datasource.users>
cargo.datasource.driver=org.apache.derby.jdbc.EmbeddedDriver|
cargo.datasource.url=jdbc:derby:${project.build.directory}/databases/${container.name}/users;create=true|
cargo.datasource.jndi=jdbc/users|
cargo.datasource.username=sa
</cargo.datasource.datasource.users>
<cargo.datasource.datasource.builds>
cargo.datasource.driver=org.apache.derby.jdbc.EmbeddedDriver|
cargo.datasource.url=jdbc:derby:${project.build.directory}/databases/${container.name}/builds;create=true|
cargo.datasource.jndi=jdbc/continuum|
cargo.datasource.username=sa
</cargo.datasource.datasource.builds>
<cargo.resource.resource.mail>
cargo.resource.name=mail/Session|
cargo.resource.type=javax.mail.Session|
cargo.resource.factory=org.apache.naming.factory.MailSessionFactory|
cargo.resource.parameters=mail.smtp.host=localhost
</cargo.resource.resource.mail>
</properties>
...


You can see a full example in the continuum-webapp-test module's pom.xml file:
http://svn.apache.org/repos/asf/continuum/trunk/continuum-webapp-test/pom.xml

... and in the Cargo docs:
http://docs.codehaus.org/display/CARGO/Starting+and+stopping+a+container

Sunday, August 10, 2008

Speed up Maven builds with repository groups

The more repositories Maven is configured to search, the slower the build can get, especially if the majority of the artifacts aren't found in the first repo it searches.

You can significantly speed up your builds by using a repository manager with a 'repository group' or 'virtual repository' feature. This allows you to hit a single url and have the repository manager do the work of checking each of its managed repositories behind the scenes, or of proxying the content from a remote repo and caching it for future requests.

To find out how to use virtual repositories with Apache Archiva, visit this link: http://archiva.apache.org/docs/1.1/userguide/virtual-repositories.html

Saturday, July 19, 2008

Looking forward to DSSS

With only one more week to go before the NFJS Desert Southwest Software Symposium, I'm really looking forward to this year's conference. Jay and crew do a fabulous job with these shows-- top notch speakers, a comfortable venue, and great food.

The only problem is that I often want to attend more than one talk in each time slot!