Mensuel Shaarli

Tous les liens d'un mois sur une page.

June, 2019

» [CENSURE] Révéler la torture de Julian Assange, par Nils Melzer, rapporteur spécial de l’ONU sur la torture
thumbnail

Je cite une partie :

Même ainsi, vous direz vous peut-être, pourquoi dépenser autant d’énergie pour Assange, alors que d’innombrables autres personnes sont torturées dans le monde entier ? C’est parce qu’il ne s’agit pas seulement de protéger Assange, mais d’empêcher un précédent susceptible de sceller le sort de la Démocratie occidentale. Quand pour la première fois, dire la vérité sera devenu un crime, alors que les puissants jouissent de l’impunité, il sera ensuite trop tard pour corriger le tir. Notre voix aura capitulé face à la censure et notre destin face à la tyrannie sans limites.

Nos Démocraties ont besoin d'aide, il faut participer à diffuser cet article s'il vous plaît ! #Streisand

Swift MT Message Parser Demo
thumbnail

Plein d'exemples de fichiers SWIFT (format MT101 à MT950, MX et SEPA).

Pour @Animal et @Doudou

J'en note quelques uns ici :

Format MT101 :

{1:F01SAESVAV0AXXX0466020121}{2:O1011538070522LRLRXXXX4A0700005910650705221739N}{3:{108:MT101 001 OF 019}}{4:
:20:00028
:28D:1/1
:50H:/VTB.2003.02
19Apr2002
:30:020419
:21:x
:32B:USD1,
:50L:x
:59:/x
x
:71A:OUR
-}{5:{MAC:00000000}{CHK:24857F4599E7}{TNG:}}

Format MT103 :

{1:F01AAAAGRA0AXXX0057000289}{2:O1030919010321BBBBGRA0AXXX00570001710103210920N}{3:{108:MT103 003 OF 045}{121:c8b66b47-2bd9-48fe-be90-93c2096f27d2}}{4:
:20:5387354
:23B:CRED
:23E:PHOB/20.527.19.60
:32A:000526USD1101,50
:33B:USD1121,50
:50K:FRANZ HOLZAPFEL GMBH
VIENNA
:52A:BKAUATWW
:59:723491524
C. KLEIN
BLOEMENGRACHT 15
AMSTERDAM
:71A:SHA
:71F:USD10,
:71F:USD10,
:72:/INS/CHASUS33
-}{5:{MAC:75D138E4}{CHK:DE1B0D71FA96}}

Format MT104 :

{1:F01COPZBEB0AXXX0377002075}{2:O1041453110804LRLRXXXX4A1100009036981108041654N}{3:{108:MT104 002 OF 033}}{4:
:20:00130
:23E:AUTH
:30:001118
:52C:/34x
:21:16x
:32B:USD1,34
:50K:/34x
x
:59:/34x
35x
:33B:BEF2,
:71F:CAD1,34
:71G:USD1,34
:36:1,3456789012
:36:1,3456789012
:21:16x
:32B:USD1,34
:50K:/34x
x
:59:/34x
35x
:33B:BEF2,
:71F:CAD1,34
:71G:USD1,34
:36:1,3456789012
:36:1,3456789012
:21:16x
:32B:USD1,34
:50K:/34x
x
:59:/34x
35x
:33B:BEF2,
:71F:CAD1,34
:71G:USD1,34
:36:1,3456789012
:36:1,3456789012
:32B:USD3,34
:19:4,02
:71F:CAD1,34
:71G:USD1,34
-}{5:{MAC:00000000}{CHK:9F3A5F4F2532}{TNG:}}

Format MT202 :

{1:F01COPZBEB0AXXX0377002089}{2:O2021454110804LRLRXXXX4A1100009037121108041654N}{3:{108:MT103 003 OF 045}{121:c8b66b47-2bd9-48fe-be90-93c2096f27d2}}{4:
:20:00345
:21:123456/DEV
:13C:/A234567Z/1359+0100
:32A:071231EUR9980,
:58A:TESTSEVT
-}{5:{MAC:00000000}{CHK:7E0FAA1CFBE1}{TNG:}}

Format MT509 :

{1:F01COPZBEB0AXXX0377001940}{2:O5091449110804LRLRXXXX4A1100009035631108041649U}{3:{108:MT509 001 OF 004}}{4:
:16R:ADDINFO
:95P::MEOR//TESTUSVT
:95P::MERE//TESTUSVT
:16S:ADDINFO
-}{5:{MAC:00000000}{CHK:1A8015CB9899}{TNG:}}

Format MT900 :

{1:F01SIIBUS30AXXX0481250565}{2:O9001331080620LPLPXXXX4A0800001263100806200933N}{3:{108:MT900 005 OF 012}}{4:
:20:02629
:21:123456/DEV
:25:6-9412771
:32A:040229USD112,9
-}{5:{CHK:588D66867002}{TNG:}}

Format MT910 :

{1:F01SIIBUS30AXXX0481250566}{2:O9101331080620LPLPXXXX4A0800001263110806200933N}{3:{108:MT910 009 OF 034}}{4:
:20:02645
:21:123456/DEV
:25:6-9412771
:32A:000103USD112,
:52A:DNBANOKK
-}{5:{CHK:1477E5825C43}{TNG:}}

Format MT940 :

{1:F01COPZBEB0AXXX0377002460}{2:O9401506110804LRLRXXXX4A1100009040831108041707N}{3:{108:MT940 003 OF 058}}{4:
:20:02618
:21:123456/DEV
:25:6-9412771
:28C:00102
:60F:C000103USD672,
:62F:C000103USD987,
-}{5:{CHK:592A3DB2CA5B}{TNG:}}

Format MT942 :

{1:F01SIIBUS30AXXX0481250571}{2:O9421332080620LPLPXXXX4A0800001263160806200933N}{3:{108:MT942 005 OF 015}}{4:
:20:02761
:25:6-9412771
:28C:1/1
:34F:USD123,
:13D:0001032359+0500
:90D:75475USD123,
:90C:75475USD123,
-}{5:{CHK:F7C4F89AF66D}{TNG:}}

Format MT950 :

{1:F01SAESVAV0AXXX0466020565}{2:O9501552070522LRLRXXXX4A0700005915090705221752N}{3:{108:MT950 007 OF 030}}{4:
:20:02711
:25:210057665066
:28C:00196
:60F:C000103HKD672,
:61:000103D642,NRTI9999
CHECK NO. 57650
:62F:C000103HKD30,
-}{5:{CHK:22ED16B18106}{TNG:}}

Format MX CAMT026.001 :

<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.026.001.04">
<UblToApply>
<Assgnmt>
<Id>UTACOMPAY12345090323001</Id>
<Assgnr>
<Pty>
<Id>
<OrgId>
<AnyBIC>CUSBGB2L</AnyBIC>
</OrgId>
</Id>
</Pty>
</Assgnr>
<Assgne>
<Agt>
<FinInstnId>
<BICFI>MMMMGB2L</BICFI>
</FinInstnId>
</Agt>
</Assgne>
<CreDtTm>2012-03-24T08:35:30</CreDtTm>
</Assgnmt>
<Case>
<Id>CUSBGB2L-20120323-001</Id>
<Cretr>
<Pty>
<Id>
<OrgId>
<AnyBIC>CUSBGB2L</AnyBIC>
</OrgId>
</Id>
</Pty>
</Cretr>
</Case>
<Undrlyg>
<Initn>
<OrgnlInstrId>COMPAY12345090323001</OrgnlInstrId>
<OrgnlInstdAmt Ccy="GBP">52317.48</OrgnlInstdAmt>
<ReqdExctnDt>2012-03-23</ReqdExctnDt>
</Initn>
</Undrlyg>
<Justfn>
<AnyInf>true</AnyInf>
</Justfn>
</UblToApply>
</Document>

Format MX PACS008.001 :

<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pacs.008.001.04" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FIToFICstmrCdtTrf>
<GrpHdr>
<MsgId>BBBB/120928-CCT/JPY/123</MsgId>
<CreDtTm>2012-09-28T16:00:00</CreDtTm>
<NbOfTxs>1</NbOfTxs>
<SttlmInf>
<SttlmMtd>COVE</SttlmMtd>
<InstgRmbrsmntAgt>
<FinInstnId>
<BICFI>CCCCJPJT</BICFI>
</FinInstnId>
</InstgRmbrsmntAgt>
<InstdRmbrsmntAgt>
<FinInstnId>
<BICFI>AAAAJPJT</BICFI>
</FinInstnId>
</InstdRmbrsmntAgt>
</SttlmInf>
<InstgAgt>
<FinInstnId>
<BICFI>BBBBUS33</BICFI>
</FinInstnId>
</InstgAgt>
<InstdAgt>
<FinInstnId>
<BICFI>AAAAGB2L</BICFI>
</FinInstnId>
</InstdAgt>
</GrpHdr>
<CdtTrfTxInf>
<PmtId>
<InstrId>BBBB/120928-CCT/JPY/123/1</InstrId>
<EndToEndId>ABC/4562/2012-09-08</EndToEndId>
<TxId>BBBB/120928-CCT/JPY/123/1</TxId>
</PmtId>
<PmtTpInf>
<InstrPrty>NORM</InstrPrty>
</PmtTpInf>
<IntrBkSttlmAmt Ccy="JPY">10000000</IntrBkSttlmAmt>
<IntrBkSttlmDt>2012-09-29</IntrBkSttlmDt>
<ChrgBr>SHAR</ChrgBr>
<Dbtr>
<Nm>ABC Corporation</Nm>
<PstlAdr>
<StrtNm>Times Square</StrtNm>
<BldgNb>7</BldgNb>
<PstCd>NY 10036</PstCd>
<TwnNm>New York</TwnNm>
<Ctry>US</Ctry>
</PstlAdr>
</Dbtr>
<DbtrAcct>
<Id>
<Othr>
<Id>00125574999</Id>
</Othr>
</Id>
</DbtrAcct>
<DbtrAgt>
<FinInstnId>
<BICFI>BBBBUS33</BICFI>
</FinInstnId>
</DbtrAgt>
<CdtrAgt>
<FinInstnId>
<BICFI>AAAAGB2L</BICFI>
</FinInstnId>
</CdtrAgt>
<Cdtr>
<Nm>DEF Electronics</Nm>
<PstlAdr>
<StrtNm>Mark Lane</StrtNm>
<BldgNb>55</BldgNb>
<PstCd>EC3R7NE</PstCd>
<TwnNm>London</TwnNm>
<Ctry>GB</Ctry>
<AdrLine>Corn Exchange 5th Floor</AdrLine>
</PstlAdr>
</Cdtr>
<CdtrAcct>
<Id>
<Othr>
<Id>23683707994215</Id>
</Othr>
</Id>
</CdtrAcct>
<Purp>
<Cd>GDDS</Cd>
</Purp>
<RmtInf>
<Strd>
<RfrdDocInf>
<Tp>
<CdOrPrtry>
<Cd>CINV</Cd>
</CdOrPrtry>
</Tp>
<Nb>4562</Nb>
<RltdDt>2012-09-08</RltdDt>
</RfrdDocInf>
</Strd>
</RmtInf>
</CdtTrfTxInf>
</FIToFICstmrCdtTrf>
</Document>

