[Raw Nerve 1] Prendre du recul

En début d’année, je publiais une traduction du quatrième article de la série Raw Nerve d’Aaron Swartz. Quelques mois plus tard, voici maintenant la traduction de l’article d’introduction de cette série.

Prendre du recul

Cet article introduit une nouvelle série Pensée Sensible.

La majeure partie de ma vie, j’ai considéré mon travail comme devoir faire les bons choix. J’étais le décideur, chargé de faire le meilleur choix parmi les options que la vie présentait. Je pouvais m’amuser avec cet ami ou celui-là, aller dans cette université ou celle-là, profite de cette offre d’emploi ou cette autre.

J’agissais de même avec mes problèmes. Si quelqu’un m’ennuyait, je choisissais de l’éviter. Si quelque chose m’embêtait, je choisissais de ne plus y penser. Je gardais généralement les yeux sur ce qui se trouvait devant moi.

Mais récemment, j’ai commencé à apprécier les vertus de la prise de recul et j’ai essayé d’avoir une vue d’ensemble. Au lieu de simplement choisir la meilleure option, j’essaie d’en inventer de nouvelles. Au lieu de simplement éviter les choses qui m’embêtent, je devais commencer à faire des projets pour y remédier.

Cela me procure un sentiment étrange. J’ai l’impression d’avoir davantage de contrôle sur ma vie, d’être davantage capable de surmonter mes problèmes. J’ai le sentiment de dessiner ma propre destinée, plutôt que de suivre un chemin. C’est difficile à expliquer, mais c’est comme avoir l’impression de devenir plus fort – pas physiquement, mais psychologiquement. C’est une sensation agréable. J’ai l’impression de grandir en tant qu’être humain.

J’ai donc commencé à me demander: y-a-t-il d’autres techniques semblables? J’ai réalisé que je n’ai jamais arrêté de me demander si je pouvais vivre mieux améliorer ma vie. Après tout, dans ma journée de travail, je suis constamment à la recherche de moyen d’apprendre et de mûrir – lisant les derniers livres et articles dans le domaine, parlant aux autres personnes avec un travail similaire et écoutant ce qui avait fonctionné pour eux. Pourquoi ne fais-je pas la même chose pour la vie?

Cela s’est avéré étonnamment difficile. Il n’y a pas de mode d’emploi pour la vie et les conseils que donnent les parents sont confus. La télévision et les journaux n’offrent rien de plus que quelques « Trucs et astuces » et je n’ai jamais vu un cours à ce sujet à l’école. Il y a bien sûr des livres et des cours de développement personnel, mais il semble trop pratique: il y a généralement peu sur l’analyse de problèmes compliqués et beaucoup sur se stimuler pour avoir la pêche. Et il y a une philosophie sur La Belle Vie, mais cela semple aller trop loin dans l’autre direction: il y a très peu de choses là-dedans pouvant être appliquées en pratique.

Les blogs sont un mélange bizarre. Il y a des blogs sur les « hacks de la vie », qui sont pleins de gadgets et de bidules  qui semblent causer plus de problèmes qu’ils n’en résolvent.  Il y a les  blogs anti-procrastination, où l’auteur a un flux constant d’ illuminations qui semblent toutes se résumer à « mettre de côté les distractions et faire ce qu’il y a à faire ». Et il y a les charlatans, qui vous disent que  tous vos rêves les plus fous peuvent devenir réalité si vous suivez  leurs conseils brevetés.

Donc, à la place d’un endroit évident où chercher, j’ai seulement trouvé des petits trucs dans toutes sortes d’endroits étranges: expériences psychologiques, livres sur les affaires, philosophie, développement personnel, mathématiques, et mes amis. Mais comme il n’y a pas de communauté, il est difficile d’en discuter avec quelqu’un (essayer de persuader d’autres personnes de s’intéresser à ce à quoi vous vous intéressez est imprudent).

J’ai donc pensé que j’allais commencer à en parler ici et voir si quelqu’un s’en soucie. Peut-être que ça va donner quelque chose, mais même si ce n’est pas le cas, au moins je clarifierai mes pensées et avec un peu de chance recevrai quelques bonnes suggestions pour une lecture plus poussée.

Je n’ai pas de mot pour ce dont je parle, ni même une idée précise de ce que c’est. J’ai l’espoir que cela va devenir plus clair avec la pratique. Mais en attendant, qu’est-ce qui vous aide à améliorer votre vie? -votre réflexion, vos décisions, votre travail, votre intelligence. Que ce soit un gadget, une technique, un livre ou une personne, je serais ravi que vous partagiez ce que vous avez trouvé de plus utile dans les commentaires.

