September 2006

Beware the crossroad

Sat 30 September 2006

I think that I’am at a kind of a x-road of my life. Time to leave home, move working for a company, earn money, fall in love, have children, ...

I’m not a rude guy, it’s just the reality of these days. I’ll probably stop playing with my tenor trombone. Music is a thing I love but I feel not good. It probably represent a huge part in the balance of my moods.

In few days (I hope), I’ll know where will begin my future. Dublin or Lausanne. I don’t want to be too much optimistic about a dreaming job in Ireland so I don’t want to tell much about that.

I love saying that: “Believing is all that matters”.

Ces jours je me sens à un carrefour de ma vie où un tournant va être pris. Quitter l’environnement connu et maternel pour partir tout recréer ailleurs, à mon image, pour mes envies, mes besoins. J’ai hâte autant que j’appréande.

Si tout va bien, je saurai dans quelques jours de quoi sera fait mon avenir. Si je devrai m’installer à Lausanne ou à Dublin. Dublin est tout ce que j’espère mais ne veut pas être trop optimiste sur la question.

J’aime cette phrase : « L’important c’est d’y croire » qui peut s’appliquer à tant de situations ou de discours que je peux entendre ou lire. Je fais, et depuis un moment déjà, tout pour être le plus libre possible et assouvir mes envies d’évasion internationales. L’Irlande sera ou pas le premier saut à l’étranger et je m’en réjouis.

Digg it!, so del.icio.us, blogmarks, reddit.

Bikini Test, the first hCal’d Swiss Club

Mon 25 September 2006, , ,

Gilhoo shows me that Local.ch can display the next events for the Bikini Test: local.ch: results for Bikini Test.

The question was: How they do that?. There is no iCal, no RSS. It’s pretty strange but the fact is that the guys of local.ch rocks.

I decided to add some hCal informations to the Bikini Test’s web site (with cool URI’s too). Now you can import the agenda into your favorite calendar application from a sime link to Technorati convertion tool: http://feeds.technorati.com/events/http://bikinitest.ch/.

preview with Google Calendar

Next step will be to add some cool links to invite users to discover this new feature and to build an iCal file that users can subscribe to. At the moment, you can only get events month after month or by event.

Warning: this exportation tool still under development and I’ve found a bug in the convertion of the dates, already reported to some technorati guys.

Gilhoo m’pointé le fait que Local.ch affichait les dates des prochains concerts du Bikini Test : local.ch: results for Bikini Test.

Une question est venue à nous, mais comment font-ils ? Le site de dispose pas de flux RSS ni de iCal pour son agenda. C’est plutôt étrange, mais ça montre bien le talent des types derrière ce service.