Format SEPA :

<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pacs.008.001.02">
<FIToFICstmrCdtTrf>
<GrpHdr>
<MsgId>PSCXMILBGRAA20101115114110891</MsgId>
<CreDtTm>2013-11-07T11:41:10</CreDtTm>
<NbOfTxs>1</NbOfTxs>
<TtlIntrBkSttlmAmt Ccy="EUR">20.00</TtlIntrBkSttlmAmt>
<IntrBkSttlmDt>2013-11-07</IntrBkSttlmDt>
<SttlmInf>
<SttlmMtd>CLRG</SttlmMtd>
<ClrSys>
<Prtry>ST2</Prtry>
</ClrSys>
</SttlmInf>
<InstdAgt>
<FinInstnId>
<BIC>BCYPCY2N</BIC>
</FinInstnId>
</InstdAgt>
</GrpHdr>
<CdtTrfTxInf>
<PmtId>
<InstrId>DEUTDE0920000891</InstrId>
<EndToEndId>NOTPROVIDED</EndToEndId>
<TxId>DEUTDEFF011OS10222891</TxId>
</PmtId>
<PmtTpInf>
<SvcLvl>
<Cd>SEPA</Cd>
</SvcLvl>
</PmtTpInf>
<IntrBkSttlmAmt Ccy="EUR">20.00</IntrBkSttlmAmt>
<ChrgBr>SLEV</ChrgBr>
<InstgAgt>
<FinInstnId>
<BIC>DEUTDEFFXXX</BIC>
</FinInstnId>
</InstgAgt>
<Dbtr>
<Nm>Debtor name</Nm>
<PstlAdr>
<Ctry>DE</Ctry>
<AdrLine>Indirizzo 1 Dbtr</AdrLine>
<AdrLine>Indirizzo 2 Dbtr</AdrLine>
</PstlAdr>
<Id>
<OrgId>
<Othr>
<Id>PT50078101120112001285102</Id>
<SchmeNm>
<Cd>BANK</Cd>
</SchmeNm>
</Othr>
</OrgId>
</Id>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>DE73340302860352858328</IBAN>
</Id>
</DbtrAcct>
<DbtrAgt>
<FinInstnId>
<BIC>DEUTDEFFXXX</BIC>
</FinInstnId>
</DbtrAgt>
<CdtrAgt>
<FinInstnId>
<BIC>BCYPCY2N</BIC>
</FinInstnId>
</CdtrAgt>
<Cdtr>
<Nm>CREDITOR NAME</Nm>
<PstlAdr>
<Ctry>GR</Ctry>
<AdrLine>ADDRESS 1</AdrLine>
<AdrLine>ATHENS</AdrLine>
</PstlAdr>
<Id>
<OrgId>
<Othr>
<Id>PT60078101120112001285102</Id>
<SchmeNm>
<Cd>BANK</Cd>
</SchmeNm>
</Othr>
</OrgId>
</Id>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>GR2703801380000000000089777</IBAN>
</Id>
</CdtrAcct>
<RmtInf>
<Ustrd>Rem. Info</Ustrd>
</RmtInf>
</CdtTrfTxInf>
</FIToFICstmrCdtTrf>
</Document>
Control Flow: if, when, for, while - Kotlin Programming Language
thumbnail

Pour @Animal, voici l'opérateur when en deux exemples tirés de la doc officielle (cf. lien principal).

Le simple :

when (x) {
    0, 1 -> print("x == 0 or x == 1")
    else -> print("otherwise")
}

Le compliqué :

when (x) {
    in 1..10 -> print("x is in the range")
    in validNumbers -> print("x is valid")
    !in 10..20 -> print("x is outside the range")
    else -> print("none of the above")
}
Christophe Barbier aurait produit un déficit de 86 M€ entre 2006 et 2014

Contexte : le monsieur dirigeait l'Express, ce montant représente l'ensemble des aides publiques offertes à son quotidien déficitaire.

Remarques :

  • J'ai une source et les feuilles Excel de l'Open Data le confirment aussi.
  • Tout me semble véritable, du coup cela transforme M. Barbier en charlatant de l'économie.

Bref, quelqu'un que je classais déjà dans la section "journaliste-ordurier" donc je ne suis pas étonnée, après les vrais idiots sont ceux qui refuseront d'admettre cette évidence, les faits sous les yeux AMHA.

Gradle Enterprise Maven Extension User Manual | Gradle Enterprise Docs

L'entreprise Gradle est incroyable ! Elle fourni une extension Maven (payante) permettant à ce dernier de bénéficier du cache de Gradle.

Imaginez que vous soyez tellement performant par rapport à votre concurrent direct que vous vous permettiez de l'améliorer et d'en faire un produit d'appel !

Merci @Philou pour l'info.

Correspondant des Goals Maven <=> Gradle

Correspondances des goals Maven en Gradle :

Maven Gradle
mvn clean gradle clean
mvn compile gradle compile
mvn test gradle test
mvn package gradle assemble
mvn verify gradle check
mvn install task publishToMavenLocal
mvn deploy gradle publish

Transformer automatiquement un pom.xml en build.gradle via la commande gradle init.

Merkel: Europe must unite to stand up to China, Russia and US | World news | The Guardian
thumbnail

La vache ! J'étais passée à côté de ça (O_O)...

