home icon contact icon rss icon last FM icon facebook icon LinkedIn icon Delicious icon twitter icon

Archive pour Partage

Wok Cooking

For St Paddy's night, you drink lots of Guinness and perhaps eat an Irish meal.

But yesterday was an unusual St Paddy's night. Before going to drink some Gallia at La Plage, we went to Wok Cooking. It's a asian restaurant where you choose every ingredient you want (and can fit in the bowl you have been given), you choose your sauce, and then a chef will cook all this in front of you in a wok.

My own bowl of wok

This was good and very satiating (though a bit expensive), but more than that, seeing the chef cooking your meal is unusual and worth seeing.

Concerts and photos

So I got a brand new Canon 500D. Awesome. Now I have to practice and take photos. It seems so easy to press the shutter and have a beautiful image. But believe me, there are other things we may have to know before pretending to take some acceptable photos.

I will post here some of mine. I sincerely hope that we will see improvements in some later posts...

Here are 2 photos from a concert at Le Point Ephémère, in Paris. The first part was Transfer, followed by the amazing Esben and the witch.

Concert halls are very dark, with few very bright parts (under the spot lights). People on stage move constantly. As a noob, I don't know how to take a good photo in such bad conditions. I think I have to choose a very large aperture (to catch all the light available) and a very small exposure (to avoid fuzziness). But there must be something else because all my pictures are noisy in the dark parts.

You can find more of my pictures of Transfer and Esben and the witch on my Flickr account.

But if you really want some great concert photos, Robert Gil is your man. He took some of Esben, check out this guy's work. I see him at every concert I go to and he's awesome.

La montagne, ça vous gagne.

En septembre dernier, j'avais déjà fait une tentative. Concours de circonstances professionnelles et privée, des nuits blanches ou presque, je n'étais pas en forme. Et puis la course était plus dure. J'avais eu du mal à aller jusqu'à Adèle Planchard, et la glace bleue de fin de saison m'avait effrayé.

Cette fois ci ce fut différent. Bien préparé, bien en forme, en début de saison. C'est plus simple il y a plus de neige. Alors j'y suis arrivée, au sommet, en haut de l'Aiguille du Tour.

D'abord au refuge Albert 1er, bien plus accueillant qu'Adèle, pour y passer la nuit. Puis, le ledemain, au col supérieur du Tour après une belle pente en neige. Enfin l'escalade vertigineuse du pic.

Pour les curieux, il y a des photos pour ceux qui ont une vie privée et ceux qui n'en n'ont pas.

Facebook Developer Garage - LeWeb09 edition

Yesterday, tuesday december 10th, took place at LeWeb09 a Facebook Developer Garage.

It's an event where local Facebook Application and Facebook Connect developers join together and share on their works. This year, a team of Facebook representatives came from the US to meet local developers and answer specific questions. As a social marketing agency, Sociabliz was naturaly there to share its experience of Facebook development.

I gave a talk on YAPS and other tools i've build to encourage Javascript based UI over Flash based UI in Facebook Application. You can find here the slides of Deep into FBJS. All the event was also live on UStream so you can watch it at this url : http://www.ustream.tv/recorded/2843545 (talks start around 0:50, mine is between 1:19 and 1:35).

The live demo can be found on the yaps demo application

I hate watching me again, I feel so stupid. My english seems so bad, I'm kind of ashamed. Speaking english in front of a hundred people was much harder than I expected. Finding the good words is sometimes painful. Anyway, the talk was good, everybody understood it or at least the slides where helpful.

Berlin & blockcamp

Nan, y a pas de rapport. J'suis en retard, c'est tout.

Berlin

Le week end avant-dernier (20-23 novembre), Charlotte et moi sommes parti passer 4 jours à Berlin.

En un mot : unwahrscheinlich !

