Just a random logo

JavaScript

Qu'est-ce que JavaScript ?

JavaScript est un composant du navigateur web (Mozilla Firefox, Microsoft Edge, Google Chrome). Son rôle est de rendre les pages interactives. Il est par exemple nécessaire aux applications web, qui sont des pages web qui requièrent un large degré d'interactivité pour être utilisables.

Sur cette page, JavaScript est utilisé pour replier et déplier les différentes sections, dans le but de faciliter la lecture. Cette section sur JavaScript n'est immédiatement visible que lorsque JavaScript est désactivé.

Pourquoi désactiver JavaScript ?

JavaScript est le composant le plus complexe et le plus versatile mis à disposition des pages web. Pour cette raison, de nombreux sites web en abusent. Cela peut provoquer des ralentissements lors du chargement (il faut normalement une fraction de seconde pour charger une large page web) ou de la lecture d'une page web (la lecture d'une page web devrait être parfaitement fluide). Désactiver JavaScript permet alors de charger les pages plus rapidement, du moment qu'elles ne requièrent pas d'interactivité (c'est le cas pour la plupart d'entre elles).

Un autre abus répandu de JavaScript est son utilisation afin de traquer un visiteur, de le piéger lors de sa navigation, ou bien d'infecter son ordinateur. Ces pratiques néfastes sont souvent propagées à travers les publicités qu'affichent la plupart des sites web. Désactiver JavaScript permet donc également d'augmenter sensiblement sa sécurité lors de l'utilisation du web.

Comment (dés)activer JavaScript ?

Certains navigateurs proposent encore de désactiver complètement JavaScript (instructions pour réactiver JavaScript dans Google Chrome). Cependant, cette approche est problématique car certains sites web sont mal conçus et cessent de fonctionner en l'absence de JavaScript. L'alternative est d'autoriser JavaScript pour certains sites seulement.

Pour cela, il est possible d'utiliser une extension pour Mozilla Firefox ou pour Google Chrome. Une fois l'extension installée, JavaScript est désactivé par défaut, et peut-être réactiver site par site.

Informatique

Cursus