Merkel déclare tranquillou que :

  • Les anciens alliés ne sont plus ni la Russie, ni les USA.
  • Qu'il faut que l'Europe se prépare contre la Chine, la Russie et les USA.
  • Que l'Europe doit se "repositionner" et s'obliger à des positions communes (je comprends qu'il faut anéantir les états au profit d'un nouvel état européen, mais c'est du complotisme assumé à ce niveau puisque je n'en ai aucune preuve pour l'instant).

Une autre source confirme cette interview via le Business Insider où Merkel désigne bien nos futurs ennemis (Chine, Russie et USA).

Vous la sentez venir à III-ème Guerre Mondiale ou c'est que moi ? Car en diplomatie internationale, on ne désigne pas des ennemis comme ça ! Les conséquences pouvant être catastrophiques !

Relearn CSS layout: Every Layout
thumbnail

Les layouts en CSS pour @Animal

Union européenne : et si l'Allemagne quittait l'euro ? - GuiGui's Show

Attention, conclusion hâtives et mauvaise source/méconnaissance du droit monétaire... Je cite :

Difficile aujourd’hui d’évoquer une sortie de l’euro sans être catalogue extrémiste démagogue ou crétin irresponsable. Même en italie, la coalition populiste violemment anti-euro pendant la campagne s’est empressée d’écarter cette perspective dantesque sitôt arrivée au pouvoir. Un retour à la lire, forcément dévaluée, aurait fait exploser une dette publique libellée en euros qui culmine déjà à plus de 130 % du PIB

Et bien en fait non pas du tout ! Pourquoi quitter l'euro ne fera-t-il pas grimper la dette italienne à cause d'une lire trop faible ? À cause de la Lex Monetae. En droit international, une créance est toujours établie en nombre d'unités monétaires du pays où le contrat de créance s'exécute. Et s'il y a changement de devises, le taux de change appliqué est toujours de 1 pour 1.

D'ailleurs, lorsque nous sommes passés du Franc à l'Euro personne n'a souffert du changement de devise ? Les créanciers n'ont pas hurler, mais comment était-ce possible ??? Avec la hausse de l'Euro par rapport au Franc, ces créanciers auraient dû perdre de l'argent, puisque le Franc s'est déprécié aussitôt que l'état a décrété qu'il allait disparaître !!?

Indice, les créances ont été converties en Euros et ne sont pas restées libellées en Francs et C'ÉTAIT À CAUSE DE LA LEX MONETAE !

C'est dur à force de devoir encore et toujours démonter des inepties autour des Brexit like.

Martin Luther King : La compréhension
thumbnail

La citation du jour :

La compréhension superficielle des gens de bonne volonté est plus frustrante que l'incompréhension totale des gens malintentionnés.
Martin Luther King

Et je repense à toutes les personnes que je côtoie et qui m'expliquent que les Gilets Jaunes ne devraient pas agir comme ça... Alors comment, par les urnes c'est ça ? Et seulement une fois tous les cinq ans alors ? Il faut apprendre à prendre son mal en patience très tôt j'ai l'impression...

Sûrement pensent-ils que les voix des élections ou des référendums comptent ? Comme le référendum du "Non" au traité de Lisbonne peut-être ? Ou la majorité de votes blancs à chaque élection aussi ? Quelle preuve, quel fait faut-il ajouter en plus de tout cela, pour expliquer qu'agir seulement par les urnes lorsque les représentants ne représentent qu'eux-memes est une chose qui ne fonctionne pas ? Je ne sais pas quoi ajouter de plus.

Ce que je sais c'est que la vie est courte et de ce que l'on en sait, nous n'en avons qu'une seule... Alors pourquoi accepter d'en gâcher cinq années, mandats après mandats, élections après élections, lorsqu'il y a autant d'injustices ?

Lecture : “96 Visualization Examples” par Jimmy Janlén

Un livre pour @Chlouchloutte que je compte m'acheter aussi.

Crisp's Blog » Good and Bad Technical Debt (and how TDD helps)

Henrik Kniberg sur la dette technique. Cet homme est toujours aussi pertinent, c'est fou !

Nginx est maintenant le serveur web le plus utilisé par les sites les plus fréquentés au monde devant Apache et Microsoft IIS, selon W3Tech

Je suis quand même super fière de moi car 4 fois sur 5, je choisis systématiquement la techno qui décolle. Les exceptions se cantonnent à Aurelia et dans une moindre mesure à ActiveJDBC.

#Proud

Et pour celles et ceux qui étaient passés à côté de l'info Kotlin passe définitivement devant Scala.

Appareil à retirer les taches

@Animal, c'est ce dont je te parlais le week-end dernier.

Pour les iPhone users :

Mozilla dévoile le nouveau logo de la marque Firefox
thumbnail

Voici les nouveaux logos de Firefox, dans lesquels il n'y a plus trop de Panda roux...
Les nouveaux logos de Firefox

Micro Frontend: le casse tête des micro services étendu au FrontEnd ! - Chlouchloutte ¯\_(ツ)_/¯

@Chlouchloutte je rebondis sur ton post (qui m'a fort bien aidé) et je te publie cet article de Cam Jackson sur le blog de Martin Fowler (merci à Philou pour le lien).

Dans l'idée, je comprends la notion de découpling entre les composants visuels mais il y a plein de choses qui me chiffonnent :

  1. J'aime bien l'idée d'avoir un bundle unique où l’agrégation se fait au build. C'est certes contraignant vis-à-vis du cycle de release mais ça a le mérite de réduire le nombre de requêtes HTTP, de profiter des minifications globales, de mutualiser facilement les libs et de synchroniser leurs versions sans trop d'effort.

  2. J'aime bien la solution au runtime via Web Component, mais il faut gérer le use-case des versions différentes, s'assurer que le bundle n'embarque par de libs partagées et de réduire le nombre de requêtes HTTP.

J'ai le sentiment que tant que nous n'avons pas une multitude d'équipes, les µ-Frontends sont encore trop jeunes pour être un concept vers lequel se tourner.

Bash coprocess – Cindy Sridharan – Medium

Exécuter une application en tirant partie du multi-coeur en bash ! Pour toi @Animal !

Via Dooby

Comparaison Rust/Java/C++

Ceux qui me lisent le savent, je trouve que Rust est un très bon langage mais je lui reproche quand même certaines choses :

  • Il n'est pas trivial d'écrire des classes (comme il l'est en Kotlin).
  • Le code à écrire est aussi volumineux que celui de Java (Kotlin est 30% à 40% plus concis).
  • Il utilise autant d'abréviations stupides que C++.
  • Certains éléments de syntaxe sont une immondice à mi chemin entre C++ et O-Caml/Ruby (typiquement le pipe "|" pour les lambas, en dix ans je n'ai jamais pu m'y faire, ou encore l'opérateur "->" pour définir un type de retour d'une fonction).

Mon langage préféré serait à 100% Kotlin si celui-ci disposait :

  • D'une cross-compilation native.
  • D'un garbage collector injecté au compile-time à l'image de Rust et l'emploi du Ownership.

Oui, c'est ce qu'il faudrait à Kotlin, j'ai vraiment hâte de voir ce que vont donner GraalVM et Kotlin native dans les prochains mois.

Via Riduidel

[ZAP] OPÉRATION CACATOV (UnderZap #25) - YouTube
thumbnail

Le Cacatov, un cocktail molotov à base de caca... J'étais complètement passée à côté de "cette arme" utilisée par les Gilets Jaunes pour se défendre face aux agressions policières. Je suis comme Ernesto Deupointzéro, j'attends avec impatience les premières arrestations pour détention de caca !

Commentaire Twitter sur la programmation fonctionelle

Je rejoins totalement ce commentaire :

FP engineers: the vegans of the software industry.

La FP c'est cool, mais elle a de nombreuses limitations et un bonne partie des dév FP sont des fanatiques avec un casque complètement pété.

=> Coucou les Scalaistes, dites vous pourriez pas utiliser un vrai langage fonctionnel comme Haskell au moins avant de venir la ramener ? #TrollInside

Do-ocratie — Wikipédia

I need it ! We need it ! Let's do it !

Via Martouf

Où en est le Brexit ? Dimitri de Vismes (UPR) évoque la montée de Nigel Farage dans les sondages - YouTube
thumbnail

Attention : la vidéo linkée au sujet du Brexit, je m'en fiche !

La raison de mon poste est le message ajouté par Youtube en-dessous de la vidéo (je suppose à la demande de la mafia au gouvernement) et qui dit la chose suivante :

RT est financée entièrement ou partiellement par le gouvernement russe. Wikipedia

Vous aurez sans aucun doute remarqué le niveau de mauvaise foi astronomique, car sous les vidéos de FranceTV, TF1 et autre BullshitFMTV, il n'y a pas de message indiquant que TOUTES CES CHAÎNES SONT FINANCÉES "entièrement ou partiellement" PAR LE GOUVERNEMENT FRANÇAIS ! (via des "aides" ou via un petit chèque de 450 millions d'euros pour FranceTV).

Et oui, cela s'appelle de la propagande ! Et notre chère mafia la distille dans l'esprit des gens afin qu'ils croient que des vilains-méchants-russes financent des organes attaquant notre bel état français, qui rappelons-le est incorruptible, loyale et juste, alors que le gouvernement français n'a fait, ne fait et ne fera jamais la même chose avec sa presse, ses chaînes de radio et de télévision...

Un hastag me vient à l'esprit : #ImmondesBatards allez savoir pourquoi ?

OutOfMemoryException : Quel est le coût des objets en Java ? (Jean-Philippe Bempel) - YouTube
thumbnail

Je regarderai cela plus tard !

L'hôpital crève - yakmoijebrille

Bonjour yakmoijebrille, je me permet de rebondir sur ton commentaire (si un jour tu me lis). Tu aurais du dire : "merci la Commission Européenne" et ses "GOPÉ"...

Parce que la suppression des financements des hôpitaux est décidée à Bruxelles et par Bruxelles au détriment du bien-être de toutes les populations.

Le néo-libéralisme, l'anti-socialisme et l'anti-démocratie coulent littéralement dans l'ADN des traités européens. Macron et ses Ministres ne font qu'appliquer ce que les instances supra-nationales leurs ordonnent de faire. A ton avis, pourquoi les appelle-t-on instances "supra & nationales" si ce n'est pas pour exprimer l'idée que leur pouvoir est supérieur à celui des nations !

Je veux dire que ça fait 70 ans d'UE et 10 ans du traité de Lisbonne, combien de temps faudra-t-il encore pour que les gens comprennent que les institutions obéissent toujours aux textes de loi !?

En clair : si nos traités sont pétés, alors nos politiques seront pétées !

Et comme on ne peut pas modifier les traiter sans l'accord U-NA-NIME de tous les états membres... PLUS... l'accord unanime de tous les Parlements nationaux... PLUS... l'accord par référendum de toutes les nations où les Parlements ne sont pas exprimés sur la question.

Ce qui représente :

  • L'accord de 550 millions de citoyens
  • Littéralement 28 votes de pays aux intérêts économiques DI-VER-GEANTS
  • L'équivalent de 28 référendums successifs

ET OÙ TOUS LE MONDE DOIT VOTER OUI !!! Quand les gens vont-ils comprendre pourquoi il est impossible de réformer cette l'UE ?

En attendant la Chine se développe à outrance, la Russie avance ses pions militaires dans un silence où l'on entendrait l'écho du pet d'un élu constipé et où l’Amérique latine, le Maghreb et l'Asie rattrapent toute l'avance que la France avait su gagner.

Il va falloir choisir tôt ou tard entre un rêve sans espoir qui s'appelle l'UE et une échappatoire concrète qui s'appelle sortir de ce piège à rats par l'article 50.

#Frexit #UPR

Tour Eiffel en palettes - TOUR DE FRANCE DES GILETS JAUNES - 15 ème étape - YouTube
thumbnail

Parce que le mouvement des Gilets Jaunes ne se limite pas à ce que montre BFMTV, TF1 ou M6... Vous verrez ici des gens qui battissent ensemble des monuments en palettes, qui s'entre-aident, qui partagent et qui ne cassent rien.

Antivax / Pro-desease vs HOAX - Modern problems require modern solutions
thumbnail
Ce que le sucre fait à votre cerveau : mémoire, dépression, stress ou encore sénilité, on fait le point | Le Huffington Post
thumbnail

Que des bienfaits ! Le sucre mangez-en et mourez jeunes, ce sera autant de retraites économisées.

Non, ça n'est pas plus facile pour les femmes de coucher que pour les hommes - GuiGui's Show

Je vais me faire l'avocate du diable mais une contradiction ressort des écrits me semble-t-il.

#ModeZététiqueActivé

Le titre est :

Non, ça n'est pas plus facile pour les femmes de coucher que pour les hommes

Or la conclusion de GuiGui est :

Je trouve cet avis intéressant. Si je résume, les freins à des plans cul à l'initiative des femmes viennent d'une auto-restriction liée à la culture et à leur évaluation négative du plaisir qu'elles en retireront et de l'atteinte à leur image selon la culture en vigueur. Les freins à des plans culs à l'initiative des hommes viennent d'un refus féminin causé par l'évaluation négative féminine sus-citée.

Donc si les femmes n'ont pas de plans culs c'est parce qu'elles le choisissent, et si les hommes n'ont pas de plan cul c'est parce qu'ils ne peuvent que suivre le choix des femmes qui s’auto-restreignent ?

=> Si l'un a le choix tandis que l'autre non, alors n'est-il pas plus facile pour une femme de coucher quand elle le souhaite finalement ?

Je précise ma pensée, il n'est pas question ici de la "qualité des rapports" ou encore de considérer "la prise de risque" mais uniquement du fait d'être en capacité d'avoir des rapports aussitôt qu'on le voudrait.

Car dire "je ne peux pas faire quelque chose car je ne veux pas en prendre le risque" et dire "je ne peux pas faire parce que je n'en ai pas les moyens" ce n'est pas la même chose. Dans le premier cas il y a une capacité de décider, tandis que dans l'autre cas il n'y a aucune capacité du tout.

Les relations hommes-femmes sont asymétriques depuis que nous nous sommes redressées sur nos deux jambes (nos organes sexuels n'étant plus exposés au regard de tous et "moins facilement atteignables" pour les violeurs).

A cet instant nous avons acquis la capacité de sélectionner nos partenaires, et plus notre société se développa et plus notre capacité de les sélectionner s'accrut conséquemment. Ce fût une très bonne chose pour notre espèce, d'autant que, je le rappelle, les hommes sont biologiquement des parasites, et pouvoir choisir son parasite c'est quand même mieux :P #Troll

Julio Biason .Net 4.0 - Things I Learnt The Hard Way (in 30 Years of Software Development)

Je retranscris ici l'article de Julio Blason tant je l'ai trouvé bien et important !


# Things I Learnt The Hard Way (in 30 Years of Software Development) _34 minute read / Published: 2019-06-10_ This is a cynical, clinical collection of things I learnt in 30 years working with software development. Again, some things are really cynical, others are long observations on different jobs. ## Software Development ### Spec first, then code If you don't know what you're trying to solve, you don't know what to code. Write something specifying how the application works before writing any code. > "Without requirements or design, programming is the art of adding bugs to an empty text file." -- Louis Srygley Sometimes, even an "elevator pitch" -- up to two paragraphs that describe what the application does -- is enough. The times I stood longer looking at my own code wondering what to do next were when we didn't have the next step defined. It is a good sign that it's time to stop and discuss it with your coworkers -- or maybe rethink the solution. ### Write steps as comments If you have no idea how to start, describe the flow of the application in high level, pure English/your language first. Then fill the spaces between comments with the code. Better yet: think of every comment as a function, then write the function that does exactly that. ### Gherkin is your friend to understand expectations Gherkin is a test description format which points "Given that the system is in a certain state, When something happens, then this is expected". Even if you don't use any testing tool that reads Gherkin, it will give you a good understanding of what it is expected from the app. ### Unit tests are good, integration tests are gooder On my current job, we do test modules and classes only (for example, we write tests for the view layer only, then tests for the controller layer only, and so on). It gives us some idea if things are going right or not, but they lack a view of how the whole is going on -- a thing integration tests, which tests how the system as a whole behaves -- do better. ### Tests make better APIs We code in layers: There is the storage layer, which should make our data permanent; there is a processing layer, which should do some transformation on the data stored; there is a view layer, which has information on how the data must be present; and so on. As I mentioned, integration tests feel better, but testing layers by themselves can give you a better view on how their API looks like. Then you can have a better look on how to call things: Is the API too complex? Do you have to keep to much data around to be able to make a single call? ### Make tests that you know how to run on the command line Not that command lines are important for any projects, but when you know the command to run the tests, you know how to automate the execution of the tests, which you then can use in a continuous integration tool. ### Be ready to throw your code away A lot of people, when they start with TDD, get annoyed when you say that you may have to rewrite a lot of stuff, including whatever your already wrote. TDD was designed to throw code away: The more you learn about your problem, the more you understand that, whatever you wrote, won't solve the problem in the long run. You shouldn't worry about this. Your code is not a wall: if you have to throw it always, it is not wasted material. Surely it means your time writing code was lost, but you got a better understanding about the problem now. ### Good languages come with integrated tests You can be sure that if a language brings a testing framework -- even minimal -- in its standard library, the ecosystem around it will have better tests than a language that doesn't carry a testing framework, no matter how good the external testing frameworks for the language are. ### Future thinking is future trashing When developers try to solve a problem, they sometimes try to find a way that will solve all the problems, including the ones that may appear in the future. But here is the thing: The problems from the future will never come and you'll end up either having to maintain a huge behemoth of code that will never be fully used or you'll end up rewriting the whole thing 'cause there is a shitton of unused stuff. Solve the problem you have right now. Then solve the next one. And the next one. At one point, you'll realize there is a pattern emerging from those solutions and then you'll find your "solve everything". ### Documentation is a love letter to your future self We all know writing the damn docs for functions and classes and modules is a pain in the backside. But realizing what you were thinking when you wrote the function will save your butt in the future. ### The function documentation is its contract When you start the code by writing the documentation, you're actually making a contract (probably with your future self): I'm saying this function does this and this is what it does. If later you find out that the code doesn't match the documentation, you have a code problem, not a documentation problem. ### If a function description includes an "and", it's wrong Functions should do one thing and one thing only. When you're writing the function documentation and find that you added an "and", it means the function is doing more than one thing. Break that function into two and remove the "and". ### Don't use Booleans as parameters When you're designing a function, you may be tempted to add a flag. Don't do this. Here, let me show you an example: Suppose you have a messaging system and you have a function that returns all the messages to an user, called getUserMessages. But there is a case where you need to return a summary of each message (say, the first paragraph) or the full message. So you add a flag/Boolean parameter called retrieveFullMessage. Again, don't do that. 'Cause anyone reading your code will see getUserMessage(userId, true) and wonder what the heck that true means. You can either rename the function to getUserMessageSummaries and have another getUserMessagesFull or something around those lines, but each function just call the original getUserMessage with true or false -- but the interface to the outside of your class/module will still be clear. But don't add flags/Boolean parameters to your functions. ### Beware of interface changes In the point above, I mentioned about renaming the function. If you control the whole source where the function is used, that's not issue, it's just a matter of search and replace. But if that function is actually exposed by a library, you shouldn't change function names in a whim. That will break a lot of other applications beyond your control and make a lot of other people unhappy. You can create the new functions and mark the current one as deprecated, either by documentation or by some code feature. Then, after a few released, you can finally kill the original function. (A dickish move you can do is to create the new functions, mark the current function as deprecated and add a sleep at the start of the function, in a way that people using the old function are forced to update.) ### Good languages come with integrated documentation If the language comes with its own way of documenting functions/classes/modules/whatever and it comes even with the simplest doc generator, you can be sure that all the language functions/classes/modules/libraries/frameworks will have a good documentation (not great, but at least good). Languages that do not have integrated documentation will, most of the time, have a bad documentation. ### A language is much more than a language A programming language is that thing that you write and make things "go". But it has much more beyond special words: It has a build system, it has a dependency control system, it has a way of making tools/libraries/frameworks interact, it has a community, it has a way of dealing with people. Don't pick languages just 'cause they easier to use. Always remember that you may approve the syntax of a language for being that easy, but you're also enabling the way maintainers deal with the community by choosing that language. ### Sometimes, it's better to let the application crash than do nothing Although that sounds weird, it's better to not add any error handling than silently capturing errors and doing nothing. A sadly common pattern in Java is ```java try { something_that_can_raise_exception() } catch (Exception ex) { System.out.println(ex); } ``` This does nothing to deal with the exception -- besides printing it, that is. If you don't know how to handle it, let it happen,so you can figure out when it will happen. ### If you know how to handle the issue, handle it Counter-point to the previous point: If you know when something will raise an exception/error/result and you know how to handle it, handle it. Show an error message, try to save the data somewhere else, capture the user input in a log file to later processing, but handle it. ### Types say what you data is Memory is just a sequence of bytes; bytes are just numbers from 0 to 255; what those numbers mean is described on the language type system. For example, in C, a char type of value 65 is most probably the letter "A", which an int of value is 65 is the number 65. Remember this when dealing with your data. This is what most people get wrong about adding booleans to check the number of True values. Here, let me show you an example of JavaScript that I saw recently: ```javascript console.log(true+true === 2); > true console.log(true === 1); > false ``` ### If your data has a schema, use a structure to keep it You may be tempted to use a list (or tuple, if your language allows) to keep your data if it's simple -- like, say, only 2 fields. But if you data has a schema -- it has a fixed format -- you should always use some structure to keep it, but it a struct or a class. ### Understand and stay way of cargo cult "Cargo cult" is the idea that, if someone else did, so can we. Most of the time, cargo cult is simply an "easy way out" of a problem: Why would we think about how to properly store our users if X did that? "If BigCompany stores data like this, so can we". "If BigCompany is behind this, this is good." ### "Right tool for the job" is just to push an agenda "Right tool for the job" should be an expression that meant that there is a right and a wrong tool to do something -- e.g., using a certain language/framework instead of the current language/framework. But every time I heard someone mention it, they were trying to push their favourite language/framework instead of, say, the right language/framework. ### "The right tool" is more obvious than you think Maybe you're in a project that needs to process some text. Maybe you're tempted to say "Let's use Perl" 'cause you know that Perl is very strong in processing text. What you're missing: You're working on a C shop. Everybody knows C, not Perl. Sure, if it is a small, "on the corner" kind of project, it's fine to be in Perl; if it is important for the company, it's better that if it is a C project. PS: Your hero project (more about it later in this doc) may fail due this. ### Don't mess with things outside your project Sometimes people are tempted to, instead of using the proper extension tools, change external libraries/frameworks -- for example, making changes directly into WordPress or Django. This is an easy way to make the project unmaintainable really really fast. As soon as a new version is released, you'll have to keep up your changes in sync with the main project and, pretty soon, you'll find that the changes don't apply anymore and you'll leave the external project in an old version, full of security bugs. ### Data flows beat patterns (This is personal opinion) When you understand how the data must flow in your code, you'll end up with better code than if you applied a bunch of design patterns. ### Design patterns are used to describe solutions, not to find them (Again, personal opinion) Most of the time I saw design patterns being applied, they were applied as a way to find a solution, so you end up twisting a solution -- and, sometimes, the problem it self -- to fit the pattern. First, solve your problem; find a good solution; then you can check the patterns to know how you name that solution. I saw this happens a lot: We have this problem; a design pattern gets close to the proper solution; let's use the design pattern; now we need to add a lot of things around the proper solution to make it fit the pattern. ### Learn the basics functional programming You don't need to go deep into "what is a monad" and "is this a functor". But remember to not keep changing your data all the time, create a new element with the new values (treat your data as immutable) and make functions/classes that don't keep some internal state (pure functions/classes) if possible. ### Cognitive Cost is the readability killer "[Cognitive dissonance](https://en.wikipedia.org/wiki/Cognitive_dissonance)" is a fancy way of saying "I need to remember two (or more) different things at the same time to understand this." Keeping those different things in your head creates a cost and it keeps accumulating the more indirect the things are ('cause you'll have to keep all those in your head). For example, adding booleans to count the number of True values is a mild cognitive dissonance; if you're reading a piece of code and see a sum() function, which you know makes the sum of all numbers in a list, you'd expect the list to be composed of numbers, but I've seen people using sum() to count number of True values in a list of booleans, which is confusing as heck. ### The Magical Number Seven, Plus or Minus Two "[The magical number](https://en.wikipedia.org/wiki/The_Magical_Number_Seven,_Plus_or_Minus_Two)" is a psychology article about the number of things one can keep in their mind at the same time. If you have a function, that calls a function, that calls a function, that calls a function, that calls a function, that calls function, you may be sure it will be a hell to read later. Think more about: I'll get the result of this function, then pass it to the second function, get its result, pass to the third an so on. But: 1. Today, psychologists talk more about the magical number FOUR, not seven. 2. Think function composition (as in "I'll call that function, then that function, then that function..."), not function calling (as in "That function will call that function, that will call that function..."). ### Shortcuts are nice, but only in the short run A lot of languages/libraries/frameworks add a way to make things shorter, reducing the number of things you need to type. But, later, that will bite you and you'll have to remove the shortcut and do the long things. So learn what the shortcut does before using it. You don't need to write things the hard way first and then clean up using the shortcuts: All you need to do is what the shortcut does in the background, so you at least have knowledge of what can go wrong using it, or how to replace it with the non-shortcut version. ### Resist the temptation of "easy" Sure that IDE will help you with a ton of autocomplete stuff and let you easily build your project, but do you understand what's going on? Do you understand how your build system works? If you had to run it without the IDE, would you know how? Can you remember your function names without autocomplete? Isn't there a way to break/rename things to make them easier to understand? Be curious about what goes behind the curtains. ### ALWAYS use timezones with your dates When dealing with dates, always always add the timezone with it. There will be always a problem with your computer timezone and the production server timezone (or one of the instances timezones) and you'll lose a lot of time trying to debug what the heck the interface is showing the wrong time. ### ALWAYS use UTF-8 The same problem you'll have with dates, you'll have with character encoding. So always convert your strings to UTF8; save them in the database as UTF8; return UTF8 on your APIs. (You may convert to any other encoding, but UTF8 won the encoding wars, so it is easier to keep it this way.) ### Start stupid One way to get away from the IDE is to "start stupid": Just get the compiler and get an editor (ANY editor) with code highlight and do your thing: Code, build it, run it. No, it's not easy. But when you jump into some IDE, you'll think of buttons of simply "Yeah, it runs that" (which is exactly what IDEs do, by the way.) ### Logs are for events, not user interface For a long time, I used logs to show the user whatever was happening -- 'cause, you know, it's a lot easier to use a single thing instead of two. Use the standard output to inform the user of events, standard err to inform the user about errors but use logs to capture something that you can later process easily. Think about logs of something you'll have to parse to extract some information at that time, not user interface; it doesn't have to be human-readable. ### Debuggers are over-rated I heard a lot of people complaining that code editors that don't come with debugging are terrible, exactly because they don't come with debugging. But when your code is in production, you can't run your favorite debugger. Heck, you can't even run your favourite IDE. But logging... Logging runs everywhere. You may not have the information you want at the time of the crash (different logging levels, for example) but you can enable logging to figure out something later. (Not saying debuggers are bad, they just not as helpful as most people would think.) ### Always use a Version Control System "This is my stupid application that I just want to learn something" is not even a good excuse to not use a version control system. If you start using a VCS right from the start, it will be easier to roll back when you do something stupid. ### One commit per change I've seen people writing commit messages like "Fixes issues [#1](./add-tag/1), [#2](./add-tag/2) and [#3](./add-tag/3)". Unless all those issues are duplicates -- in which two of those should be already closed -- they should be 3 commits, not one. Try to keep a change in a single commit (and by change I don't mean "one file change"; if a change requires changes in three files, you should commit those three files together. Think "if I revert this back, what must go away?") ### "git add -p" is your friend when you overchange (Git topic only) Git allows merging a file partially with "-p". This allows you to pick only the related changes and leave the other behind -- probably for a new commit. ### Organize projects by data/type, not functionality Most projects keep an organization like: ```console . +-- IncomingModels | +-- DataTypeInterface | +-- DataType1 | +-- DataType2 | +-- DataType3 +-- Filters | +-- FilterInterface | +-- FilterValidDataType2 +-- Processors | +-- ProcessorInterface | +-- ConvertDataType1ToDto1 | +-- ConvertDataType2ToDto2 +-- OutgoingModels +-- DtoInterface +-- Dto1 +-- Dto2 ``` in other words, they keep data organized by functionality (all the incoming models are in the same directory/package, all the filters are in the same directory/package and so on). This is fine and works. But when you organize by data, it'll make a lot easier to split your project in smaller projects -- 'cause, at some point, you may want to do almost the same thing as you're doing right now, but with small differences. ```console . +-- Base | +-- IncomingModels | | +-- DataTypeInterface | +-- Filters | | +-- FilterInterface | +-- Processors | | +-- ProcessorInterface | +-- OutgoingModels | +-- DtoInterface +-- Data1 | +-- IncomingModels | | +-- DataType1 | +-- Processors | | +-- ConvertDataType1ToDto1 | +-- OutgoingModels | +-- Dto1 ... ``` Now you can make a module that deals only with Data1, another that works only with Data2 and so on. And then you can break them into isolated modules. And then when you have another project that also have Data1 but also deals with Data3, you can reuse most of the stuff in the Data1 module. ### Create libraries I've seen a lot of projects that either make a mega repository with different projects or keep different branches that instead of just being a temporary environment for later joining the main development area, are just to keep that small, different thing going (picking the point above about modularization, imagine that instead of building a new project that reuse the Data1 type, I have a branch that has a completely different main function and the Data3 type). Why not split the common parts into libraries and require it in different projects? The reason is, most of the time, 'cause people don't know how to either create libraries or they worry how they are goint to "publish" those libraries into the dependency sources without giving it around (so maybe it's a good idea to also understand how your project management tool retrieves dependencies, so you can create your own dependency repository). ### Learn to monitor On a previous life, to understand how a system behaved, I added a ton of metrics: how fast things were going in, how fast things were going out, how many things were in the middle, how many the job processed... It gives a really good view of how a system is behaving. Is the speed going down? If it is, I can check what is going into the system to understand why. Is it normal going down at some point? Thing is, after this, it is really weird trying to figure out how "healthy" a system without any monitoring is after that. Checking a system health with just "Is it answering requests" doesn't fly anymore. Adding monitoring early will help you understand how your system behaves. ### The config file is friend Imagine you wrote a function that you have to pass a value for it to start processing (say, a twitter user account id). But then you have to do that with two values and you just call the function again with the other value. It makes more sense to use a config file and just run the application twice with two different config files. ### Command line options are weird, but helpful If you move things to config files, you could also help your users by adding an option to select the config file and expose it. There are libraries to handling command line options for every language today, which will help you into building a good command line and giving your users a standard interface for everything. ### Not just function composition, but application composition Unix came with the idea of "applications that do one thing and do it well". Now, I said you could use one application with two config files, but what if you need the result of both applications? That's when you can write an application that reads the results of the first one with both config files) and turn into a single result. ### Even for app composition, start stupid Application composition may lead to microservices -- which is good -- but microservices require some ideas about how applications "talk" between them over the wire (protocols and such). You don't need to start with that. Both applications can write and read from files, which is way easier. Worry about talking over the wire later, when you understand how networks work. ### Optimization is for compilers Let's say you need more performance. You may be tempted to look at your code and thing "where I can squeeze a little bit more performance here" or "How can I remove a few cycles here to get more speed". Well, guess what? Compilers know how to do that. Smarted compilers can even delete your code 'cause it will always generate the same result. What you need to do is think a better design for your code, not how to improve the current code. Code is humans to read. ALWAYS. Optimization is what compilers do. So find a smarted way to explain what you're trying to do (in code) instead of using shorter words. ### By lazy (evaluated) A long time ago, a small language made the rounds by not evaluating expressions when they appeared, but when they were needed. Lisp did this a long time ago, and now most languages are getting it too. For example, Python have the yield statement, which will stop the execution of the current function and return the value immediately, yielding a new value only when the function is called again. If you chain functions that keep yielding results, you won't need as much memory as functions that keep returning lists. On a Team/Work ### Code reviews are not for style Take your time on code reviews to point architectural or design problems, not code style problems. Nobody really likes the person whose code reviews are only "you left blanks in this line" or "missing space before parenthesis" and such. Now, if you do find architectural or design problems, then you can add your code style problems. ### Code formatting tools are ok, but they are no silver bullet One thing a team may be tempted to do to avoid discussing style in code reviews is to use a code formatting tool to auto-format code before committing. Now yeah, that kinda solves the problem, but there is one small problem: we, humans, are not as flexible to read code as computers are; what is readable by a computer may not be readable by a human. Surely they try to create some heuristics on what is good for human reading, but that doesn't mean it gets right. If you do use a code formatting tool, use it to find out where it changes the code the most; you probably need to simplify that part of the code to avoid it messing so much. ### Code style: Follow it If your project have a defined code style, you must follow it. Sometimes it may not be clear ("this struct/class should be singular or plural"?), but do your best to follow it. ... unless that code style is the Google Code style (Totally personal opinion, feel free to disagree) Every freaking time Google comes with their own coding style, it's a garbage fire. The community came with a better style way before and Google seem to come with a style with high contrasting parts just to call it theirs. There is only one coding style for C/C++: K&R (Totally personal opinion again) Every other coding style is WRONG. :) There is only one coding style for Python: PEP8 The community (most of it) writes code in PEP8. Follow it and your code smoothly integrate with the rest of the ecosystem. ### Explicit is better than implicit You know what's one of the worst function names ever? sleep(). Sleep for how long? It is seconds or milliseconds? Be explicit with what you use; sleepForSecs and sleepForMs are not perfect, but are better than sleep. (Think about this when you're writing your app command line interface or its config file.) (I could throw the whole "Zen of Python" here, but I'm trying to focus on personal, direct experience.) ### Companies look for specialists but keep generalists longer If you know a lot about one single language, it may make it easier to get a job, but in the long run, language usage dies and you'll need to find something else. Knowing a bit about a lot of other languages helps in the long run, not to mention that may help you think of better solutions. > "A language that doesn't affect the way you think about programming, is not worth knowing." -- Alan Perlis For a long time, I kept a simple programming rule: The language I'm playing at home should not be the same language I'm using at work. This allowed me to learn new things that later I applied in the work codebase. I learnt how generics work in Java by writing Rust code; I understood how Spring does dependency injection by reading how to do it in C++. ### Think of the users Think how the data you're collecting from your users will be used -- this is more prevalent on these days, where "privacy" is a premium. If you capture any used data, remember to protect it against unauthorized use. The best secure way to deal with user data is not to capture it You can be sure that, at some point, the data will leak, either by some security flaw or human interference. If you don't capture any user data -- or store it in anonymized way -- you won't have any problems. ### Keep a record of "stupid errors that took me more than 1 hour to solve" I tried but never managed to create a list of stupid errors I kept finding that took more than 1 hour to solve it, which were simply "forgot to add dependency" or "add annotation", mostly because there was more than once that I kept fighting some stupid error for more than 1 hour. But you should try to keep a list of stupid errors that took you 1 hour to solve, 'cause later you can use it to not stay more than 1 hour to solve some stupid error. ### If it doesn't run on your computer, you have a problem I've seen a lot of systems that would never run on a isolated computer, like the developer tool, 'cause the system requires running on a specialized environment. This is something that really kills productivity. If your system will run on a specialized environment -- and I'm including "the cloud" here -- look for something that can abstract whatever you're using. For example, if you're using AWS SQS, which is a queue, look for a library that can abstract the way a queue works so you can also run with RabbitMQ, which can be easily run on your own computer. If you're using a very specialized thing, you may have to write the abstraction yourself, isolating it from the main system, so you can develop the main product in peace. Personal ### When it's time to stop, it's time to stop Learn when you can't code anymore. Learn when you can't process things anymore. Don't push beyond that, it will just make things worse in the future. I tried to keep coding once when I had a migraine (not strong, but not mild). Next day, when I was better, I had to rewrite most of the stuff I did, 'cause it was all shit. ### Code of conduct protect you, not them When you're beginning with any language/library/framework, check their CoC; they will protect you from being harassed for not immediately getting what is going on instead of blocking you from telling them what you think. I'm mentioning this 'cause a lot of people complain about CoC, but they forget that they allow them to join in any project without being called "freaking noob" or "just go read the docs before annoying us". Also, remember that most people that are against CoCs are the ones that want to be able to call names on everyone. ### Learn to say no Sometimes, you'll have to say no: No, I can't do it; no, it can't be made in this time; no, I don't feel capable of doing this; no, I don't feel comfortable writing this. Once I had to say to our CTO: "Ok, I'll do it, but I want to note that I don't agree with what we are doing." In the end, the app was barred exactly because the thing we were doing. You're responsible for the use of your code This is hard. Very very hard. It's the difference between "freedom" and "responsibility". There is nothing wrong in writing, for example, a software to capture people's faces and detect their ethnicity, but you have to think about what that will be used on. ### Don't tell "It's done" when it's not You are tired of running the same thing over and over again. You kinda remember that something weird may happen, but because you're tired, you tell everyone that "It's finished". Don't do that. Someone will try that weird case on the first run and immediately tell you that it is not working. ### You'll learn about yourself the hard way We get frustrated with code that doesn't compile. We get angry with customers asking things back and forth. And we lash out on other when that happens. And that will get you in trouble. It happens. ### People get pissed/annoyed about code/architecture because they care You'll find yourself in the other side of the coin: You'll describe some solution and people will seem annoyed/pissed about some solution. When people care about a product/code, they do that. "Yeah, you don't like that hushed solution 'cause you care" was one of the nicest things someone told about myself. ### Learn from your troubles You'll get annoyed, pissed, frustrated, and angry. You'll get you in trouble. You'll see people getting in trouble because of this kind of stuff. You must learn about it. Don't ignore it. One thing I learnt the hard way was that I get really aggressive when I'm frustrated. Now, when I notice I start to get frustrated, I ask help from someone else. It's really therapeutic to see that someone else also struggles with your problem, and that's not just you. ### Pay attention on how people react to you I have a "angry man resting face" kind of face. Sometimes I'll ask things and people will move a bit back -- like I'm telling them their solution is wrong. That's when I have to add "I'm not saying it's wrong, I'm just confused". That may help you to not get in trouble. ### Learn to recognize toxic people; stay away from them You'll find people that, even if they don't small talk you, they will bad mouth everything else -- even some other people -- openly. Stay away from those people. You have no idea how that kind of attitude will drive you down. ### Beware of micro-aggressions "Micro-aggressions" are aggressive comments in small doses. Like someone that keeps calling you "that person" or seemingly innocuous comments about your position in some policy. Those are hard to fight, 'cause PR won't listen to you saying that they are attacking you. Also, they are hard to detect, 'cause they seem small enough, but they do pile up and you'll blow your anger all at once. Better just stay away and avoid contact as possible. ### No, I don't think they are "fixable" (Personal opinion) Someone could say "Hey, maybe if you spoke to that person, they would stop". Personally, I don't think they would. This kind of stuff is going for so long to them that it feels natural and, most of the time, you're the wrong one (for not seeing that they are joking, for example, in true "Schrödinger's asshole" style.) ### Toxic/micro-aggressors are only fixable if they are YOU Unless it's you realizing you're acting like a toxic person or micro-attacking someone, and realize that you're actually doing more harm than good being that way, there is no way to fix those traits (again, personal opinion). ...mostly 'cause hearing from someone else may feel "they are the ones against me!" to them. ### Hero Projects: You'll have to do it someday An "hero project" is a project/spec change/framework that you personally think will solve a group of problems in your project. It could be a different architecture, a new framework or even a new language. That means you'll spent your free time to write something that is already being worked/exists just to prove a point. Sometimes it proves you where wrong. (But you got something from it, nonetheless.) ### Don't confuse "hero project" with "hero syndrome" I have seen this at least two times: Someone claims things don't work when they aren't around or that they don't need help. This is "hero syndrome", the idea that that person is the only one capable of solving all the problems. Don't be that person. ### Learn when to quit You tell your boss that you didn't finish on time because something weird happened and he lashed out at you. One of your coworkers is constantly micro-attacking you. Another one is the guy that keeps doing stupid pranks, saying bullshit and small talking other groups all the time. A third is always complaining that when he's not around, things don't work. It's time to start sending your resume around, no matter how good the pay is or how awesome the project is. ... unless you want to be a constantly pissed off, annoyed person when you're in the forties. ### I.T. world is a very small egg We have a expression here: "The world of something is a small egg", which means that you don't live in a large world; the world is small. I.T. world is really small. The person you work with today will find you again in 15 years after you both changed 3 or 4 jobs already. And you'll meet a lot of other I.T. people in the way. And they will talk about themselves. And whatever you say/do will be talked around, which one person will hear and pass along another company, which will pass along other people, which will pass the story along to another company and, suddenly, when you realized, nobody will hire you locally 'cause everybody knows that time when you fucked up a project or punched a colleague in the face. ### Paper notes are actually helpful I tried to become "paperless" many times. At some point, I did keep the papers away, but in the very end, it really do help to have a small notebook and a pen right next to you write that damn URL you need to send the data. Trello is cool and all, but Post-its are nicer Nothing says "I'm really busy, but organized" like having a bunch of post-its on your desk. ### Blogging about your stupid solution is still better than being quiet You may feel "I'm not start enough to talk about this" or "This must be so stupid I shouldn't talk about it". Create a blog. Post about your stupid solutions. They are still smarter than someone else's solution. Also, come back later and fight your own solutions with better ones. Show your growth. On top of that, they help you keep small notes or things you need to do. ... but turn off the comments One thing about posting your stupid solution is that it will attract people who just want to mess with you. "This is stupid", for example. "Your dumb" may someone say, unaware of who's actually dumb. Turn it off. Don't let those people stop you. ### Post your stupid solution online Don't keep a Github only for those "cool, almost perfect" projects. You're free to show that, at some point, you were a beginner. You can always come back and improve your code. (Or don't: I still have a public repo of my first Python project that looks like I just translated Java into Python, without the Pythonic part.) ### Keep a list of "Things I Don't Know" Richard Feymann, famous physicist, kept a notebook with the title "Things I Don't Know". When you find something that seems cool and you'd like to know more, create a file/note/whatever with it in the title. Then make notes about what you find/figure out.
L’empire et l’identité de Lama Fâché - Enquête - YouTube

Vous souvenez-vous de ce post où après l'analyse du débunkage d'AudeWTF je me rendais compte que la journaliste proposait des émissions Youtube de spectacles mais qu'en rien elle ne débunkait des "fakes" ni ne produisait des reportages d'un journalisme d'investigation (en tout cas pour ceux que j'ai vu).

Eh bien je vous propose ici de découvrir la chaîne de Sylvqin qui est indépendante, ne bénéficie pas des financements de FranceTV pour ses reportages ni des "aides de l'état" via le CNC.

Quelle est la particularité de la chaîne ? Du vrai journalisme d'investigation ! Littéralement leur reportage sur le Lama Fâché est ce qu'aurait du être le reportage d'AudeWTF si cette dernière ne courait pas désespérément après les vues et les likes.

Bref, je vous invite à regarder d'abord le reportage d'AudeWTF et de le comparer à celui linké et vous me direz lequel joue le moins sur l'émotionnel et en lequel vous accordez le plus de crédit ?

Anti-pattern OOP en Swift
thumbnail

Je trolle un peu mais je subodore que cela fût écrit par des devs C ou éventuellement Scala / Haskell / Lisp.

Une fonction prenant autant la terre entière en paramètre, notamment avec des algo-switchers (boolean) est typique des personnes qui pensent structures et non ségrégation et en encapsulation.

Clean-coder est difficile, l'OOP l'est aussi, la PF également alors allier les trois correctement...

À votre avis pourquoi la terre est-elle polluée ?

Ma proposition : tout acte de pollution volontaire est converti en crime contre l'humanité. Non ?

Naming convention / Methodology / BEM / CSS

Une explication claire sur la convention de nommage BEM en CSS.

Un autre lien.

JMXTRANS | Communicate with thousands of machines via a single jmx instance

Un outil en licence MIT permettant de monitorer des JVM.

Le mur gouvernance partagée
thumbnail

Tout un tas de documents sur les entreprises libérées, la PNL, la sociocratie, etc.

Merci à je ne sais plus qui sur le Styx.

L’indemnité de grand déplacement - Urssaf.fr

Comment indemniser un salarié que l'on envoie en mission à l'étranger.

Ici le barème forfaitaire si le salarié n'est pas aux frais de société :

Démon de Maxwell — Wikipédia

L'expérience de pensée de James Clerk Maxwell datant de 1867 et qui avait pour but de mettre à mal la seconde loi de la thermodynamique.

Le bonheur des frameworks – Sam & Max
thumbnail

Tiré d'une traduction de Joël Sposky (cet homme est un vrai génie) :

Traduction un peu adaptée de l’article Why I hate framework de Joel Spolsky

J’ai voulu construire une petite étagère pour y ranger les condiments.

Ayant fait un peu de menuiserie avant, j’avais une bonne idée de ce dont j’avais besoin : un peu de bois et quelques outils de base. Un mètre, une scie, un niveau et un marteau.

D’ailleurs, si je voulais construire toute une maison, j’en aurais besoin également. Du coup je suis allé dans une quincaillerie, et j’ai demandé au vendeur où je pouvais trouver un marteau.

“- Un marteau ?”, me répondit-il. “Plus personne n’achète des marteaux de nos jours vous savez. Ils sont un peu vieux jeu.”

Surpris, je lui demande pourquoi.

– “Et bien, le problème avec les marteaux, c’est qu’il y en a plein de différents types. Des marteaux arrache-clou, des masses, des marteaux de tapissier… Que se passerait-il si vous achetiez un type de marteau et réalisiez que vous avez besoin d’un autre type plus tard ? Vous devriez achetez un autre marteau pour votre prochaine tâche. Il se trouve que la plupart des gens veulent vraiment un seul marteau qui peut être utilisé pour la majorité des tâches qu’ils peuvent rencontrer dans leur vie.”

– “Ça me parait logique. Pouvez-vous me dire où je peux trouver un marteau universel ?”

– “Non, nous ne les vendons plus. Ils sont obsolètes.”

– “Vraiment ? Je pensais que vous veniez de dire que le marteau universel était l’avenir.”

– “Il se trouve que, si vous faites un seul marteau qui puisse être utilisé pour toutes sortes de tâches, il n’est vraiment bon, à aucune d’entre elles. Enfoncer un clou avec une masse n’est pas très efficace. Et pour tuer votre petite amie, rien ne vaut un marteau de tapissier.”

– “C’est clair ! Donc, si plus personne n’achète des marteaux universels, et que vous ne vendez plus de marteaux à l’ancienne, quels marteaux vendez-vous ?”

– “En fait, nous n’en vendons pas.”

– “Alors…”

– “D’après nos recherches, ce dont les gens ont besoin n’est pas un marteau universel du tout. Il vaut toujours mieux avoir le bon marteau pour le bon boulot. Donc, nous avons commencé à vendre des fabriques de marteau, capable de produire n’importe quel marteau qui pourrait vous intéresser. Tout ce dont vous avez besoin est de remplir la fabrique de travailleurs, lancer la machinerie, acheter les matériaux de base, payer les charges et hop, vous avez exactement le type de marteau dont vous avez besoin en un clin d’œil.”

– “Mais je ne veux pas acheter une fabrique de marteaux…”

– “Parfait. Car nous n’en vendons plus.”

– “Attendez, vous venez de me dire que…”

– “Nous avons découvert que la plupart des gens n’ont pas besoin d’une fabrique complète de marteaux. Certains, par exemple, n’auront jamais besoin d’un marteau de tapissier. (Peut être qu’ils n’ont pas d’ex. Ou peut être qu’ils les ont tué avec des pics à glace.). Donc il n’y a aucune raison pour quelqu’un d’acheter une fabrique de marteaux pour tous les types de marteaux.”

– “Oui, c’est sûr.”

– “Donc, à la place, on a commencé à vendre les plans de constructions de la fabrique de marteaux, afin que nos clients puissent construire leurs propres fabriques, complètement personnalisées pour produire uniquement les types de marteaux dont ils ont besoin.”

– “Laissez-moi deviner. Vous ne les vendez plus.”

– “Non. Bien entendu. Il se trouve que les gens ne veulent pas construire toute une fabrique juste pour faire quelques marteaux. Laissez la construction des fabriques aux experts de construction de fabriques, c’est ce que je dis toujours !!”

– “Et je vous approuve sur ce point.”

– “Et oui. Donc nous avons arrêté de vendre ces plans et nous avons commencé à vendre des fabriques de fabriques de marteaux. Chacune d’elle est construite par nos experts dans le business de fabrique de fabrique de marteaux, afin que vous n’ayez pas à vous inquiéter des détails triviaux de la construction d’une fabrique. Malgré cela, vous avez tous les bénéfices d’avoir votre propre fabrique personnalisée, produisant vos propres marteaux personnalisés, collant à vos designs spécifiques en matière de marteau.”

– “Heu, ça ne me semble pas vraiment…”

– “Je sais ce que vous allez dire !! … et nous ne les vendons d’ailleurs plus. Apparemment, peu de gens achetaient ces fabriques de fabrique de marteaux, donc nous avons trouvé une solution à ce problème.”

– “Hum.”

– “Nous avons pris le temps de faire le bilan de notre infrastructure technique, et nous avons déterminé que les gens développaient une frustration à avoir à gérer et opérer une fabrique de fabrique de marteaux, tout comme la fabrique qu’elle produisait. Ce genre de contrainte additionnelle peut se révéler fastidieux quand vous vous retrouvez dans un scénario où vous utilisez également une fabrique de fabrique de mètres, une fabrique de fabrique de scies et une fabrique de fabrique de niveaux. Sans compter un conglomérat de transformation du bois. Nous avons objectivement évalué la situation, et déterminé que c’était trop complexe pour quelqu’un qui voulait juste créer une étagère pour condiments”.

– “Non, sans blague ?”

– “Du coup cette semaine, nous mettons sur le marché une fabrique de fabrique de fabrique de création d’outils en tout genre, pour qu’ainsi vos différentes fabriques de fabrique à outils puissent être créées à partir d’une seule fabrique unifiée. La fabrique de fabrique de fabrique produira uniquement la fabrique de fabrique dont vous avez réellement besoin, et ainsi ces fabriques de fabrique produiront une seule fabrique basée sur vos spécifications d’outils personnalisés. Vous aurez exactement le marteau dont vous avez besoin, et exactement le bon mètre pour votre tâche, juste en appuyant sur un bouton (même si vous aurez probablement quelques fichiers de configuration pour que tout fonctionne selon vos attentes).

– “Donc, vous n’avez pas de marteaux ? Pas du tout ?”

– “Non. Si vous voulez vraiment une étagère à condiments de haute qualité, de standard industriel, vous avez vraiment besoin de quelque chose de plus sophistiqué qu’un simple marteau acheté à la quincaillerie du coin.”

– “Ok… Bon. Il faut ce qu’il faut. Si c’est comme ça qu’on fait maintenant, il faut bien que je m’y mette.”

– “Excellent !!”

– “Ça vient avec une documentation, pas vrai ?”

Évolution du nombre de soutiens validés pour le RIP de l'ADP

Attention, la courbe en forme de logarithme est déjà en train de s’amorcer. Pour paraphraser Tatiana Ventôse dans sa Webémission Le File d'Actu, il faut que chaque votant parvienne à convaincre au moins 5 autres votants pour passer les 4,7 millions de signatures !

Protéger la France de la privation d'ADP - sa première frontière et l'une des entreprises nationales les plus rentables - ce n'est pas un acte individuel fait derrière son écran en quelques clics, c'est une démarche active sur neuf mois consistant à militer, expliquer, rallier et convaincre et qui commence par le vote.

Dit autrement, si vous souhaitez mettre fin à la vague de privatisation des entreprises rentables que vos impôts ont littéralement construites et payées, ça commence par soutenir le RIP de l'ADP et ça continue par militer ensuite.

Après, chacun face à sa conscience, mais il ne faudra pas venir gueuler que rien ne va plus dans quelques années si vous n'avez rien fait aujourd'hui.

Chronique d'un éveil citoyen - Épisode 1 : L'électrochoc Dieudonné - YouTube
thumbnail

Cette vidéo est très intéressante, l'analyse que l'auteur de la vidéo fait de Finkelkraut et de son argumentaire est magistrale !

Le système d'exploitation Debian 10 « Buster » de GNU/Linux sortira le 6 juillet 2019, avec de nombreuses fonctionnalités et améliorations

I'm waiting so much for this :3

Météo France publie ses cours sur le Deep Learning sur GitHub
thumbnail

Ce sera mon sujet fil rouge à partir de la rentrée de septembre : rattraper mon retard sur le Deep Learning.

Tout ce qui est descente du gradient, algo génétique et perceptron c'est bon, mais je manque énormément de pratique !

dependency-check-maven – Usage

La page de configuration du plugin que je ne retrouve jamais.

En faire plus avec la Console Javascript - Il n'y a pas que le console.log() !
thumbnail

Mon dieu mais c'est génial !

console.table(...)
console.group(...)

Merci à je ne sais plus qui.

Just 100 companies responsible for 71% of global emissions, study says | Guardian Sustainable Business | The Guardian
thumbnail

Voici la liste des 100 entreprises responsables de la production de 71% de la pollution mondiale. À titre personnel, je lance une démarche de boycott même si la plupart œuvre à l'étranger.

Du reste, pensez à voter pour empêcher LREM de privatiser la première frontière de France : l'Aéroport de Paris (ADP).

Count   Company     Percentage of global industrial greenhouse gas emissions
1   China (Coal)    14.32%
2   Saudi Arabian Oil Company (Aramco)  4.50%
3   Gazprom OAO     3.91%
4   National Iranian Oil Co     2.28%
5   ExxonMobil Corp     1.98%
6   Coal India  1.87%
7   Petroleos Mexicanos (Pemex)     1.87%
8   Russia (Coal)   1.86%
9   Royal Dutch Shell PLC   1.67%
10  China National Petroleum Corp (CNPC)    1.56%
11  BP PLC  1.53%
12  Chevron Corp    1.31%
13  Petroleos de Venezuela SA (PDVSA)   1.23%
14  Abu Dhabi National Oil Co   1.20%
15  Poland Coal     1.16%
16  Peabody Energy Corp     1.15%
17  Sonatrach SPA   1.00%
18  Kuwait Petroleum Corp   1.00%
19  Total SA    0.95%
20  BHP Billiton Ltd    0.91%
21  ConocoPhillips  0.91%
22  Petroleo Brasileiro SA (Petrobras)  0.77%
23  Lukoil OAO  0.75%
24  Rio Tinto   0.75%
25  Nigerian National Petroleum Corp    0.72%
26  Petroliam Nasional Berhad (Petronas)    0.69%
27  Rosneft OAO     0.65%
28  Arch Coal Inc   0.63%
29  Iraq National Oil Co    0.60%
30  Eni SPA     0.59%
31  Anglo American  0.59%
32  Surgutneftegas OAO  0.57%
33  Alpha Natural Resources Inc     0.54%
34  Qatar Petroleum Corp    0.54%
35  PT Pertamina    0.54%
36  Kazakhstan Coal     0.53%
37  Statoil ASA     0.52%
38  National Oil Corporation of Libya   0.50%
39  Consol Energy Inc   0.50%
40  Ukraine Coal    0.49%
41  RWE AG  0.47%
42  Oil & Natural Gas Corp Ltd  0.40%
43  Glencore PLC    0.38%
44  TurkmenGaz  0.36%
45  Sasol Ltd   0.35%
46  Repsol SA   0.33%
47  Anadarko Petroleum Corp     0.33%
48  Egyptian General Petroleum Corp     0.31%
49  Petroleum Development Oman LLC  0.31%
50  Czech Republic Coal     0.30%
51  China Petrochemical Corp (Sinopec)  0.29%
52  China National Offshore Oil Corp Ltd (CNOOC)    0.28%
53  Ecopetrol SA    0.27%
54  Singareni Collieries Company    0.27%
55  Occidental Petroleum Corp   0.26%
56  Sonangol EP     0.26%
57  Tatneft OAO     0.23%
58  North Korea Coal    0.23%
59  Bumi Resources  0.23%
60  Suncor Energy Inc   0.22%
61  Petoro AS   0.21%
62  Devon Energy Corp   0.20%
63  Natural Resource Partners LP    0.19%
64  Marathon Oil Corp   0.19%
65  Vistra Energy   0.19%
66  Encana Corp     0.18%
67  Canadian Natural Resources Ltd  0.17%
68  Hess Corp   0.16%
69  Exxaro Resources Ltd    0.16%
70  YPF SA  0.15%
71  Apache Corp     0.15%
72  Murray Coal     0.15%
73  Alliance Resource Partners LP   0.15%
74  Syrian Petroleum Co     0.15%
75  Novatek OAO     0.14%
76  NACCO Industries Inc    0.13%
77  KazMunayGas     0.13%
78  Adaro Energy PT     0.13%
79  Petroleos del Ecuador   0.12%
80  Inpex Corp  0.12%
81  Kiewit Mining Group     0.12%
82  AP Moller (Maersk)  0.11%
83  Banpu Public Co Ltd     0.11%
84  EOG Resources Inc   0.11%
85  Husky Energy Inc    0.11%
86  Kideco Jaya Agung PT    0.10%
87  Bahrain Petroleum Co (BAPCO)    0.10%
88  Westmoreland Coal Co    0.10%
89  Cloud Peak Energy Inc   0.10%
90  Chesapeake Energy Corp  0.10%
91  Drummond Co     0.09%
92  Teck Resources Ltd  0.09%
93  Turkmennebit    0.07%
94  OMV AG  0.06%
95  Noble Energy Inc    0.06%
96  Murphy Oil Corp     0.06%
97  Berau Coal Energy Tbk PT    0.06%
98  Bukit Asam (Persero) Tbk PT     0.05%
99  Indika Energy Tbk PT    0.04%
100     Southwestern Energy Co  0.04%
Stop calling these Dark Design Patterns or Dark UX — these are simply a**hole designs

C'est tout à fait ça. Nous devrions légiférer pour arrêter ce genre d'arnaques, car il s'agit ni plus ni moins que cela : des arnaques.

Via Sam Ganegie.

Dupliquer son badge d’immeuble avec un smartphone c’est facile
thumbnail

@Lenny : je pense que l'on peut copier les badges de nos locaux, on teste ?.

Via Sebw.

Chiffrer son dossier personnel (/home) sous Ubuntu · ~rom1v/blog - Everything is awesome

@Doudou sinon tu as ce post qui peut te dépanner.

Yahoo aime votre vie privée (sans doute plus que vous) - Animal

@Animal : ou vous pouvez décider d'arrêter d'utiliser ces services de merde qui violent éhontément la vie privée et dont l'option "Désactivé" ne prouve absolument pas qu'aucun tracking ne soit effectué (cf. NSA + Patriot Act + pas d'accès au code source).

AMHA

GraphQL Java - Exemple d'implémentation d'un µ-service

GraphQL est une alternative très sérieuse à RESTful. Ce qui me pose encore problème pour l'adopter définitivement c'est la carence en frameworks afin de parser/lexer les requêtes reçues via HTTP et d'en assurer le mapping côté base de données.

Ici GraphQL Java apporte une première pierre à cet édifice avec un exemple d'implémentation simple mais concret.

A propos des racines et des excroissances du négationnisme - Lignes de crêtes - Riff's Links
thumbnail

Aux questions antisémites, il n’y a que deux réponses, celle des antisémites, et puis le crachat dans la gueule.

Je ne suis pas de cet avis de Riff, je pense au contraire qu'il faut reprendre point par point les arguments des antisémites, les débunkers, les démonter, les ridiculiser, apporter toutes les preuves factuelles, logiques et scientifiques pour planter dans les esprits la graine d'une idée : l'antisémitisme est une immonde connerie.

Il faut que les idées qui auront germées de cette graine aient leurs racines puissamment accrochées à ces arguments solides, car la seule contagion dont on ne peut guérir c'est celle d'une idée.

Du reste, faire des antisémites des ennemis constituera de facto des gens qui resteront antisémites toute leur vie car pourquoi changer pour être aimer de quelqu'un qui vous méprise ? A contrario les considérer comme des gens à qui il manque des savoirs, ou même comme des malades fait que l'on peut et l'on doit leur venir en aide.

Il faut bien comprendre la dichotomie :

  • Soit vous considérez que l'on peut aider ces personnes à l'image de malades.
  • Soit vous considérez qu'elles sont peine perdue.

Dans ce second cas, alors la seule option nous restant est leur mise à mort, leur traque, leur massacre, leur égorgement, eux, leurs femmes, leurs enfants, leur famille, leurs amis. Il faut pratiquer sur eux une telle terreur et de telles horreurs qu'ils feraient mieux d'aller vivre en Corée du Nord que de rester sur nos terres.

Pour ma part, si vous avez vous-mêmes une telle soif de sang envers d'autres êtres humains, alors je pense que vous aussi vous avez besoin d'aide.

Rappelez-vous :

La meilleure façon de se débarrasser d'un ennemi, est de s'en faire un ami.
Ninjago

Le bisou

JavaScript vs Dieu & La Trinité

Je me disais bien qu'il y avait des trucs pétés dans les deux ! #Antipattern

Merci à Sebsauvage

La liberté d'expression n'est pas ce que vous pensez

Voici un exemple de biais cognitif ou d'erreur de raisonnement, ou peut-être de manque de compréhension du concept de liberté d'expression.

La liberté d'expression ne signifie pas dire "l'absence de prise de responsabilité sur ce que l'on dit !"

Je m'explique, nous sommes libres de dire ce que nous souhaitons mais en cas d'insulte, d'injure, de diffamation ou encore d'incitation à la haine, bref toutes ces choses qui peuvent blesser autrui, et bien nous devons répondre de ce que nous avons dit.

Aussi la bonne question est : quel est le motif de l'action en justice de ces suprémacistes blancs ?

Je ne cautionne aucunement les thèses de ces personnes (qui pour moi ont de gros problèmes), mais nous nous devons d'être vertueux de notre côté et ne pas sombrer dans l'injure ou l'agression.

Via Neko

Is Islam a Religion of Peace? - YouTube
thumbnail

Le témoignage de Ayaan Hirsi Al qui a quitté son pays à cause de l'oppression faite aux femmes, puis qui a du quitter la Norvège pour s'expatrier aux USA à cause du meurtre de Théo Van Gogh (le petit-fils du peintre) qui s'est fait poignardé parce qu'il était un ami très proche de Ayaan et dont le couteau contenait un message indiquant à Ayaan qu'elle serait la prochaine.

Mais selon Rokhaya Diallo il est parfaitement possible d'allier Islam et Féminisme... (Attention j'ai volontairement commis un amalgame ici).

Je m'explique, de mon point de vue actuel, je pense qu'il n'est pas possible d'allier Religion et Féminisme car les premières sont basées sur des dogmes dont l'origine ne répond à aucune logique et fabriquent pour la plupart des esclaves (sexuels ?) à domicile, tandis que le second s'appuie sur une réflexion humaniste et des traitements justes et équitables...

Fin de la plaisanterie médiatique du barrage à Macron lors des élections européennes : la politique économique et sociale de la France pour 2019-2020 est sortie ! - Union Populaire Républicaine | UPR - Animal

Je résume les GOPE de l'Union Européenne pour cette fin 2019 et ce début 2020.

1) Réduire la dette en fermant des services publics

Qui a encore besoin d'écoles, d'hôpitaux et de routes gratuites ?

2) Uniformiser les régimes de retraites

=> Je rappelle que la France fait partie des pays aux retraites les plus élevées dans l'UE... En d'autres termes, "uniformiser les retraites" avec celles des autres pays consiste à les tirer vers le bas.

Pour rappel, la retraite moyenne en Pologne tourne autour de 600 € / mois et descend à 250 € / mois pour les moins bien lotis (elle oscille entre 50% et 70% du salaire).

Je suis sûr que nombreux sont ceux qui souhaitent "s'harmoniser" avec une telle retraite.

3) Réduire les impôts "inefficaces", c'est-à-dire ceux sur les riches.

