Fuckowski

Bon, j’annonce tout de suite la couleur :

  • C’est en espagnol ( mais je bosse pour que l’intégrale soit dispo en français )
  • C’est surtout drôle pour les programmeurs ( quoique … )

Bon, le monsieur à ouvert une section en français sur sa page avec les traductions qui sont postées ici. Je lui envoie les correction après si c’est nécessaire.

Humour acide, très bien écrit, très drôle, touchant parfois, et surtout … tellement vrai.

Pour les interessés, ça se passe ici.

Hey bah t’a gagne…
allez hophophop on traduit !
:stuck_out_tongue:

je vote pour la trad aussi :stuck_out_tongue:

allez hop, pareil.
ça a l’air bien sympa, mais je maitrise pas assez l’espagnol pour en profiter pleinement…

PS: et puis merci, et bon courage pour la trad, donc ! :stuck_out_tongue:

Oír Gilipolleces ( Écouter des conneries )

Lundi, 13 septembre 2004

Quelle est la partie la plus dure du travail d’un développeur de software? L’architecture, l’analyse fonctionnelle, la partie technique, la programmation? Non. La partie vraiment dure c’est de devoir écouter des conneries.

Tu reçois un mail de l’IT manager, cet individu qui, selon son curriculum, a “collaboré dans la conceptualisation de projets de convergence” et à été “directeur d’expansion de stratégies de 4ème génération”, et dont le travail consiste à renvoyer les mails des clients aux techniciens et vice versa, et à lire des articles sur Internet pour avoir quelque chose à dire (avec Google et quelques règles d’Outlook la société pourrait économiser 80.000 euros par année). Sujet du mail : “Brainstorming”. Et là tu est déjà baisé (NdT :bien jodido dans le texte).

Le “brainstorming” ou “orage de cerveaux” c’est (ou devrait être) la réunion dans laquelle tout le monde apporte son talent et son expérience pour trouver les solutions idéales aux problèmes. La réalité c’est que dans l’orage de cerveaux, le manager normalement apporte l’orage et toi tu dois apporter le cerveau. Et dans l’orage, comme dans la rivière agitée, les bénéfices sont pour les pêcheurs. Toi tu réfléchis, trouve et modélise des solutions, c’est bien pour ça que tu voulais être ingénieur. Lui il rafle la médaille, c’est bien pour ça qu’il a fait un master en “strategy business trucmuche”.

Alors tu arrives méfiant à la salle de réunion. Il est là, avec le portable, la tasse de café et plein de documents (normalement les mails des clients avec leur conditions, c’est-à-dire le vrai problème, et pas un seul mémo en plus qui puisse indiquer qu’il a passé un peu de temps à chercher une quelconque solution).

Tu sais à quoi tu t’exposes une fois de plus. Il va te demander le typique : “Et maintenant je fais quoi ?” mais sans que tu t’en rendes compte. Par derrière. Comme si t’étais un imbécile. Mais ça ne s’arrête pas là : tu vas être le cobaye sur lequel on va expérimenter les derniers discours appris sur les forums ou dans les “cookbooks”, pour que tu les valides ou les rejettes, les corriges, et en définitive aide ton manager à améliorer cette sagesse superficielle, cet “art de feindre d’avoir raison” (voir Schopenhauer) avec lequel cet individut justifie son salaire exorbitant devant la direction (qui normalement ne sait pas distinguer une sardine et un thon (NdT : eeeuh là je savais pas comment traduire « churras y merinas » alors j’ai improvisé).

Alors tu prends ça comme une affaire personnelle. Il faut expliquer clairement que A ) une sardine est une sardine et un thon un thon, autrement dit qu’une idée est une idée et une connerie, une connerie, et qu’on sait les distinguer; B ) on peut faire de la démagogie en parlant du sexe des anges ou peut-être d’art abstrait, pas de software; C ) on apprend pas dans un forum en une heure ce qui nous a pris quelques bonnes années d’université, quelques autres de boulot, beaucoup de café et autant d’heures supplémentaires; D ) un incapable avec un bouquin n’est pas un ingénieur; E ) Un master, une cravate et un PDA c’est joli, mais ça ne donne pas de bon sens à qui n’en a pas.

