Django-websocket parce que sans chaussettes, le web, il pue un peu des pieds

Et oui, malgré la chaleur, malgré les vacances, la plage et l’appel de starcraft 2, malgré tout cela, je reste fidèle au poste et je publie une django app du mois. Bon ok, c’est le dernier jour du mois, mais je suis encore dans les clous.

Mais par contre, vu que c’est l’été, les vacances, je vais pour une fois parler d’une app qui est pour faire tout sauf de la prod. C’est une app toute jeune et qui en plus s’aventure dans un domaine encore très peu supportés dans les navigateurs (pour l’instant uniquement dans Chrome 4, Firefox 4 et Safari 5) , celui des websockets. C’est quoi une websocket vous allez me dire ? C’est un mécanisme qui apparaît dans HTML 5 et qui permet d’avoir un mécanisme de connexion persistante et bi directionnelle entre le serveur web et le browser de l’utilisateur. Trop cool vous allez me dire. Je ne puis qu’être d’accord avec vous. (pour plus d’infos sur les websockets vous pouvez aller lire la page wikipedia ou la norme W3C qui est plutôt facile à lire).

Django-websocket est donc une toute récente app (version 0,3 à l’heure ou j’écris ce billet) qui permet de commencer à s’amuser avec ces adorables websockets.

1- Où on le trouve, comment on l’installe, la doc.

Vous trouverez django-websocket sur sa page pypi ou sur sa page github. L’installation se fera donc soit :

  • avec easy_install
  • un git clone

Comme le code évolue pas mal et que de toute façon c’est pour l’instant plus une app pour tester et pas pour mettre en prod, moi, je vous conseillerais le git clone qui vous permettra d’avoir plus souvent une app à jour.

La documentation est plutôt bien fournie, claire et suffit pour démarrer. Le repository github permet d’avoir en plus les tests et une petite application example de echo.

2- Comment ça marche ?

En fait c’est vraiment super facile, il suffit d’utiliser deux décorateurs de vues soit :

  • require_websocket pour obliger la vue à fonctionner en websocket
  • accept_websocket si l’on veut permettre à la vue de fonctionner sans les websockets.

Ensuite il n’y a qu’un seul objet à utiliser request.websocket sur lequelle on pourra :

  • faire des attentes et récupérer un message quand il y en a un (wait)
  • vérifier si il y a des messages ( has_messages )
  • lire un message ( read )
  • envoyer un message ( send )
  • les utiliser comme un iterator (ce qui ferrait comme un wait dans une boucle avec la gestion en plus de la fermeture de la socket )

Petite précision, le serveur de développement de django n’est pas multithread, il n’est donc pas possible d’ouvrir deux requêtes concurrentes avec. L’app fourni donc une commande spéciale pour le runserver ( –multithreaded ) qui permet de contourner le problème.

3- Un petit Mad Exemple

Histoire de m’amuser un peu avec l’app, j’ai commis un petit exemple avec, en me basant sur le echo exemple. Mon exemple est tout con, vous entrez une chaine de caractère et je lance (grâce à restkit) une recherche google toute les 30 secondes sur la chaine de caractère. Les dix premiers résultats de la recherche sont ensuite affichés grâce à la websocket.

Vous pourrez trouver le code en question sur le tout nouveau repository bitbucket que j’ai du coup, crée pour l’occasion.

Parlez leur d’eux

Dans mon dernier billet concernant mes tips commerciaux, je vous conseillais de vous taire. Et de laisser parler votre futur client. Histoire de pouvoir lui tirer le maximum d’information.

Une fois que vous avez eu toutes les informations que vous vouliez il est temps pour vous de lui présenter votre solution, le truc qui va faire qu’il va être heureux et que tout ses problèmes seront résolus.

Cela implique donc que vous allez devoir lui expliquer ce que vous vous proposez de faire, voir lui faire une démo de votre produit ou même présenter un prototype pilote.

