Open Source Tweet Wall

I am a big fan of Twitter and last week devoxx live tweet wall ( just made me want to create an open source live tweet wall. So last saturday night, I took some time to code it using the now well known Play! framework, some Web sockets and Twitter4J which supports the Twitter Stream API. This streaming API is really nice and provide a way to be notified almost instantly according to what you decided to listen to. After less than one hour (most of the time was consumed to read to Twitter4J documentation), the result is really fun. In the video below, I configured the wall to catch all the tweets containing ‘Apple’ and ‘Microsoft’ terms (I am not a MS supporter, but OMG, there are lot of tweets about it… probably only jokes and bugs…), and tweets are displayed in live on the wall (no I am not moving anything, the page is populated through a Web socket)

The resulting prototype is quite simple but works, and since I am not a front-end developer at all, it uses Twitter Bootstrap as CSS… The code is available on GitHub at and is not perfect at all but just works: Twitter configuration is available in the Play! application.conf file and the Twitter connection is created in the Bootstrap…

Looks like I should start creation sort of « Coding a nice thing in one hour » collection…

Playing in Brussels

Last week was the first annual review meeting of the Play project I work on since one year. I am involved at several levels in this project: from the architecture point of view, to the software integration and quality ones. On my side, my goal is to provide the efficient software infrastructure for events actors, or how to build an Event Driven Architecture based on Petals Distributed Service Bus. There are others points which have to be developed, especially all the platform governance stuff and Service Level Agreement for events, what we call Event Level Agreement.

We showed several things to the European Commission reviewers and we were also able to show an early prototype (this one was originally planned to be show at mid project ie in 6 months…). I made a video capture of the demo, which really needs to be explained…

  • There is the idea of a market place for events : The event marketplace. From there users are able to subscribe to things they are interested in. For now it is just a simple Web application which subscribe on behalf of the user to events through topics. This subscription is sent to the Play paltform using Web standards. Here we use OASIS Web service Notification to create this communication link.
  • Events are collected from several sources by events adapters. In the video above, we can see the user setting this FB status which is collected by the Play system and transformed into a notification which is published to the platform. There are also some Twitter adapters and Pachube ones which collects data in real time and publish them to the platform. This time again, we use Web standards for adapters communication.
  • Now, what happens in the video? The user logs in to event marketplace and subscribes to FB events. The user then publishes something to its FB wall (note that it is not mandatory to have the same user in the event marketplace and in FB. A user can subscribe to FB events and receive events from all the FB statuses collected from the FB application users). After the event propagation delay, the event marketplace display the event to the user.

So do we need such machinery to do things like that? No, if you want to do some other simple mashup portal. There are several components which are under active development: Storage and processing. Yes we store all events in the Play platform. This storage will be huge, but it is one of the project goal: Providing efficient and elastic storage in some P2P way. The need for this storage comes with the other important aspect of the project: Complex Event Processing. We will soon be able to create complex rules on top of events and be able to generate notifications based on past and real time notifications because we have efficient storage and real time stuff inside the platform. I am not an expert of this domain, so I can not give more details about that point but capabilities are huge! For example, we can express something like « Hey Play, can you send me a SMS me when there is my favorite punk rock band playing just around and I am not on a business trip and X and !Y or Z ». All of this intelligence coming from the processing of various sources I push since months in the platform coming from Twitter, FB, and other data providers.

Now let’s take some time to work on my OW2Con talk. The session name is pretty cool : Open Cloud Summit Session.

Need something? Just Ask GitHub…

I am using GitHub more and more: for personal open source projects (, for research projects (Play for now, for organizations (OW2 will start using it soon at least for mirroring, and we use it for the Java USer Group we created in Montpellier

This is a really nice tool and not only one other fashion tool. There are tons of interesting features and thousands mature and interesting projects are already there.

I remember a discussion almost one year ago where someone in my company was saying that git was not ready for industry. To be honest, I was not using git at this moment and did not have time to look at it, so my opinion was… no opinion. But what I can say today is that, after some months of use and with all the work GitHub guys did and with all the projects which migrated to this platform, it is probably more than ready to be widely used by all (not only GitHub, but git too).

So to come back to the main goal of this article, I was asking on twitter some days ago, what is the best tool to use to publish GitHub gists?

Even if I got some retweets, I did not have any answers (probably since I do not have any impact on Twitter or maybe my followers are not GitHub users…). So I asked it to GitHub and the first answer is just what I need: A command line tool written in Ruby (which is published by the GitHub CEO itself) and which is named gist. Using it is sooooo simple, just launch your terminal (I still use it everyday for many things) and the gist command will do the rest. As a result, you will get the gist link you can send to your peers. Sharing a gist just take 3 seconds…
And you what are you using to gist? or even are you using Git?

Support de Twitter dans Adium 1.4.x

Adium icon, also known as the Evil Menu Duck (EMD)

Image via Wikipedia

J’utilise déjà Adium pour Gtalk, jabber perso et pro et en temps que Twitter-addict je me suis dit qu’il était temps de voir comment est supporté ce service dans la nouvelle version de Adium sortie il y a quelques jours (le support dans la beta était un peu juste et ne m’avait pas spécialement satisfait…). Voici donc un premier retour d’expérience sur l’utilisation de Adium et de Twitter.

Les mentions


Le premier soucis de l’intégration de Twitter dans un logiciel initialement conçu pour la messagerie instantanée est le mappage entre le monde du microblogging et de l’IM. Les développeurs d’Adium ont décidé que chaque abonnement Twitter serait mappé sur un buddy IM. Ok bon, je suis actuellement 538 personnes (mais activement quelques dizaines, merci les listes!). Bref, cela me donne une fenêtre de liste de contacts assez énorme, qui de plus est affreusement longue à charger au démarrage (l’enrichissement se fait pas tranche d’une centaine de contacts, je pense que les limitations de l’API Twitter doit en prendre un coup). En plus je me retrouve avec a peu prêt autant de notifications Growl me donnant le statut actuel de mes contacts…
Du coup, pas d’autre choix que de désactiver l’option ‘Afficher qui je suis dans la liste de contact‘ dans les préférences du compte Twitter.

Oui mais… En désactivant cette option, il se trouve que la completion du nom lors d’un @mention ne marche pas pour tous les utilisateurs… Pour info, la completion est disponible en tapant ‘@xxx + Tab’ xxx étant le début du nom de la personne à mentionner.
Les développeurs ont apparemment choisit de ne pas charger la liste des personnes suivies si on ne veut pas les afficher. Dommage, l’affichage n’étant pas la seule utilisation que l’on puisse faire et il arrive souvent que l’on veuille mentionner quelqu’un dans un tweet… Après avoir discuté avec les développeurs sur le canal IRC d’adium (#adium sur freenode), la seule solution est de réactiver l’option que l’on vient de désactiver un peu plus haut et de choisir le masquage des contacts pour le compte depuis ‘Affichage>Masquer certains contacts>Masquer les contacts du compte‘.

Bref, on se retrouve avec quelque chose qui marche mais qui dans mon cas prends énormément de temps à démarrer…

Être mentionné

Dommage, il semble que la seule façon de voir que l’on est mentionné dans le tweet d’un contact est une minuscule marque dans la barre de défilement… Une notification Growl aurait bien fait l’affaire (ou même une fenêtre de dialogue spéciale).

Les DM

Puisque au point précédent j’ai du désactiver l’affichage de la liste des contacts (et que je ne peux plus ‘double-cliquer’ sur le contact), comment alors envoyer un message direct?
Seule solution, créer une nouvelle conversation (cmd-N). Ouf la completion marche bien si on a bien activé l’option qui va bien (cf point précédent)…

Par contre, cette fois ci un DM venant de quelqu’un affiche bien une nouvelle fenêtre de dialogue de type chat.

Les listes

Support absent… Dommage, je ne suis activement qu’une vingtaine de personnes que j’ai placé dans une liste privée (la timeline globale étant vraiment trop horrible à suivre). Il y a sûrement ici une astuce pour créer un groupe d’utilisateur mais je n’ai pas envie de dupliquer les choses. Je m’en passerais pour le moment.

Pour conclure cet article, il est clair que le ‘mapping’ entre deux mondes pas tout à fait identiques est assez complexe mais pour une première intégration c’est déjà vraiment pas mal (en plus je ne pense pas qu’il y ait une société derrière Adium comme on peut le voir pour pas mal de projets Open Source de nos jours ie quid du business model d’un logiciel de messagerie instantanée). Ce genre d’exercice peut évidement tirer aussi les fonctionnalités de base vers le haut, a voir dans les prochaines versions.

Les points cités précédemment sont certainement contournables, et discuter avec les développeurs via le canal IRC du projet est un bon moyen de trouver des solutions alternatives en attendant la version 1.5 (le tracker est déjà bien rempli)…

PetalsLink Labs @ Twitter

En tant que grand utilisateur de Twitter, j’ai créé un compte Twitter pour le département R&D de PetalsLink : @petalslinklabs.

Le but est de partager ici des infos sur les projets recherche auxquels nous participons, des nouvelles sur les prototypes, les avancées, les articles, les conférences, les meetings, … bref tout ce qui rythme la vie de l’équipe.