Article suivant: Croire que vous pouvez changer

18 Août 2012

Article original : http://www.aaronsw.com/weblog/stepback

Dubitatif

C’est le sentiment qui ressort après un petit test de Diaspora*.

J’ai installé une instance il y a quelques jours, un pod comme on dit. Côté wiki et documentation d’installation, rien à redire, une fois que l’on a la bonne configuration apache, tout fonctionne comme sur des roulettes. Diaspora* fait mieux que Movim sur ce point et j’arrêterai la comparaison ici pour me concentrer sur Diaspora*.

Le projet me plaît bien, l’interface est agréable… mais alors qu’est-ce donc qui assombrit le tableau? La découverte d’autres utilisateurs! Si vous connaissez quelqu’un présent sur un autre pod et êtes en possession de son identifiant (de la forme identifiant@autre-pod.org), aucun problème, vous pourrez ajouter cette personne à votre liste de contact et voir ses messages dans votre flux.

En revanche, impossible de suivre une personne postant des tags #photography sur un autre pod que le votre, sauf à priori par partage dans son flux de la part d’un contact présent sur le pod en question. Dans le cas d’un pod avec une faible population, les possibilités de découvrir une autre personne avec laquelle on aurait des intérêts communs semblent plus que jamais limitées.

Un dilemme se présente alors à l’utilisateur technophile. Commencer ou continuer à héberger un pod avec peu d’utilisateurs et ainsi, contribuer à une vision décentralisée du web, où chaque petite instance fait partie d’un ensemble plus grand. Ou céder à la facilité et rejoindre un pod avec une communauté plus grande, ou disposant de plus de visibilité donc attirant plus de monde. On pourra alors partager plus simplement ses dernières prises de vues, pensées,  opinions politiques, recettes de grand-mère et j’en passe. On repasserait alors à un système centralisé. Certes moins que les silos de données comme Facebook et Twitter.

Ce « problème » fait d’ailleurs l’objet d’une issue Github. A ce sujet, je vous conseille donc la lecture de cet article de Flaburgan qui résume bien le pourquoi du comment.

Sur ces considérations, j’ai donc pris la décision de tenter le coup et de continuer à faire fonctionner une instance de Diaspora* sur ce serveur. J’affinerai encore la configuration dans les semaines à venir et nous verrons bien ce que cela donnera. Alors, à bientôt sur Diaspora*!

[Apache] Redirection vers https

Exemple de redirection générale de http vers https avec Apache et mod_rewrite:

<VirtualHost *:80>
  RewriteEngine On
  RewriteCond %{SERVER_PORT} ^80$
  RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
</VirtualHost>
<VirtualHost *:443>
  # Configuration!
</VirtualHost>

Cette manière de rediriger me semble particulièrement intéressante dans le cas où l’on a besoin de déployer simplement une configuration Apache valable pour différents environnements ayant des noms de domaine différents. On évite ainsi d’avoir à définir explicitement l’url vers laquelle on redirige avec :

RedirectPermanent / https://demo.monprojet.org/

Avec la redirection par réécriture d’url, nous allons pouvoir déployer indifféremment le même fichier de configuration Apache sur les machines de pré-production, démo et test par exemple.

Le seul point qui pourrait poser problème concerne le certificat. Soit nous disposons d’un certificat wildcard valable sur tous les sous-domaines et dans ce cas là, cela devrait rester relativement simple. Dans le cas contraire, nous pourrions envisager de stocker les fichiers de certificats au même endroit et avec le même nom sur chaque machine.

  SSLEngine On
  SSLCertificateKeyFile /path/to/projet.key
  SSLCertificateFile /path/to/projet-cert.pem

[Java] Parse json file

Back in may 2013, I was working on a school project concerning mobile networks. So this is what I wrote one year ago while I was fighting with handover algorithm and research papers.

I’m currently building a project to simulate handover decision process in GSM/UMTS. To be able to perform the simulation, I need some parameters like mobile gain, loss, coordinates as well as informations about antennas. I’ve chose to provide these parameters to the program using a json file. So I needed to find a way to get informations from the file and parse the json in java.

I used a JSON-Java library to initialized data. Here is the code needed to parse the json belove. The jsonStr variable contains our json file as a string.

JSONObject obj = new JSONObject(jsonStr);
JSONObject objMobile = obj.getJSONObject("mobile");
JSONArray arrayPath = objMobile.getJSONArray("path");

cro = obj.getDouble("cro");
rxLevAccMin = obj.getDouble("rxlevaccmin");
msTxPwrMaxCCH = obj.getDouble("msTxPwrMaxCCH");

