Archives for category: Technology

Patrick Lencioni is an American writer of books on business management / team management. The book is articulate in two parts. (1) a story with the concepts of the five dysfunctions and how to overcome them (2) listing of the different dysfunctions and how to overcome them, in a way more academical.

“Politics is when people choose their words and actions based on how they want others to react rather than based on what they really think.”


Peter Thiel co-founded Paypal, more recently Palantir, he is a venture capitalist, and hedge fund manager.

Zero to one, published in 2014, is the notes from the entrepreneurship class by Peter Thiel.

The paradox of teaching entrepreneurship is that such formula necessarily cannot exist; because every innovation is new and unique, no authority can prescribe in concrete terms how to be innovative. Indeed, the single most powerful pattern I have noticed is that successful people find value in unexpected places, and they do this by thinking about business from first principles instead of formulas.
Raw notes :
Dot-com crash from 2000 lessons:
  • Make incremental advances
  • Stay lean and flexible. (lean is the code for “unplanned”)
  • Improve on the competition
  • Focus on product, not sales

Economic term : “perfect competition” / monopoly

Conventions, risk averse, education
Distribution is the hidden bottleneck when it comes to sell to small businesses. because of the deal.
The myth of social entrepreneurship
Tesla secured in 2009 a 465$ Loan from the U.S. Department of Energy,


I wrote my first post on LinkedIn and the title is Semantic Satiation and Big Data, What is All About ?




Playing chess has always been something that I liked to do during my summers when I was a teenager.  Therefore it was not an extraordinary leap to focus on the problem of chess as a side-project when I started to study Artificial intelligence in Tsinghua University.

This post is a prototype program where you can play Chess against a computer.

1. Decision theory

The chess is a game where players take alternate moves. During these moves the players’ objective is to maximize their advantage in order to win the game. When we move a chess piece, we try to put ourself in our opponent’s shoes and predict future moves of the other player from our current position.

Chess is a Zero-sum game because the gains for a participant will be the loss for the other. Simultaneously each player will want to find the best outcome of the situation for themselves.  In this simultaneous game, we will use a Min-Max strategy to find a decision. In a Zero-sum game, we can say that the Min-Max solution is the same as the Nash Equilibrium.


The Min-Max / minimax theorem states :

For every two-person, zero-sum game with finitely many strategies, there exists a value V and a mixed strategy for each player, such that

(a) Given player 2′s strategy, the best payoff possible for player 1 is V, and

(b) Given player 1′s strategy, the best payoff possible for player 2 is −V.


Now to use the minimax theorem in our chess game, we will have to find the best payoff possible at a given time. In order to do so, we will create a function to evaluate the board at a given time for each move or strategy.  

2. Chess Board Evaluation

We will use the work and a paper publish in March 1950 by Claude Shannon : Programming a Computer for Playing Chess.

This paper describes a function to evaluate a chess position.  People familiar with chess can remember that we evaluate 9 points for the Queen, 5 for the Rocks, 3 for Bishops and Nights, 1 point for the pawns.

The evaluation is the difference between the value of the “army”, which is the sum of the pieces that one player holds.
We have also other factors like the mobility and the evaluation of pawn structure.

Here below the function :

f(p) = 200 * (K-K’)

+ 9 * (Q-Q’)

+ 5 * (R-R’)

+ 3 * (B-B’ + N-N’)

+ 1 * (P-P’)

- 0.5 * (D-D’ + S-S’ + I-I’)

+ 0.1 * (M-M’)

+ …   

KQRBNP = number of kings, queens, rooks, bishops, knights and pawns
D,S,I = doubled, blocked and isolated pawns
M = Mobility (the number of legal moves)

3. Chess Representation

To represent the chess and to have an interface with an board representation, the Forsyth-Edwards Notation (FEN) is status quo. By using this representation you could represent any chessboard as a string, for example :

rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq – 0 1


On my experimentation, I programmed with different classes for the board and each pieces. I recommend using a different approach based on arrays called “mailbox”. You can go here to have more information.

