11/21/2016

[Fr] Sélection d'extraits de "Tout va mal... Je vais bien!"

Le weekend dernier, on m'a conseillé de lire le livre "Tout va mal... je vais bien ! Comment vivre heureux dans un monde de merde" de Philippe Bloch et je dois avouer qu'il est tombé à point nommé ! Voici donc quelques extraits choisis...


Introduction

Winner never quits, quitters never wins
C'est au coeur de l'hiver que j'ai découvert que j'avais en moins un invicible printemps. — Albert Camus
Poème "Tu seras un homme mon fils" de Rudyard Kipling
Si tu perds, ne perds pas la leçon — Dalai Lama

"La seule revanche décente n'est jamais sur les autres (même si la tentation est forte) mais toujours sur soi-même".

Mal nommer les choses ajoute à la misère du monde — Albert Camus

"Le pouvoir des mots peut être mortel sur notre mental [...] remplacer 'prendre un risque' par 'take a chance'", 'bon courage' par 'amuse toi bien'"

"Faire la chasse aux expressions négatives et avoir un bon mental ne sont qu'une première étape sur le chemin du bonheur."


1 - Un émetteur de bonnes nouvelles tu deviendras

"[...] je me demande si notre vie n'est pas ce qu'elle est, tout simplement parce que nous nous sommes persuadés qu'elle est condamnée à l'être"

A force d'écrire des choses horribles, des choses horribles finissent par arriver — Michel Simon
Il faut comprendre que l'optimisme ou le pessimisme n'ont rien à voir avec la réalité. Ils sont fonction de la representation que l'on se fait du réel. — Boris Cyrulnik
Ce qui tourmente les hommes ce n'est pas la réalité mais les opinions qu'ils s'en font. — Epictete

"Nous semblons incapable de fitrer la qualité de ce qui alimente notre cerveau"

"Nos vies pétillent ou se réduisent à la mesure de nos ambitions et de nos rêves"

L'une des clés de l'optimisme et la capacité à orienter notre regard et à mobiliser notre attention sur ce qui est beau, positif, sur ce qui fonctionne. — Thierry Saussez

"Nous devons tous apprendre à contrôler nos propos autant qu'à comparer, vérifier et croiser les torrents d'informations qui influencent nos décisions, nos paroles et nos actes. [...] Redevenir attentif à ce qui marche bien."


2 - Ta confiance, plus souvent tu accorderas

"Plus les gens se font confiance, plus ils se sentent heureux"

Dès l'instant où vous aurez foi en vous-même, vous saurez comment vivre" — Johann Wolfgang von Goethe
La confiance est un économiseur d'informations, un réducteur de complexité, un neutralisateur d'incertitude." — Thierry Saussez

"Car personne ne peut être heureux seul ou contre les autres. Nous agissons de plus en plus en individu plutôt qu'en citoyen. [...]"

"Au lieu d'ouvrir les esprits, de développer l'estime de soi, faire émerger les talents et enseigner la solidarité et le partage, l'école française sélectionne, trie, brise, élimine, ne laissant aucune chance aux plus faibles et aux plus fragiles. [...] A la sortie, la solidarité ne pèse pas bien lourd face au chacun pour soi."

"Comprendre la priorité qu'il faut donner aux qualités humaines, plutôt qu'aux apprentissages scolaires d'antan. [...] il y a à repenser totalement la mission même d'un enseignant, en privilégiant désormais le savoir-être."


3 - Sur ce qui dépend de toi tu te concentreras

Donne-moi la sérénité d'accepter les choses que je ne peux pas changer. Le courage de changer celles sur lesquelles j'ai du pouvoir et la sagesse de reconnaître la différence. — Reinhold Niebuhr

"Le premier secret est d'arrêter de se comparer en permanence à n'importe qui ou à n'importe quoi. [...] Comparaison rime le plus souvent avec frustration."

"Les plus beaux rêves sont ceux qui sont à la portée de notre imagination, notre force de travail, notre volonté et de notre ténacité."

"Plutôt que de nous mesurer aux autres et de regretter ce qui nous manque, nous ferions mieux de comparer nos vies ou notre situation à ce que nous voudrions qu'elles soient et de nous mettre au travail sans tarder ! "

