billitch

Bienvenue sur blog de billitch !
Du code, de la noise, et quelques pensées électrogènes...


mardi 13 juillet 2010

Let Over Lambda

LOL

Je lis Let Over Lambda par Doug Hoyte.

Merveilleux livre sur les macros et les fermetures en Common Lisp. Un peu prétentieux en apparence, très pro Common Lisp, mais avec un fond très intéressant sur des macros très simples et puissantes pour construire des fermetures. Il contruit plusieurs outils pouvant remplacer simplement CLOS juste avec des fermetures (qu'il construit via let over lambda).

Le début s'est littérallement déversé dans mon cerveau un peu rouillé sur le sujet. Il m'a fait (re) comprendre la simplicité et la puissance des fermetures (closures en anglais) qui sont l'outil fondamental de l'informatique moderne. Pour effacer la complexité il utilise de très belles et courtes macros. Tout le code est sous license MIT et distribué sur son site. Cela dit sans le livre il est presque inutilisable.

Ce livre brise les règles habituelles de la programmation. Envoyant valser les oeuillères que les styles de programmation nous donnent, et cherchant à exploiter tout le potentiel de ces primitives, les fermetures deviennent très dynamiques : on peut leur passer des messages changeant leur état, on peut les faire pointer sur d'autres lambdas (indirection) tout en gardant les "variables" locales, accéder aux variables lexicales depuis une autre fonction en passant des messages (pandoric lambda), ce qui ressemble beaucoup à du SmallTalk en Common Lisp.

Ensuite il montre comment implémenter Forth en Common Lisp et quelques manières intelligentes de faire interagir les deux languages.

Sans l'avoir fini encore, ce livre m'a réveillé sur le lambda-calcul (il est facile de ne pas programmer du tout dans un style fonctionnel en Common Lisp). Tout ça m'a indirectement donné envie de lire sur les Y combinators, les continuations, et autres évaluateurs meta-circulaires...


jeudi 13 mai 2010

There are two types of people...

(deftype people () (or 'understand-lisp
                       'do-not-understand-lisp))

1. Le lundi 17 mai 2010à19:05, par rook

heu ... je creuse

2. Le mardi 1 juin 2010à04:40, par Lta

'do-not-understand-lisp

3. Le lundi 21 juin 2010à02:55, par Julian

enum {
 LISP_PROGRAMMERS = 0,
 PEOPLE_WITH_REAL_BIG_BALLS,
};

4. Le lundi 21 juin 2010à15:15, par billitch

int main() {
  int lol = PEOPLE_WITH_REAL_BIG_BALLS * 4294967296;
  if (lol == LISP_PROGRAMMERS)
    printf("TOUNU =P\n");
  return 0;
}

5. Le samedi 21 août 2010à20:34, par Lta

bim!


mardi 11 mai 2010

La sémantique économique et l'économie sémantique

Bébé mange un Mc'Do

Il paraît que le capitalisme est un mode de production. Le règne du capital productif : il faut produire plus de richesse qu'on en a investi dans la production. Quand on évoque ce concept on pense tout de suite aux gros dollars et autres euros, et aux voleurs. Notre habitude de pensée nous envoie à la face ce cliché, pourtant ces règles d'accroissement des valeurs sont valables pour bien d'autres sujets.

Tout d'abord, il faut comprendre ce qu'on appelle valeur. Dialectiquement ça s'oppose à la notion philosophique de nature. On ne considère pas les qualités mais seulement les quantités, que l'on veut faire croître. En informatique on appelle ça les données, qu'on oppose respectivement aux types qui indiquent la nature des données. La valeur est donc mathématiquement parlant comparable à R : un ensemble continu de nombres qu'on peut comparer, additionner, soustraire. Ce nombre n'a aucun sens physique si on y accole pas une unité qui le qualifiera : mètres pour les distances, secondes pour le temps, litres pour les volumes, grammes pour les poids, watts pour l'énergie, et ainsi de suite, sans compter toutes sortes de combinaisons magiques : mètres par seconde, watt heure...

Mais l'économie ne se satisfait pas d'unités aussi abstraites : on ne veut pas économiser les mètres ou les kilos, on veut économiser les mètres de fil électrique, et surtout les litres de pétrole. De manière générale on veut économiser les matières premières. Pourquoi ? Parce qu'elles sont limitées, et surtout parce que le but c'est de produire plus en consommant moins.

Ensuite l'économie n'est pas une allégorie. C'est beaucoup plus un art qu'une entité capable d'action. Les entités capables d'actions sont les humains et leur compréhension de cette science leur donne des moyens que les animaux et les pierres n'ont pas. Et encore, les pierres ont une force de gravité, qui est comparable à un mode capitaliste d'accroissement des valeurs de cette force. C'est ce qui a permi la formation des planètes et du soleil. Mais ce n'est pas l'économie qui a fait le soleil, l'économie c'est la science que les humains ont crée pour étudier les valeurs.

C'est donc nous qui avons construit cette science. L'avons-nous fait dans un but pur et désintéressé ? Heureusement que non ! Nous sommes tous intéressés par l'amélioration de nos conditions de vie. En ce sens une donation est un acte intéressé, en général par le bien-être des autres. Il n'y a pas d'acte volontaire désintéressé.

Ce qui prime sur tous nos actes est donc notre intérêt. C'est l'intérêt que l'on a pour quelque chose qui nous pousse à agir en sa faveur. Et pour agir au mieux en sa faveur il faut estimer au mieux ce qui est positif ou négatif pour elle. La valeur est donc la mesure subjective d'un intérêt, qui permet de déterminer si on s'éloigne ou qu'on s'approche de cet objectif. Il est alors évident que ceux qui vendent la décroissance sont partis sur une autre idée l'économie, à savoir celle de compter à l'envers =) Le but reste le même : atteindre ses objectifs en consommant le moins de ressources possibles, en récupérant au final encore plus qu'avant la possibilité d'atteindre les objectifs suivants.

Cela s'applique donc naturellement aux autres mesures de richesses que celle de la valeur d'échange en devises. Celui qui a beaucoup de temps libre peut investir son temps pour produire plus que celui qui doit se battre pour manger. Celui qui a beaucoup d'amis peut faire usage de ses relations pour en obtenir de nouvelles. Celui qui a un grand savoir a les moyens de produire une grande quantité de savoirs, bien plus que l'illettré, et ainsi de suite.

Pourtant avec toutes ces différences nous avons réussi un tour de force incroyable : nous arrivons à convertir du plomb en or. Il y a un cours des commodités et on évalue leur prix en fonction des échanges pratiqués par le marché ainsi on pourra toujours échanger 1€ de plomb contre 1€ d'or. Qui détermine alors la valeur de l'euro ? Il est censé être déterminé par le marché et sa capacité à l'échanger contre des produits qui auront une valeur concrète pour les acheteurs dans leur propre subjectivité, la vraie valeur pour eux. Si vous travaillez dans le nucléaire vous donnerez de la valeur au plomb, si vous êtes plutôt dans l'électronique de précision l'or aura beaucoup plus de valeur.

Les problèmes commencent quand on croit que la vraie valeur c'est l'euro et que les autres valeurs en dépendent. Cela n'a aucun sens de dire qu'un kilo de pain vaut plus ou moins qu'avant la crise. Un kilo de pain a la valeur d'un kilo de pain et si on a faim ça veut dire une grande valeur et si on est pas gourmand ça en a une petite. Par contre il sera échangé pour un nombre différent d'euros, et c'est un problème de taille quand le salaire reste le même en euros : la valeur du travail est donc affectée par ces liens de monnaie. La monnaie est donc un outil extrêmement puissant et dangereux, lui faire confiance aveuglément est parfois de la folie pure. Ce qui sera estimé à beaucoup d'euros par certains n'aura aucune valeur pour d'autres, et inversement. Une monnaie est en quelque sorte comparable à la subjectivité du groupe social utilisant cette monnaie.

Le clivage riche/pauvre est donc un abus de langage ne considérant qu'une seule de ces différentes richesses, couramment celle de la monnaie et donc de la société. L'ascèse d'une personne aura des airs de luxure pour d'autres et inversement. Par exemple quelqu'un profitant de tout son temps pour travailler verra son capital de savoir-faire augmenter, mais paraîtra d'une grande pauvreté sociale pour beaucoup, sauf ceux qui sont encore plus pauvres que lui, ou plus riches. La richesse n'est rien sans un sujet et sans but; elle n'est que la longueur du vecteur : il lui faut un point de départ et une direction. Sur un plan purement dialectique "pauvre" ou "riche" c'est quantitatif. Ça n'a aucun intérêt sans qualitatif : en argent, en temps, en savoir-faire sur tel domaine ou tel autre, reste à trouver les qualités adaptées au problème posé, ce qui nous amène alors sur le sujet de la sémantique.

1. Le jeudi 13 mai 2010à23:44, par fraktal

Je salue l'effort d'abstraction du capitalisme qui n'est pas dépourvu d'intérêt. En revanche, je trouve le point de vue sur la richesse un peu "naïf". Ce que tu dis reviendrait à dire que les marchés sont hermétiques aux autres. Malheureusement, la richesse financière facilite grandement l'accès à la richesse intellectuelle et sociale.

Cependant, ton discours soulève pour moi un autre problème : Le capitalisme devrait-il être fermé à certains marchés ? Par exemple l'alimentaire, l'éducatif, le "vital" ...

2. Le vendredi 14 mai 2010à00:41, par billitch

@fraktal: juste sur les termes je penses que tu mélange monnaie qui veut dire estimation de richesse selon une valeur d'échange dans les pays ou elle a cours, et la richesse qui n'est pas limitée aux marchés financiers mais qui en profite.

Bien sur que la richesse en monnaie aide à la richesse intellectuelle ! Tant mieux ! =)

Pourquoi "fermer" et qu'est-ce que ça veut dire ? En quoi le capital cause-t-il du tort à qui que ce soit dans ce modèle ? Il fait juste croître la richesse de ceux qui travaillent.

Après si on parle des voleurs... Et à la tête de ces capitaux il y en a plein, et à la tête des gouvernements aussi, et dans les couches plus basses, et ils s'organisent, etc...

C'est eux qui freinent l'accroissement des richesses humaines et qui dépossèdent ceux qui ont le plus besoin de cette richesse.


dimanche 9 mai 2010

OpenBSD

Ma Gentoo a succombé. Après plusieurs années de service, quelques mois de démarrage interractif (fsck failed to correct some errors, enter root password or press CTRL+D to continue.) et quelques jours de "Ah, X11 ne démarre plus... Défibrilateur !? Marche pas..."

Bref après un certain nombre de emerge -uDavN world, autant de revdep-rebuild et quelques recompilation de noyaux et modules associés, rien à faire. La bête ne repart plus. Juste quand mon nouveau portable arrive heureusement.

Ça m'a tout à fait passé l'envie de continuer à décrypter les tas de fonctionnalités pourries pissées (c'est le mot) par les développeurs de GNU/Linux et Gentoo. Il était temps de passer à ce qui m'a toujours semblé être le rêve en terme de non-bug et de stabilité : OpenBSD. Yay !

Évidemment, c'est encore moins à jour qu'une Ubuntu, mais toujours plus qu'une Debian stable (et aussi largement plus stable). Et il manque des programmes essentiels qui font partie de mon environnement depuis des années, à savoir rxvt-unicode. J'ai donc écrit un port qui sera bientôt intégré et permettra à tout le monde de l'installer sans effort.

J'en ai aussi profité pour corriger un bug dans les tests de SBCL, ce compilateur lisp open-source du futur qui produit parfois du code plus rapide que du g++ optimisé. Cela dit tout ne marche pas encore (repo-install n'installe pas correctement certains packages sources, je cherche pourquoi)

Finalement ça me rappelle pas mal mon expérience en tant que développeur MacPorts : des outils très simples, une certaine rigueur et une petite communauté réactive de gros hackers qui aiment le travail bien fait, et qui n'ont pas peur de flamer ceux qui se ratent tout en restant très rock n roll. Hm bon c'est assez différent de MacPorts là. Moi j'adore =)

À côté de ça, ma priorité reste de développer LowH-SOA, dont je risque de vous parler prochainement !


jeudi 25 février 2010

Entrer dans l'éternité

Nous y avons mis un pied. Une photo, un commentaire, des commentaires, une discussion, un blog, des forums, newsgroups, irc, tous copiés, archivés sur des sites web faits juste pour ça. Et tout cela est librement copié sur les écrans d'autres internautes, proches ou inconnus, toujours anonymes jusqu'à ce qu'ils laissent à leur tour une trace.

Certaines de ces traces, resteront pour toujours dans l'histoire de l'humanité. De plus en plus, jusqu'à ce que la technologie permette de tout garder. Et elle le fera toute seule : l'électricité sans fil commence à apparaitre et permettra d'alimenter des puces dans tous les objets courants. Tout enregistrer sera normal car ne pas le faire sera un terrible handicap social. On a besoin d'être vus et reconnus par les gens qui nous sont proches, bien autant qu'on a envie de les voir.

D'un coté rien n'a changé : lire, écrire sont des occupations aussi vieilles que Gutenberg. Mais les livres d'hier ne savaient pas que vous les aviez lu. Ceux d'aujourd'hui et de demain savent, et en sauront toujours plus. Le Kindle vendu par Amazon est un excellent exemple, tout comme les boutons "partager" sur les sites videos, ils sont une version archaique de ce qui s'annonce. Dire ce qu'on fait est de plus en plus automatique et inconscient, et enregistré et vu. Sur Discogs vous pouvez savoir quels disques j'ai, ce que j'en pense et ce que je voudrais, pareil sur Amazon avec les livres, mais cela reste assez peu à jour vu l'effort que ça représente. Le jour ou je pourrai scanner le code barre avec mon téléphone et écrire un commentaire, ça sera déjà plus facile. Dans moins d'un an, pour sûr. Imaginez quand vous n'aurez même plus à scanner un code barre, que tout se fera tout seul, comme sur les sites web que vous visitez (hehe, vous êtes dans mes logs).

Finalement plus ça va plus on se rendra compte qu'on ne savait rien de nos grand-parents : qu'ont-ils fait, quels livres ils ont lu, à quel jeux ont-ils joué, qu'ont-ils écrit sur les murs de leur monde ? Il nous reste des livres, ceux qui n'ont pas brulés, sans parler de ceux déformées par des siècles de copies et traductions. Tout ce qui fut un énorme effort de production et de copie et de protection va devenir automatique, gratuit et omniprésent.

Déjà il devient de plus en plus difficile de se cacher. Un site vient de sortir, qui permet de scanner une photo et donne automatiquement le nom de la personne et son compte Facebook. Avoir un compte Facebook veut dire être potentiellement reconnu dans une photo compromettante et y être vu par tous les gens qui vous connaissent, et leurs amis. Nos yeux sont devenus très perçants et notre mémoire surprenante.

Cela fait peur. Comme les machines ont fait peur, comme la chirurgie a fait peur, comme une naissance fait peur, comme tout ce qui donne le jour à un monde nouveau. La différence c'est que les auteurs de ce monde c'est nous et il n'y a que nous-même pour nous en exclure. Ceux qui veulent se faire connaitre s'expriment librement sur internet, publient leurs idées et savent qu'ils seront vus, et critiqués.

Nous entrons dans la connaissance, le partage et l'observation. Pour l'éternité. Nous entrons dans la réalité.






Cette vidéo (en anglais) est une excellente présentation de l'avenir des jeux au delà de Facebook. Cela s'adresse aux développeurs de jeux sur le web, mais la fin montre brillament que la théorie des jeux va bien plus loin que Mafia Wars et l'économie comme on la connait. C'est la phrase de Jesse Schell à 26:40 qui m'a inspiré ce texte, il donne un exemple de sa vision du futur et imagine des points d'exp qui font passer des niveaux quand on lit un livre :

... and you get an achievement unlocked, this thing has been tracking you for 20 years, you've finished 500 novels and this is like a big achievement, and you're thinking : I'm really embarassed that my 500th novel was this dumb Star Trek novel because I'm gonna remember that forever. And then you start thinking about all these achievements and points and things and realize that, you know, you have no idea what books your grandparents read, or where they went on a daily basis, but these sensors that we're gonna have on us and all around us and everywhere are gonna be tracking and watching what we are doing for ever. And our grandchildren will know every book that we read, that legacy will be here and remembered.

1. Le mardi 2 mars 2010à14:24, par Nicko

Ah là là ... les humains et leur facilité à prononcer le mot éternité ... Tout est réversible, cette révolution y compris.

2. Le mercredi 3 mars 2010à00:17, par Fraktal

Un problème inhérent se pose vis-à-vis de cette progression : répertorier, classer, archiver et parcourir ces données.

Quand je dis tout ca, je pense graphes sémantiques et Xanadu. Je crois que la mise en relation générique des données entre elles est bien plus ardue qu'elle n'y parait.

En effet, le nombre de "sensors" augmentent sûrement, cependant encore faut il extraire l'information pertinente et la mettre en relation de manière intelligente.

3. Le vendredi 5 mars 2010à07:11, par billitch

@Nicko : Bah en fait si j'archive ce que tu dis et que archive.org archive mon site et que le cache google archive archive.org et que 12 sites re-publient le contenu avec des pubs, ça commence a devenir difficile à faire disparaître =P

@Fraktal : Le web sémantique, mec !

Toutes les données formeront un graphe sémantique, avec une ontologie décentralisée à base d'URL =)

Pour l'instant ça ressemble à de la branlette mais quand autant d'infos seront disponibles ça prendra tout son sens.

4. Le lundi 8 mars 2010à12:12, par Nicko

@ billitch :

C'est à peu près ce qu'ont pensé beaucoup de peuples ... mais bon, la mer s'est élevée, leur région s'est asséchée, ils ont été envahis, on a oublié leur langue ...

5. Le jeudi 29 avril 2010à16:27, par billitch

@Nicko: Pourrais-tu avancer des éléments tangibles pour soutenir soutenir la très sous-entendue et omniprésente thèse outrageusement non-fondée comme quoi l'humanité risquerait de perdre plus de 1% de son infrastructure industrielle et informatique mondiale dans un futur proche ou lointain ?


mercredi 24 février 2010

Motivation intrisèque

Un des meilleurs talk que j'ai pu voir sur TED.

Dan Pink montre en s'appuyant sur des publications de recherches (entre autres de la FED) pourquoi pour la plupart des problèmes que l'on se pose, plus il y a de récompense moins on est efficace.

(dans View subtitles vous pouvez activer les sous-titres en français)

1. Le mercredi 5 mai 2010à12:11, par rook

il a tout pompé sur l'école nouvelle

2. Le dimanche 9 mai 2010à02:44, par billitch

hehehe moi qui craignais de pas travailler comme il faut ^^


from tongue-tip trill to uvular trill to uvular fricative

Random excerpt from #lisp :

<dto>  hello. how does one pronounce Mersenne? as
       in Mersenne prime
<jcowan>  As in French.
<Arelius>  With a silent 'r'
<sepult>  r like in merde
<pkhuong>  really?
<dto>  ok.
       wow.
<pkhuong>  Silent r?
<sepult>  lol
<dto>  I just chose it as the name of our band.
       it seems to fit the music we are going to release.
       it has nothing to do with the music. i just think
       it sounds nice
<jcowan>  Not really silent, just hard for anglophone
          ears to hear.

          French r can vary from tongue-tip trill to
          uvular trill to uvular fricative, and it can be
          voiced or unvoiced.

<sepult>  heh

In #lisp even when we dont talk parentheses, there is always someone with an insight on your problem ! =)


lundi 8 février 2010

repo-install with cached sbcl files

I had trouble with repo-install sources being cached in $HOME/.fasls as it uses *load-truename* and would try to find repos in the wrong directory.

The quick fix was to

(setf repo-install::*installer-directory*
      #P"/home/billitch/dev/lisp/")

after booting repo-install in $HOME/.sbclrc . Now it looks like this :

(load "/home/billitch/dev/lisp/repo-install/boot.lisp")
(setf repo-install::*installer-directory*
      #P"/home/billitch/dev/lisp/")
(repo-install:add-detected-repos)