4. Experimentation


I liked this position because we can have a good view of how the computer is playing regarding the number of turns it analyzed.

- Dept 1 :
The Queen eats the knight.  Looking one move ahead, we see that the gain of this move is best : we capture a knights! 3 points.
However, we can see that when the black player moves, he will capture the Queen, and the result will be a terrible lose. White will lose 9 points !

- Dept 2 :
The computer sees that if he captures the knight, the output of the decision will be bad. Driven by the evaluation function, the computer will increase the mobility of his pieces, in our case the bishop. The bishop has now 4 new cases where he can move.

- Dept 3 :
Now the computer sees the danger : the knight can take the pawn in c2, make a check, and eat the queen !!! 9 points. It would be a terrible loss that the computer didn’t see when looking only 2 turns ahead. Thus, the computer chooses the best outcome : to protect the pawn with the king. For the actual chess player here, we can say that it’s not necessarily a great choice because the white player won’t be able to rock (special move to protect the king). But we didn’t program the value of the rock ! So the computer doesn’t evaluate it and chooses to defend with the king.

5. Follow-up

The evaluation of a position is the first step in chess programming.
The direction to increase the level of this artificial intelligence program is:

Game related Database :

Opening database : a database of all the different “good openings” in order to avoid making opening mistakes.
- Ending database : as with the opening database, we can be helped by a database of all the different outcomes regarding an ending position in order to skip the computation of various endings by relying on the database.
- Game database : having the database of other games can help drastically.  For example, if for one move, you have in a history of 1000 games and 100% losses, then it’s a move that should be avoided.

Evaluation function :

The evaluation function is the  first step of what is possible.
- valuing on the rock (the move where you can protect the king if it didn’t move before).
- The pawn structure
- The trapped pieces (if the piece can’t move because the king is behind)
- The King’s safety


[+] Useful links :

- Great wiki about chess programming :
-  Javascript library to display a chessboard in html :

J’aimerais pouvoir participer à Dailymotion avec sa prochaine étape. C’est passionnant lorsque l’on voit le potentiel incroyable et les challenges de Dailymotion aujourd’hui.

Le contenu est roi :

The content is King. Les gens vont sur Dailymotion pour regarder des vidéos.

  • Avoir une page d’accueil qui, à l’image d’un journal, se focalise sur les nouveautés, sur les vidéos les plus regardés pour garder l’utilisateur. Plus de choix pour l’utilisateur.
  • Avoir différentes sections : musique, trailer, news.
  • Travailler sur le grow hacking de la page d’accueil / utilisateur .

Une machine à innovation:

Il y a des opportunités absolument partout.

  • Créer un Dailymotion concurrent de netflix sur le marché de la vidéo en ligne.
  • Dailymotion TV
  • Créer des nouveaux projets, hackathon, qui seront les nouveaux produits de demain.

Se concentrer très fort :

Comment rendre Dailymotion profitable ?

Le cœur de revenue apparent de Dailymotion est la publicité faite par Google.  Dailymotion voudrais créer son nouveau service de publicité en ligne. DailyAds, qui serait le support technologique pour la publicité. DailyAds pourrait après être un incontournable de la publicité en ligne. C’est là où l’effort doit être. En effet, il y a une opportunité lorsque l’on donne 35% des revenues publicitaires  à Google.

J’ai pu voir des vidéos d’interview de personne travaillant à Dailymotion. Les challenges et l’ambiance ont l’air incroyable.

Dailymotion : embauchez moi !




There is a lot of content on feedback and experimenting new thing on internet, so I won’t repeat it :-)

Here of example : “Feedback is an essential part of effective learning.”

This is some screenshots of the FlatNews evolution, each step was possible with feedback of friends and people who test the website.


And it’s just the beginning !

Il y a beaucoup de journaux et de sources d’actualité, la presse devient extrêmement réactive en fonction des événements.

C’est presque de l’instantané grâce à internet.

Problème :  Comment arriver à digérer au minimum 1000 articles par jours ? Il y a trop de source d’information ? 

