Journal
Ce journal contient 7 entrées.
L’économie malade de ses modèles | CNRS Le journal
L'économie, telle qu'elle est pratiquée, étudiée, appliquée et encensée n'a aucune valeur scientifique. Il s'agit d'un empilement d'idées arbitraires, de postulats absurdes et de raisonnement mathématiques aberrants.
Deux extraits révélateurs :
"Adopter un point de vue dynamique est une évidence dans toutes les disciplines scientifiques, sauf pour les économistes néoclassiques, qui restent figés sur une méthodologie statique qui date des années 1870"
"Le pire étant que la validité mathématique de ces simplifications a été étudiée et réfutée (link is external) dans les années 1970 par l’économiste français Gérard Debreu. Malheureusement, comme à chaque fois que la communauté des économistes néoclassiques a été confrontée à un résultat qui la gênait, l’auteur a été célébré par un prix Nobel… et le résultat a été oublié."

Deux extraits révélateurs :
"Adopter un point de vue dynamique est une évidence dans toutes les disciplines scientifiques, sauf pour les économistes néoclassiques, qui restent figés sur une méthodologie statique qui date des années 1870"
"Le pire étant que la validité mathématique de ces simplifications a été étudiée et réfutée (link is external) dans les années 1970 par l’économiste français Gérard Debreu. Malheureusement, comme à chaque fois que la communauté des économistes néoclassiques a été confrontée à un résultat qui la gênait, l’auteur a été célébré par un prix Nobel… et le résultat a été oublié."
How google finds the smartest people to hire
Ce genre de chose détermine autant de chose qu'un microbenchmark dans un langage, c'est à dire rien. La tâche à réaliser est triviale, sans complexité globale, sans rien à analyser ni à comparer, sans optimum à trouver.
Pour trouver des gens talentueux, je préfère les mettre face à des problèmes qui sont :
- trop gros pour être résolu en cinq minutes sur un coin de nappe.
- n'ont pas de solutions connues, et nécessitent donc de raisonner sur des heuristiques ou sur une approche probabiliste.
- des problèmes impossibles, à moins de "relaxer" une contrainte.
- ont une infinité de solutions possibles, dont l'efficacité dépend uniquement des objectifs que l'on se fixe.
- globaux, relatifs à l'architecture plutôt qu'à l'implémentation.
Bien sur, je n'analyse pas le fait que la personne ait fourni une bonne ou une mauvaise réponse (de toute façon, il n'y en a pas dans ces problèmes là), mais plutôt :
- la façon dont elle modélise/formalise le problème, de façon à le comprendre et le résoudre.
- sa capacité à raisonner avec les informations dont elle dispose.
- sa capacité à identifier quelles informations peuvent lui manquer.
- la façon dont elle va chercher ou déduire cette information, la pertinence des questions qu'elle va poser, etc.
Toutes ces choses sont de véritables indicateurs de l'intelligence globale d'un individu et non pas sa capacité à résoudre des problèmes de calcul bestial (voire sa capacité à régurgiter une solution qu'il a lu sur le net dans un top 10 des problèmes stupides posés par les recruteurs). Encore une fois, non, Google n'embauche pas plus de gens intelligents que les autres entreprises, car son processus de recrutement est aussi stupide que celui des autres, le côté cool en plus. Il y a bien des gens intelligents chez Google, mais concrètement il y en aurait aussi dans une entreprise qui sélectionnerait aléatoirement ses candidats.
On ne mesure pas une intelligence avec un algorithme, mais en la confrontant à une autre intelligence.

Pour trouver des gens talentueux, je préfère les mettre face à des problèmes qui sont :
- trop gros pour être résolu en cinq minutes sur un coin de nappe.
- n'ont pas de solutions connues, et nécessitent donc de raisonner sur des heuristiques ou sur une approche probabiliste.
- des problèmes impossibles, à moins de "relaxer" une contrainte.
- ont une infinité de solutions possibles, dont l'efficacité dépend uniquement des objectifs que l'on se fixe.
- globaux, relatifs à l'architecture plutôt qu'à l'implémentation.
Bien sur, je n'analyse pas le fait que la personne ait fourni une bonne ou une mauvaise réponse (de toute façon, il n'y en a pas dans ces problèmes là), mais plutôt :
- la façon dont elle modélise/formalise le problème, de façon à le comprendre et le résoudre.
- sa capacité à raisonner avec les informations dont elle dispose.
- sa capacité à identifier quelles informations peuvent lui manquer.
- la façon dont elle va chercher ou déduire cette information, la pertinence des questions qu'elle va poser, etc.
Toutes ces choses sont de véritables indicateurs de l'intelligence globale d'un individu et non pas sa capacité à résoudre des problèmes de calcul bestial (voire sa capacité à régurgiter une solution qu'il a lu sur le net dans un top 10 des problèmes stupides posés par les recruteurs). Encore une fois, non, Google n'embauche pas plus de gens intelligents que les autres entreprises, car son processus de recrutement est aussi stupide que celui des autres, le côté cool en plus. Il y a bien des gens intelligents chez Google, mais concrètement il y en aurait aussi dans une entreprise qui sélectionnerait aléatoirement ses candidats.
On ne mesure pas une intelligence avec un algorithme, mais en la confrontant à une autre intelligence.
Les données sont-elles si objectives que ça ?
C'est un peu le b.a.-ba des statistiques ou, globalement, du raisonnement. Je cite :
"- Même si les moyens de collecte de données augmentent en volume et en efficacité, il y a trop de paramètres à prendre en compte pour atteindre l'objectivité. Aucune machine, aussi puissante soit-elle, ne pourra jamais capter la complexité du monde dans son ensemble.
- Les données brutes ne servent absolument à rien. Il convient de les trier, de les visualiser, de les mettre en perspective. Or, le tri est un choix, et comme lorsque le journaliste choisit l'angle de son papier, ce choix est éminemment subjectif."
D'où, lorsque l'on reçoit des chiffres mis en forme, l'importance de connaître : (i) les données brutes, (ii) la méthodologie de collecte (taille et nature d'échantillon, protocole expérimental, durée, etc.), (iii) la méthodologie d'interprétation (traitement des données, choix de mise en perspective, etc.) et (iv) le contexte (qui présente ses données et quelles sont ses intentions).
Si l'une de ces informations est manquante, alors les chiffres donnés ne valent rien. Même en présence d'un test statistique (http://www.nature.com/news/scientific-method-statistical-errors-1.14700).

"- Même si les moyens de collecte de données augmentent en volume et en efficacité, il y a trop de paramètres à prendre en compte pour atteindre l'objectivité. Aucune machine, aussi puissante soit-elle, ne pourra jamais capter la complexité du monde dans son ensemble.
- Les données brutes ne servent absolument à rien. Il convient de les trier, de les visualiser, de les mettre en perspective. Or, le tri est un choix, et comme lorsque le journaliste choisit l'angle de son papier, ce choix est éminemment subjectif."
D'où, lorsque l'on reçoit des chiffres mis en forme, l'importance de connaître : (i) les données brutes, (ii) la méthodologie de collecte (taille et nature d'échantillon, protocole expérimental, durée, etc.), (iii) la méthodologie d'interprétation (traitement des données, choix de mise en perspective, etc.) et (iv) le contexte (qui présente ses données et quelles sont ses intentions).
Si l'une de ces informations est manquante, alors les chiffres donnés ne valent rien. Même en présence d'un test statistique (http://www.nature.com/news/scientific-method-statistical-errors-1.14700).
Drag&Drop HTML pollué par Flash
Il est très probable que ce soit un problème dans l'implémentation du drag&drop de Firefox. Je suppose qu'il doit détecter dans quelles surfaces le drag&drop doit être délégué à un plugin externe (en l’occurrence Flash), mais que cette détection ne doit pas tenir compte de quel onglet est réellement dessiné. Il serait intéressant de voir si le problème persiste (i) lorsque les deux pages sont dans des fenêtres différentes et (ii) lorsque d'autres plugins sont utilisés, comme par exemple une applet Java.
Dans tous les cas, se débarrasser de Flash ne peut être qu'une bonne pratique.

Dans tous les cas, se débarrasser de Flash ne peut être qu'une bonne pratique.
Les prises RJ45 ne seront plus imposées dans les logements neufs
C'est une décision absurde, qui montre bien que le gouvernement tiens un double discours vis-à-vis du numérique. D'un côté, on nous parle de l'Internet des objets comme un sujet d'avenir (et un moteur de croissance !) et de l'autre on régresse sur la mise en place des technologies qui sont indispensables à sa réalisation.
Câbler les environnements, avec du RJ45 ou autre chose, est une bonne pratique. En effet, nous ignorons quels seront nos besoins dans 20 ou 50 ans : aujourd'hui, les véhicules autonomes seraient bien plus avancés si, il y a 50 ans, on avait introduit l'infrastructure de communication nécessaire dans les autoroutes.
Cette décision est d'autant plus irrationnelle que, dans le budget alloué à la construction d'un logement neuf, le coût de câblage est négligeable. Que représentent 500€ de plus ou de moins sur des constructions qui en valent des centaines de milliers ?

Câbler les environnements, avec du RJ45 ou autre chose, est une bonne pratique. En effet, nous ignorons quels seront nos besoins dans 20 ou 50 ans : aujourd'hui, les véhicules autonomes seraient bien plus avancés si, il y a 50 ans, on avait introduit l'infrastructure de communication nécessaire dans les autoroutes.
Cette décision est d'autant plus irrationnelle que, dans le budget alloué à la construction d'un logement neuf, le coût de câblage est négligeable. Que représentent 500€ de plus ou de moins sur des constructions qui en valent des centaines de milliers ?
Qu'est-ce que le travail spéculatif ? - YouTube
C'est exactement pareil avec le développement logiciel, lorsque de grosses entreprises comme Microsoft ou la RATP lancent des concours et des hackathons en chaîne. Et le pire, c'est que ça marche.
Ce type de comportement est typiquement perdant-perdant :
- le commanditaire n'obtient que des produits/idées recyclés et bancals ;
- les gagnants sont généralement moins bien payé qu'avec un travail classique ;
- les perdants ont gaspillés du temps sans aucune contrepartie.
Vous voulez de la visibilité en tant que développeur ? Participez à des projets open-source, rejoignez des associations, démarrez un blog technique, lancez vos projets persos ou aidez vos amis à concrétiser leurs idées.
Mais par pitié, cessez de vous dévaloriser auprès d'entreprises malhonnêtes. Si vous ne le faîtes pas pour vous faîtes le au moins pour les autres.

Ce type de comportement est typiquement perdant-perdant :
- le commanditaire n'obtient que des produits/idées recyclés et bancals ;
- les gagnants sont généralement moins bien payé qu'avec un travail classique ;
- les perdants ont gaspillés du temps sans aucune contrepartie.
Vous voulez de la visibilité en tant que développeur ? Participez à des projets open-source, rejoignez des associations, démarrez un blog technique, lancez vos projets persos ou aidez vos amis à concrétiser leurs idées.
Mais par pitié, cessez de vous dévaloriser auprès d'entreprises malhonnêtes. Si vous ne le faîtes pas pour vous faîtes le au moins pour les autres.
PHP : fread + filesize = danger
Je n'aime pas trop taper sur PHP, mais quand la documentation elle même n'est pas fiable et me fait perdre une bonne demi-heure, ça a tendance à me gonfler.
La documentation de fread (http://www.php.net/manual/fr/function.fread.php) donne un exemple (un vrai exemple hein, officiel, pas un commentaire) pour lire un fichier en entier :
$contents = fread($handle, filesize($filename));
Alors oui, sauf que dans la documentation de filesize il y a une petite note qui dit "les résultats de cette fonction sont mis en cache" (http://www.php.net/manual/fr/function.filesize.php).
Ce que ça signifie c'est que si vous écrivez/lisez plusieurs fois d’affilée dans un fichier, la taille du fichier retournée par filesize ne changera pas (et donc, fread lira trop ou pas assez de données).
C'est génial quand on ne le sait pas, parce que c'est sincèrement la dernière chose à laquelle on pourrait penser. Une fonction qui s'appelle "filesize", on ne peut pas imaginer qu'il y ait un piège idiot, qui plus est lorsque c'est la documentation qui vous donne le bout de code en question.
Au début, je n'y ai pas cru, alors j'ai écrit un test qui crée deux chaînes, une de 500 caractères et une de 1000:
1/ Les 500 caractères sont écrits dans le fichier puis lus.
2/ Les 1000 caractères sont écrits dans le fichier puis lus.
3/ 1 et 2 sont réitérés avec cette fois l'utilisation de clearstatcache(), qui vide le cache des tailles, entre autres.
<?php
save('file_test', str_repeat('x', 500));
echo strlen(load('file_test', false)) . ' ';
save('file_test', str_repeat('x', 1000));
echo strlen(load('file_test', false)) . ' ';
save('file_test', str_repeat('x', 500));
echo strlen(load('file_test', true)) . ' ';
save('file_test', str_repeat('x', 1000));
echo strlen(load('file_test', true)) . ' ';
function save($file, $data)
{
$fh = fopen($file, 'w');
fwrite($fh, $data);
fclose($fh);
}
function load($file, $clear)
{
if($clear)
clearstatcache();
$fh = fopen($file, 'r');
$data = fread($fh, filesize($file));
fclose($fh);
return $data;
}
?>
Et ce test, il affiche bien "500 500 500 1000", ce qui signifie que le fichier n'a été lu qu'à moitié dans l'étape 2.
Ce genre de problème est usant. Je ne critique pas ici le fait que filesize utilise un cache (c'est juste une propriété de la fonction), mais plutôt que la documentation de fread propose un exemple de code dangereux sans qu'à aucun moment ne soit indiqué que celui-ci peut avoir un comportement aberrant.
Si vous voulez vérifier par vous même, j'ai fait une copie des pages de la documentation ici : http://benjaminbillet.fr/media/php_fread_filesize_doc.7z
Bref, utilisez file_get_contents...

La documentation de fread (http://www.php.net/manual/fr/function.fread.php) donne un exemple (un vrai exemple hein, officiel, pas un commentaire) pour lire un fichier en entier :
$contents = fread($handle, filesize($filename));
Alors oui, sauf que dans la documentation de filesize il y a une petite note qui dit "les résultats de cette fonction sont mis en cache" (http://www.php.net/manual/fr/function.filesize.php).
Ce que ça signifie c'est que si vous écrivez/lisez plusieurs fois d’affilée dans un fichier, la taille du fichier retournée par filesize ne changera pas (et donc, fread lira trop ou pas assez de données).
C'est génial quand on ne le sait pas, parce que c'est sincèrement la dernière chose à laquelle on pourrait penser. Une fonction qui s'appelle "filesize", on ne peut pas imaginer qu'il y ait un piège idiot, qui plus est lorsque c'est la documentation qui vous donne le bout de code en question.
Au début, je n'y ai pas cru, alors j'ai écrit un test qui crée deux chaînes, une de 500 caractères et une de 1000:
1/ Les 500 caractères sont écrits dans le fichier puis lus.
2/ Les 1000 caractères sont écrits dans le fichier puis lus.
3/ 1 et 2 sont réitérés avec cette fois l'utilisation de clearstatcache(), qui vide le cache des tailles, entre autres.
<?php
save('file_test', str_repeat('x', 500));
echo strlen(load('file_test', false)) . ' ';
save('file_test', str_repeat('x', 1000));
echo strlen(load('file_test', false)) . ' ';
save('file_test', str_repeat('x', 500));
echo strlen(load('file_test', true)) . ' ';
save('file_test', str_repeat('x', 1000));
echo strlen(load('file_test', true)) . ' ';
function save($file, $data)
{
$fh = fopen($file, 'w');
fwrite($fh, $data);
fclose($fh);
}
function load($file, $clear)
{
if($clear)
clearstatcache();
$fh = fopen($file, 'r');
$data = fread($fh, filesize($file));
fclose($fh);
return $data;
}
?>
Et ce test, il affiche bien "500 500 500 1000", ce qui signifie que le fichier n'a été lu qu'à moitié dans l'étape 2.
Ce genre de problème est usant. Je ne critique pas ici le fait que filesize utilise un cache (c'est juste une propriété de la fonction), mais plutôt que la documentation de fread propose un exemple de code dangereux sans qu'à aucun moment ne soit indiqué que celui-ci peut avoir un comportement aberrant.
Si vous voulez vérifier par vous même, j'ai fait une copie des pages de la documentation ici : http://benjaminbillet.fr/media/php_fread_filesize_doc.7z
Bref, utilisez file_get_contents...
Ce journal est basé sur Ginger, un gestionnaire de lien minimaliste développé dans le cadre d'un stage de perfectionnement. Pour plus d'informations, consulter le wiki consacré à mes projets personnels.