Dans tout les cas, la clé du succès, enfin l’une des clés sera de réussir à lui faire comprendre pourquoi votre solution est bien et à l’intéresser à votre produit.

Et bien souvent vos arguments techniques, il n’y comprendra pas grand chose. Lui expliquer par le menu que vous utilisez telle librairie C++ et pas telle autre parce que sa résolution des équations de trouzième degré est plus rapide dû fait de son utilisation d’allocation par chunck, ça ne va pas marcher. Et c’est malheureux, parce que tout serait toujours plus simple si les arguments techniques uniquement suffisaient tout le temps.

Donc il va falloir trouver d’autres manières de convaincre.

L’une d’entre elle est d’impliquer votre futur client dans votre démo ou votre argumentaire. Renseignez vous sur son métier et préparez des exemples qui tomberont juste. Utilisez également toutes les infos qu’ils vous a donné, vu que vous l’avez laissé parler, pour faire en sorte que votre discours ressemble encore plus à un discours d’un homme du métier, de son métier.

Si vous devez faire une démo ou déployer un pilote, c’est exactement pareil. Prenez le temps de récupérer le logo de l’entreprise en question et de mettre votre démo au couleur de celle-ci, idem pour des slides d’ailleurs. Qui dit pilote ou démo dit aussi donnée de test, là aussi, si vous le pouvez essayer de mettre des données en rapport.

Voilà vous l’aurez compris, tout mon billet est centré sur l’idée qu’en donnant des exemples qui peuvent être des exemples réels pour votre futur client, en lui montrant des démos ou des prototypes à ses couleurs on lui montre qu’on a été attentif à ses paroles, qu’on a pris du temps pour préparer ce qu’on allait lui monter. Et étrangement, un pilote à ses couleurs … ça change rien, mais ça change tout.

Magic: The Gathering – Duels of the Planeswalkers

La séance de solde de Steam m’a permis de découvrir quelques jeux sans trop exploser mon budget jeux vidéos. J’ai d’ailleurs fait quelques bonnes trouvailles dont je vous parlerais sous peu (et suis tombé par hasard sur un jeu que je ne connaissais pas du tout et qui ressemble de très très prêt à un des concepts que j’ai dans mes cartons… comme quoi).

Mais aujourd’hui je vais plutôt vous parler de duels of the planeswalkers, le nouveau jeu Magic.

Déjà, un point qui m’a surpris, son prix. Même pas 10 euros, (en fait 8,99 euros pour être précis). Bon après, il y a déjà une extension à 5 euros plus un gros paquet de DLC à 0,99 euros l’un qui vont nous permettre de dépenser autant de thunes que pour un jeu à 50 euros. (bon heureusement pour l’instant les DLC se limitent à du contenu que l’on peut débloquer en jeu mais que l’on peut acheter si l’on est fainéant). Mais on peut très bien s’en passer.

1- Le jeux en lui même

Le jeux se découpe en plusieurs parties. Les défis, la campagne, les matchs personnalisés et la partie online.

1.1 Seul

La grosse partie ici sera la campagne que vous allez devoir refaire de multiples fois. Enfin disons à chaque fois que vous allez vouloir débloquer toutes les cartes d’un deck. C’est en effet la seule façon d’avoir son deck complet (ou alors d’acheter les cartes en DLC). Autant certains combats sont facile autant d’autre (comme par exemple le dernier avec son put… de jeux artefact) sont clairement hard.

Les défis eux, sont en nombre bien trop réduit. Dommage parce que je trouvais ce principe de trouver comment gagner en un round vraiment sympathique. Mais là, seulement 8 petits défis, c’est vraiment trop peu et ça ne vous occuperas pas plus d’une heure.

Quand aux match personnalisés, tout est dit dans le titre, vous choisissez l’un des decks ennemis, votre deck, vous configurez quelques paramètres (point de vie et taille de la main au départ) et go baston.

1.2 Online.