La représentation commence. Attachez vos ceintures. Accrochez-vous avec force à vos principes, parce qu’on va vous appliquer le traitement Ludovico ( voir “Orange Mécanique” ). On va vous immobiliser sur une chaise, vous administrer une drogue, accrocher des supports à vos paupières et vous obliger à regarder 2 heures de Power Point. On va vous faire subir des tortures psychologiques avec le double objectif de vous extraire de l’information, et de vous convaincre de réalités alternatives. Ci-dessous je reproduis des fragments réels ( je vous donne ma parole d’honneur ) des réunions avec mon IT manager sur différents projets Java et VB dans lesquels « nous » avons travaillé.

Perle 1 : Hibernate

[manager] On utilise quoi pour la couche de données?
[moi] Utilisons Hibernate
[manager] Il vaut mieux utiliser des Entity Beans
[moi] Pourquoi?
[manager] Les Entity Beans sont J2EE standard, et en plus ils sont dans un pool, Hibernate n’a pas de pool alors il est plus lent.

Quand j’ai voulu lui expliquer l’énormité qu’il avait dit, les idées ont fusé à une telle vitesse dans ma tête que j’ai subi un choc, et que j’ai du aller me chercher un verre d’eau. Je crois que c’est une technique délibérée d’argumentation, qui devrait s’appeler “la connerie est tellement grande qu’elle devient irréfutable”. Si quelqu’un dit que “Deux et deux égale cinq”, on peut argumenter que c’est quatre. Mais si quelqu’un dit que “Deux et deux est une constellation proche d’Alpha Centauri”, on peut seulement répondre “Mais de quoi tu parles!?”, et on peut te répondre “On voit vraiment que tu n’as pas fait un Master trucmuche”.

Perle 2 : Easy Upgrade

Cette fois nous étions réunis avec des clients américains qui avaient acheté notre « application » (pour donner un nom à ce désastre programmé par “un Senior avec 10 ans d’expérience” et que j’ai du maintenir après coup). Le processus d’installation consistait à décompresser un ZIP sur le disque dur et après exécuter un Setup.exe (ça ne marchait pas en installant depuis un CD). Le ZIP contenait les fichiers de la base de données. Chaque fois qu’on leur donnait une nouvelle version, et s’ils ne voulaient pas perdre les anciennes données, il leur fallait renommer l’ancienne base de données, installer la nouvelle version complète (la nouvelle base de données devait être installée obligatoirement, parce qu’une partie de la logique et des ressources de l’application étaient dedans - ne me demandez pas pourquoi, demandez au “Senior”), et ensuite importer quelques tables par scripts (une semaine d’efforts pour que le technicien de la boite japonaise arrive à faire tout ça correctement).

[client] Vous ne pourriez pas simplifier le processus d’installation?
[manager] Si, on va créer un processus d’installation qui au début va faire un « diff » comme avec Source Safe et qui va installer juste les fichiers modifiés ou ajoutés.

Je suis resté là à me demander si cet individu savait que le code source, ça se compile.

Perle 3 : Interfaces magiques

Dans cette réunion, « il » était en train de me demander de faire un portail web (une espèce de caddie d’achats avec les services de l’entreprise), et que, pour économiser du temps, je m’en tienne seulement aux nécessités et spécifications du premier client qu’on avait réussi à rouler.

[moi] Mais, si je crée le portail spécifiquement pour un client, on ne va pas pouvoir réutiliser le code. Tu veux que je modélise la logique de transaction de manière générique, même si ça va me prendre plus de temps?
[manager] Non, on n’a pas le temps.
[moi] Alors quand on aura un deuxième client, on va devoir lui faire un portail différent.
[manager] Non, on va réutiliser celui qu’on va faire.
[moi] Alors, je le fais générique, non? Plus de temps …
[manager] Non, fais-le spécifique, mais en tenant compte qu’on va le réutiliser.
[moi] Voyons, explique-moi avec quelle technique je fais quelque chose de rapide et spécifique, mais réutilisable.
[manager] Fais simplement des interfaces propres.

Je me suis demandé si ça existait, un “Mr.Proper design pattern”. Ensuite je lui ai demandé qu’il m’explique comment faire une logique spécifique qui implémente une interface valide pour tout le monde, et si on arrivait à faire ce miracle (quelque chose comme définir un standard genre JDBC et créer des drivers différents), à la fin on n’allait réutiliser rien d’autre que l’interface (une demi-heure de boulot?), donc ça revenait au même. Son discours de réponse est impossible à reproduire.