Bon, pour faire vite, façon carte postale, nous avons décollé de Paris à 6h30, pour atterrir à Berlin vers 8h. Ensuite, train vers le centre ville, visite de l'hôtel et dépôt des bagages, petit dèjeuner à Hackesher Markt, traversée de l'île des Musée, descente de Unter den Linden jusqu'à la porte de Brandebourg, visite du Bundestag et de sa coupole, admiration de la Hauptbahnhof, petite bière au café de la Hamburger Bahnhof et visite de celui ci (musée d'art contemporain). Pour le soir nous avons rejoins Manu accompagné de kiddik et de Johnathan (venus de Copenhague) pour aller manger des raviolis russes dans un resto bulgare, puis pour aller boire un coup non pas au huit millimètre, mais dans un autre bar, typé ancienne Allemagne de l'est.

Le lendemain, levé assez tard pour aller manger des currywurst, voir Checkpoint Charlie, sortir en courant du musée du même nom, vagabonder du coté d'un morceau de mur puis entre les tours de Potsdamer Platz, admirer le chapiteaux du Sony Center et les pub géante d'Intel et Microsoft, et enfin aller boir une bière avec le même Manu dans un bar pas pour touristes dans les tréfonds de Rosenthaler Strasse. Ensuite après une tentative raté de resto, nous avons mangé italien sur la même rue et bu dans un bar à la serveuse sympathique.

Le dimanche, levé plus tôt, nous avons entrepris une journée musées, avec l'ancienne galerie nationnalle, la nouvelle galerie nationnalle et la pinacothèque. Nous avons loupé de peu Bill Kaulitz pour la première d'Arthur und die Minimoys, pour aller manger dans un White Trash Fast Food à la carte hilarante et boire des tequila sunrise et des gin tonic dans le même bar que la veille.

Enfin, le dernier jour, après une visite d'un squatte artistique sur Orianenburger Strasse, nous sommes allés jusqu'à Bellevue et traversé le Tiergarten (en passant par la colonne de la victoire) pour rejoindre Potsdamer Platz. Enfin il a fallu prendre le train pour l'aéroport, non sans encombres du à des travaux et des changements de ligne en teuton. L'atterrissage à Orly fut un peu mouvementé pour cause de météo défavorable et le pilote s'y est pris à deux fois pour poser l'appareil sans dégât.

Pour les photos, c'est sur facebook, avec les commentaires, ou sur imeuble, sans rien.

Blockcamp

Rien à voir, puisqu'il s'agit ici d'un série de mini conférences portant sur Ruby et sur Smaltalk.

Samedi dernier (28 novembre), cet événement a réuni à l'Insia des gens de ces deux mondes. J'y ai rencontré oz, Jean, Renaud, Ol, Damien et d'autres habitués comme Jean Francois (merci à lui pour l'organisation) et Shingara.

J'y ai parlé de ruby et de temps réel. L'effet démo de ce sujet que je ne maîtrisais pas n'a pas manqué : impossible de connecter un vidéo projecteur et la carte Arduino ne répondait pas aux signaux d'upload... Malgré cela, les discussions qui s'en sont suivis ont été très intéressantes. Pour ceux qui veulent, les slides sont là.

Dans la journée, j'ai pu assister à une démo de l'étrange Seaside et de ses copains Magrite et Pier, ainsi qu'à eux présentation d'Ol sur MacRuby et Chef. Je regrette un peu de ne pas m'être plus intéressé au Smalltalk.

Il est à noter que c'était le premier événement que Sociabliz sponsorisait. J'espère que ce ne sera pas le dernier.

Un ami venu du Luxembourg a assisté à une partie des conférences et nous nous sommes rejoint ensuite pour aller manger grec à Cluny et écouter les Bec Bien zen à la péniche Bateau El-Alamein.

Away we go to tag

We went to see Away We Go. It was a good movie. Showing the joy and the sadness to be a familly, to have kids, to be in love with somebody. And the soundtrack is huge!

On our way home, we met Nicolas.

Nicolas is in love with Elsa. Elsa comes back from Lyon tomorrow, and tomorrow, Nicolas wants to be sure Elsa knows about his feelings for her. So we found him painting the wall in front of her window. And we helped him complete his work by putting stickers in the shape of letters.

