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.
First Adium / Twitter integration thoughts in 1.4 beta 1
May 19th
It’s quite funny to see that, as I finally got some time to finish my first post on Twitter OS X desktop clients yesterday, a new one appeared the same day in the shape of Twitter support in Adium 1.4 beta 1. Well, to be fair, there already was support for Twitter in Adium but it wasn’t as widely available as a public beta. Here are some thoughts about Adium as a Twitter desktop client for OS X that I gathered as I used Adium exclusively for Twitter access yesterday.
First impression
First, there are some details on how this would work on Adium’s blog. Great read on the overall philosophy of the Twitter integration.
Not surprisingly, Adium tries to fit Twitter support into a chat metaphor. People you follow are automatically added to a new Twitter contact group, which is thanksfully collapsed by default! A new section called “Bookmarks” is also added (I’m actually not sure if that existed in previous versions of Adium and I just missed it) which contains a “Timeline (name of account)” bookmark for each Twitter account you set up. This actually didn’t work the first time I tried, which was quite disconcerting. According to Adium’s developpers, this is a bug that will be addressed with an upcoming second beta. At this point, restarting Adium should do the trick.
Timelines are actually group chats in which people you follow are participants of sorts. This is the core of Adium’s support for Twitter. Any time someone you follow posts a public tweet, it appears in the group chat window (modulo refresh period, of course). Noteworthy is the fact Adium lets you select a different appearance for group chat vs. regular, one-to-one chat, which is quite useful. An example of such a styled timeline can be seen below.