Perle 4 : Override autoincremental keys

Cette fois il s’agissait de modéliser une logique de commerce transactionnelle qui opérait sur deux systèmes différents, un workflow et un software de budgets (chacun avec son API). Il fallait les associer de manière à ce que, quand un client sollicite un budget, une nouvelle tâche se créée dans le workflow et un nouveau budget soit associé à celle-ci.

[moi] Eh bien on doit créer une méthode qui commence une transaction, ajoute une tâche au workflow, garde l’ID, puis ajoute un budget, garde l’ID, fasse la relation entre les deux ID dans une base de données et fasse “commit”.
[manager] Pour économiser du temps fais en sorte que l’ID de la tâche et l’ID du budget soient toujours identiques, et comme ça on ne doit pas faire la relation (ça pourrait déjà être la perle nº4, mais non, ça ne s’arrête pas là).
[moi] Même si on pouvait spécifier nous-même les clés, on devrait savoir quels ID on a déjà utilisé pour pouvoir générer les nouveaux, c’est qui est plus coûteux qu’associer deux IDs. Mais en plus les clés on ne peut pas les spécifier nous-même, dans le workflow et les budgets, les clés sont des champs auto-incrémentables.
[manager] Mais il y a un mécanisme dans les Entity Beans qui laisse choisir les clés des registres qu’on rajoute.

Après le choc j’ai commencé à m’imaginer le mécanisme:

EntityBean: InsertTaskWithKey(55)
DataBase:SQLException:KeyViolation
EntityBean:PuisqueJeTeDisQueInsertTaskWithKey(55)
DataBase: Bon D’accord.

Perle 5 : Java Word Parser

Des fois les utilisateurs dudit portail de services uploadent des fichiers en format Word pour que l’entreprise (qui s’occupe principalement de la localisation de contenu) les traduise en différentes langues. On doit pouvoir estimer le coût de la traduction automatiquement pour pouvoir donner un budget au client de façon immédiate. On doit juste compter le nombre de mots du document et le multiplier par le prix par mot établi.

[manager] Comment on peut automatiser les budgets?
[moi] Je dois chercher une librairie java pour parser des fichiers doc, l’intégrer convenablement au portail et créer une fonction qui me rende le nombre de mots.
[manager] On va faire quelque chose plus rapidement. On peut réutiliser les macros de Word que le département d’Evaluation utilise.

Facile. On a juste besoin d’un “Enterprise Word Server” qui marche sur Solaris, qui puisse s’installer en cluster, et auquel on puisse accéder par RMI.

J’espère juste qu’avec ces exemples le monde comprenne ma souffrance. À la prochaine.

Non, ça va, mais je veux bien la suite, vu mes connaissances null en Espagnol.

Moi aussi je veux bien la suite :stuck_out_tongue: vu que j’ai fait allemand LV2 moi :stuck_out_tongue:

Zekiller, ou comment renoncer à son temps libre en une phrase… :stuck_out_tongue:

Teasing de ça.

[quote]Le projet bicicleta

