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.
Tuesday, March 24, 2009
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.
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.]
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:
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
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
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!
The only problem is that I often want to attend more than one talk in each time slot!
Sunday, July 13, 2008
What's on your plate?
For the last couple of months, I've been working with a personal trainer at Fitness Defined, and using The Daily Plate to track calories and nutrition.
Here's an example meal from this morning:


There's no cost to use the site to look up foods or to track your consumption. (You only get the breakdown by meal shown above if you pay for a Gold account, otherwise it's a daily total.) You can also use the site to track your weight and measurements, but there's a limit to how much personal information I want to part with.
The database is very well populated with brands name items and restaurant dishes, so it's fairly easy to keep an eye on things whether you're cooking at home, ordering in, or eating out. Of course, once you start paying attention to exactly how many calories there are in that slice of pizza, you may reconsider!
Here's an example meal from this morning:
There's no cost to use the site to look up foods or to track your consumption. (You only get the breakdown by meal shown above if you pay for a Gold account, otherwise it's a daily total.) You can also use the site to track your weight and measurements, but there's a limit to how much personal information I want to part with.
The database is very well populated with brands name items and restaurant dishes, so it's fairly easy to keep an eye on things whether you're cooking at home, ordering in, or eating out. Of course, once you start paying attention to exactly how many calories there are in that slice of pizza, you may reconsider!
Subscribe to:
Posts (Atom)