Ci-dessus vous pouvez contempler un aperçu d’un calendrier exporté grâce à Technorati. Testez en ajoutant les évènements de ce week-end (http://feeds.technorati.com/events/http://bikinitest.ch/) à votre application d’agenda préférée. (Attention : ce outil est encore en version bêta et peut contenir des bugs)

Digg it!, so del.icio.us, blogmarks, reddit.

Switzerland and Geo tools

Wed 20 September 2006, , , ,

In Switzerland there some cool tools for searching with cool geographic informations like Local.ch and map.search.ch.

Map of me

Here, a search for me with Local.ch. “Oh my god!, anybody can see that?” The better is there are including some cool microformats. You can see them bellow (need the firefox extension called Tails). tel.search.ch gives you the vCard of every contact you are looking for (but not with microformat).

Microformat from local.ch

And the best of all is blogug that provides a map of who blogged what and where ! It uses the same meta tags that GeoURL uses.

Me from the map of blogug

Everything you need to do, is ping GeoURL, subscribe to blogug and ping them.

En Suisse nous avons des outils de recherche avec données géographiques vraiment cools comme Local.ch et map.search.ch

Dans la première image, vous pouvez voir comment s’affiche le résultat d’une recherche. Le plus fun c’est que l’outil intègre des microformats (voir deuxième image) en plus d’un lien pour télécharger le vCard directement. tel.search.ch intègre lui aussi le vCard mais pas le hCard.

Et dernier point, également dernière image, le site blogug fournit la possibilité de tracker les bloggeurs sur la carte du pays grâce aux mêmes balises que celles utilisées par GeoURL.

Digg it!, so del.icio.us, blogmarks, reddit.

Bypassing Flash

Mon 18 September 2006, ,

This slashdot entry MySpace Music Player Hacked inspired me. How should I do if I want to hack a any MP3 flash player ? I don’t tell you how to do this kind of hack but how it’s possible to do and what are the tools. The main goal of this entry is how a site can protect itself (if it’s possible). Knowing our enemies’ tools is the better way to beat them.

One way is to have the same behaviour of the web browser and the Flash player. But how to know this behaviour ? Wireshark (formerly Ethereal) gives you the access to the HTTP requests. You know now what you will fake.

Sometimes there is a small protection hardwrited (that’s pretty bad) in the player. Next step is to extract the ActionScript of the player. Flare is there for you.

Now this to act, with a little piece of doc like the excellent Mark Pilgrim’s Dive Into Python and some time to kill, you gonna make it.

The interesting question is how to protect yourself ? AtomAPI authentication isn’t a bad starting point. But you’re not protected from the Hooking guys or the Audio Hijack dudes. Doing like some major radios and playing, at the beginning of the song, another sound (like a jingle) can be an interesting solution. And why not having a system that you can only download a portion of the song and the flash player will append the pieces ? I’m not an expert of Flash. Probably, if you recode every mp3 in a very low bitrate nobody will care about your songs.

Un récent article sur slashdot MySpace Music Player Hacked m’a fait réfléchir sur comment peut-on s’y prendre pour réaliser ce type de facilité.

La première étape me semble être : connaître le comportement du système. Un outil comme Wireshark (connu sous le nom d’Ethereal) permet d’obtenir toutes les requêtes HTTP et leurs réponses afin de bien comprendre ce qui s’y passe. Ne pas oublier bien sûr de fouiner un peu dans l’HTML des pages.

Parfois, il peut y avoir une protection écrite en dur (c’est mal) dans le client Flash. Un outil comme Flare est là pour vous.

Maintenant, sortez le serpent de sa boite, l’excellent documentation Dive Into Python de Mark Pilgrim et passez une ou deux heures sur le problème et vous devriez y arriver.

Maintenant le point important de ce poste, qui n’a pas vocation de vous inciter à hacker le premier système de lecture de fichiers mp3 venu mais de mettre en évidence les outils dont disposent les personnes aillant pour but de garnir leur iPod tout neuf de mp3 tout aussi neuf — Je ne possède aucun lecteur mp3 —, comment un site peut-il se protéger ? Je pense que l’authentification de l’AtomAPI est un bon moyen de garantir que l’on parle (en tant que serveur) toujours à la bonne personne (son client player Flash et pas un méchant script). Mais vous ne serez toujours pas à l’abri des Hookeurs ou des Audio Hijackeurs. Un autre solution pour ceux qui enregistre la sortie audio dans un fichier audio serait de faire comme les radios qui ont des jingles qu’elles passent au beau milieu des chansons. Quant aux hookeurs (vive le franglais) pourquoi pas avoir un système qui ne retourne qu’une partie du fichier et Flash aurait la charge de remettre de l’ordre. De toute façon à partir du moment où le fichier peut-être entendu, il peut être enregistré.

Ne négligez jamais la débrouilladise des utilisateurs et ne reposez jamais un système de protection sur l’obscurantisme.

Digg it!, so del.icio.us, blogmarks, reddit.

Twisted Python

Sun 10 September 2006, ,

At work, I’m playing a lot with Ajax and a couple of weeks ago, I’ve heard about the Comet paradigm.

The idea (that is used by GTalk integration in GMail) is to change the GET idea between Ajax into a PUSH one. In other words, the server gives the data to the client. If you know a little about HTTP 1.1 chunked you’ve got the key of the concept.

One way to do Comet is with the Python framework called Twisted (sorry PHP isn’t a viable way to achieve this goal) and the application construction kit called Nevow. Prefer the subversion version of each.

Come back to Twisted that is a very powerful framework to manage cool networking things like IRC, HTTP, TCP and so one. It works in an event-driven progamming and you can integrate GTK or Qt. Sounds promising, no ?

At the moment, I’ve only played with these tools without touching Comet but I need to try the PUSH way. Stay tuned.

Au boulot, je fais de l’« Ajax comme un fou » comme j’aime le dire. Il y a peu, je suis tombé sur le paradigme nommé Comet qui s’avère être le pendant d’Ajax qui fonctionne en mode GET mais en PUSH. Ceux qui connaissent le mode chunked de HTTP 1.1 comprendront assez aisément comment Comet peut bien fonctionner.

Il est possible d’en faire via les outils Python : Twisted et Nevow. Twisted est un puissant framework qui gère de manière évènementielle tout ce qui est réseau (TCP, UDP, IRC, HTTP, ...) bref un truc bien cool.

Désolé de ne pas vous en donner plus à vous mettre sous la dent, mais à l’heure actuelle, j’ai seulement faire joujou avec Twisted et ne suis pas en mesure de montrer une démo de Comet, tantôt j’espère.

Digg it!, so del.icio.us, blogmarks, reddit.

Bloggy planet, nothing new

Sat 09 September 2006, , , ,

Yesterday, I’ve met lots of Swiss blogo-stars at the Bloggy Friday of September.

When our stomach were full, 5 or 6 of use (who aren’t good singers enough) went to the ja gern! event where lots of famous people were drawing for our eyes when DJs were giving us their best sound. That was great!

One thing that I can say about bloggosphere is that it’s pretty small like everywhere. I don’t thing it’s bad but before yesterday I was seeing is like a city, but it’s much more like a town.

For the curious, I’ll do another trip to the country of the Leprechaun the first week of October.

J’ai passé la soirée d’hier autour d’une fondue à la tomate (plus fameuse d’ailleurs) et d’une foule de blogo-célébrités pour paraphraser Stephanie.

Après, les bonheurs de l’estomac et des gens, évènement ja gern! où d’autres nous faisaient vivre leurs dessins en live tandis que les DJ donnaient du son. Super chouette mais j’étais complétement naze, la fondue n’est peut-être le meilleur moyen d’assumer une longue soirée festive.

Sinon, pour justifier mon titre. Quel que soit l’univers dans lequel on se plonge, on se rend compte de ses limites de son exiguïté. C’est très intéressant, le monde est petit est c’est peut-être pas si mal après tout.

Pour les curieux, j’aurai droit à un nouveau séjour au pays du Leprechaun début octobre (en souhaitant que ça ne soit pas le dernier).

Digg it!, so del.icio.us, blogmarks, reddit.

Asynchronous upload form

Sun 03 September 2006,

Everyone who’s tested GMail has seen that the uploading function for attaching a document to a new message is pretty cool, not the crap of SquirrelMail that reloads the whole page.

An uploading form à la GMail is pretty easy to build.

<form target="target" enctype="multipart/form-data" method="post" action="upload.php">
	<iframe name="target" src="" style="width:0;height:0;border:0 none;" ></iframe>
	<input type="file" name="filename" />
	<input type="submit" value="Upload" >
</form>

Here is the form, you can customize it with onchange event, lots of div’s, label’s and so on but here is the basis.

When the user submits the form, it will send it into the iframe because of the target attribute. Now everything you have to do is into the upload.php treats the uploaded file and output a piece of JavaScript that will tell the parent page that everything is ok.

Ceux qui ont un compte GMail, le savent bien, avoir un formulaire d’upload qui fonctionne de manière asynchrone est un vrai petit bonheur. Il est possible de continuer l’édition de son message pendant que les fichiers à joindre sont envoyés.

La portion de code HTML ci-dessus est un formulaire les plus simples que l’on puisse faire remplissant cette fonction. L’élément important est l’attribut target qui va faire qu’au moment de l’envoi, le document va être envoyé dans l’iframe. Il ne reste plus qu’à traiter le fichier depuis upload.php et, pour faire les choses bien, informer la page parente que l’envoi est terminé via JavaScript.

Digg it!, so del.icio.us, blogmarks, reddit.