"Ne jamais perdre de vue ce que nous possédons déjà. [...] réaliser ce à quoi nous avons accès au quotidien et dont tant d'autres personnes à travers le monde aimeraient elles aussi profiter."

Le vrai problème n'est pas de survivre à un échec, mais de survivre à son succès — Luc de Brabandière
Le bonheur ne dépend pas de ce qui nous manque, mais de la façon dont nous nous servons de ce que nous avons. — Albert Schweitzer

"[...] la différence fondamentale entre un optimiste et un pessimiste. L'optimiste considère qu'il n'y aura jamais assez de problèmes par rapport aux innombrables solutions qu'il se sent capable d'imaginer. Il voit le bonheur comme un état résultat de son travail et de ses efforts, renforçant sa confiance en lui. Le second [le pessimiste] le juge temporaire, l'attribue au hasard, mais se convainc de sa propre responsabilité quand les choses vont mal, amplifiant ses doutes."

"La mémoire de l'optimiste excelle à éliminer les mauvais souvenirs de son disque dur, tandis que celle du pessimiste les place en pole position dans son moteur de recherche. Le premier croit au pouvoir de l'action, le second à celui de la perfection qu'il n'atteindra jamais."

Lorsque tout semble aller contre vous, souvenez-vous que les avions décollent toujours face au vent. — Henry Ford
Le destin n'est pas une question de chance, c'est une question de choix — Jeremy Kitson
Il ne dépend pas de nous que l'événement se déclenche. Mais il dépend de nous d'y faire face. — Charles Péguy
Il n'y a qu'une route vers le bonheur, c'est de renoncer aux choses qui ne dépendent pas de notre volonté. — Epictète

4 - De personne jamais rien tu n'attendras

Le monde ne vous doit rien. Il était là avant vous. — Robert Jones Burdette

"Nous attendons toujours beaucoup trop des autres, plutôt que de nous appuyer sur nos propres ressources et d'y faire appel."

Nous sommes les auteurs du moment suivant. — Chris Prentiss

"Toute dépendance est une addiction dont nous devons apprendre à nous libérer. Les entrepreneurs le savent mieux que quiconque, dont la force est de ne jamais rien demander à personne, et de tout mettre en oeuvre pour préserver leur indépendance. L'une des premières motivations d'un créateur n'est-elle pas le rejet de l'autorité ou d'un patron qui a toujours un avis sur tout, mais qui est rarement le même que le sien ?"

"Entreprendre aguerrit. Surprotéger affaiblit."

"Mieux vaut toujours avoir la bonne surprise d'une main tendue que de devoir la solliciter."

"Chacun de nous peut agir... et découvrir sa propre capacité d'entraînement. Puisque plus rien n'est prévisible, tout est à inventer. Quitte à passer d'un projet à un autre aussi souvent que nécessaire. L'essentiel est d'en choisir un et de se mettre en mouvement sans rien attendre de quiconque."

Moins notre bonheur est dans la dépendance des autres et plus il nous est aisé d'être heureux — Marquise du Châtelet

5 - Des projets fous tu imagineras

Si vous voulez garder des souvenirs, commencez par les vivre — Bob Dylan
On devient vieux le jour où nos regrets commencent à prendre le pas sur nos rêves — Jacques Séguéla

"Monde de merde ou pas, la capacité à rêver et à faire des projets (petits ou grands) est une machine de guerre anti-morosité. [...] L'envie s'éteint peu à peu, le plaisir s'évanouit et la déprime s'installe quand rien ne pointe à l'horizon."

"“Screw it, let's do it!”. Si vous pensez avoir une idée qui peut améliorer la vie des gens de façon bien meilleure que ne le font les business existants, alors lancez-vous ! Et si vous ne réussissez pas du premier coup, relevez-vous et essayez encore. Cet état d'esprit est indispensable pour qui veut avancer dans un pays qui doute désormais bien plus qu'il ne rêve."

Le courage croît en osant, et la peur en hésitant. — Proverbe romain
La volonté raccourcit le chemin. — Proverbe Japonais