Le mode online propose deux façons de jouer :

  • Soit en coopération, ce qui vous permettra de faire des matchs personnalisés ou la campagne avec un pote.
  • Soit des parties contre les joueurs.

Et c’est là, à mon avis, tout l’intérêt du jeu. Pouvoir se mesurer contre d’autre dans des parties avec classement.

2- Mon avis

Lorsque j’ai commencé à jouer, j’ai été surpris et presque déçu du relativement faible nombre de cartes jouables. Il y a en effet à peine 8 cartes composé chacun de 24 terrains, 36 cartes de bases et 17 cartes à débloquer. Sachant que bien entendu les cartes débloquables sont obligatoires pour être compétitif en online avec les decks.

Au vu du petits nombre de decks possibles, j’avais peur que le jeu soit rapidement ennuyeux. Mais au final non. Et après un certain nombre de partie, je ne me suis toujours pas lassé (par contre devoir refaire la campagne encore et encore pour débloquer les decks… ça finit par lourder).

Par contre, plus ennuyeux, le faible nombre d’adversaire en online qui ne présage rien de bon (et quelques petits des problèmes de connexions…)

Au final, cette nouvelle mouture de Magic est plutôt un bon jeu, en tout cas pour ceux qui comme moi ont passé pas mal d’heures des cartes à la main et qui ont envie de retrouver quelques-unes des sensations de ses anciennes parties.

Et puis il faut bien l’avouer, à moins de 9 euros, c’est vraiment un bon investissement.

Hardcore gamer, mais qui es tu ?