Flatnews est un site où l’Actualité française est digérée et organisée :

FlatNews est une IA, intelligence artificielle, qui rassemble les même sujets tendance par groupe.

Plus besoin de lire l’ensemble des articles buzz qui parlent de la même chose !

Pour plus d’information, voici la page d’à propos de flatnews.


Le Ruby on Rails ou ROR est une technologie utilisée dans beaucoup de projets intéressants. Ce n’est pas forcément enseigné dans les écoles.
C’est comprehensible car dans le classement TIOBE, le ruby est à la 9ème place avec un fort potentiel car sa progression (9ème position avec 2.150% d’utilisation) augmente plus que d’autre langage.

Les écoles enseignent à juste titre les “TOP langage utilisé” du classement. Java, C, C++ , C# …

J’ai eu l’occasion de voir les avantages du framework ruby on rails sur certains articles.

Et comme je voulais avoir un objectif, j’ai créé C’est un site qui permet de partager des liens. Les connaisseurs reconnaitront le framework CSS de twitter : bootstrap.

Parenthèse sur le nom IoFeed :
IO = Input Ouput
Feed = nourir

J’ai pu commencer par un site de cours en ligne de ruby on rails : rails for zombies puis après la documentation officielle. Le ruby pour le zombie est un site très dynamique et fun avec 5 “niveaux” . Pour chaque niveau il y a une série d’exercices en ligne. Je recommande les zombies.

Affaire à suivre !

Nous sommes dans le web 2.0, c’est moderne et innovant :-)
Les contenus webs peuvent commencer à être volumineux si l’on ne fait pas trop attention.
Nous voulons un web 2.0 rapide, c’est pour cela qu’il y a certaines pratiques pour optimiser le chargement des pages. Par exemple :

- Compresser les fichiers

Le serveur web Apache, par exemple dans le cas des architectures LAMP, peut compresser les fichiers (avec gzip !) avant de les envoyer. Compresser un fichier texte peut réduire jusqu’à 80% la taille  !

- Un fichier suffit

Il est plus intéressant d’avoir un fichier avec l’ensemble de l’application et du code plutôt que plusieurs fichiers séparés.

Alors que pendant le développement c’est le contraire !

C’est pour cela qu’il est intéressant de rassembler le tout dans un fichier, pour utiliser toute la vitesse de croisière du réseau et aussi la compression de votre serveur sur le fichier.

- “Compacter / compresser” votre fichier

Vous avez maintenant un seul fichier et vous pouvez le “compacter” grâce à des logiciels comme le YUI compresseur de Yahoo. On peut réduire de 30% la taille d’un fichier en enlevant les commentaires, les retours à la ligne ou les espaces. Ce qui rend le script illisible mais complètement  interprétable par votre ordinateur.


- Serveur de contenu

Cachefly ou Google sont des serveurs de contenu qui permettent de ne pas héberger vos librairies tierces.

Si vous avez visité un site qui utilise les même librairies, vous avez déjà téléchargé les parties qui sont comunes aux deux sites. Inutile de charger une partie de votre site !

Cela permet aussi d’avoir plus de sources de téléchargement.



- Utiliser le cache du navigateur

Le cache du navigateur est le principe qui permet de ne pas recharger 2 fois le même contenu. Pour cela le navigateur a besoin d’informations comme le temps durant lequel la photo pourra être gardée.

C’est pour cela qu’il est intéressant de bien configurer son serveur pour être généreux sur le temps d’expiration des contenus statiques. Un an ou 3 mois pour une photo qui ne changera pas est réaliste.


photo :

Qu’est-ce que le SAAS ?

Le SAAS : Software As A Service, ou logiciel en tant que service, est une autre façon de fonctionner que les logiciels de bureau classiques. Un logiciel type SAAS est un service dont l’utilisation se fait par internet et par un navigateur. Le fonctionnement est un abonnement à la place d’une licence logicielle.

(photo : manhattanhenge)