"Au delà de l'énergie qu'ils nous donnent, le grand mérite de nos rêves est de nous pousser à l'action pour réussir leur mise en oeuvre. Et bizarrement, quand on agit, les petites voix intérieurs qui nous minent et nous tétanisent ne nous parlent plus. Ou ne parviennent plus à se faire entendre ! [...] l'unique risque potentiel [...] ne pas vivre l'instant présent."

"Tenter d'être attentif à l'instant présent, à chaque petit plaisir, savoir le savourer, être conscient des moments de bonheur — on est souvent heureux sans s'en rendre compte — avoir des pensées positives plutôt que négatives, lâcher prise, vivre le coeur ouvert, tout cela nous aide à trouver un équilibre et une joie au quotidien."

"Le secret consiste à trouver le juste équilibre entre un présent à redécouvrir et un avenir prometteur qu'il convient d'imaginer"

N'attends pas que les événements arrivent comme tu le souhaites. Décide de vouloir ce qui arrive et tu seras heureux — Epictète

6 - La nostalgie tu banniras

On a deux vies, et la seconde commence le jour où l'on se rend compte qu'on n'en a qu'une. — Confucius

"Le fait d'être français réduit de 20% la probabilité de se déclarer très heureux"

"Aucune société ni aucun groupe humain ne peut aspirer au bonheur s'il n'entrevoit pas des lendemains qui chantent, ou s'il estime que le meilleur est derrière lui."

La vraie folie, c'est de faire toujours la même chose et d'espérer des changements — Albert Einstein

"Plus on regrette ce qui n'est plus, et plus on laisse le passé influence notre moral. La nostalgie est toujours mauvaise conseillière."

La première recette du bonheur est la suivante : évitez de méditer trop longtemps sur le passé. — André Maurois
Ne poursuis pas le passé. Ne te perds pas dans le futur. Le passé n'est plus. Le futur n'est pas encore là. Regarde la vie comme elle est. — Bouddha
Préserver le passé, c'est l'adapter à notre vie d'aujourd'hui. — Christian de Portzamparc
L'arbre qui tombe fait plus de bruit que la forêt qui pousse. — Proverbe Africain
On ne résout pas un problème avec les modes de pensée qui l'ont engendré. — Albert Einstein

7 - Le goût du risque tu retrouveras

Si vos rêves ne vous font pas peur, c'est qu'ils ne sont pas assez grands ! — Richard Branson
La peur mène à la colère, la colère mène à la haine, la haine mène à la souffrance. — George Lucas
Etre ambitieux, c'est traduire sa passion en actes. Pour cela, il faut savoir accepter l'échec. — Vincent Cespedes
Les doutes tuent plus de rêves que l'échec n'en détruira jamais. — Suzy Kassem

8 - Ton pouvoir tu conserveras

Souciez-vous de ce que les gens pensent de vous, et vous serez pour toujours leur prisionner. — Lao Tseu
Il n'y a pas de beau ou de mauvais temps. Il n'y a que des tenus inappropriées. — Proverbe scandinave
Le pessimisme mène à la faiblesse, l'optimisme au pouvoir. — William James

"L'une des clés du bien-être est de concentrer notre énergie sur ce que nous pouvons contrôler, et de passer sans état d'âme à autre chose quand cela ne fonctionne pas. L'essentiel est de toujours garder la main et de rester fort, même dans l'adversité."

Si ton problème a une solution, alors il ne faut pas t'inquiéter. Et si ton problème n'a pas de solution... alors, t'inquiéter n'y changera rien. — Dalaï-Lama

"Dans la difficulté, celui qui garde le contrôle assume, commence par rechercher sa responsabilité, la reconnaît et passe au problème suivant. La victime, quand à elle, accuse les autres ou le destin. Le premier gagne toujours. Le second perd à chaque fois. Il n'est jamais trop tard pour changer de camp et brûler votre costume de martyr !"


9 - La bienveillance toujours tu incarneras

L'égoisme est une prison, qui nous sépare du bonheur même qu'il poursuit — André Comte-Sponville

"La gentillesse est tout, sauf une faiblesse. C'est au contraire la seule force qui permet la réciprocité, en dissipant la peur et la méfiance. Elle produit de la bonne humeur et crée du plaisir à être ensemble."