Look at our first tag! Our first work of art!

Custom facebook ajax will_paginate renderer

will_paginate is one of the most used rails plugin. It take care of pagination of a large collectoon of item, automatically limiting records to display. It also display a pagination bar, with next, previous and numbered pages.

The fact is that by default, links are just normal link to relative path. It what you want most of the time. Some times you want some AJAX. There is many different way to do it. But some times, you want some AJAX in a Facebook Application...

Here is how I do it.

# In RAILS_ROOT/app/helpers/remote_link_renderer.rb
class RemoteLinkRenderer < WillPaginate::LinkRenderer
  def prepare(collection, options, template)
    @remote = options.delete(:remote) || {}
    super
    @options[:params].is_a?(Hash) ? @options[:params].merge({:only_path => false, :canvas => false}) : @options[:params] = {:only_path => false, :canvas => false}
  end

protected
  def page_link(page, text, attributes = {})
    @template.link_to(text, "#", :onclick => "#{@remote[:method_name]}({url: '#{url_for(page)}', container: '#{@remote[:container]}', parameters: { type: '#{@remote[:type]}' }}); return false;")
  end
end

will_paginate allow us to use different renderer in order to customize our pagination. I've build one here. The prepare method is called by will_paginate to let us initialize our renderer before rendering anything. The main thing is to prepare url_for to return absolute, non canvas url because the Facebook FBJS AJAX proxy doesn't allow anything else.

In the page_link method, we generate links displayed by will_paginate. We can't set the href attribute to the url because again, the Facebook FBJS AJAX proxy doesn't allow anything but # here. And since in Profile Boxes and Tabs, we can't use onLoad event, we use onClick in order to call our AJAX builder. Parameters of that function are specific to my need, but it's just to show you that we can pass in variables and build a custom link.

Here is a sample code showing the way to specify our renderer to will_paginate.

# Somewhere in the view
<%= will_paginate users, :renderer => 'RemoteLinkRenderer' , :remote => {:method_name => 'ajaxizer', :container => container, :type => type}, :previous_label => "precedent", :next_label => "suivant" %>

Paris Carnet

Hier soir, Charlotte et moi sommes allé à notre premier paris-carnet.

Quel drôle d'événement que ce paris-carnet ! Il y a ce bar, où quelques blogueurs de Paris et d'ailleurs se rencontrent. Il y a ces blogueurs célèbres et influents. Il y a nous au milieu, anonyme. Il y a quelques têtes connues. Il y a beaucoup de geeks, mais aussi des gens normaux. Il y a cette bière qui n'a pas le même goût parce qu'on parle. Il y a ces rencontres

Et c'est pratique parce que c'est pas loin de chez nous. Peut-être qu'on y retournera.

Javascript image preloader, without document.images nor Image class

I've maid this twit saying that I built a JavaScript image preloader. Since many wanted to see it. There it is.

I wanted to preload image for a Facebook application displaying a JavaScript photo viewer widget. And when developing Facebook applications, you have deal with Facebook JavaScript rules and what they call FBJS. I already built a FBJS framework, YAPS, helping me (and other developpers) to do simple javascript tasks.
But YAPS can't replace the Image JavasScript class nor the document.images that Facebook prevent us tu use. So I built this code to preload images in a Facebook environment.

Code :

// An image preloader without using Image class nor document.images
// Built for a Facebook environment where those two are forbiden. May not work in a regular web page.
// Just change 

function Preloader(options) {
  var defaultSettings = {
    preloaderID: "preloader_id",
    container: document.body
  };

  this.settings = this.extend(defaultSettings, options || {});
  this.buildPreloader();
};