//Initialize Mobile Station
for(int i = 0; i < arrayPath.length(); ++i) {
 JSONObject el = arrayPath.getJSONObject(i);
 journey.add(new Coordinate(el.getInt("x"), el.getInt("y")) );
}
mobileStation = new Mobile(objMobile.getDouble("gain"),
 objMobile.getDouble("loss"), objMobile.getDouble("classPower"),
 journey, objMobile.getBoolean("voice"), 6, -102, journey.get(0));

//Initialize Antennas
JSONArray arrayAntenna = obj.getJSONArray("antenna");
for(int j = 0; j < arrayAntenna.length(); ++j) {
 JSONObject el = arrayAntenna.getJSONObject(j);
 Coordinate position = new Coordinate(el.getInt("x"), el.getInt("y"));
 antennaList.add(new Antenna(el.getInt("type"), position, 
 el.getDouble("gain"), el.getDouble("loss"), el.getDouble("power"),
 el.getDouble("frequency"), el.getDouble("coef")));
}

Once our json string has been parsed to a json object, we can extract data using:

  • getJSONObject
  • getJSONArray
  • getBoolean
  • getInt
  • getDouble

Here is the json file:

{
  "rxlevaccmin": -96, 
  "cro": 0.0, 
  "msTxPwrMaxCCH": 33, 
  "mobile": { 
    "gain": 0, "loss": 0, 
    "classPower": 33, 
    "voice": false, 
    "path": [ 
      {"x": 11, "y": 0}, 
      {"x": 14, "y": 0}, 
      {"x": 16, "y": 0}, 
      {"x": 18, "y": 0}, 
      {"x": 20, "y": 0}, 
      {"x": 24, "y": 0}, 
      {"x": 25, "y": 0}, 
      {"x": 26, "y": 0} 
    ] 
  },
  "antenna": [ 
    { 
      "type": 0, 
      "x": 0, "y": 0, 
      "power": 20, 
      "gain": 0, "loss": 0, 
      "frequency": 900, 
      "coef": 1 
    }, 
    { 
      "type": 1, 
      "x": 30, "y": 0, 
      "power": 10, 
      "gain": 0, "loss": 0, 
      "frequency": 900, 
      "coef": 1 
    }, 
    {
      "type": 0, 
      "x": 20, "y": 5, 
      "power": 12, 
      "gain": 0, "loss": 0, 
      "frequency": 900, 
      "coef": 1 
    }
  ]
}

It’s funny to compare this with the one-line-way to parse json in Node.Js:

var jsonObject = require('jsonFileName');
var classPower =jsonObject.mobile.classPower

Organiser un Code Camp

En décembre 2013, j’ai eu l’occasion de m’occuper de l’organisation d’un Code Camp, petit retour d’expérience.

Pour celles et ceux qui n’auraient aucune idée de ce qui se cache dernière l’appellation « Code Camp », il est temps de donner quelques précisions. Un Code Camp, c’est une nuit entière pour écrire du code et faire avancer ses projets. Dans mon cas, celui-ci n’était pas seulement destiné aux informaticiens, mais à tous les étudiants désireux de travailler sur leurs projets. Ce moment permet souvent à un groupe de projet de se réunir au complet et d’être productif (au moins jusqu’à 2h du matin).

Au niveau du matériel nécessaire, il faut pour faire un bon Code Camp:

  • de l’électricité
  • des multiprises
  • un accès réseau
  • du café
  • des tables et des chaises
  • des participants
  • des pizzas

J’ai eu la chance de pouvoir emprunter une grande partie du matériel à l’école et à l’association des étudiants. Quelques points à bien vérifier avant: la taille des tables pour bien estimer le nombre nécessaire; que le courant a bien été activé dans les prises comme promis. C’est deux points permettent déjà d’éviter de mauvaises surprises. Un accès réseau est également incontournable pour permettre à tous d’accéder aux documentations en ligne.

Prévoir un percolateur pour pouvoir faire du café en quantité. Une commande de pizza est faite en début de soirée, néanmoins, le temps de préparation et de livraison est toujours extrêmement long (une cinquantaine de pizzas à faire tout de même). De ce côté là, je pense qu’il serait bon d’organiser une pré-commande quelques jours avant. Cela permettrait à la pizzeria de mieux se préparer et aux participants d’être servi plus tôt.

Il faut également avoir une petite équipe de personne pour aider à installer avant le début de l’événement, puis à désinstaller le lendemain matin.

Pour finir, organiser un Code Camp n’est pas spécialement difficile, en revanche en tant qu’organisateur, il ne faut pas espérer travailler sur son projet avant que les pizzas soient arrivées.