Posts Tagged Voyage
My time at Sun Labs and pyaura
Posted by mailletf in Programming, Voyage on October 9, 2009
My internship at Sun Microsystems Labs, which has been going on for about 15 months – 9 of those full time at their campus in the Boston area – is coming to an end. During the course of those months, I’ve met a lot of very smart and fun people, I’ve worked on very challenging and stimulating problems and I’ve discovered a bunch of really good New England beers.
All my work has been centered around the Aura datastore, an open-source, scalable and distributed recommendation platform. The datastore is designed to handle millions of users and items and can generate content-based recommendations based on each item’s aura (aka tag cloud).
Last summer, under the supervision of Paul Lamere, I worked a lot more on our music recommendation web application, called the Music Explaura and designed a steerable recommendation interface. (We also have a Facebook companion app to the Explaura that was created by Jeff Alexander.)
This summer, I worked with Steve Green on many different things, including what I’d like to talk about in this post, pyaura, a Python interface to the datastore.
pyaura
The idea behind pyaura is to get the best of both world. While the datastore is very good at what it does – storing millions of items and being able to compute similarity between all of them very quickly – the Java framework surrounding it is a bit too rigid to quickly hack random research code on top of it. While my actual goal was to experiment with ways of doing automatic cleanup and clustering of social tags, I felt I was missing the flexibility I wanted and was used to getting when working on projects using Python’s interactive environment.
Without going into details, since the datastore is distributed and has many different components, it uses a technology called Jini to automatically hook them all up together. Jini takes care of automatic service discovery so you don’t have to manually specify IP adresses and so on. It also allows you to publicly export functions that remote components can call. A concrete example would be the datastore head component allowing the web server component to call it’s getSimilarity() function on two items. The computation goes on in the datastore head and then the results get shipped across the wire to the web server so it can serve its request. However, Jini only supports Java leaving us no direct way to connect to the datastore using Python.
After looking around for a bit, I stumbled upon a project called JPype, which essentially allows you to launch a JVM inside Python. This allows you to instantiate and use Java objects in a completely transparent way from within Python. Using JPype, I built two modules which together, allow very simple access to the datastore though Python.
- AuraBridge: A Java implementation of the Aura datastore interface. The bridge knows about the actual datastore because it can locate it and talk to it using Jini.
- pyaura: A set of Python helper functions (mostly automatic type conversion). pyaura instantiates an AuraBridge instance using JPype and uses it as a proxy to get data to and from the datastore.
Example
To demonstrate how things become easy when using pyaura, imagine you are running an Aura datastore and have collected a lot of artist and tag information from the web. You might be interested in quickly seeing the number of artists that have generally been tagged by the each individual tag you know about. With these few lines of code, you can get a nice histogram that answers just that questions:
import pyaura.bridge as B import pylab as P aB = B.AuraBridge() counts = [len(tag.getTaggedArtist()) for tag in aB.get_all_iterator("ARTIST_TAG")] P.hist(counts)
The above code produces the following plot:

This is the result we expect, as this was generated with a datastore containing 100,000 artists. As less and less popular artists are added to the datastore, the effects of sparsity in social data kick in. Less popular artists are indeed tagged with less tags than popular artists, leading to the situation where very few tags were applied to more than 5000 artists.
This is a small example but it shows the simplicity of using pyaura. With very few lines of code, you can do pretty much anything with the data stored in Aura. This hopefully will make the Aura datastore more accessible and attractive to projects looking to take advantage of both its scalability and raw power as well as have the flexibility to quickly hack on top of it.
Gondoles qui cèdent à Whistler
Comme vous le savez sûrement déjà, un poteau de la gondole Excalibur à Whislter a cédé mardi dernier. Heureusement, aucun blessé sérieux.
Drôle de hasard, je skiais à Whislter cette journée-là et je m’apprêtais à prendre cette gondole à la fin de ma journée. Étant donné qu’il n’y avait pas beaucoup de neige, le bas de la montagne était fermé et l’on devait monter et redescendre le bas en gondole. En descendant à pied le bas de la montagne, j’ai pu apercevoir au loin le poteau qui a fendu. Être descendu de la montagne 20 minutes plus tôt, je me serais sûrement fait prendre.
Je vous partage aussi deux belles photos de cette fantastique montagne pour ne pas uniquement se souvenir de ce malheureux épisode :
Des nouvelles en photos
Que d’aventures dans cette ville fantastique qu’est Boston. À défaut d’être votre narrateur, je vous propose un bref aperçu de mes péripéties en images…
Earthfest 2008
Samedi à Boston avait lieu le Earthfest, un concert annuel organisé par une station de radio locale. L’environnement, mais surtout la consommation responsable était à l’honneur. Il y avait, derrière une série de stands à frites et autre bouffe garantissant une longue vie en santé, plusieurs kiosques offrant des échantillons gratuits de nourriture et boissons bio; le paradis de l’homme n’ayant pas dîner quoi
Ils donnaient même des plantes gratuites à apporter et planter chez soi.
Côté musique, des groupes que je ne connaissais malheureusement pas. Il y avait une scène de groupes originaires de Boston et une autre scène où des groupes connus comme Crackers et Cake ont joué. Même si je ne les connaissais pas de nom, ils ont chacun un ou deux succès qu’en les entendant, ma réaction fut : “Ahh, c’est eux qui font cette toune?!”.
Mais en prime, en plus de la musique, nous avons eu droit à plusieurs autres scènes très amusantes. Par exemple, une horde de zombies brandissant des pancartes “Zombies are people too”. Il y avait aussi les donneurs de calins gratuits, un Winnebago faisant de la promotion pour le film Zohan où on donnait des coupes de cheveux gratuites et, le clou de l’après-midi, la State Police qui a fait une descente pour une raison encore inconnue. Un agent est littéralement monté sur la scène en plein milieu d’une chanson pour que Cake arrête de jouer parce que, on croit, le trash était trop violent à leur goût. Le meilleur était par contre quand ils ont mené une opération d’infiltration 30 centimètres derrière moi. Ils ont encerclé une bande de jeunes mineurs munis de…. attention… quelques bouteilles d’alcool [musique dramatique]. Il y avait littéralement six officiers de la paix (que Cake a, sans aucun sarcasme, remercié pour leur bon travail
) qui ont fait comprendre aux jeunes mineurs que boire de l’alcool et apporter un BBQ (on essaye encore de comprendre ce que ça faisait la) à un spectacle ne sont pas une bonne chose. Les jeunes furent escortés hors des lieux et on m’a dit qu’ils sont probablement dans un sérieux pétrin.
Après le spectacle, tout de même appelé Earthfest, on reste un peu sceptique en voyant les gens jeter leurs bouteilles de plastique à la poubelle quand il y a un bac de recyclage trois mètres plus loin…
La soirée s’est terminée dans un bar où ils avaient une sélection très impressionnante de bière. J’ai en effet pu regouter à deux bières belges, de la Grimbergen et de la Chimay, que j’avais bu lors de mon voyage en France. Vaguement relié, je suis tombé sur un magasin tout à l’heure, à 10 minutes de mon appartement, où ils vendent de la Fin du Monde et de la Maudite en paquet de quatre. Je connais quelqu’un qui va être content
Quelques autres photos de la splendide ville de Boston sur ma page Flickr.
Et j’aimerais mentionner que Charlie Wilson’s War est un excellent film et que Juno est splendide.
attach failed – no mountable file systems
Une pourtant si belle soirée, un peu froide, journée pas assez productive au boulot, mais rien qu’une bonne Samuel Adams Black Lager (oui c’est ce que je bois maintenant) ne pouvait guérir. Après m’être un peu battu avec mon poulet qui n’a pas trouvé qu’une journée passée dans le frigo était suffisante pour se dégeler, j’étais prêt à travailler un peu pendant la soirée.
Pour vous donner un peu de contexte, étant parti durant trois mois, je me suis acheté un disque dur externe pour amener avec moi mes précieuses séries de TV, tous mes MP3, des programmes, des jeux; un amalgame de séquences binaires qui permettent à un nerd exilé de fonctionner. Étant un citoyen modèle comme nous le sommes tous, j’achète légalement, tout comme vous, tous les programmes que j’utilise et la musique que je prends un si grand plaisir à écouter. Je tenais toutefois, dans le seul but de m’assurer un peu de confidentialité si, au nom de la sécurité nationale, on me soumettait à une fouille exhaustive lors de mon passage en Amérique, à protéger mes précieuses données en les encryptant avec TrueCrypt. En effectuant une attaque en force (traduction de brute force attack), le meilleur des ordinateurs aurait besoin de plus de temps que l’âge même de l’univers pour réussir à briser l’encryption. Détail superflu, mais amusant à dire
Pourquoi je partage ces informations sans intérêt apparent? Simplement parce que j’ai été confronté, après avoir savouré mon poulet dont je vous parlais tout à l’heure, au message suivant :