Preloader.prototype = {
  extend: function(destination, source) {
    for (var property in source)
      destination[property] = source[property];
    return destination;
  },

  // Prepare the preloader. Just a IMG html element hidden with css.
  buildPreloader: function(preloaderId) {
    var image = document.createElement('IMG')
      .setId(this.settings.preloaderId)
      .setStyle({display: 'none'});
    this.settings.container.appendChild(image);
  },

  // Update de src attribute of our hidden tag with the passing url.
  // Having the src updated will make the tag to load the image.
  preloadPic: function(imageUrl) {
    var preloader = document.getElementById(this.settings.preloaderId);
    if (preloader) {
      preloader.setSrc(imageUrl);
      // Don't know why, setting the src make the picture visible. 
      // Have to hide it again.
      preloader.setStyle({display: 'none'});
    }
  }

};

Usage :

preloader = new Preloader({
  preloaderID: "my_image_preloader",
  container: document.getElementById("my_container")
});
preloader.preloadPic("http://imeuble.info/assets/2008/5/21/stéphane-akkaoui-maxime-guilbot-discussion_1.jpg");

Improvements :

  • If I use the same Preloader instance multiple time in a row, I'm not sure the previous image is entirely preloaded before with change the src attribut with the new url.
  • It would have been great if I could passe an Array of urls to the preloader and let him do the work.
  • It must be many other possible improvments. This feat my needs for the moment. Please feel free to modify it. Post an updated code in the comments.

Suivez le guide

On m'a fait la remarque (à plusieurs reprise) que je ne faisais que des billets ciblé, parlant d'informatique au pire, aux sujets geek au mieux.

Il paraît que j'ai une vie à côté. Et que je peux dire autre chose.
Alors j'aurai bien une idée d'un sujet sur lequel je voudrais écrire depuis un bout de temps, mais il va me falloir un peu de temps pour mettre en forme mes idées et peaufiner un peu mes théories avant de les étaler au grand jour.