Quel sont les avantages d’un logiciel type SAAS ?

Aucune installation :

Une solution de type SAAS est un site web. Un site web qui est utilisé par un navigateur comme internet explorer ou google chrome. Ce type de navigateur est utilisé sur tous les ordinateurs, tablettes, ou smartphones du marché.

Il suffit de taper l’adresse dans la barre du navigateur, et le site web sera disponible. C’est rapide.

D’avantage de mise à jour :

Régulièrement, de nouvelles versions sortent. On nous demande de les acheter si l’on veut continuer à pouvoir être “compatible” avec le nouveau standard.
Les versions des logiciels ne sont finalement qu’une manière de faire payer l’équivalent d’un abonnement. Un SAAS est finalement une solution beaucoup plus transparente financièrement.

Un logiciel SAAS permet de gagner du temps et de ne pas installer (encore une fois) des mises à jour payé au prix fort.

(photo :

À l’écoute des utilisateurs :

Grâce à un site web, il y a une réponse aux solicitations possibles. En effet, grâce à des mises à jour quotidiennes, le site web peut servir au mieux l’utilisateur. Grâce aux logiciels de type SAAS, cela permet de répondre  aux problématiques métiers avec toute la réactivité souhaitée.



Le “syndrome de l’ingénieur” c’est l’ensemble des restrictions qui empéche la publication ou la livraison d’un produit. Par crainte de délivrer un produit non-optimisé et pas encore parfait.

Il a fallu lutter contre le de l’ingénieur avec la vidéo de présentation de neotest.eu
Ce n’est pas perfect, mais ça existe ! :-) Et pour dire un secret, je l’ai modifié 2 fois après publication.


(poster :

D’après les lois de Murphy de l’informatique :

Loi d’incomplétude

Un programme n’est jamais fini, on arrête juste d’y travailler.


Quand arrêter d’y travailler ?

Une piste est d’écouter Eric Ries à propos du produit Minimum Viable (MVP en anglais).
La perfection peut s’imposer en cas de système critique ou si vous voulez aller sur mars.

Front-end et Back-end sont des mots qui reviennent de plus en plus :

Cherche Développeur Front-end pour nouveau projet innovant, 3+ ans d’expérience.

Qu’appelle-t-on Front-end ?

On appelle généralement le front-end la partie visible d’un site web, ce que les visiteurs voient.
Au niveau technologique, c’est souvent un mélange entre Html, Css, Javascript ou bien une autre technologie client comme par exemple un player Flash ou une application Silverlight (Microsoft).

On dit que c’est le développeur front-end qui travaille sur la partie visible. 

Et le Back-end ?

Le back-end est la partie non visible de l’iceberg.
C’est ce qu’il y a derrière, c’est la couche applicative qui s’occupe de la gestion des données. Le back-end gère l’accès à la base de données. On peut parler de PHP ou de Ruby On Rails (choisissez votre préférence).

edit : ou bien du python avec Django pour Romain  ;)

C’est le développeur back-end qui est en charge de la partie accès à la base de données.

Et parfois on me parle de “middleware” ou “middle-end” ?

Parfois dans certaines architectures, on peut ajouter des couches que l’on peut appeler middle-end. Par exemple, c’est pour distribuer les tâches et efforts entre plusieurs serveurs back-end (du load-balancing ).

Attention :

Parfois on appelle le back-end ou le “back office”, l’endroit où l’on va changer le contenu d’un site, changer des menus, voir des statistiques. C’est la partie “administrateur” cachée d’un site web. Le mot “back-end” peut avoir différents sens selon les usages.


Pourquoi on entend parler de plus en plus de Front-end et de Back-end ?

Les technologies, pratiques et terminologies progressent. Les applications web sont de plus en plus complexes et riches.
Découper un projet web permet d’avoir des sous-ensembles avec une complexité plus facilement maîtrisable. Dans ce but, on a de plus en plus par convention une bonne pratique : 2 parties pré-découpées pour faciliter la planification et l’aboutissement du projet.