Comment est-ce possible qu’un individu absolumente lego en matière de software soit capable de diriger un projet sans qu’on se voit le plumero ? Il ne devrait pas montrer son incompétence ? Il ne devrait pas fracasar el proyecto estrepitosamente ? Sin embargo, ces individus conservent leurs postes durant des années (normalement jusqu’à la quiebra de l’entreprise.
Le(a) clave de cette misère est dans le projet bicicleta.[/quote]Desolé, j’ai un peu negligé mon espagnol à l’école. Si quelqu’un pouvait compléter les mots en italique. Ca se lit pas mal même en ne comprenant pas l’espagnol, les mots se ressemblent énormément. Passez-vous de la traduction. :stuck_out_tongue:

Bon, j’ai eu quelques échanges de mails avec l’auteur du site, et je risque de traduire toutes ses nouvelles pour qu’il les incorpore à son blog ( haha MEMPAMAL ).

Vu que j’ai pas trop fait d’études en français, mes textes risquent d’avoir pas mal de fautes d’ortho/forme. Donc si vous voyez des fautes ou phrases qui peuvent “s’améliorer”, ça serait très sympa de me corriger :P.

J’essaye de mettre en ligne la fin du texte ce soir si j’ai le temps.

Je veux bien aider à la correction si jamais.

Bon, j’ai fait un peu de mise en page pour mettre le texte entier dans le premier message :P.

Voilà, traduction complète du premier texte. Si vous trouvez quoi que ce soit, ortho, faute de frappe, etc. dites tout de suite. Merci :stuck_out_tongue:

Edit : fautes corrigées. Pour « Son discours de réponse », il faudrait peut-être changer par « Son discours en réponse », mais il faut bien spécifier que quand ces individus répondent, c’est VRAIMENT des discours :stuck_out_tongue:

Super boulot, bravo, un peu technique pour moi, mais ça à l’air très marrant :P.
Sinon, à ta demande deux trois petites fautes relevées en vitesse:

voir l’Orange Mécanique -> voir "Orange Mécanique"
cet individu saurait que le code source… -> …cet individu savait… (je pense)
Son discours de réponse -> “Sa réponse” tout court me parait mieux non?
les macros de World -> de word…

C’est tout ce que je vois. Je suis aussi un peu rebuté par les termes anglais : “user” au lieu d’“utilisateur” par exemple. Mais peut-être (sûrement) est-ce comme ça dans la version d’origine?

merci pour la traduction en tout cas, ça doit être un sacré boulot!

Ce type est génial…

Bravo pour le taf zekiller.

Mercredi, 15 septembre, 2004.

Projet Bicyclette

Comment est-ce possible qu’un individu complètement ignare en matière de software soit capable de diriger un projet sans qu’on se rende compte de son incapacité? Son incompétence ne devrait pas être évidente? Le projet ne devrait pas échouer misérablement? Au contraire, ces individus conservent leur poste pendant des années (normalement jusqu’à la faillite de la boite).

La clé de ce mystère est dans le projet bicyclette.

Grosso modo, les phases d’un projet bicyclette sont : Analyse, design, implémentation, phase de test, livraison, révision. Dans la phase d’analyse, le client explique ce qu’il veut, dans la phase de design on donne forme au produit, dans la phase d’implémentation on code, dans la phase de test on vérifie que tout marche bien. Les quatre premières phases peuvent paraître les plus importantes, mais dans un projet bicyclette en fait on peut en faire abstraction sans problèmes. On attend la phase de révision pour s’occuper de tout (mon boulot normalement).

Dans ces premières phases notre ami manager ne travaille pas (je vous rappelle qu’il en est juste incapable), il essaye simplement de s’en tirer. Jusqu’à la phase de livraison du produit il n’a rien à craindre, il faut juste dissimuler. Mais bien sûr, il faut avoir quelque chose de tangible, quelque chose à montrer à la direction dans les réunions. On sort ça d’ou? On le downloade d’Internet ou on l’achète, simplement. Mettons que le client à besoin d’un système de workflow accessible par web et qui soit scalable. Bon, alors on va sur un chercheur web et on introduit “cheap web-based workflow system java source code download”. On navigue un peu, on cherche un produit avec des couleurs futuristes, on sort la carte de crédit, et voilà. Le projet bicyclette prend forme.

Ensuite notre ami manager manager désigne une équipe de développement pour les phases deux, trois et quatre. L’expérience lui a montré que pour des projets bicyclette il faut choisir des développeurs aussi demeurés que possible pour qu’ils ne se découvrent pas le pot aux roses.

On peut commencer à se douter qu’à la table d’à côté un projet bicyclette prend forme quand l’équipe de développeurs-demeurés joue au 69 professionnel. Il s’échangent des commentaires-perles très pompeux, comme par exemple “les canaux d’échange d’information sont très propres”, “le facteur d’usabilité est déterminant dans le design des javabeans”, “j’ai incrémenté le numéro de paramètres du constructor, je t’envoie le point class par mail”, ou “ce JSP contient trois mille lignes parce que j’ai appliqué un patron FACADE d’accès concentré”.

Deux mois après on arrive à la phase de tests. Évidemment, le produit, c’est de la merde. Mais les tests sont effectués par la même équipe, et nos propres enfants ne sont jamais moches. Alors avec la tête bien haute, on prépare un zip, un manuel d’installation, et toi, Carlitos, livre le produit, moi je ne peux pas, je suis mort de rire. État du projet? Livré. Vendredi soir. Souper de projet. Applaudissements, rires, encore plus de 69. C’est lundi que les surprises vont arriver.

Illustrons la phase de révision avec un exemple graphique :

Le projet Porsche

Arrive le lundi, et tu ouvres le courrier. Sujet : “Problèmes avec le projet Porsche”. Ils ont besoin de toi “deux-trois jours” pour “donner un coup de main” avec “quelques bugs”. Réunion dans un quart d’heure.
Tu entres dans le bureau. Notre ami manager est là. Il t’explique l’histoire: le projet Porsche est un des plus pointus de l’entreprise (on songe que c’est plutôt un pointeur à null). On a appliqué des techniques novatrices de design et implémentation et on a réussi à livrer un produit qui s’accorde parfaitement aux pétitions du client : une Porsche décapotable, sûre, légère, rapide, de faible consommation et faible coût. Un succès. Dans la phase de révision quelques petites incidences ont été détectées et il faut les réviser.

Bon. Allons voir la merveille. On entre dans le hangar du projet Porsche, et la créature est là: une bicyclette. De promenade.
Sans changement de vitesse, rien. Il y a un autocollant derrière la selle avec le logo de la boite et “PORSCHE”. Dans la corbeille il y a un certificat d’AENOR. Là normalement on pique une gueulante et on commence à crier qu’on veut parler avec le directeur, les membres fondateurs, les clients, les actionnaires, le pape de Rome. On veut voir quelqu’un pendu sur la place publique.

Ce qu’il se passe juste après c’est qu’on t’amène dans un bureau des ressources humaines et on t’applique à nouveau le traitement combiné “Ludovico/Chambre 101”. La nana de RRHH, qui normalement s’appelle Maika ou Yvonne et est habillée avec l’uniforme pantalons noirs et talons aguille, style femme corporative avec master en direction d’entreprises, nous interroge avec sa voix de Valium 500:

[Yvonne] Monsieur Fuckowski, quelles sont vos plaintes par rapport au projet Porsche?
[moi] MAIS QUELLE PORSCHE!??
[Yvonne] Le projet Porsche, un des plus pointus de…
[moi] Oui oui, je connais l’histoire!! Mais c’est que “ça”, c’est une bicyclette, et on suppose que je dois la transformer en Porsche en deux jours, et on m’a donné un tournevis et un pot de peinture!!
[Yvonne] Monsieur Fuckowski, c’est vrai que le projet Porsche présente quelques incidences, mais…
[moi] BICYCLETTE!! ¡¡BICYCLETTE!!
[Yvonne] Monsieur Fuckowski, vous traversez une crise personnelle? Il doit y avoir une raison pour votre négativité face au projet Porsche.
[moi] Non. Je me trouve parfaitement bien. Où je l’étais, avant de voir la bicyclette.
[Yvonne] Chambre 101, monsieur Fuckowski .

Chambre 101. Chaise avec harnais. Camisole de force. Logos de la corporation. Certifications de qualité. Projecteur XGA. Écran panoramique qui montre une énorme bicyclette de promenade. Là nous attends le directeur de l’entreprise.

[directeur] Monsieur Fuckowski, décrivez-nous cette Porsche.

Je vais vous économiser les détails de la torture, mais elle implique des dissertations sur l’attitude positive, la croyance en la vision de l’entreprise, l’auto-motivation, les petits caractères du contrat. Bref, si tu ne vois pas la Porsche, tu te retrouves à la rue.

Après la pause on est parfaitement motivé, en train d’assister à une conférence-call entre l’entreprise, représentée par le manager, et le client, représenté par un consultant en costume noir et cravate flashy, embauché hier, qui touche 100 euros de l’heure plus les diètes, et à qui ça n’intéresse pas de dire “votre bicyclette vous pouvez vous la mettre là ou je pense” et gagner 25 euros pour un quart d’heure.

[consultant] Bon, on va réviser les incidences que présente la Porsche. La première chose que nous avons remarqué c’est qu’il lui manque 2 roues.
[manager] Oui, on a opté pour le design minimaliste qui va avec notre vision de l’entreprise: “pratique, fonctionnel, optimal”.
[consultant] Je vois. Mais une Porsche avec deux roues ça ne colle pas avec notre modèle de commerce. On a besoin de quatre roues.
[manager] Je crois que nous pouvons refactoriser la Porsche et faire un clone pour ajouter deux roues extra, n’est ce pas? -il me regarde.
[moi] Oui, hahaha!!! Facile!!! Donne-moi une heure.
[consultant] Parfait. Bon, la deuxième incidence. On ne trouve pas la capote.
[manager] Oui. Vous vouliez une décapotable, non? Alors on a beaucoup simplifié son utilisation en retirant la capote.
[consultant] Bien, mais on ne veut pas seulement l’enlever, on veut aussi pouvoir la mettre.
[manager] Ah. Ça n’est pas spécifié dans vos pétitions initiales, alors on va considérer ça comme une fonctionnalité extra et on va le faire payer séparément. Quel impact représente cette nouvelle nécessité ? –il me regarde à nouveau.
[moi] Heureusement les interfaces sont très propres, alors on va pouvoir modifier la couche externe sans impacts sur le kernel hahaha.
[consultant] Parfait. Une autre question, ou sont le contact et les clés ? Tout le monde pourrait nous voler la Porsche.
[manager] On a choisi le modèle Multi-Utilisateur pour l’implémentation initiale, mais on peut rajouter un module de sécurité, non ?
[moi] Ouiii !! J’ai justement un module d’encryptage SSL pour Porsche ici !
[consultant] Brillant. Plus que deux incidences. L’utilisateur doit faire beaucoup trop d’efforts pour compléter les tâches sur ce système. Vous pourriez changer les pédales par un moteur ?
[manager] En principe on voulait donner un maximum de liberté d’action à l’utilisateur, alors on a opté pour un modèle de client lourd.
[consultant] Bien, mais on trouve que la quantité de travail laissé à l’utilisateur est excessive.
[manager] On peut arriver à un compromis raisonnable entre la liberté de l’utilisateur et l’automatisation des processus, n’est ce pas ?
[moi] Tout à fait. On va remplacer le moteur giratoire assisté par pédales par un moteur compatible assisté par pistons. On va peut-être devoir rajouter un module de stockage externe pour le combustible, mais on peut toujours le mettre dans le panier, hahaha.
[consultant] Je vous rejoins cent pour cent. La dernière : le système n’a pas passé les tests de rendement. C’est stipulé dans les requits que le système doit atteindre les deux cents km/h.m
[manager] Le rendement peut toujours varier selon la plateforme. Les spécifications de ce système sont « route gelée avec pente de 70 degrés ».
[consultant] Bien, je vais vérifier quelle plateforme on utilise pour l’exploitation. Mais je crois qu’on va avoir besoin de plus de vitesse.
[manager] On peut toujours optimiser le kernel, n’est ce pas ?
[moi] Aussi vrai que je m’appelle Fuckowski.
[consultant] Très bien messieurs. Ce fut un plaisir de traiter avec vous.

Trois heures du matin. Un thermos de café. Un pot de peinture, un tournevis. Et une bicyc … une Porsche.

vraiment trop bien, il manque juste un mot là.
sinon c est tres bien traduit, toutes mes felicitations !!
la reference a la salle 101, j adore…

[quote name=‘Zekiller’ date=’ 26 Nov 2004, 19:07’]Bon, j’ai eu quelques échanges de mails avec l’auteur du site, et je risque de traduire toutes ses nouvelles pour qu’il les incorpore à son blog ( haha MEMPAMAL ).

Vu que j’ai pas trop fait d’études en français, mes textes risquent d’avoir pas mal de fautes d’ortho/forme. Donc si vous voyez des fautes ou phrases qui peuvent “s’améliorer”, ça serait très sympa de me corriger :P.

J’essaye de mettre en ligne la fin du texte ce soir si j’ai le temps.
[right][post=“307470”]<{POST_SNAPBACK}>[/post][/right][/quote]

excellent !
l’auteur va poster tes traductions sur son site ? comment ça va se passer ? (j’adore, continues !)

Oui, je vais lui passer les textes au fur et à mesure que je les traduit. Si après vous me corrigez des fautes, je lui repasse les textes. Peut-être que la semaine prochaine il y aura les premiers textes sur son blog, il faut traduire une partie du site aussi.

Content que ça vous plaise :stuck_out_tongue:

c’est génial, j’adhère totalement à son argumentaire…

Un poil de mise en page …