D'ici là, je vais combler avec ce que j'ai sous la main : des geekeries (n'en déplaise à certains) et des liens. Suivez le guide de l'interweb (© bbb).

RAF (Rien à faire)

  • Un générateur de partition de musique. Peut s'avérer utile en cas de besoin. Peut remplacer les couteaux suisse.
  • Oui, c'est geek. Même très geek, puisque personne n'en a l'utilité. Qui veut savoir le temps de latence des serveurs de l'épine dorsale d'Internet ? Et tout cas c'est par .
  • Une license libre. Vraiment Libre. La WTFPL. Si elle n'existait pas, je mourrais d'envie de l'inventer.
  • Si vous n'avez jamais vu le début d'un arc-en-ciel, voilà, c'est fait.
  • Un abécédaire en Google Map.
  • Que faire avec des légo ? Shining ?.

Apprentissage

Typographie

Vidéo

  • Sur EasyJet, ils n'ont pas les mêmes stewards. Chez SouthWest Airlines on rap.
  • Une oie, c'est têtue. Très têtue.
  • Le petit chaperon rouge révisé par Thomas Nilson.
  • Un guide des bonnes conduite sur Facebook très bien foutu. Zouli et marrant.
  • Un zoulie vidéo d'un créateur. Bon elle est vieille, tout le monde doit l'avoir vue maintenant.
  • Une zoulie vidéo pour comprendre la crise des subprimes. Crisis of Credits Avec même des t-shirt pour aider l'auteur a survivre aux difficultés financières. Et si vous n'avez pas compris, un ratrapage.
  • Et pour finir une zoulie chanson pour le mariage de mon grand frère. Ben&Ben.

Cauchemars

Je suis loin d'être un maître de la programmation. Je suis sûr que mon code comporte lui aussi des trucs un peu moche. Mais quand même, des fois faut pas pousser.

Il y a des trucs qu'il ne faut pas faire.
Et il y a des gens pour les faire...

Redirection après login

if session[:return_to]
  redirect_to root_path
else
  redirect_to user_profile_url(@user_session.account.user)
end

Ca par exemple ça ne sert à rien. Pourquoi se préoccuper d'où vient l'utilisateur, pourquoi s'embêter à stocker ses volontés quand il se confronte à un accès restreint, si on n'en tiens pas compte ? Et si l'utilisateur ne voulait pas aller à l'accueil ?

Des boutons radio à valeurs variables

<label><%= t('title') %></label>
<span class="radio">
  <%= m.radio_button :title, t('mister') %>
  <%= m.label :title_mister, t('mister') %>
  <%= m.radio_button :title, t('madam') %>
  <%= m.label :title_madam, t('madam') %>
  <%= m.radio_button :title, t('miss') %>
  <%= m.label :title_miss, t('miss') %>
</span>

Vouloir internationaliser une application, c'est une bonne chose. Mais il y a des excès à ne pas atteindre. Si la valeur d'un bouton radio est internationalisé, la valeur sera différente en fonction de la langue de l'utilisateur. Déjà, seul comme ça ça peut être confusant.
Mais si en plus on enregistre le sex de l'utilisateur sans plus de contrôle, on aura en base dans le champs title : "Monsieur", "Madame" ou "Mademoiselle" mais aussi "Mister", "Mrs", "Miss", etc...

Imaginez alors qu'on veuille chercher tout les messieurs de notre application ? SELECT * FROM users WHERE title in ("Monsieur", "Mister"). Et si maintenant je rajoute une langue (au hasard, le russe), faut que je modifie toutes mes requêtes et que je rajoute господи́н.

Trop de normalisation, sans transaction

Sur une application, on a des membres. Ces membres sont de différents type, peuvent se connecter de différentes manières (classique, facebook connect, openId, ...), possèdent d'autres objets (articles, commentaires, projets) et ont une adresse et une image.

Si on normalise, on a un membre, qui est composé d'un user et d'un compte. Il a aussi une adresse postal (avec vile, code postal et pays) et ses articles. Et pour créer une user ça devient :

def create
  @account = Account.new(params[:account])
  @member = Member.new(params[:member])
  @visual = Visual.new(params[:visual])
  @address = Address.new(params[:address])
   if @account.valid? & @member.valid? & @visual.valid?
    @account.save
    @address.save(false)
    @member.create_user.account = @account
    @member.visual = @visual
    @member.address = @address
    @member.save

    flash[:success] = "Ok."
    redirect_to root_path
  else
    render :action => :new
  end
end

C'est long pour un contrôleur, non ? Admettons même que ce se soit dans un modèle, ça reste moche. Tout ces save dont certains sans validation, peuvent entraîner plein de problèmes :

  • Levée d'exception SQL parce qu'il n'y a pas les bons type
  • Il n'y a pas de transaction encadrant tout ça. Si ça ne marche pas à un endroit, on se retrouve avec une table bancale, voir corrompue.
  • Comme dans l'exemple on pourrait oublier de vérifier certains modèles (ici @adresse n'est pas validé et sauvé dans validation).
  • La modification d'un tel code n'est pas aisée et devant la confusion, on ne sait pas trop quel serait l'impact d'une modification...

Si au lieu de ça, on démoralisait un peu, on pourrait simplifier les choses. Un utilisateur n'a qu'une adresse postale, donc on peut ajouter les champs rue, ville pays et code postal au membre. De même, il n'a qu'un avatar, et même si d'autres modèle peuvent aussi avoir un avatar, il vaut mieux utiliser le duck typing et les surcharges d'opérateurs que la composition. Enfin, plutôt que de démultiplier les dépendances, on pourrait gérer les types de membre par de l'héritage (spécialisation) plutôt que par de la composition. Cela permet une plus grande généralisation (il y aura une méthode send_messagepour tout le monde, dont le comportement sera différent pour tous).

Paramètres Optionnels en JavaScript

Dans bien des langages, il est possible de définir des paramètres optionnels dans la signature des méthodes. Ces paramètres prennent une valeure par défaut s'ils ne sont pas spécifiés à l'appel de la méthode.

Par exemple, on pourrait être tenté d'écrire :

var saySomething = function(value = "default value") {
        alert(value);
     }

Seulement, en JavaScript, cela ne fonctionne pas.

Par contre, on peu utiliser une propriété de JavaScript pour arriver à nos fins : si un argument est attendu dans la signature mais pas spécifié dans l'appel, il sera alors de tupe "undefined". On peut donc faire :