Je vais traduire pour tous les informaticiens dans la salle : j’ai perdu l’équivalent de 350 gigaoctets de données. On peut aussi le voir comme une pile de 500 CD. Pouf, disparu. Oui j’en ai des copies à Montréal, mais 150$ d’essence et 10 heures de route m’en sépare. Je sais… je sais ce à quoi vous pensez tous : les choses pourraient être pires; j’en conviens. Mais dans mon petit univers égocentrique, cette bonne nouvelle crée une légère perturbation émotionnelle en moi.
Je vais tout de même vous laisser sur une note plus heureuse, avec quelques photos du mariage de mon très bon ami Patrice qui a eu lieu samedi dernier.
14h
20h
23h
Musique : Portishead : Dummy, Mark Rapp, Radiohead
Le plus grand Apple Store ouvre demain à Boston
Première journée
La première journée est derrière moi et elle s’est très bien déroulée. J’avais déjà rencontré l’autre stagiaire qui travaille sur le même projet que moi hier soir puisqu’il est mon voisin. Nous sommes cinq à être dans l’équipe du projet Aura, qui comporte plusieurs sous-composantes dont celle sur laquelle je vais travailler, Search Inside the Music. À court terme, je vais devoir me familiariser avec énormément de code Java et l’architecture du système.
Il y a plusieurs endroits intéressants à Sun Labs, notamment la salle de “recherche” sur les jeux vidéo. Je pense que on peut facilement s’improviser comme un chercheur dans ce “projet”. J’ai entrevu un Wii à qui je ne pourrai m’empêcher d’aller rendre visite; ce sera ma bonne action de la journée. Il y a aussi du pool, ping-pong et du baby-foot. Tout pour encourager la productivité quoi
Et en terminant, j’ai appris quelque chose de très intéressant hier. Au Massachussetts, il n’y a pas de taxe sur les vêtements. C’est sûrement de l’information que certaines personnes vont trouver intéressante

Musique : Our Lady Peace : Clumsy, 4am, Car Crash, Naveed
L’arrivée à Boston
Hier, je me suis envolé vers Boston, vers un été qui sera sans aucun doute mémorable. Je commence en effet dès demain un stage chez Sun Microsystems (voir sur Google Maps) qui durera jusqu’à la fin août. Je ferai partie d’une équipe qui travaille sur le projet Search Inside the Music. Très brièvement, ce projet vise à construire un système de recommandation musicale. Pour ceux intéressés par de tels systèmes, je vous recommande fortement des sites comme Last.fm ou Pandora (qui ne fonctionne qu’aux États-Unis pour des raisons de droit d’auteur, nanana moi ça marche
Mais vous pouvez utiliser Global Pandora à la place).
Le vol s’est très bien passé. Obtenir le visa à l’aéroport a été simple et facile, à ma plus grande surprise. Bien sûr, il y avait des semaines et des semaines de travail passées à envoyer courriels, fax, signatures, lettre de recommandation, etc. un peu partout pour obtenir le sacré document DS-2019 qui permet d’obtenir le visa, mais je vous épargne les détails.
Peu après le décollage, le ciel complètement dégagé m’a permis d’avoir une vue imprenable sur Montréal. Après le stade qui avait véritablement l’air d’un éléphant blanc parmi les bâtiments jouets l’entourant, La Ronde est apparue avec tous les beaux souvenirs y étant attachés. J’ai presque vu le Palace of Love, mais malheureusement notre angle de vol m’a seulement permis de voir la sortie de la 132 au pied du Pont Champlain. La dernière chose que j’ai pu reconnaître fut le Dix-30 avant que l’altitude et les nuages ne rendent indistinguable quoi que ce soit au sol.
Le vol fut très court et je n’ai presque pas eu le temps de finir mon jus de tomate (vive les traditions Yuk
) avant que l’on amorce notre descente vers l’aéroport Logan à Boston. On volait juste au dessus des nuages qui étaient très denses et cachaient complètement le sol. On se serait cru arrêté dans un désert blanc. Rien ne semblait bouger; seul le bruit des moteurs me rappelait que je n’étais qu’un petit point perdu dans le ciel qui filait à des centaines de kilomètres à l’heure.
Après une attente d’environ 30 minutes au kiosque de location d’auto Budget manquant cruellement de personnel, j’ai pu prendre possession de ma voiture “compact”, comme le prétendait ma réservation. Très confortable; je vais par contre sûrement m’en mordre les doigts éventuellement à la pompe.

La route vers mon appartement (voir GoogleMaps) s’est faite sans embûche. Je suis à une trentaine de minutes du centre-ville de Boston dans la ville de North Reading. L’appartement est en fait un condo neuf dans un développement qui vient d’être construit. C’est simplement incroyable. Impossible de demander mieux. L’appart était meublé et tout équipé. Il manquait seulement une bonne bière dans le frigo, chose à laquelle j’ai rapidement remédié
Donc mis à part le fait que mon enthousiasme pour l’été m’ait fait remplir mes bagages de linge pas très chaud et qu’il fait 10 dehors, c’est la joie
Musique : Howie Day : Stop All The World Now, Ben Lee : Ripe