Direct messages are implemented as one-to-one chats as would be expected.
Limitations
The model of Twitter as group chat has limits though. First, there is no way, that I could find at least, to have persistent search results, i.e. an updated list of all the mentions of given terms. Just like timelines for your Twitter accounts are implemented as bookmarks in your contact list, I can envision persistent searches being implemented as a different kind of timeline.
Another issue is the fact that it’s not as easy to follow conversations as it is with dedicated clients. I assume the appearance extra that you use could help but, just as Adium adds links to the right of each post to operate on them (re-tweet, reply, favorite, permalink or, in the case of one of your posts, delete), a link to open a conversation in a separate window (similar to what Tweetie for Mac does) would be helpful. Obviously, it could become confusing with direct message conversations, since that’s how they are implemented as well…
The biggest issue at this point, though, is the fact that you only get tweets that were published while you are connected. It seems, because I just discovered this as I was writing and haven’t had time to explore more, that historical tweets that occurred while you were not connected are accessible from the so-called chat transcripts where it’s difficult to quickly see which tweets you’ve read and which you haven’t. Similarly, your timeline is reset each time you restart Adium, making it difficult to follow things as some tweets will be in your current timeline while others are hidden in logs…
Conclusion, for now at least?
Adium’s implementation of Twitter support is based around the group chat metaphor. It has potential but also some serious drawbacks at this time, ones that will make me go back to a dedicated Twitter client, at least for now. Of course, the software is still in beta and might still evolve, though I don’t know that it’s not already feature-frozen. A pretty cool feature, though one not directly related to Twitter support, is support for laconi.ca servers, as well as IRC support. What this means is that I could potentially use Adium for most of my communication needs (IM, Twitter and IRC) and that’s a big plus for me. IRC support is good enough that I can use Adium instead of Colloquy for my very simple IRC needs. All that’s missing to make Adium my one-stop communication hub is better Twitter support and Skype support (there’s an Adium extra to support Skype but I haven’t managed to make it work)… I suspect this is a big upside for lots of people and a big advantage over other desktop clients. I will therefore follow with interest how Twitter support in Adium evolves and might report back from time to time…
OS X desktop Twitter clients: Twitterrific and beyond!
May 18th
I’ve had a Twitter account at the beginning of 2007 but it took me a while to really start using it. For one thing, I admit that I failed to see its potential then. Of course, it didn’t help that I didn’t know anyone with a Twitter account, thus not helping building interest… Any social application has to reach a critical mass, via positive feedback, where each new subscriber makes the whole network more valuable. I eventually got around to use it more intensively, as I started discovering usefulness to it and building a network. I do think though that the biggest impetus for me to use Twitter more was installing Twitteriffic on my computer.
You cannot underestimate the importance of a good interface to a service. When I started using Twitter, the only interface I knew of was the web version, which was failing quite a bit (state represented by the now infamous fail whale). Installing and subsequently using Twitterrific really helped me get into Twitter. I present here a short review of Twitterrific, what I like about it and what I look for in a Twitter desktop client.
Main window
Twitterrific is an application which only interface element is, when inactive, a menu bar icon (
), which allows to toggle visibility of the main application window and changes color when unread tweets are available. The application doesn’t even have a dock icon, which means that it won’t show up when you -tab between applications or doesn’t have a menu. Most, if not all, operations can be accessed via a keyboard shortcut. Of course, you can also interact with it via the mouse when the main window is shown, though as it doesn’t have menu bar, it takes some getting use to. A very useful feature is that it can react to a system-wide shortcut to display or hide the main window, which makes it easy to ready a new tweet or post something quickly.
The main window itself has a pretty simple layout though it can be a little alien at first as it is quite different from traditional OS X application windows. The timeline of received and sent tweets occupies most of the space. A simple control bar rests at the bottom, allowing you to access your Twitter home page, change Twitterrific settings (implemented as a modal sheet), refresh posts and post a new status. As you can see, it’s mostly targeted at reading as opposed to posting.
Posts are presented in reverse chronological order (most recent at the top), each displayed with its author’s avatar. Twitterrific remembers the last post you read and dim the ones you’ve seen already. Mentions are tinted so that you can distinguish them from regular posts. Same goes for direct messages. Note that there is no distinction made between replies and mentions, meaning that posts are tinted the same way regardless of whether they are direct replies or re-tweets. As long as your user name appears in it, a tweet will be tinted.
Interacting with a post
Selecting a tweet brings up three new icons, allowing further interaction. The first one is the gear menu, which provides lots of options, as shown on the screenshot to the left. A little surprising is the fact that this looks like a contextual menu, yet provides actions that are actually affecting the whole application. The second icon provides a quick way to reply to the selected tweet, while the third one sends you directly to the author’s web site, as defined in their profile.
Neat features
Twitterrific offers Growl support, the notification framework of choice on OS X. This goes very well with the overall application philosophy of staying out of your way, hidden until needed. You receive notifications when new tweets are available but you get informed in an non-intrusive way, allowing you to see them from the corner of your eye, while you keep doing whatever else you’re doing. To me, this was also a big plus to adopt Twitter, as it put me in control, kept in touch with the flux of things without having to check the details until I was ready to.
Last but not least, I find Twitterrific quite appealing to the eyes, despite the non-standard interface and it’s also very frugal resource-wise (both in terms of CPU time and RAM usage), which can be quite important when you have a bunch of applications running at the same time, all competing for your computer’s attention!
Limitations
To me, Twitterrific is terrific application for a Twitter beginner, and without which I probably wouldn’t have taken to Twitter as much as I have (or it might have taken me more time to do so). It’s also very well suited to what I would say is the majority of Twitter users (though it’s a wild guess on my part), i.e. people who mostly follow a limited number (think dozens, not hundreds) of people and post infrequently from a single account.
However, as I became more and more comfortable with Twitter, I found that Twitterrific, at least in its free instantiation, was missing some features that I grew quite fond of using my Twitter client of choice on the iPhone, Tweetie. I actually consider Tweetie for iPhone as the best client out there, all platforms considered, but that’s a story for some other time…
For one thing, Twitterrific (in its ad-supported version) doesn’t support multiple accounts, nor does it offer persistent search capability or ability to follow trends, all of which I became more and more dependent on to more efficiently use Twitter. I now commonly use 3 different accounts for different purposes and being able to use a single interface without jumping through hoops to post and read tweets from several accounts is a big plus.
Similarly, I rely on persistent search results to follow mentions of things that I am interested in (most often JBoss Portal), while I use trends an easy, real-time news engine (though one that’s obviously biased towards a wealthy, industrialized and rather frivolous society that can afford almost constant connectivity, but here also, this is a subject for a different time)… I also like/miss on the desktop the nearby functionality offered by most iPhone clients, which allow to filter tweets based on your location, which is an interesting way to see what’s going on locally and potentially find interesting new people to follow.
Moving forward
In essence, I have been searching for an OS X Twitter client that would replicate the functionnality offered by Tweetie on the iPhone. I don’t consider myself a Twitter power user but my usage pattern has moved beyond what Twitterrific comfortably handles. This is not a dig on Twitterrific. Like I said, it’s a terrific app that I would recommend in a heartbeat. I just outgrew the use for which it is optimized.
Requirements
What I want essentially from a (desktop) Twitter client is:
- multi-user account support
- ability to track trends
- ability to track search results
- Growl support
- streamlined interface (though what that means exactly is open to interpretation)
- ability to track where I stopped reading tweets
- native interface with low resource usage, i.e. not Air-based which I find quite the resource hog at this point
- free and opensource if possible (though I am not opposed to buying a client that I’d like, I bought Tweetie on the iPhone after all)
With these in mind, I’ve been / will be looking at several twitter clients to see which one sticks around. Probably more to come on this…