var saySomething = function(value) {
      if (typeof value == "undefined") {
        value = "default value";
      }
      alert(value);
    }

Seulement, ce n'est pas très élégant. Si nous avons plusieurs arguments optionnel, la succession de structures conditionnelles peut vite devenir ennuyeuse.

Pour y remédier, on peut utiliser les objets. En Javascript, les objets sont des ensembles de clé/valeur dont les premières sont des dénominations et les dernières des instances d'autres objets. Ils sont comparables aux hashes Ruby et on peut avoir des itérateurs dessus grace à l'instruction in et à la structure de bouche for

Du coup, on pourrait imaginer le code suivant :

var extend_instance = function(destination, source) {
      for (var property in source)
        destination[property] = source[property];
      return destination;
    }
    var saySomething = function(params) {
      params = extend_instance({
        value: 'default value', 
        from: 'Anonymous Caword'
      }, params);
      alert(params.from + "say :" + params.value);
    }

L'appel de la méthode change un peu puisqu'il faut maintenant lui donner un objet, mais cela rend le code plus souple aux changement et n'impose aucun ordre aux arguments.

Pour aller encore un peu plus loin et en gardant les avantages de cette méthode, on pourrait se servir de la variable local aux méthodes : arguments

var extend_instance = function(destination, source) {
      for (var property in source)
        destination[property] = source[property];
      return destination;
    }
    var saySomething = function() {
      params = extend_instance({
        value: 'default value', 
        from: 'Anonymous Caword'
      },arguments[0] || { });
      alert(params.from + "say :" + params.value);
    }

Facebooker et Yaps à la RailsParty

Voilà, c'est passé.

Hier, s'est déroulée la RailsParty, le before_filter à ParisonRails 2008 d'aujourd'hui.

En commençant à 16h, la soirée a été remplie de bonnes rencontres et de présentations intéressantes. Parmi les participants de cette première édition, j'ai notamment apprécié le retour d'expérience d'Olivier Gutknecht sur un déploiement de Fotonauts et la présentation d'i18n par Renaud Morvan. Nicolas Mérouze ou Sébastien Gruhier étaient également de la partie pour nous faire partager leurs connaissances.

En ce qui concerne ma présentation, malgré la difficulté de se faire entendre de tous, elle se sont bien passées. Pour ceux qui seraient interessés, je vous met à disposition les slides de présentation de cette intervention, ainsi que ceux de la présentation éclaire de YAPS.

Merci à ceux qui sont venus et à Ruby France pour avoir organisé l'événement.

Une Rails Party par Ruby France !

Quoi ?

Pour annoncer la série de conférence de Paris on Rails 2008, l'association Ruby France organise une Rails Party.

Décrite comme un Social Event, la Rails Party est une journée complémentaire à Paris on Rails, donc dédiée au framework Ruby on Rails et ce qui va avec (Prototype, plugins de test, applications, ...).

Où ? Quand ?

Elle aura lieu le Dimanche 30 Novembre 2008 au Dune, 18 avenue Claude Vellefaux, 75010 Paris.

Comment venir ?

  • Metro 2, Colonel Fabien
  • Metro 11, Goncourt
  • Vélib, station n°10032 (n°12-14, avenue Claude Vellefaux)

Programme

Je ne vais pas détailler ici le programme complet de la Rails Party, celui ci pouvant changer à tout moment. Dirigez vous vers la page officiel de l'événement pour une version vraiment à jour.

Je peux quand même vous dire que j'y donnerais 2 présentations au nom de Sociabliz :

  • Un atelier de 20 minutes sur Facebooker, un plugin permettant de développer des applications Facebook avec Ruby on Rails.
  • Une présentation éclaire de 5 minutes sur Yaps, une bibliothèque javascript pour Facebook visant à porter les foncionnalité de Prototype et de Scriptaculous sur la plateforme de développement Facebook.

+ d'infos ?

Pour des infos complémentaires, vous pouvez aller :