"Altruisme (capacité à aider les autres de façon désintéressée) et empathie (souffrir de la souffrance de l'autre) font partie des émotions les plus puissantes."

"Notre besoin d'être "likés" en permanence, ne contribue-t-il pas d'une certaine façon à nous isoler, et à nous éloigner de nos proches ou de nos vraies amis ? La recherche permanente de l'approbation d'autrui ne nous fait-elle pas perdre peu à peu confiance en nous ? [...] Notre exhibitionnisme forcené (et le plus souvent ridicule) ne nous fait-il pas perdre de vue ce qui est vraiment important ? Le temps que nous consacrons à mettre nos vies en scène et en images ne serait-il pas plus utilement consacré à prendre soin des autres ?"

Le selfie est une solitude, le symptôme d'une malade mondiale, celle de l'indifférence à l'autre — Karnel Daoud

"Ecoutons la voix de la raison et du coeur plutôt que celle de la peur et de la lâcheté."

L'indifférence à l'autre, c'est le début de la barberie. — Emmanuel Levinas

Conclusion

"Et si cette peur panique de l'avenir était au fond une excellente nouvelle ? Et si le catastrophisme ambiant nous obligeait à tout repenser et à imaginer enfin de vraies solutions de rupture ?"

"Nous vivons pourtant une période de transition aussi inédite qu'excitante, parce que d'une ampleur et d'une rapidité jamais observées dans l'histoire du monde."

"Il y a mille façons d'aspirer au bonheur. la plus sûre me semble être de parvenir à cumuler la dimension plaisir de la vie et fierté d'avoir un but et de faire chaque jour des choses qui ont du sens."

La vraie vie n'est pas faite avec ce qui va vous arriver. Votre vie est faite avec ce que vous allez faire de ce qui va vous arriver. — Philippe Gabilliet

"Débarrassez-vous de vos peurs et de votre vision négative des hommes et du monde. Réapprenez à rêver et à agir plutôt qu'à subir. Modifiez le regard que vous portez sur votre vie. Recommencez à croire en vous. Arrêtez de préférer la souffrance au changement."

10/04/2016

gron - Making JSON greppable!

Today, I friend of mine shared in our internal chat at iAdvize: gron, "Make JSON greppable!".

gron transforms JSON into discrete assignments to make it easier to grep for what you want and see the absolute 'path' to it. It eases the exploration of APIs that return large blobs of JSON but have terrible documentation.

Great idea right? When I first saw this, I wondered if it could be done with jq and sadly it seems it does not. Looking at gron Go source code was frightening. What a huge load of code for something that simple, there must be an easier way! And indeed, there was:

I just installed flat npm package an piped it through node and voila! For extra usability it could be wrapped I wrapped it into a gron npm package with support for valid JavaScript output, variable name escaping and so on.

Conclusion: it's often better (faster and safer) to stand on the shoulders of giants than to reinvent the wheel.

6/18/2016

Knockd for the impatient

If you don't know what Knockd is, take a look at Google :).

6/12/2016

[Fr] Single Point of Failure : votre site web indisponible à cause des scripts externes ?

Suite au partage de Single Point of Failure : votre site web indisponible à cause des scripts externes ? par un collègue @iAdvize, je souhaitais partager ici mon retour d'expérience sur cette problématique.

L'article soulève effectivement les différents problèmes posés par la dépendance sur des services tiers — que cela soit des indisponibilités ou la conséquence des blocages de scripts via ad-blockers — mais ne donne pas réellement de solutions pratiques.

Voici donc les solutions que j'ai pu mettre en place en production sur Redsmin et feu Bringr pour gérer le cas où une librairie tierce (par exemple Mixpanel ou Google Analytics) est indisponible ou bloquée. La solution se résume en deux mots: découplage et isolation.

Découplage: il est vital pour la disponibilité de l'application de communiquer avec les composants externes de manière découplée. L'application elle-même ne doit pas avoir une connaissance forte des composants externes et de ce qu'ils offrent car ils peuvent ne pas exister. Par exemple, l'objet global Mixpanel offre une méthode track pouvant être bloquée. De même, Google Analytics expose une fonction globale "ga" qui peut être indéfinie à cause d'un ad-blocker.