Et oui, un impôt est considéré comme inefficace si sa valeur absolue est trop basse par rapport à celle des autres. Donc plus le gouvernement baisse l'impôt de la classe dominante, plus sa valeur absolue baisse et plus il devient légitime de supprimer cet impôt car jugé "inefficace"...

4) Réduire le nombre de régions & Réduire le nombre de communes

Car le sentiment d'appartenance nationale n'existe pas. Il n'y a pas de culture française, il n'y a pas d'esprit français. Les gens ne fêtent pas tous ensemble les victoires des équipes françaises aux JO ou à la Coupe du monde.

Bref, la France n'est en aucun cas une unité n'est-ce pas ? Supprimer les traces du passé est le premier moyen de le réécrire !

6) Baisser les retraites

Car simplement uniformiser ne suffit pas, les Polonais pourraient s'enrichir mon bon monsieur ! Alors il faut s'assurer que l'on uniformise d'une part et que l'on abaisse les gains obtenus d'autres part. De facto, ce sera l'ensemble des cotisations retraites qui baisseront dans toute l'union européenne (et les indemnités d'autant). C'est la moyenne globale sur toute l'eurozone que vise cette GOPÉ.

7) Baisser les cotisations des entreprises pour augmenter celles sur les salaires.

Payer plus de retraite à titre personnel pour obtenir moins de retraite en échange et à titre personnel...