J'ai commencé à m'intéresser à l'informatique en 2001, et me suis initié à la programmation en QBasic, avec l'aide d'un livre découvert à la bibliothèque municipale. Je me suis ensuite intéressé à HTML et CSS sur le site de Van Lancker Luc, ce qui me permit de rédiger mon premier site web, expliquant l'utilisation de l'invite de commande de Windows. J'appris ensuite le C, C++ (tutoriel de M@teo21) et OpenGL (tutoriel de Kayl) sur le Site du Zéro (aujourd'hui OpenClassrooms).

Après avoir essayé de nombreux langages, mes favoris sont maintenant le C et le Python. Je me sers exclusivement de GNU/Linux (Debian), mais mes antiques connaissances de Windows me servent occasionnellement à dépanner des proches ou collègues. Mon éditeur est Vim. Je préfère vanilla.js pour le JavaScript, et pratiquer l'amélioration progressive.

Projets en ligne

Airsick est un manuel (en cours de rédaction) d'astrophysique ciblant les néophytes. Le projet est organisé autour du jeu Kerbal Space Program et cherche à être à la fois accessible et rigoureux.

readline.js est un projet en JavaScript dont le but est de fournir un TTY dans le navigateur. Le but à terme est de s'en servir dans un projet séparé pour permettre l'exécution de code Python, afin de faciliter l'accès à Spyce (voir ci-dessous). Cela sera aidé par Brython, et le mini-projet unicode.js, qui est un port des fonctions Python de manipulation de chaînes de caractères en Unicode.

Projets hors ligne

Mes autres projets publics sont accessibles sur Github. En particulier:

  • spyce regroupe un outil (ou bibliothèque) facilitant les calculs d'astrophysique (dans le modèles des coniques), et une simulation d'un système orbital ; il inclut les données orbitales du système solaire, et celles de Kerbal Space Program
  • rainbow est un utilitaire de génération et de recherche dans les tables arc-en-ciel, une technique permettant d'utiliser efficacement du précalcul lors de l'inversion de hachés par force brute
  • voronoi est une implantation de l'algorithme de Lloyd-Max, utilisé lors de la génération de cartes dans le projet de jeu vendetta
  • socks est un utilitaire permettant de chaîner les serveurs mandataires de type SOCKS, et pouvant être utilisé d'une manière similaire à netcat (les données transitant par la chaîne de serveurs mandataires de type SOCKS)

Mathématiques

Cursus

Les mathématiques sont ma matière scolaire préférée depuis mon éducation primaire. Dans le secondaire, je m'oriente donc vers la filière scientifique, avec spécialité en mathématiques. Dans le supérieur, cela me permet de rejoindre les CPGE, en MPSI puis MP.

Après les concours, j'intègre l'ENS de Lyon en informatique fondamentale. Liste non exhaustive des cours suivis :

  • Architecture système et réseaux
  • Calcul formel
  • Calcul parallèle
  • Cryptographie
  • Géométrie discrète
  • Logique
  • Probabilités
  • Systèmes distribués
  • Théorie de l'arithmétique flottante
  • Théorie des langages (compilation)

Cryptographie

Je m'intéresse plus particulièrement à la cryptographie. J'effectue plusieurs stages autour du sujet :

  • En 2012, j'implante de manière optimisée des fonctions de hachage de la famille FSB et compare leur performance et sécurité.
  • En 2013, j'étudie le problème du décodage de syndrome, sur lequel reposent les fonctions de hachage implantées lors de mon précédent stage
  • En 2014, je travaille sur un protocole basé sur le calcul multipartite sécurisé
  • Durant l'année scolaire 2014–2015, j'effectue deux stages successifs, autour de la cryptographie et de la sécurité informatique.

À la suite de ces stages effectués durant mon cursus à l'ENS de Lyon, je débute une thèse autour de l'utilisation de la cryptographie dans les réseaux pair-à-pair, et en particulier en conjonction avec la « blockchain ».

Finance

Marchés financiers

J'ai commencé à me documenter sur le domaine de la finance au cours de l'année 2015. L'objectif est double : mieux comprendre la finance personnelle, qui se traduit par des résultats directs (mais pas immédiats), et mieux comprendre les marchés financiers, qui aident à coordonner le monde économique.

Dans les deux cas, il est important de comprendre l'utilité des actions, et les raisonnements qui ont mené à la bourse moderne. Après que je me suis documenté par Internet (Wikipédia, articles de journal, billets de blogs, et livres électroniques), j'ai compilé une page de résumé afin de structurer ces concepts dans un fil cohérent.

Finance personnelle

Fréquentant principalement le web anglophone, je m'intéresse ensuite à la finance personnelle telle qu'envisagée par les citoyens des États-Unis. Pour cela, je me suis grandement aidé du blog de Mr. Money Mustache, et les sousreddits /r/personnalfinance et /r/financialindependence. Les communautés de l'indépendance financière en général me servent également me sources d'information.

J'adapte les concepts au cas de la France en m'aidant de Service-Public.fr et du sousreddit /r/vosfinances. Ma compréhension de la situation est résumée sur une autre page.

Ma stratégie

Étant indifférent à la consommation outrancière, et à l'idée de rivaliser avec le voisin, je n'ai jamais réellement eu besoin d'un budget. Cependant, j'ai commencé à traquer mes dépenses en début 2017, rétroactivement depuis janvier 2012, afin de mieux suivre ma propre évolution financière.

Puisque je suis jeune, j'ai opté pour des investissements principalement en actions, pars le biais d'un PEA. À défaut de titre obligataire, un taux avantageux du PEL me permet de réduire la volatilité des retours. Mon portefeuille est composé de :

Remarques : j'utilise Amundi comme émetteur des ETF car un accord avec ma banque de courtage réduit les frais de garde. Ces ETF sont synthétiques, donc soumis au risque de défaut d'Amundi lui-même. J'envisage de mettre mon portefeuille au nominatif (gratuit) afin de limiter le risque lié à l'utilisation de mes titres dans des contrats dérivés vendus à d'autres clients.

Astrodynamique

Kerbal Space Program

J'ai commencé à me pencher sur l'astrodynamique en 2014 à travers le jeu Kerbal Space Program. Il s'agit d'une simulation où le joueur conçoit ses fusées, puis les fait décoller et les pilote à sa guise. La simulation par coniques juxtaposées (patched conics) consiste à supposer que la fusée n'est soumise à l'attraction gravitationnelle que d'un corps à la fois. Elle est suffisamment réaliste pour que la plupart des missions réelles (par exemple, un réaterrissage par SpaceX) puissent être reproduites dans le jeu, mais suffisamment simple pour permettre une prise en main du jeu très rapide.

Airsick

Airsick est un projet personnel sous la forme d'un site web ou d'un document PDF. Le but est d'expliquer les fondamentaux de l'astrodynamique de manière accessible, sous la forme d'un manuel avancé pour Kerbal Space Program.

Les explications sont rédigées et structurées en Markdown ; LaTeX est utilisé pour rédiger les formules et dessiner certaines figures. Lors de la génération du document, Pandoc convertit le Markdown en LaTeX ; le résultat est ensuite compilé avec pdflatex pour former un fichier PDF. Lors de la génération du site web, pandoc convertit le Markdown en HTML et le LaTeX en MathML. Pour les navigateurs qui ne supportent pas MathML (Opera, Microsoft Edge, Google Chrome, Internet Explorer), la bibliothèque JavaScript MathJax assure la compatibilité.

Spyce

Spyce est un projet personnel sous la forme de code Python. Il se présente essentiellement sous la forme d'une bibliothèque permettant d'effectuer facilement des calculs d'astrodynamique (temps de révolution, énergie requise pour un transfert), et intègre les données connues pour les planètes, lunes et planètes naines du système solaire, ainsi que les données de Kerbal Space Program.

En complément, une application utilisant OpenGL permet de visualiser et d'explorer le système solaire (ou celui de Kerbal Space Program).

Électronique

Électronique

Dans la continuité de ma fascination pour l'informatique, l'électricité et électronique font également partie de mes centres d'intérêts. Mon niveau dans ce domaine est à ce jour encore très limité. Les cours de physique en lycée m'ont permis de comprendre les circuits RC, RL et RLC, à partir desquels j'ai commencé à construire une intution pour des circuits plus élaborés de traitement du signal.

J'expérimente actuellement principalement avec des circuits générateurs de signaux à base de résistances et de condensateurs, afin d'améliorer ma compréhension de leur fonctionnement.

Informatique embarquée

La manipulation et l'observation de circuits électroniques sont grandement facilitée par l'utilisation d'un circuit Arduino. En conséquence, je me suis également documenté sur le fonctionnement des microcontrôleurs Atmel.

Mon utilisation la plus aboutie consiste pour le moment en l'utilisation des sondes intégrées à une Arduino Leonardo pour la réalisation d'un oscilloscope de fortune. Le défi d'obtenir de résultats utiles avec des moyens limités m'a mené à mieux comprendre le fonctionnement du microcontrôleur, afin d'en tirer de meilleures performances. Le code embarqué correspond néanmoins à seulement quelques lignes de code C.

Radio

Mes investigations élémentaires en électronique et en traitement analogique du signal ont éveillé ma curiosité pour les signaux radioélectriques et la transmission de l'information par les airs. C'est un domaine que j'ai l'intention d'explorer dans le futur.

Japonais

Ressources

Je pratique le japonais en lisant les articles de NHK News Web EASY, qui intègre la lecture de kanjis (furigana). L'extension pour Rikaichan (Mozilla Firefox), ou Rikaikun (Google Chrome) affiche les furigana sur n'importe quel site web.

Le dictionnaire en ligne Jisho est très utile, que ce soit pour la traduction des mots, ou pour l'écriture de kanjis. Pour retrouver un kanji depuis son écriture, je préfère néanmoins la reconnaissance par dessin manuel à la recherche par clé. Ce dernier domaine contient également de nombreuses informations sur la grammaire japonaise.

Enfin, il existe également un site pour décomposer automatiquement des phrases, et de nombreux sous-titres en japonais.

Politique publique

Urbanisme

L'observation de diverses villes m'a conduit à me questionner sur les décisions d'aménagement du territoire, et en particulier du rôle des transports individuels (automobiles, deux-roues), et publics (bus, trains).

Il me semble en effet qu'il est donné une place disproportionnée aux voitures automobiles individuelles, en comparaison aux cycles et transports publics. La cause semble en être une prise de décision au niveau individuel qui mène à une tragédie des biens communs, où chaque personne souhaite améliorer marginalement son confort de transport (plus de routes, plus de voies, plus de places de stationnement), mais dont le résultat global est négatif (plus de bouchons, plus de distance, plus de pollution).

Sur le sujet, je consulte régulièrement les blogs de Urban kchoze et de Andrew Alexander Price. En particulier, « Places and Non-Places in Cities » introduit le concept d'« endroit / non-endroit » et « Setbacks, sidewalks and on-street parking: pedestrian space in cities montre les effets du gaspillage de l'espace urbain.

Système électoral

Le système électoral actuel conduit à des comportement en contradiction avec le but recherché. Par exemple, le scrutin à deux tours conduit les électeurs à voter préférentiellement pour les partis majoritaires, par peur de « gaspiller » leur vote pour un candidat qui a de faibles chances d'être élu. Le scrutin transférable est une alternative qui permet de mieux prendre en compte les choix des électeurs et d'éviter l'apparition de ce type de stratégie.

En bref, il s'agit de simuler un scrutin avec autant de tours que de candidats. À chaque tour, le candidat avec le moins de votes est éliminé. Ces votes sont alors transférés aux autres candidats. Pour ne pas avoir à demander aux électeurs de se présenter aux urnes à chaque fois, il leur est simplement demandé de classer les candidats par ordre de préférence sur leur bulletin.

Un autre aspect est l'effet du découpage électoral (gerrymandering), qui peut influencer le résultat d'élections législatives. La solution la plus simple face à ces pratiques est une élection purement proportionnelle (sans découpage des votes), ou le choix d'une méthode de découpage systématique et objective.

Sécurité sociale

La sécurité sociale est une fonction de l'État-providence, qui aide à lisser les inégalités présentes dans la population. Les conséquences avantageuses en sont stratégiques (meilleure stabilité de la société), économiques (plus grande proportion de la population active est en mesure de travailler) et sanitaires (les épidémies peuvent être contrôlées plus facilement).

La partie la plus importante de la sécurité sociale est la branche vieillesse, c'est-à-dire le système des retraites. Celui-ci assure le revenu des personnes au-delà d'un certain âge. Le système classique est dit « par capitalisation » : chaque personne économise durant sa carrière, puis cesse de travailler lorsqu'elle décide que le capital constitué est suffisant pour le reste de ses jours. C'est le principe du PERCO en France. Au début du XXe siècle, la Première Guerre mondiale et la Grande Dépression restreignent fortement la capitalisation. Pour éviter une crise sociale, la France bascule sur une retraite par répartition : les nouveau travailleurs financeront les anciens, qui n'ont pas pu capitaliser. En fait, c'est plus compliqué.

D'un point de vue économique, l'existence d'un salaire minimum implique une inefficience dans le marché du travail et de l'emploi (emplois manquants). D'un point de vue social, la nécessité absolue d'un certain revenu pour la survie biaise les négociations de salaire. Une alternative au salaire minimum serait donc un revenu de base, qui permettrait de retirer ce biais, et pourrait également lisser et simplifier d'autres protections sociales (RSA, assurance chômage, aide au logement, allocations familiales, pensions de retraite). Le versement systématique de ce revenu permettrait également de ne pas décourager l'accès à l'emploi par une réduction des aides.

Pollution

La pollution de l'air a des conséquences immédiates, avec plusieurs dizaines de milliers à plusieurs millions de morts dues aux particules fines et autres agents nocifs. À plus long terme, les émissions de divers gaz dans l'atmosphère est venu compléter l'effet de serre naturel, causant globalement un réchauffement climatique significatif, et localement diverses variations (gel, désertifications, cyclones). Avec l'augmentation progressive des températures, le risque d'un relargage du méthane de l'Arctique augmente et, avec lui, le risque d'une augmentation radicale des températures. Ces variations sont relativement mineures d'un point de vue archéologique, mais menacent le confort de vie des humains (migrations de masse, famines et guerres, principalement).

La pollution peut également être informationnelle. Suivant le loi de Sturgeon, la plupart des informations transmises par journaux, radio, télévision ou Internet sont inutiles, voire incorrectes. Il semble alors une bonne idée de couper totalement les médias passifs (journaux, radio, télévision), et de contrôler strictement les sources informations restantes. Pour Internet, il peut s'agit d'ignorer les usines à mèmes, et la plupart des journaux en ligne, trier sévèrement les blogs, et installer un bloqueur de publicités. Cependant, il peut aussi s'agir de décisions communes, telles que l'interdiction des panneaux publicitaires à Grenoble.

Enfin, une autre forme de pollution moins évidente est lumineuse. La nuit, par ciel dégagé, des milliers d'étoiles sont normalement visibles à l'œil nu, et la Voie Lactée peut facilement être distinguée. Cependant, l'éclairage public et les affiches publicitaires éclairent le ciel des villes en diminue drastiquement la visibilité des astres. Heureusement, depuis le Grenelle Environnement de 2009, des mesures législatives ont commencées à être mises en place pour limiter l'effet des sources de pollution lumineuse.