La solution pour assurer un découplage fort consiste par exemple à utiliser un message ou event-bus (e.g. un dispatcher ou event emitter) pour notifier depuis l'application les évènements intéressants à suivre. Pour rappel, l'intérêt de passer par un event-bus est que l'émetteur n'a aucune connaissance du ou des destinataires. Ainsi si le chargement de Mixpanel ou de Google Analytics n'a pu être effectué (à cause d'une indisponibilité ou d'un blocage d'un adblock-like) l'application émettra toujours ses évènements, il n'y aura aucun listener, l'indisponibilité des composants externes sera donc transparente pour l'application.

Isolation: nous encapsulons chaque composant externe dans un module indépendant qui est connecté avec le reste de l'application par le message ou event-bus (e.g. un event emitter). Certains ad-block peuvent laisser exister l'objet global (e.g. Mixpanel) mais supprime toutes ses méthodes (e.g. track), il est donc important d'encapsuler l'appel au composant tier (e.g. Mixpanel.track) dans un try/catch ce qui permet de ne pas bloquer l'exécution des listeners suivants à cause d'une exception.

Cette approche nous permet d'avoir Google Analytics, Mixpanel, UserVoice etc... en production sans nous soucier de la configuration du navigateur, des extensions de blocage ou des indisponibilités des composants externes.

5/29/2016

How to start a Jenkins slave inside Docker while still exposing docker-cli to jobs