8) Déréglementer toutes les professions critiques pour la société civile

  • les experts-comptables,
  • les commissaires aux comptes,
  • les notaires,
  • les avocats,
  • les greffiers,
  • les huissiers,
  • les commissaires-priseurs,
  • les pharmaciens,
  • les gérants d’auto-école,
  • les syndics de copropriété,
  • et les vendeurs de pièces détachées pour automobiles.

Mais bon, avoir un pharmacien qui n'est plus inscrit à l'ordre des pharmaciens, idem pour les comptables, les notaires, les avocats, bref tout ce qui permet un minimum de protection de la santé, d'équité et de justice dans la société et de sécurité individuelle...

L'oligarchie en place n'a que faire de notre patrie. Elle organise des guerres iniques depuis des siècles, spécule sur les denrées alimentaires sans scrupule et affame des gosses qui en crèvent. Nous sommes à ses yeux une "ressources humaine", un matériel remplaçable qui se renouvèle seul et ou chaque génération est plus soumise que sa précédente.

Il faut se sortir de ce piège à rats, nous allons en crever, nos enfants vont en crever, notre écosystème va en crever.

#UPR #FREXIT

Quand la désinformation touche aussi les shaarlistes

Sebsauvage post ce lien TwitterLaure Bretton (une Twittos qui m'était inconnue) explique que cette affiche est sexiste car le nom de la comédienne n'apparaît pas.

Puis Bill2 post ce second lien où l'affiche est visible au complet en expliquant que ce sont les "stars" qui sont en fait mises en avant.

Effectivement je n'avais jamais entendu parler de Lucie Jeanne donc il est probable que je ne me sois pas déplacée pour elle puisque je ne la connaissais pas. Ici l'affiche n'est pas sexiste car, et à titre d'exemple, si Murielle Robin eut pris la place de Gad Elmaleh, pour sûr qu'elle aurait tenu la tête d'affiche au côté de Philippe Lellouche... Le star-système mettant en avant les célébrités pour créer autour d'elles une aura attractive à caractère procyclique.

Bref, encore une pseudo-féministe qui déforme la réalité pour servir son propos... Je suis navrée car c'est ce genre de tentatives éhontées à mi chemin entre le mensonge et la manipulation qui desservent la cause féministe aussitôt qu'elles sont dévoilées ; car la majorité des gens associe féministes à manipulatrices justement à cause de ces "inexactitudes".

Voici comment je comprends le twit de Laure Bretton : "I'm a special snowflakes ! I'm sooooooo oppressed in my upper-class lifestyle and I neeeeeeeeeeed to create problems on my own ! Look at me ! Musculinist is everywhere ! Masculinist is oppressing me all time long !"

C'est une supposition mais c'est mon ressenti.

ᗢ Meow by takorii - Liens utiles et à partager

Jouer un chat qui explore un archipel d'îles. @Chlouchloutte spourtoi !

takorii

Chrome se sert en RAM, mais aussi en espace disque - HowTommy | Liens et actu en vrac

J'en parlais hier, Chrome n'est pas le plus performant des navigateurs, ni à l'affichage, surtout pas vis-à-vis de la consommation mémoire et apparemment pas non plus vis-à-vis du disque.

Par contre, Chrome est le meilleur navigateur pour :

  • Utiliser les services Google
  • Cartographier (profiling) votre personnalité intime à partir de vos habitudes
  • Transmettre votre vie privée et votre profil personnel à des tiers (réseaux sociaux, NSA, etc)
  • Le debugger JS est pratique... (Quoi c'est vrai. je trouve que le debugger de Chrome est vraiment bien voilà, ça m'arrive aussi. Je ne suis pas dans le troll tout le temps et puis ça fini sur une note positive alors m'en fiche)
Google donne les raisons de la limitation des bloqueurs de publicités dans Chrome qui seraient liées à la confidentialité des données

Le bras de fer continue entre Google et les développeurs d’extensions sur les modifications introduites dans le système d’extension du navigateur Chrome, le document envoyé dernièrement à la SEC par l’Alphabet, la maison mère de Google, contient des lignes qui expliquent que les bloqueurs de publicités actuels et d’autres outils de la même famille pouvaient avoir des incidences négatives sur les activités publicitaires de Google...

Il n'y a pas de bras de fer, Google est une filiale commerciale d'une holding à but purement lucratif (Alphabet). Suffisamment de personnes se sont laissées berner par les meilleurs performances de Chrome à ses débuts (et uniquement à ses débuts) pour en faire de facto, le second IE.

L'entreprise au monopole 2.0 va simplement récolter les fruits de ce qu'elle a semé : notre dépendance totale à ses services et la commercialisation totale de nos profils "cognitifs", de notre vie privée et de notre intimité.

Le choix d'un navigateur doit se faire avant tout par rapport à un idéal que l'on souhaite pour notre internet. Or, la plupart des internautes choisissent un navigateur parce qu'une publicité leur a suggéré, par effet de mode ou par intérêt immédiat.

Bref, nous retournons vers l'ère IE et il nous faudra une décénie pour en sortir. Si seulement j'avais tort 😥.

Le post de Sebsauvage à ce sujet.