Ping (uninteresting content inside)

Hey ! Ca fait 2 mois que je n'ai pas écrit ici !

Pourtant des choses se sont passées...

Capri, c'est fini !

Heu, pardon. INSIA c'est fini.

J'ai fini mon stage le 28 Août dernier, ceci clôturant définitivement mon parcours d'élève ingénieur de l'INSIA. Il était temps, après 5 ans d'apprentissage dans cette école.

Alors ayé, je suis ingénieur en informatique. Je peux me la péter grave et exiger des salaires mirobolants. Je ne sais pas ce que ça va m'apporter d'autre en fait, mais c'est déjà pas mal.

Capri, c'est fini ! (#2)

Heu, encore pardon. Dimelo c'est fini.

Bah oui, j'ai fini mon stage et j'ai souhaité ne pas rester chez eux pour mon premier "vrai travail", d'autres projets m'attendant au tournant.
N'empêche que ce fut un excellent stage, le meilleur que j'ai pu avoir sans doute. L'équipe de Dimelo a toute ma reconnaissance pour les bons moments passés et les enseignements que j'ai pu recevoir pendant ces 10 mois.

J'espère qu'on se recroisera bientôt, hein...

Tenter l'aventure

Ca devrait faire l'objet d'un billet à part entière mais bon... On n'est jamais trop jeune pour se lancer et essayer quelque chose de nouveau et d'ambitieux. C'est ce qu'on s'est dit avec Christophe Cholot et Patrice Bonfy. Alors autour d'une idée commune et la même envie d'entreprendre, nous avons monté Sociabliz.

Sociabliz est une Agence Web de social marketing. Nous essayons d'intégrer les marques et les entreprises dans le graph social des internautes. En gros et pour faire vite, nous faisons des applications Facebook.

Nous avons pour l'instant nos bureaux à Cergy, au sein de l'incubateur de l'ESSEC. Et pour tout dire, l'affaire fonctionne plutôt bien. Nous avons déjà 3 projets en cours, et quelques autres dans les tuyaux. Pour un début, ce n'est vraiment pas mal et nous avons presque la tête sous l'eau... Mais pas d'inquiétude, nous gérons cela en professionnels !

Mon rôle dans l'histoire, c'est de faire le geek. Ca tombe bien, j'aime bien faire ça et il paraît que je le fais bien. Alors je gère l'hébergement, je fais de l'admin sys, je fais le conseil technique lorsque des questions pointues arrivent, je fais de la veille sur les dernières technos des réseaux sociaux et je code. En rails bien sûr ;-)

Pour plus d'infos, visitez le site de sociabliz.

Étudier, encore ?!

Je me suis inscrit à la fac pour faire un master. Comme à Paris VI (Université Pierre et Marie Curie), ils ne prennent personne en deuxième année qui n'a pas fait la première année, me voilà en M1, parti pour 2 ans.

Pour ce qui est de l'intitulé, c'est "Intelligence Artificielle et Décision".

J'ai pu arranger mon emploi du temps pour avoir 2 après-midi et le vendredi complet de libre pour les consacrer à Sociabliz. Je sais ce que tout le monde pense : je me disperse et ce n'est pas possible de faire plusieurs choses à la fois sérieusement. J'en suis conscient et si surcharge de travail il y a d'un côté ou de l'autre, c'est le master qui passe à la trappe. Je veux juste essayer.

Pas le temps pour autre chose ?

Bah nan. Enfin presque. Je suis allé faire de l'escalade en Allemagne pour le dernier week-end d'août. J'ai pu expérimenter mes premières grandes voies et c'est assez impressionnant. Ça fait peur, mais qu'est ce que c'est beau une fois en haut !
Je remercie Josselin, Emeline et Cécile pour tout ça !

Et ce blog a subi un problème avec mod_rails ces dernier temps (depuis le 28 Août en fait). Je n'ai pas eu beaucoup de temps pour le réparer depuis et comme le cache statique fonctionnait bien, personne n'a rien remarqué (à par Manu, le coquin...).