C’est un billet sur le blog d‘eowine qui a donné lieu a une flopée de commentaire qui m’a donné l’envie d’éclaircir ma pensée sur la question des hard core gamer. (ce n’est d’ailleurs pas la seule idée de billet que j’ai eu à la suite de la longue discussion qui s’est tenu dans les commentaires du billet d’Eowine, mais chaque chose en son temps.

Il y a toujours eu des hard core gamer. Et il y en aura toujours, enfin j’espère. Mais avec le recul que me donne mon nombre d’année sans cesse plus grand, j’ai bien l’impression que la définition donnée à cette catégorie de joueur a quelque peu changé.

Les hardcore gamers d’avant, quand c’était mieux.

Là, je vous parle d’un temps, que les moins de vingts ans, ne peuvent pas connaître. De ce qu’on appelait un hard core gamer lorsque la notion de ‘perdre’ existait encore dans les jeux. Lorsqu’ils n’avaient pas tous forcément de mode sauvegarde ou que, pour avoir des crédits en plus, il fallait rajouter des sous dans la machine.

Quand être un hardcore gamer, ça voulait dire avoir du temps devant soi, du talent et un goût pour l’inutilité. Finir Metal Slug sans utiliser un seul continu, finir un beats then all tout à reculons, finir street fighter 2 qu’avec des perfect ou encore finir diablo 2 en mode hardcore (quelle merveille ce mode hardcore, j’espère vraiment que le prochain diablo en aura un aussi)

Les hardcore gamers de maintenant

Bien souvent aujourd’hui, j’ai l’impression que la définition du hardcore gamers se limitent à ‘qui à du temps’. Est un hardcore gamer celui qui est lvl 80 sur WoW ou level 50 sur Aion et qui a finit tout leur instance et récupéré le meilleur des stuffs.

Alors on me répliquera que ce n’est pas vrai, que je limite les choses, juste parce que je n’aime pas vraiment le chemin que prennent les MMORPG d’aujourd’hui. Qu’il y a encore des hardcore gamers qui ne le sont pas que parce qu’ils ont du temps. Que les champions de starcraft 1 et 2 (y a déjà des brutes sur la béta qui me mettent des fessées régulièrement) ou les dieux de teamfortress (qui me mettent aussi des fessées) sont des gens qui ont plus qu’un peu de talent.

Et c’est vrai.

N’empêche que.

Je trouve que cette confrontation solitaire avec la machine, en se rajoutant ses propres règles, de nouvelles juste pour le plaisir, juste pour montrer qu’on peut le faire, ça manque pas mal au hardcore gaming.

Et qu’entre la horde de ceux qui pensent qu’être un hardcore gamer c’est juste jouer 8h/jour tout les jours et ceux qui ne le conçoivent que comme une compétition acharnée, hé ben il reste peu de place pour la fantaisie et la poésie qui pouvait exister avant.

Retour sur 7minut.es

Depuis ce matin, mrboo a lancé un nouveau projet d’appli reposant sur twitter à savoir 7minut.es. Ce petit concept est un exemple parfait d’inutilité complète. Et donc, en tout cas pour aujourd’hui, le truc prend plutôt bien.

Le concept est vraiment simpliste. Vous vous connectez à travers twitter et vous avez du coup 7 minutes pour faire venir le maximum de monde sur une page 7minut.es. Tout cela pour arriver à faire un highscore. Autrement dit, savoir qui à la plus longue.

L’intérêt ? Aucun sauf de s’amuser trois minutes en retombant en enfance à jouer à un jeu simple de qui qui est le plus fort.

A part pour mrboo, qui a logé une jolie pub pour un de ses ‘vrais projets’, à savoir hellotipi. Ce qui fait que chacun personne qui vient sur 7minut.es voit la pub hellotipi. Ce qui fait, si je calcule rapidement en fonction des highscores en cours pas loin de 2000 personnes (si j’en crois mrbooo c’est 11000 visites dans la journée), le premier jour. Bon ok, c’est peut-être assez souvent les mêmes.

N’empêche que… Ça fait des gens qui ont vu la pub. Et qui du coup, peut-être iront sur hellotipi (je parle d’expérience, en temps que futur papa dans quelques mois, et ben voilà, aller sur 7minut.es m’a rappelé que hellotipi existait et que peut-être que… il faudra que je le teste… )

Et ça fait un petit buzz, qui même si il ne dure qu’un jour ou qu’une semaine, ne mange pas de pain et ne coute pas grand chose (dixit mrboo lui même, le site est hébergé sur un petit kimsuffi ovh, c’est pas pour ce que ça coute… ), en tout cas bien moins cher qu’une campagne de pub classique.

C’est pour moi, typiquement, une initiative excellente. Mais pour que ça marche il faut à mon avis trois facteurs.

1 Le concept pas prise de tête et rigolo

La c’est tout con. Faire venir le max de personne sur une url en 7 minutes. Ça marche en un clic, c’est fatiguant pour personne. Pour les joueurs pareils, on clique une fois, on reclique pour l’authent oauth et puis voilà, c’est pas loin d’être tout.

Et c’est rigolo parce qu’on peut se challenger avec les autres participants du jeux.

2 Le nom de domaine qui va bien

Là, c’est comment dire, parfait. 7Minut.es. On ne peut pas faire mieux. Simple, avec l’extension qui s’intègre complétement. Un petit clin d’oeil au speedating en plus. Et c’est plié.

3 Un réseau de prescripteurs.

Faut pas non plus se leurrer . Si je l’avais lancé moi le site, je ne suis pas sur de faire 11 000 visites le premier jour. Parce que ni pressecitron, ni korben ni marion_mdm ne me follow et que pour qu’une idée comme ça, aussi inutile et volatile que 7minut.es fonctionnent il faut des prescripteurs un peu connu qui jouent le jeu et s’amuse à participer.

4 Conclusion

Si jamais vous avez lancé une appli web qui, vous l’espérez, doit vous rendre riche rapidement et qu’en même temps vous avez une idée du type de 7minut.es avec un nom de domaine sympa et un petit réseau de primojoueurs qui peuvent lancer la machine, n’hésitez pas, faites le. Après tout, c’est toujours les idées les plus bêtes qui marchent le mieux. Et puis si vous avez vraiment une idée sympa et que ça marche, ça vous coutera moins cher qu’une campagne addwords (et ça ancrera votre réputation de mec qui a des idées cool)