Running a jenkins slave inside docker is more often than not good enough, you may want to run jenkins jobs that requires docker cli. I just release a docker image that does just that.

  • Go to Jenkins > manage > node management
  • Click Create a node
  • Check Permanent Agent
  • Set working directory to something like /data/jenkins-slave (if you specify something else, don't forget to also change the command below)
  • Save
  • Download slave-agent.jnlp, open it to retrieve your secret
  • Change the command below with the working directory you specified, your slave-agent URL and jenkins secret
docker run --rm \
-v /data/jenkins-slave:/data/jenkins-slave \
-v /var/run/docker.sock:/var/run/docker.sock \ 
--rm fgribreau/jenkins-slave:latest java -jar /app/agent.jar \ 
-jnlpUrl "http://YOUR_OWN_JENKINS.com/computer/SLAVE_NAME/slave-agent.jnlp" \
-secret "JENKINS_SECRET"
  • Run it
  • Done 👍

Why is this awesome?

Now that I can use docker directly from Jenkins jobs, it means I can setup cron jobs through jenkins just with configuration. Since one of docker sweet point is the ability to run CLI tools without any more setup that downloading an image, I now can setup nightly elastic/curator cron jobs just from Jenkins interface without the initial overhead of environnement setup.

I get fail build notifications directly from Hipchat (always be proactively alerted when something goes wrong!), traceability (who started the job) and of course I can reuse my Jenkins authorization setup for cron job as well. Thus no need to setup something like Rundeck when Jenkins already handles the feature set I want!

5/24/2016

How to easily debug ElasticSearch in production

I had to handle a 2 month old issue related to ElasticSearch. A feature I did not know from one of our large monolithic application at iAdvize was not working anymore. Instead of looking directly at thousand lines of code, the fastest way to resolve it was to gather informations related to the issue from outside the app. I had to answer this questions:

  • Is the ElasticSearch server remotely accessible from the frontend servers?
    • If it does not, the first thing to do is to bring back the connexion between the two.
  • Is the ElasticSearch request valid? 
    • If it does not, maybe:
      • we are doing the request on the wrong indice/alias? 
      • the query body is malformed?
  • Does it yield results?
    • If it does not
      • but we should get some, then either the query is invalid or elasticsearch have an issue
    • If it does
      • but from the app point of view we don't get anything
        • it's related to the app itself and we will have to look at the code

To verify the first 3 points in one shot, I started tcpdump on the ElasticSearch server using the command below:

tcpdump -A -nn -s 0 'tcp dst port 9200 and (((ip[2:2] - ((ip[0]&0xf)<<2 -="" tcp="" xf0="">>2)) != 0)' -i eth1

Note: don't forget to change the interface you want to listen on.

Looking at the result I discovered that the app was doing an elasticsearch query on a missing alias. That explains it! Once the alias created, the application feature was working again in production.

The final step was to setup jenkins (or rundeck) to run daily elastic/curator in order to refresh the alias otherwise :

docker run -it --rm bobrik/curator:3.5.1 --host "elasticsearch.domain.com" --port 80 alias --name plugin-xxx-log indices --prefix plugin-xxx-log- --prefix plugin-salesforce-log- --timestring %Y.%m --time-unit months

Now we will be proactively alerted if anything goes wrong. One less thing to worry about!

[Update] I now also use tcpflow to better display content (too bad it's not maintained anymore):

tcpdump -A -l -nn -s 0 'tcp port 9200' -i eth0 | tcpflow -c -e
5/06/2016

How to start a Jenkins slave inside Docker

First thing first: open Jenkins, go to Settings > Build Nodes > Add new node > Select Permanent Agent, then set the distant workspace directory (our HOST_JENKINS_SLAVE_HOME in the script above) and select Launch agent via Java Web Start.

Finally, login into your slave machine, put and edit the script above, run it and job done!

#!/usr/bin/env bash
JENKINS_ENDPOINT="http://my-jenkins.com"
SLAVE_SECRET="YOUR_SLAVE_SECRET_FROM_JENKINS_NODE_SETTINGS"

# where your slave working dir will be, it should be the same as the one you configured in Jenkins master settings
HOST_JENKINS_SLAVE_HOME="/data/jenkins-slave"

# download the slave.jar on the slave machine
curl -s "${JENKINS_ENDPOINT}/jnlpJars/slave.jar" > slave.jar

# run the slave inside a docker
# replace "-d" by "-it --rm" for debugging
docker run -d --name jenkins-slave -v ${PWD}:/app -v ${HOST_JENKINS_SLAVE_HOME}:${HOST_JENKINS_SLAVE_HOME} java:7 java -jar /app/slave.jar -jnlpUrl "${JENKINS_ENDPOINT}/computer/docker-slave/slave-agent.jnlp" -secret $SLAVE_SECRET
4/11/2016

How to setup Sysdig on Proxmox

First, you need to trust the Draios GPG key, configure the apt repository, and update the package list

curl -s https://s3.amazonaws.com/download.draios.com/DRAIOS-GPG-KEY.public | apt-key add -
curl -s -o /etc/apt/sources.list.d/draios.list http://download.draios.com/stable/deb/draios.list
apt-get update

Install sysdig:

apt-get install -y sysdig

Ok, now if you try start sysdig it won't work. Sysdig is not compatible with Proxmox outside of the box BUT we can make it work! First install the proxmox kernel (pve) (source):

aptitude update && aptitude install  pve-headers-`uname -r`

Then run these extra commands (see this github issue), don't forget to change "0.9.0" with the sysdig version you installed.

cd /var/lib/dkms/sysdig/0.9.0/source/
sed -i 's/for_each_process/for_each_process_all/g' *.[ch]
sed -i 's/while_each_thread/while_each_thread_all/g' *.[ch]
sed -i 's/do_each_thread/do_each_thread_all/g' *.[ch]

# build sysdig kernel module
dkms build -m sysdig -v 0.9.0
dkms install --force -m sysdig -v 0.9.0

Alright! You should now be able to run sysdig and csysdig on proxmox!

2/29/2016

Give a try and bench ScyllaDB (Cassandra-compatible C++ db, 10x faster) with two lines of docker

I'm currently very interested by the ScyllaDB project as it announce a database that is "fully compatible with Apache Cassandra at 10x the throughput and jaw dropping low latency". Scylla is coded in C++ (so no garbage collection) and the team behind it seems quite awesome, so why not after all.
If like me you would like to give a quick try to ScyllaDB, here is two docker lines that will start ScyllaDB and run a benchmark over it:


Please note that running ScyllaDB inside a virtual box VM on MacOSX is not the best idea to grasp what it's capable of, however here is the result I got:

[Update] A little precision by Pekka Enberg: "Please remember that the Docker image is not optimized so performance isn't all that great. That's because Scylla needs a filesystem that supports AIO/DIO properly and the only one to do that is XFS at the moment."

« »
 
 
Made with on a hot august night from an airplane the 19th of March 2017.