This is not a tag line!
Chris
Bio JBoss Portal developer @ Red Hat, mountain sports enthusiast, kendoka in training, music lover
Homepage: http://metacosm.codepuccino.com
Posts by Chris
Improving deployment of WSRP-related artifacts in GateIn
Mar 9th
As you may know, I am working on WSRP for GateIn. One problem I faced until today in my daily development was that deploying a new version of the WSRP module for testing required re-building GateIn completely, which takes quite a bit of time and has the side effect of also destroying any persisted data. This, in turn, resulted in even more wasted time spent on configuring GateIn so that I could perform my tests (configuring consumers, adding remote portlets to pages, etc).
I decided that I could make that process faster by just replacing the WSRP artifacts in an already built version of GateIn if there hadn’t been any API change in the WSRP module. I present the following script to that effect:
# extract most recent version of WSRP module: only check the first 5 lines of maven-metadata-local.xml and extract value from <version> tag export CURRENT_WSRP=`sed -n -e '5 s/.*<version>\(.*\)<\/version>.*/\1/p' $HOME/.m2/repository/org/gatein/wsrp/wsrp-common/maven-metadata-local.xml` echo Current WSRP version: \'$CURRENT_WSRP\' # extract which WSRP libs are currently needed by GateIn and replace them with a fresh version from local repository for lib in `ls $GATEIN_EAR_HOME/lib/wsrp* | sed -n 's/.*\/\(.*\)-'$CURRENT_WSRP'.jar/\1/p'` do echo Copying $lib-$CURRENT_WSRP.jar to $GATEIN_EAR_HOME/lib/ cp $HOME/.m2/repository/org/gatein/wsrp/$lib/$CURRENT_WSRP/$lib-$CURRENT_WSRP.jar $GATEIN_EAR_HOME/lib/ done # deal with producer and admin GUI WARs separately as they are put elsewhere and without version name for war in `ls $GATEIN_EAR_HOME/wsrp* | sed -n 's/.*\/\(.*\).war/\1/p'` do echo Copying $war-$CURRENT_WSRP.war to $GATEIN_EAR_HOME/$war.war cp $HOME/.m2/repository/org/gatein/wsrp/$war/$CURRENT_WSRP/$war-$CURRENT_WSRP.war $GATEIN_EAR_HOME/$war.war done
Note that this script expects that you have a $GATEIN_EAR_HOME variable set, pointing to location of your GateIn EAR. Easy enough (though I had to freshen up my sed-fu ^_^).
# extract most recent version of WSRP module from existing files CURRENT_WSRP=`ls $GATEIN_EAR_HOME/lib/wsrp* | sed -n '1 s/.*\/.*-\([0-9]\.[0-9].[0-9]-.*-.*\).jar/\1/p'`
Might be faster that way…
GateIn 3.0 CR1 released!
Feb 18th
Where have I been? Well, mostly working towards releasing GateIn (we just released CR1, by the way, go grab it, put it through the motions and let us know if you find any issues).
We had a nice face to face meeting in Charmey, Switzerland with some of the eXo guys. It was nice to see my co-workers and meet new ones. Lots of good discussions. We even found a way to fit in some fun, which is always good to bind teams. Oh, and we did, of course, get to eat various melted cheese dishes and you can’t really go wrong with that!
GateIn 3.0.0 Beta 2 released!
Oct 21st
As some of you may know, JBoss and eXo have decided to merge their portal efforts in an attempt to create the best open-source portal framework out there. This new, best-of-breed portal project is called GateIn.
Integrating both code bases has taken (and still does) a lot of effort from both teams. This has translated in some long hours and little sleep but we’ve just released a new beta version for you to try and enjoy! Apart from lots of improvements and fixes, the big news is, of course, that we now provide the complete source code! Read more about it on the official GateIn blog.
Of course, we’re not done yet so keep watching the blog. You can also follow GateIn on Twitter.
Beware of File.createTempFile
Sep 4th
By default, File.createTempFile (in Java, of course) creates a temporary file in the directory identified by the system property java.io.tmpdir. The problem is that on OS X, that directory can be quite weird. For example, on my system, it currently is:
scala> System.getProperties().getProperty("java.io.tmpdir")
res0: java.lang.String = /var/folders/ya/yaNATrKPGFu2HuSOWxSIu++++TI/-Tmp-/
Notice the ++++ in one of the directory names? Well, these little characters can later cause headaches! The reason, you ask? Simple, if that temporary file name is ever used in a URL, then those plus signs will be interpreted as spaces and whatever code is using a URL to find your temporary file will not find it! So beware!
Possible solutions include passing -Djava.io.tmpdir="whatever" when you launch your Java process, or use the createTempFile(String prefix, String suffix, File directory) version of File.createTempFile and pass it a directory that doesn’t contain an + sign in its name!
Code reminder: using an isolated local Maven repository
Aug 11th
I can never remember the command line option to use an isolated local Maven repository for a given Maven run (so that, for example, you can make sure that your dependencies are properly defined and you don’t run into conflicts due to a shared repository) and couldn’t find it again quickly enough via Google so I thought I’d post it here, as a reminder:
mvn -Dmaven.repo.local=/foo/bar
Mountain bike diary: La vierge noire (baseline)
Aug 3rd
So, not discouraged by my last but ultimately rather unfruitful attempt, I decided to go try the Vierge noire trail again, following the itinerary I scoped out last time.
I was more prepared this time. I left around 2pm, which was a little too late for a comfortable ride as it turned out it got quite hot and there was still a bit of ambient humidity from the morning rain. My tire had been repaired and the bike checked by the nice folks at Mountain Cycle in Voiron. I still need to buy a tool kit to take with me on the trail and a couple of spare tubes but, this time, I had plenty of water and food if needed.
The goal was to establish a baseline as I can envision this itinerary becoming a practice ground as it provides a good but not too long climb first and then a technical (though not terribly so) descent, for a total riding time around the hour mark.
As usual, here is the itinerary overview as recorded by PathTracker on my iPhone:
Mountain bike diary: the unforgiving virgin and stupidity
Jul 27th
After a nice week-end riding my bike, I decided to try to ride some more today and try to do the second part of my Saturday ride albeit with a much shorter climb. The trick was to figure out a way to climb all the way up to the Bastille and then proceed towards Mount Jalla again.
I thought I had figured out an itinerary but after climbing as much as I could, I got stuck and ended up having to backtrack. It wasn’t that bad in itself because I very often have to backtrack because I took a wrong turn somewhere even when I follow an established itinerary! However, it did contribute to lengthening the ride.
I guess I should now state that I decided to go riding after work and it was around 8pm when I left. These days, daylight in these parts is good up until 9:30pm or so. That was my first mistake of the day: taking off for a ride without knowing exactly how long it would take me when I knew I couldn’t possibly ride more than an hour and a half (at least, not on single track as I don’t own any kind of lighting equipment).
Anyway, everything was going OK. I had backtracked, found my way back up according to the directions I had read online before leaving and reached the end of the first part of the track, interrupted by a short flight of stairs. I carried the bike up and reached the Bastille without further issue. At this point, though, I started to get a little thirsty and that was my second mistake: leaving without my camelback, so no water and/or food. The reasoning was that it was supposed to be a short ride, so no need for a backpack. Wrong!
I finally reached the intersection I was looking for, climbing up from the Bastille towards Mount Jalla. Instead of proceeding to the top, I turned East taking the Vierge Noire (Black Virgin) track, which is the path I took on Saturday to finish the ride and that was very fun. I started to proceed down the path a little more cautiously than last time because I could feel I was getting tired and light was getting dimmer.
Even so, I had a great time up until the third of the descent. At some point, I started getting weird reaction from the bike: my back wheel was drifting. That’s when I realized that I had blown up the tube on my back wheel. Not sure how it happened and really it doesn’t matter. What did matter was that, here I was on a rather technical downhill single track, a blown tire, night starting to fall, still two third of the way to go and about 3 kilometers more after the end of the track to get back home. Not a pleasant situation to be in.
Not having my backpack, I, of course, didn’t have a spare tube or tools to change it. Anyway, I didn’t really have time (or really room, as the trail was quite narrow and steep) to operate on the bike as night was falling. I decided to wing it and spent the whole descent with my weight as much on top of my front wheel as possible, which wasn’t a very comfortable position to be in.
I managed to get down the trail and kept going, still with my weight on my front wheel, after I had reach the end of the trail until the road started to level up. I then walked all the way back home.
Here’s the overview of this little adventure, as usual:
In the end, it wasn’t all bad. Still had some fun and thrills. I now know a short ride, close to home that wouldn’t take more than an hour and a half, provide some good exercise and a fun downhill component. More importantly, I learned some valuable mountain biking lessons:
- Never underestimate how long a ride will take. Always make room for unforeseen circumstances.
- Never leave without a backpack containing some water, food, a spare tube and basic tools to make minor repairs if needed.
- If you’re going to ride close to dusk, either make sure that you will be done before night falls, or get yourself some night riding equipment.
More tips from singletracks.com on how to avoid disaster on the trail.
Mountain biking diary: Mount Jalla and Le Mûrier
Jul 26th
Saturday: Mount Jalla
I had originally planned on spending the week-end in La Plagne to ride around at higher altitude. Things didn’t turn out as planned (do they ever?) and I ended up having to be in Grenoble this week-end.
I was determined not to let that get in my way of taking my mountain bike for a spin and took opportunity of the good weather on Saturday to attempt the climb of Mount Jalla, starting similarly to my failed attempt riding around Mount Néron but then, instead of going west towards Mount Néron, you go a little further up the valley to the col de Clémencières and then east to switch to the slopes of Mount Rachais and finally Mount Jalla.
Below is an overview of part of my trip (I didn’t run the GPS on the boring parts of the beginning).
After a rather long climb (though I have to admit that I’m getting ever so slightly better at it), reaching the bottom of Mount Jalla with the path creating, in places, a balcony of sorts from which you could admire the valley, was really rewarding.
I definitely need to improve my climbing technique because I still had to push my bike up at a couple of spots, due to me both being out of breath but also unable to gain enough traction to stay on the bike on the steeper parts. However, the second part of the ride, a.k.a the descent was a lot of fun! A lot of technical single trail with good slope! Fun, fun, FUN!
Sunday: Le Mûrier
I had an apartment visit schedule this morning, which was the reason I had to stay in Grenoble this week-end. Once that was out of the way, and after a very nice lunch, I decided to try another ride, albeit a slightly easier one that from Saturday. Several reasons for that. One, I had ridden the day before and, while I wasn’t in pain per se, I could still feel that I had exercised a bit! Second, today was quite a bit warmer than yesterday.
This ride took me to the south of Grenoble. I forgot to take my camera with me this time, so the only pictures I took are courtesy of my iPhone…
Again, as usual, the ride starts with some city riding to join the start of the itinerary per se. Again, it starts by climbing with all the fun (from my perspective at the end). Despite, this being an easier ride than the one from Saturday, it ended up being quite exhausting combining fatigue from the day before with higher temperatures. I also didn’t pace myself well enough so ended up having to rest quite a bit during the climb which was really steep in parts:

A hell of a climb (at least for me)!
The upside is that, once you were done climbing, you could get nice views of Grenoble. In particular, you can distinguish (if you know it’s there, because the quality of the picture is not great), the Bastille and Mount Jalla almost in the center of this picture:

Nice view of Grenoble from the South.
The descent part was fun but definitely shorter and easier than the one from Saturday. I recorded the complete itinerary this time, though it seems like the GPS lost the signal for a while and recorded some bogus points… :/.
All in all, a nice couple of rides. I definitely will redo the second part of the Saturday ride, I just need to figure out an itinerary that will shorten the climbing approach.
In the US for a couple of weeks
May 30th
I’m going to spend a couple of weeks on my old stomping grounds (the DC area) in the United States, visiting friends and attending a wedding. Today is the bachelor party. It’s more like a bachelor day really, as we’re going to go white water rafting in West Virginia! The weather seems alright so far and it rained a lot the last couple of days so there should be enough water to have some fun!
Unfortunately, as my camera is not waterproof, I won’t be taking any pictures during, which could have been a lot of fun.






