Shine
avec Corentin André

Transcript de l'épisode
Alors attention, regarde, là je vais dire exactement ce que je t'ai dit en off, je vais lancer la super application Bankso, timecode à 10 secondes et là ça va lancer l'application Bankso. ouais mais ça refait... merde ça refait le grésillement ouais.
ça refait le désiment Non mais je vais enlever... En fait je pense que c'est le micro.
Ouais c'est con, bah tant pis, ouais, ce truc là ce sera mieux au pire. Ou alors, ou alors, attends, mais euh... Le micro du Mac et garde les...
C'est mieux comme ça ?
Non mais je suis sûrement... En fait je suis sûrement... Mon téléphone.
Ok ok ok ouais bah vas-y ça va le faire, ça va le faire. C'est pas grave on a pété l'intro. Ouais ouais comme ça c'est bon ça va aller. Parce qu'en fait c'est mieux que ce soit comme ça. Parce qu'avec Riverside je pourrais avoir le niveau carrément. Bon c'est pas grave. On est déjà en live, on a dit qu'il la trop, c'est pas grave. Allez hop on va la refaire.
Comme ça c'est bon ?
Ben ça... Attends j'ai foiré... J'ai foiré total.
Il faut relancer Banco.
Attention l'intro du... Non c'est bon, c'est ouais voilà c'est ça, intro du podcast, c'est parti. Alors là je vais lancer BanqSo, timecode à 1.24, j'ai un écran de chargement, s'il vous plaît patientez, j'ai re-annot spinner, je dois appuyer sur un bouton, j'ai un autre spinner différent dessus d'avant, là j'ai le Face ID qui se met en place, j'ai le re-spinner que j'avais d'avant, je repatiente et bim, timecode 1.39, versus, je vais lancer Shine. Bon en vrai je voulais le montrer en live mais bon pour des raisons de coefficient de CT un petit peu et j'ai pas le temps. Là je l'enchaîne. Et boum, je vois ma balance. Voilà, je vous laisse chez vous faire le bilan de combien de temps on perd à lancer Banxo alors qu'on est bizy, on veut juste lancer notre app et à savoir est-ce qu'on était payé ou pas. Corentin, merci de te joindre au Cross Platform Show aujourd'hui. C'est l'épisode de podcast dédié au développement d'applications mobiles avec RecNative. Est-ce que tu peux te présenter succinctement
Salut David, moi c'est Corentin du coup, ça fait un peu moins de deux ans que je suis chez Shine et je rejoins la boîte en Staff Engineer et maintenant je suis Head of Frontend. donc on bosse principalement sur tout ce qui est mettre à disposition les meilleurs outils lib, internes et externes pour les développeurs et on est des garants de l'archi.
Cool. Oui, donc pour ceux qui ne connaissent pas, Shine, c'est une banque en ligne pour les freelance. Alors c'est les seules personnes qui m'ont aidé dans ma carrière de freelance, je tiens à le dire. Shine, je vous adore parce que tout le reste, soit ils font perdre du temps, soit ils donnent des mauvaises Shine Lone Boarding est stylé. Je l'ai fait quand j'étais à Londres et moi, base, alors j'hésitais entre faire e-Citizen Estonien et ouvrir notre entreprise parce qu'en fait, j'étais à Londres et du coup, je fais... une boîte et tout, j'habite à Londres, fuck it, je vais pas faire ça en France, je sais qu'ils vont me casser les noix avec les papiers et tout ça, enfin bref. Et en fait à l'époque c'est Valentin qui m'avait parlé de Shine, qui bossait chez Coup d'État, et j'ai fait clic clic bam, j'avais ma boîte en 2-2 et je fais trop bien, stylé je peux, enfin facturé, même si j'habitais pas en France en fait à l'époque. Mais bon bref, c'était tellement stylé que ça fonctionnait voilà.
... Et on a une bonne réputation de service client aussi, ce que tu dis, c'est que nous notre ADN, c'est ça, c'est d'être proche du client et de l'aider dans tous les moments d'étape de sa vie d'auto-entrepreneur, de patron d'entreprise.
Ouais c'est ça, autant sur le blog les infos elles sont hyper accurate, elles sont stylées avec des vrais tutos ou clic clic où il faut cliquer versus quand t'appelles l'administre en français elles te disent n'importe quoi. On n'est pas là pour parler d'à, on n'est pas là pour parler de toi. Est-ce que succinctement c'était quoi ton parcours niveau études ?
J'ai fait une école d'ingé mais rien à voir avec l'info. J'ai fait principalement des études d'électronique de système embarqué et j'ai fait mon stage de fin d'étude chez Parrot qui est une boîte française de qui faisait la refois des drones consumer et B2B. Ils ont pivoté vachement sur le B2B récemment. Ils font des drones pour tout ce qui est agriculture, pour les pompiers aussi. Je sais qu'ils vendent des drones en Australie pour les pompiers, pour la détection de feu, etc.
Ouais.
et donc avec de l'image, avec de l'imagerie, avec de l'intelligence artificielle, machine learning et compagnie pour analyser l'état de tes cultures, etc. Et du coup, j'avais fait un stage là-bas sur des bancs d'essais et il y avait énormément de données. On ne pas les visualiser parce qu'on avait une espèce de kibana branché à Elasticsearch, mais c'était inutilisable pour des personnes qui ne pas tech. Et on m'avait demandé de le faire pour mon stage. Fais-nous un site web où on peut visualiser les données en temps réel et voir comment, en gros, prendre des...
Ok ouais...
go no go sur des drones pour la mise en production ou pour passer à l'étape d'après des tests, etc. Et donc je suis tombé dans le web comme ça, faisant l'analyse, en faisant d'espèces d'outils BI pour le business et essayer de prendre des décisions. Et c'est là où ça m'a plu. Et mon premier taf, ça a été dans une startup qui est éteinte depuis, qui s'appelait BIM, qui faisait de la réservation de restaurants, un peu comme la fourchette. mais sur des restos haut de gamme, etc. à Paris. Et après, j'ai rejoint Ornicart pendant presque 6 ans, Software Engineer, c'est là où j'ai gravi un peu tous les échelons jusqu'à LID. Tous les échelons, j'aime bien ça, bon. Alors que oui, bon bref, je suis passé LID à la fin quoi, mais j'ai énormément appris là-bas, à la fois sur le web, sur le mobile, sur comment on fait du software quand on est 50, 60 personnes, ou quand on en est 5 ou 6.
ok j'ai oublié.
tout le temps.
Et à vous de suivre.
parce que je suis vraiment rejoint au tout début où on était 5 devs et à la fin on était une 60, 70 à peu près. après je suis parti chez Shine en tant que staff software engineer et suite au rachat de Shine par une entreprise qui s'appelle Ageras qui vient de Danemark, je suis passé head of Frontend Ops. Voilà un peu mon parcours, je sais pas comment.
Donc c'est vraiment chez Ornicart que tu as découvert le mobile et RecNative en même temps. Genre, il une app mobile, on utilise RecNative, voilà.
Exactement.
Si tu avais parlé avec Romain il y a quelques semaines dans un épisode, Romain Schindlmann qui va toujours là-bas, la première app qu'on avait c'était une app pour les enseignants parce qu'en fait le premier use case était je suis enseignant de la conduite, du coup pour Rappel Ornicard c'est une auto école en ligne, donc je suis enseignant de la conduite, j'ai besoin d'avoir mon planning et j'ai pas mon ordi sous la main. Ou alors si je veux regarder mon planning sur un site web c'est quand pas très pratique sur mobile.
Tout à fait.
autant leur faire une app dédiée où on peut leur pousser des notifs, où on peut plus facilement interagir avec eux quand ils sont dans leur voiture, qu'un site web. On a eu une app pendant très longtemps en rack native côté mobile depuis je pense 2019 ou 2018. Peut-être qu'on avait déjà une app mobile en rack native chez Ornicart. Donc ça datait quand même pas mal. À l'époque il n'y avait pas Expo, alors c'était assez balbutiement.
Ouais, je vois. Ice. Ouais, ouais, tu suivi toute l'évolution. Voilà, donc il a pas vraiment de point de bascule. C'était genre... Allez hop, je surfe la vague et voilà. Moi, c'était plus par opportunité. J'ai commencé mobile. C'est parce que vu que c'était un peu avant, c'était Ionic, Cordova et...
Donc ouais, c'est là-bas, j'ai fait mes armes sur le mobile.
ça faisait le taf mais c'était pas ouf et après j'ai digué le truc et j'ai cherché la meilleure technologie et après j'ai fait du rack native. Donc quand t'es arrivé chez Shine, l'app était déjà setup.
Bonne soirée.
On partait avec... En fait mon rôle en tant que staff, c'était pas de... L'app existait déjà, le site web existait déjà. C'est juste qu'il y avait pas de... On manquait d'une culture mobile dans la boîte. il y avait... l'app, était... En fait... C'est-à-dire qu'en fait... Oui, oui, tout à fait, et même l'usage était mobile. En fait, tout monde contribuait et on avait des devs qui étaient très bons sur le mobile.
Ah ouais ? C'est marrant parce que c'est une app mobile à la base, enfin...
Mais souvent, on pensait qu'on n'avait pas une approche unique et commune aux deux plateformes, Web et mobile, que ce soit dans la conception que dans l'implémentation. Et du coup...
Ouais je vois, c'était plus Web In-A-Box quoi, c'était un site web dans une boîte quoi, un site web plus petit en fait en Ok je vois.
Un petit peu. Un petit peu, exactement. Plus petit. Typiquement, un des exemples, c'est que le web n'est pas très responsable. Si tu essaies de resize shine.fr, tu ne pas avoir de version mobile. Parce que du coup, il n'y avait pas de continuité entre le web et le mobile. D'un point de vue user experience, etc. C'était conçu de manière relativement différente. en termes d'approche du conception design etc. Et dans l'implémentation ça se ressentait aussi. Le mobile il a eu longtemps aussi un espèce de... il y eu un désamour sur vraiment la... l'application mobile mais sur le... tooling, l'architecture, vraiment comment je me sers de la mobile. Et du coup il a un des développeurs en revanche qui lui était passionné par le mobile alors que son équipe n'avait rien à voir avec l'app, il était dans l'équipe acquisition où il n'y a pas le parcours d'acquisition sur le milieu.
Ah ! Ok, ok. C'est le fameux article Medium qu'il a écrit, non ? C'est lui ?
Je sais pas, il faudrait que je regarde. C'était avant que j'arrive ça, mais c'était Alex Tudik qui a bossé sur ça. fait, lui, il fan de l'app mobile. Il s'est dit, bon, je vais bosser là-dessus, vais retravailler l'archi, etc. C'est lui qui a fait le passage de React Native à Expo. Et quand je suis arrivé, on a encore plus poussé le truc pour intégrer Expo à tous les workflows de dev. Mais en gros, mon job quand je suis arrivé chez Shine, c'était de ramener du lien entre les deux. entre le web et le mobile, et de s'assurer que tout le monde est hyper content de bosser sur le mobile, qu'on a les outils qu'il faut pour pouvoir développer avec efficacité, de pouvoir faire confiance à la plateforme, d'améliorer la qualité de l'application et de mettre en place vraiment une architecture beaucoup plus pérenne dans l'app mobile. Parce qu'en fait, y a eu énormément de développeurs qui sont arrivés chez Shine, qui ont énormément contribué. Il y a eu plein de features qui sont sorties. Mais du coup, il n'y avait pas ce liant qui faisait que toutes les feature teams allaient dans la même direction. Mon rôle de staff, c'était ça. C'est vraiment ce rôle de liant entre la vision et les équipes de dev qui peuvent parfois être un peu déconnectées parce qu'il y a d'intermédiaires.
Ah bah oui, et puis aligner tout le monde... Pas facile en plus quand tu... Ouais, Shine, ça fait... Je sais pas si c'est une exponential grosse, mais bon. tu passes de 2 à 4, ça va, mais 4, 8, après 8, 16, ça c'est 32, ça devient vite le bordel. Ils sont combien chez Shine maintenant ?
En dev, si tu comptes pré-acquisition par Aguerras, pense qu'on 60, plus de 70 000. Si tu comptes en plus les ops, on était facile à 80, je pense. Et là, avec Aguerras, ça a une autre dimension, il avait 150 développeurs en tout, pense. Entre 120 et 150. Donc vraiment...
Ouais, Ok ouais.
Ouais, bah oui. Donc t'es obligé d'avoir des... Il faut des capitaines sinon c'est le bordel. Cool ! Donc le format de l'émission c'est success-app. On va parler de la stack technique en 5 points. Data layer, navigation, styling, graphique, animation et CI release.
complètement ploufou. Exactement.
En commençant par le Data Layer, qu'est-ce que ça utilise chez Shine ? Vu que vous êtes des gens bien, il me semble que c'est GraphQL le truc, mais dis-moi si je me trompe.
On est sur du...
Oui c'est tout à fait ça, on est sur du GraphQL et Apollo. Très peu de... Aucun state management à part des contextes React. Si on a du Redux Legacy mais qu'on vire, qu'on a viré petit à petit, ce doit être sur des parties hyper spécifiques et pas très critiques de l'app. Donc en fait on l'a pas priorisé parce que pas spécialement besoin.
Apollo Client, ok ouais.
Right ?
Ouais, Dropbox. Technique Dropbox, on touche pas ce qui marche. C'est ça.
ça marche, ça marche, on ne repousse pas et c'est pas critique et c'est pas impactant pour le business et ça ne nous empêche pas de faire de la tech donc on le laisse quoi. voilà et donc principalement ça. On a aussi essayé pas mal du coup de pousser, quand je suis arrivé, de pousser pas mal l'uniformisation de la façon dont on fait du GraphQL et aussi de pousser un peu, d'utiliser GraphQL autant... autrement que juste un crud et donc vraiment d'utiliser à fond les mécanismes de cache, les mécanismes de mutation de la donnée, d'optimistiques queries, tous les trucs qui font que GraphQL est intéressant versus un crud classique, enfin un truc classique.
Ça tu peux expliquer ce que c'est optimistic queries. C'est comme optimistic update mais peut-être qu'il en a qui ne connaissent pas vraiment la définition.
C'est-à-dire qu'en fait, on va faire une action, mettons, je vais marquer une transaction comme payée. On va utiliser l'application de Shine. Je vais marquer une transaction comme payée. Pardon, pas une transaction, mais une facture comme payée. L'outcome de cette mutation, c'est visuellement d'avoir la facture qui peut être rayée, par exemple, ou avec une chèque verte. Et on sait que dans quasiment la majorité des cas, ou 99,9 % près, c'est quelque chose qui n'a aucun side effect, qui ne va pas forcément failer par des providers externes, qui est fait chez nous et c'est marqué en champ dans une base de données grosso modo pour dire que ça a été payé. Et en fait, les optimistic mutation queries, ça permet de dire côté client le résultat de la mutation sans attendre le retour du serveur et d'avoir un UI qui est beaucoup plus snappy, qui est beaucoup plus responsive et d'éviter d'avoir... soit un loader dans un bouton, soit un loader fullscreen, etc. Et c'est marrant d'ailleurs que tu parles de loading au début de la vidéo, parce qu'on a... Enfin chez Shine, l'une de mes premiers trucs, c'était d'améliorer le loading du début parce que ce que tu discrivais chez BankSore, on l'avait en trois ou quatre chez Shine où on enchaînait trois loaders énormes parce qu'il y avait... C'était mal... Au fur et mesure, on avait rajouté des transactions, des queries qui n'avaient pas vraiment de sens et qu'on aurait pu méranger.
Ouais.
ou en tout cas qu'on aurait pu les dupliquer, etc. C'est marrant que tu parlais de ça parce que maintenant on a vachement bossé là-dessus.
Ouais c'est possible, ouais c'est possible mais c'était quand même plus rapide que Banxo tu vois. Enfin quand je me rappelle des V1 c'est vrai qu'il y avait un Bigloader et tout mais au moins là c'était utilisable, il n'y avait pas de data mais c'était utilisable. Là chez Banxo c'est vraiment... Et attends, attends il faut qu'on parle. Est-ce que tu sais pourquoi les apps bancaires quand tu... n'as pas le face ID d'activer, que tu dois mettre ton pin code, enfin c'est même pas un pin code c'est ton password, il change de place les numéros.
Ouais.
pour éviter les... ouais c'est chiant mais c'est sécurité en plus pour éviter de...
Sécurité de ou ? Versus mettre ton téléphone caché tu vois ? Explique-moi je...
de deviner, en gros, c'est de deviner, j'imagine, l'emplacement par rapport avec une caméra de surveillance. Une caméra de surveillance, tu vas voir l'image, mais tu vas pas pouvoir se dire en détail, mais tu verrais, par exemple, je sais pas si il des animations sur les presses, tu verrais la position du doigt et tu pourrais deviner par extension l'échelle que t'as touchée. Là, l'avantage, c'est que tu peux pas deviner ça. Mais Shine, ça le fait pas en revanche. Shine, c'est toujours le même.
Ouais.
Non non non non non non non non non non non non non non non non non non non non non non non non non non non non non non non non non non non non non non non non non non non non
Le pad est toujours dans même endroit.
pour voir si tu suis aussi.
pour voir si t'es réveillé. vois, jamais tu te foires, tu te foires tout le temps. Et je me suis toujours demandé, mais dans quel univers connu il y a quelqu'un qui s'est dit un matin, j'ai une idée, pour la sécurité on va changer de place les nombres, ça va être génial.
Peut-être que c'est un... Ils ont eu un précédent et en fait, la personne leur a collé un procès, ou... Tu ça peut être ce genre de choses, et depuis ça fait jurisprudence et... Et ils veulent se baquer.
... peut-être ouais je comprends pas désolé
Comme aux US, vous mettez des extensions partout, des exemptions partout sur les lois ou sur les assurances pour éviter les problèmes.
Je vois... Je vois... Mais versus LUX, tous les jours, moi ça m'en fout. Donc ok, donc... Puis en plus toutes les autres, tu vois, des autres banques succes... Ou n'importe, attends, les trucs cryptos, ont pas ce genre de sécurité, je suis désolé. Donc non, non, voilà, c'est pas recevable, pas recevable, désolé. Peut-être dans le monde d'avant en 2010, oui, why not, mais...
C'est Oui, c'est vrai en fait. Après il y a des normes que tu dois respecter ISO, qu'il a peut-être pas sur des trucs de crypto. J'essaie de trouver des excuses, mais peut-être que c'est des normes ISO, machin, et c'est un des points de la norme.
On va dire que c'est la norme ISO 9001. Comme ça on peut mettre des beaux logos à la fin. Voilà super, super, on adore. Donc niveau data layer, state management et data fetching, a vu, ouais c'est principalement Apollo. Est-ce que... Non, il a du offline ou pas ? Pas trop. Il a pas de offline du tout.
Passe.
Merci.
Il n'y a pas de offline. Aucun offline.
j'ai ouvert l'app d'un de vos concurrents que j'utilise maintenant parce qu'en fait à l'époque j'avais besoin de dollars et tout machin et je l'avais ouvert dans l'avion et j'avais halluciné que ça fonctionnait et que toutes mes data étaient là. fais what ? Comment c'est possible ? Et il y a...
Et du coup, veut dire qu'ils font la sécurité en locale.
Ouais, alors je sais pas mais magique quoi. Enfin, il y avait certaines data qui étaient là. Et j'avais trouvé ça...
Ouais, le cache devait être hydraté avec les données que t'avais avant de prendre l'avion.
Ouais, je pense que c'est ça. Mais de toute façon pour une banque en vrai, je demande juste par curiosité. Parce que généralement il faut que ça soit des data up to date. Donc niveau navigation, qu'est-ce que vous utilisez
Alors, c'est intéressant, on utilise Rack Navigation. On n'utilise pas Expo Router, on utilise Rack Navigation mais avec un twist. En fait, on a beaucoup bossé ces derniers mois sur le fait de réaplanir notre architecture de navigation parce qu'en fait, on avait énormément de soucis de l'APA. très légacy du coup, date d'il y assez longtemps, la de Shine, elle a vraiment plusieurs années. Et il y a énormément d'écrans. quand je te dis énormément d'écrans, c'est plus d'une centaine, je pense qu'on a plus de 100 quelques écrans. le souci qu'on a, c'est que très longtemps, la navigation n'était pas tippée sur React Navigation. Les routes n'étaient pas tippées.
2017. Moi j'ai join en 2017 donc ça devait exercer.
C'est arrivé maintenant avec la S5 à partir de la S5 on va dire et vraiment se s'industrialiser à la S6 et la S7. Le souci c'est que ça se base sur des extents d'interface. C'est pas comme Expo Router où c'est typé statiquement, enfin c'est typé via la CLI d'Expo Router. Où Expo Router va générer automatiquement des types à partir de la configuration file tree que tu as générique. que tu as. Et ça c'était un peu problématique parce qu'en fait on se retrouvait beaucoup avec des... Comme il y avait beaucoup de nesting dans les navigateurs, on se retrouvait beaucoup, chez Shine, on se retrouvait beaucoup avec des navigations impossibles. Soit parce que la route n'était pas montée, soit parce qu'on n'avait pas spécifié le parent, ou alors on avait bougé l'écran, on n'avait pas changé les navigations et on n'avait aucune éleveur bloc de signes.
Ouais, ouais, c'est ça, vois un bordel. Ouais, non, mais j'imagine, parce que moi je faisais la moitié. Quand c'était sur une op que j'avais bossé de scanner, c'était tippé, mais à moitié quoi. Et comme il faire la main, bah à la fin, fuck it, j'avais mis tout dans un truc et c'était navigation ennui. Voilà, vu que j'étais tout seul, ça allait, mais quand t'avais 20 personnes, forcément tu pètes des morceaux.
Un bordel.
...
tu es tout seul, va, mais quand tu à 50, as bossé sur une app, c'est hyper dur de ne pas pouvoir faire confiance à ton navigation. Et du coup, ce surqu'on a bossé, un des premiers trucs que j'ai fait sur l'app quand je suis arrivé, c'est de mettre en place cette navigation tippée sans passer par les types de React Navigation, mais en utilisant la linking config. Donc la linking config, c'est la collection de liens. de Deep Link que tu vas donner en configuration à ton app pour qu'on puisse naviguer depuis l'extérieur vers chacun de ces écrans. Et du coup, j'avais mis en place un nouveau truc, c'est que maintenant toutes les routes doivent être déclarées dans la ligne config. Et en fait, on utilisait les URIs pour naviguer et j'ai repompé l'algo de exporouter à partir du nom des écrans.
Non, Deep Linking.
ce que fait Expo Router, avec son use link, sa façon de link, c'est qu'il va faire du récursif sur l'état de navigation globale, sur la liste de l'ensemble des routes, pour trouver celle qui matche le nombre que lui donnes. Il va parcourir un arbre et définir le chemin le plus court pour aller à cet écran, avec les paramètres, etc. Du coup, j'ai refait cette même chose, côté React Navigation, et maintenant, a une navigation qui est typée. On a des paramètres qui sont typés aussi, c'est-à-dire que si...
Ouais.
tu vas utiliser du coup on a un composant qui s'appelle le Chainlink et tu vas dire Chainlink to account details pour avoir les détails d'un compte et il va te forcer à passer en paramètres le bank account ID parce que c'est un paramètre non optionnel et obligatoire de cette route là parce que dans l'url il a analysé les courriels par amie il est capable de savoir que ce truc là il est important d'être passé et donc on a fait on a fait ça et maintenant ça nous assure une type safety à 100 % sur toutes les routes et sur les paramètres liés à une route. Et ça c'est hyper puissant et ça nous rend beaucoup plus safe quant à la navigation générale dans l'app. Donc on a direct navigation mais on peut booster quand même au stéroïde avec cette type safety.
Ouais. custom, vous avez investigué dessus, bien dessus... Ouais, puis en plus tu parlais de deep linking, c'est vrai que c'est hyper important pour une app de banque versus une autre où il a un logo rouge et blanc qui te dit « Hey, vous avez un nouveau message, je d'ouvrir là, pas tant de 30 secondes, allez dans plus, message, ouvrir le PDF, télécharger le PDF », tout ça pour dire que t'as... tout ça que ton compte n'est pas provisionné parce que Ah, vas-y, ça en fout ! » Ouais, versus deep linking, au moins là t'es sûr d'avoir du deep linking partout et en fait...
Pétanque.
Ouais.
C'est ça.
On a pas parlé... Web et native, partage des morceaux ou pas ? Ou c'est deux ripos séparés ou c'est dans un monoripo ?
On peut en parler pendant le truc Styling UI Component Libraries tu veux ? Parce que c'est une transition magnifique.
Ah bah pff, ouais t'as vu la transition incroyable là ! Super, Corentin t'es embauché pour faire la transition. Ah ouais, c'est incroyable, vas-y vas-y, dis nous tout, dis nous tout.
Transition Man. du coup, fait, historiquement, choses qui étaient partagées, c'était principalement le thème, donc c'est des couleurs exportées dans un fichier TS. C'était des codes APE, donc c'est les codes des entreprises. Donc c'est une liste statique de codes d'entreprises qui sont des codes...
Exacto.
l'état. c'est des choses comme ça. Et étonnamment il y avait visuellement le même design système sur mobile et sur web. Mais, et là c'est encore plus étonnant, les composantes s'utilisaient pas de la même manière, n'avaient pas les mêmes noms de prop alors qu'ils se comportaient de la même manière. Je sais pas si c'est clair ce que je ce que j'ai dit mais en gros...
euh... attends dans ma tête c'est genre, vas-y on va prendre un exemple, modal, t'avais plusieurs composants de modal mais ils avaient pas le même nom, c'est ça ?
Ils avaient pas le même nom, avaient pas les mêmes propres. Donc par exemple, on peut prendre l'exemple du bouton. vais dire un truc. Il y avait pas les mêmes variantes.
Button et Summit Button, tu vois tu as les variants, as un button...
Et rien n'était pas similaire. Pareil pour le texte. Il n'y avait pas d'équivalent en termes d'usage. Visuellement, ça ressemblait, mais en termes d'usage, ce n'était pas le même. Et même en termes de visuellement, avait parfois des petites différences qui n'étaient pas forcément justifiables. du coup, mon taf, c'était d'arriver et de créer du lien entre les deux, entre le web et le mobile. Pas forcément du lien technique, c'était pas forcément de partager du code à tout prix. Ce n'est pas grave si on n'en partage pas. mais de faire en sorte que quand tu es développeur et que tu switches d'une plateforme à l'autre, n'as pas besoin de... Tu n'as pas une learning curve qui énorme. Tu n'as pas un contexte switching qui est énorme. Et en fait, c'était ça qui était le plus impactant en termes de DX et de temps de développement, c'est qu'en ce qui a été pénible, c'est que les devs qui étaient plus allés sur le web, ça allait souler de faire du mobile parce qu'il fallait réapprendre des trucs. Les devs qui étaient plutôt mobiles, ça allait souler de faire du web parce que ce n'était pas la même façon de coder.
Ouais.
etc. Il avait pas de pont entre les deux. Et moi mon taf c'était faciliter ce context switching pour avoir des devs qui soient beaucoup plus capables de bosser sur une ou l'autre plateforme et réduire un peu le gap de différence entre ces deux-là et d'augmenter la DX par la même occasion sur les deux. Et du coup, ce qu'on a choisi de faire c'est d'utiliser, on a profité d'un rebranding pour réimplémenter un design system universel. C'est-à-dire qu'on vous voulez faire la base d'une application ou d'un site web, c'est le look and feel. C'est comment tu construis tes écrans, ton UX avec des building blocks qui sont réutilisables et qui correspondent à ta brand et à ce que le design a choisi pour l'application du site web. donc du coup, parti de cette analyse-là, on a refait notre design system avec Tamaguri. Et du coup, c'est compatible web et mobile. La majorité des composants... qu'on utilise son dedans et ça exporte des primitives qui sont plugées à notre thème et qu'on utilise de la même manière. Un des trucs qui était pénible avant c'est que par exemple sur le web on utilise Chakra et sur le mobile on utilisait Style Components. La DXD2 n'a strictement rien à voir. Là où Chakra tu voulais utiliser les props à props as a styling, Style Components c'était des objets de style que tu importais etc. Donc ça te faisait vachement plus... c'était un peu plus lourd à lire parce que du coup tu devais faire des...
Ouais, c'est pas à pareil du tout.
des allers-retours sans cesse entre tes fichiers de style et tes fichiers de view, versus des approches à la tailwind ou à la chakra ou à la tamaguy, où tu utilises des props pour faire du style.
Et cette migration là, avez mis combien de temps à le faire ? C'était avant le rebranding quand vous êtes passé de c'est Joyful en in-startup. Ah, on est sérieux, on est tout jaune et noir, mais non la DA. On est la banque, on est la banque. C'était assez... Ah ouais, bah ok. Ok, ok, ok.
On est debout.
C'est exactement ça, on le fait à moment-là. Mais c'est un work in progress et on l'avait pas... Enfin, c'est pas fini. Je pense pas que ça sera fini de...
Ouais ouais, de façon le design c'est jamais fini, vous tapez iOS, évolution, screen, c'est jamais fini le design. J'ai toujours, ouais, quand on me dit, ouais, combien de temps ça prend à faire un design système ? Je dis, bah la vie, enfin la vie du projet, c'est jamais fini ce truc, donc il faut tout le temps que ça évolue. ouais, ok, enfin, parce pour ceux qui connaissent pas, en fait, au tout début, l'ADA elle était vraiment slack, on va dire, slack style, vraiment colourful et tout ça. Et après quand, je pense que c'était au rachat peut-être.
Bye bye.
Merci beaucoup.
C'est blanc et noir, et l'ADI est toujours, moi j'aime bien, c'est vrai que ça y est plus sérieux
Non, c'était... Ça a été... En fait, y a eu un changement de positionnement où on avait besoin de paraître plus sérieux pour attirer des clients plus premiums.
Ouais, Ouais, alors que vous étiez carrément plus sérieux... Ouais, ok.
Et du coup, s'est fait il y a 2 un peu moins de 2 ans, pense, un an et demi. Le rachat, fait 8 mois à peu près, donc c'était un autre truc. Et du coup, dans ces enjeux de migration design system, on est en train d'explorer des trucs, de faire de l'analyse, statical analyse, de l'analyse de code pour traquer un peu en fonction des équipes. Enfin, ce n'est pas le critère le plus important, mais c'est ce qu'on a trouvé pour segmenter. c'est voir les efforts de migration qu'il a à faire, à combien de pourcentage de changement de code on a, etc. Donc on utilise des outils comme Omelette, mais j'utilise juste leur CLI et après je refais des analyses derrière avec Google Sheet ou avec des outils de BI pour mesurer. C'est un truc qui été fait par les gars de Zeppelin, crois. le truc de... l'outil de gestion des assets, ça s'appelle OMLOT.
Omelette ? Attends, c'est quoi omelette ?
Ok... Oui. Ouais ? Ok ouais je vais te...
Et en fait c'est un espèce d'outil pour gérer ton design system, tes composants, gérer ta dette, etc. Et en gros, ce qui nous intéressait nous, c'est de mesurer l'usage des composants du nouveau design system, versus ce legacy qui ont été déprécated, etc. Et donc de voir un peu par flow, par feature, par équipe, comment ça évolue, à quelle vitesse, s'il a des équipes qui sont en difficulté.
Ok ouais, pour...
Et dans ce cas là, ça veut peut-être dire qu'il manque des usages dans les composants du design système, il manque des composants, il y a de la documentation qui pas claire sur certains composants, etc. C'est hyper intéressant d'avoir cette vision un peu de pilotage là, parce que quand t'as 50-69 et qu'un des composants leur convient pas, ils vont pas forcément venir te voir parce que ça va leur faire perdre du temps, ce que je comprends, pour te dire que ça, truc là, ça marche pas, etc. et donc du coup ils vont aller au plus simple et prendre le composant qui matche leurs besoins. Et donc ça c'est hyper intéressant pour voir l'évolution quoi. Et aussi c'est intéressant...
normal
Pour ceux qui connaissent, ça ressemble un peu à Expo Atlas, le truc omelette. Vous avez une vue, vous avez un arbre et vous pouvez diguer le truc pour savoir pourcentage. Enfin je ne connaissais pas du tout, jamais entendu parler mais parce que j'ai jamais eu le problème en fait en vrai de ce genre de choses. oui, pour mesurer et voir ça a l'air beaucoup plus visuel, très bien. Un peu comme NX.dev aussi, ils font ça aussi avec un graphe et tout, incroyable.
d'ectomaux.
Pour les graphes de dépendance, ouais, tout à fait.
Cool cool et donc styling ok, tamaguy, et pourquoi tamaguy ?
Parce que Perf. Broso Mondo c'était le côté perf. Ça aurait été ça. En fait c'est parce que pour plusieurs raisons, pas Tailwind parce que c'était encore rajouter une nouvelle façon de faire du style. On avait des style components, avait des props as a styling avec Chakra. Si on avait utilisé Tailwind ça aurait été des classes as a styling. Enfin c'était d'utiliser des classes name atomique entre guillemets pour faire du styling. Et ça aurait été un autre truc en plus à apprendre. L'avantage de Tamaguy, c'est que je préfère... Ça aurait été un bordel pas possible. Du coup, a préféré prendre l'approche... On a plutôt préféré l'approche props à the styling, qui est quand même assez agréable, très facile à prototyper, et en même temps, tu peux l'emmener très vite en prod, sans que ce soit trop crasseux. Et bien en fait, on a choisi cette approche-là, Tamaguy le proposait, et c'était à l'époque où il y avait Native Bass qui était un peu en train de péricliter, qui était vraiment pas ouf en terme de perf.
bordel avec 60 dev ça aurait été un gros bordel
il y a eu Glue Stack qui arrivait en même temps mais c'est un peu pas très mature. Tamagui était un poil plus mature et marchait pour nos use case relativement simple et en fait on est parti là dessus et ça marche.
Ouais, c'est ça, les planètes alignées, c'est pas complet. C'est ça, Alan, c'est pareil, ils sont sur Tamaguy, moi aussi, ce moment, j'utilise Tamaguy. Ça marche, ça fonctionne bien.
Il y a des trucs, je suis un peu frustré avec Tamaguhari. C'est la doc qui est, je trouve, manque cruellement de pratiques et d'exemples et de pourquoi. Moi, j'ai dû deviner beaucoup de trucs de par l'usage et pas via la doc. Et ça, c'est un peu le seul problème. Bon, c'est open source, donc j'avais qu'à y contribuer. On vouloir qu'à moi-même.
Dégueu. Ouais. Ouais.
Je vous.
C'est ça, moi j'ai... Attends j'ai quoi ? 4-5 commits je crois sur Tavaguy où j'ai fixé la doc parce que genre... C'était pas ça du tout en fait ! Mais bon après on peut pas tous le faire, tu vois, c'est... demande de diguer dedans, setup, tout ça... Ok et donc niveau graphique, est-ce qu'il y avait des animations dans la V1 ? Je ne sais plus, non c'était que flat, c'était... Vous avez un...
Peace out
Il y a des animations, si si. Si si, y a des animations et on utilise reanimated. On utilise reanimated. Classique. On est aussi en train d'investiguer Rive pour faire l'animation de nos... On veut switcher de l'OT vers Rive. Donc on est en train de, tu vois, d'investiguer un peu cette solution-là.
Ouais ? Vous avez une librairie spécifique ou pas ?
Ok.
Alright.
même si on est assez déçu de l'implémentation du SDK de Rive React Native. Elle manque toutes les features les plus intéressantes de Rive Web. Elles y sont pas sur la version React Native globalement. Ça utilise la AllDarch en plus.
Ouais.
Vous ne pas un useDom et utiliser à expo useDom et du coup tu utilises la version web et go. Ça te crache.
possible oui on aurait pu on pourrait faire ça c'est envisageable on a envisagé aussi refaire le SDK from scratch en passion quoi
Ok Ouais ouais après y'a... Ouais ouais je vois, vois T'sais rabbit hole, allez let's go Vas-y ça devrait pas être très compliqué Et puis en fait au bout de si moi tu te rends compte que mais je sais pourquoi, pourquoi je vois carrément Parce que sur Android où toute joyeuxité du genre ça marche pas donc euh... Je vois, je vois, je vois
J'avais oublié cette version 30 de Samsung, machin truc bidule, qui marche pas, Ce genre de truc.
Ouais bah on connaît, on connaît et puis comme par hasard c'est plus de 20 % du parc donc on peut pas dire allez fuck it Je vois, je vois compliqué Ok là dessus et il y a une autre
C'est ça.
Mais Reanimated, c'est assez subtil. Ouais, Reanimated, c'est assez subtil, mais ce qui est cool avec Tamagui, et juste pour là-dessus, c'est que tu peux définir des animations par défaut et les avoir dans ton thème. du coup, c'est littéralement, quand on veut, par exemple, animer un... Sur Tamagui, on utilise un prop pour styler un press sur un élément. Ça s'appelle Press Style. Et du coup, on dit, press style, je veux mettre l'opacité à 0,5. Et de rajouter une animation, c'est littéralement mettre un props. et dire animation égale, default animation, default press peu importe la valeur d'animation qui est défonnée. Et ça c'est exceptionnel en terme de DX, quand tu ne pas comment ça marche Reanimated que tu viens du web, c'est compliqué, tu n'as pas envie d'aller taper la dog, tu n'as pas envie de souler un dev de ton équipe pour lui demander de le faire, c'est hyper... et avec ta make UI c'est littéralement improp et ça fait tout derrière le tooling pour remplacer par le Reanimated view, de passer les styles.
Ouais, je... Je...
et d'animer les styles correctement de manière optimisée avec Reanimated. Donc ça c'est quand même assez fou. C'est un petit détail qui change quand même beaucoup la DX quand t'es pas un expert du lobby mais que t'as autre chose à faire que de faire du Reanimated pour animer un bouton.
Né.
Ouais, c'est ça, je l'avais oublié en fait. Je l'avais, j'utilise mais je vais zapper. Que c'était aussi facile.
Ça, c'est très cool.
Je crois que Naty Winn le fait aussi, je suis pas sûr mais ça me dit quelque chose. Peut-être que je dis des bêtises.
Je ne sais pas si tu as ouvert le site récemment de Native Wind, de C'est la V4. Tu sens que maintenant c'est devenu Serious Business et qu'ils vont investir dedans. Je pense qu'ils bossent chez Expo maintenant.
Oui.
Ouais c'est ça. Mais oui, clairement, si maintenant j'avais le choix, j'hésiterais beaucoup plus. Je serais beaucoup plus...
Ouais, c'est toujours pareil, ça dépend du contexte. Si moi j'avais... Là maintenant je serais dans ta position, je serais... Hmm... Native Wind, 50 développeurs... 50 développeurs... Hmm... Qu'est-ce qui va mal se passer ? Ou alors il faut un vrai temps de... Un vrai Parce que je sais, si tu donnes... En fait, c'est ça qui est cool avec Tabaguay, c'est que tu peux pas tout faire, mais justement c'est by design en fait. Du coup, les gens peuvent pas faire n'importe quoi, parce que si tu ouvres la porte de Native Wind, c'est... Hmm...
C'est ça.
Les deux parties sont ouvertes.
Ouais, après...
Dans 6 mois on va se retrouver avec un bordel
Alors ça c'est un bon point parce que tu vois genre si ton design system tu exportais des composants directement depuis ta Magui, c'est ça où j'ai pas mal bossé aussi, c'est que tu pourrais par exemple tu exporterais un bouton tu pourrais s'utiliser n'importe quoi, tu pourrais lui rajouter du padding alors quand tu n'as pas envie de modifier le padding de ton bouton parce que c'est des choses qui sont définies dans le design system. Et du coup j'ai dû refaire des exports propres de type pour pouvoir utiliser que les props du bouton. que les styles de props qu'on veut autoriser et de les accepter sous forme de responsive. que du coup tu peux faire des media query directement dans les composants avec Tamagüeï. Donc c'est pas si tranché avec Tamagüeï, tu peux quand même vite aussi customiser des composants de ton design system s'ils sont mal exportés et si les interfaces sont un peu trop permissives.
Oui si tu peux toujours, à fin tu mets style égale et puis tu peux toujours comme ça demande un effort supplémentaire je trouve ou mettre juste une classe juste une classe name ça peut après moi j'utilise un autre truc j'utilise cva pour gérer juste ouais pour ceux qui s'intéressent vous allez sur wishyp2day vous scroller tout en bas vous cliquez sur le lien vous aurez accès au repo et vous pouvez diguer le repo vous aurez button par exemple et vous voyez comment je gère mes button avec cva
Voilà. Oui, c'est sûr.
13, 20, 30, oui, c'est très bien ça.
Ouais c'est bien comme ça, force en fait d'avoir des contraintes et des variants et tout ça, moi j'aime bien. J'aime bien, j'aime bien.
Très cool d'ailleurs Sivyay. Très cool.
Ok donc là la partie fun c'est fini, comment ça release, ça deploy chez Shine si je me doute ? Là il doit y avoir des requirements très hauts pour pas faire n'importe quoi.
Ouais, sur le web on a... Sur le web c'est classique, intégration continue, on merge dans staging puis dans master. Et sur le mobile on relise toutes les semaines. On a bossé énormément sur la DX récemment avec Alex dans mon équipe Front-Anops. Et maintenant on a sur toutes les PR, en fait on crée des relices toutes les semaines. Et on a sur toutes les PR... des previews de l'app qui sont générés automatiquement et c'est complètement automatique. Tu rajoutes un label sur le GitHub et il a un check dans la série qui va définir s'il a besoin d'un nouveau build parce que pour rappel du coup sur Expo, dès qu'on rajoute quelque chose qui va modifier le build natif, que ce soit changer une variable dans la config de l'app, rajouter une dépendance native touchée à du code natif qui est embarqué, on va devoir régénérer un build de l'application. Il a un script qui se base sur la fingerprint d'Expo, qui va checker s'il a besoin de régénérer un full build. Si oui, ça va régénérer un full build, le lancer sur Expo, le publier en commentaire de l'APR et générer une update, donc un QR code, à scanner avec son appareil photo pour pouvoir le tester. L'intérêt de ça. Et après aussi, on a fait une autre automation pour pouvoir le synchroniser avec Linear. Ce qui fait que, par exemple, je suis Product Manager. pas que ça est GitHub, je veux tester un ticket et bien en fait si le ticket est linké dans l'APR, on a fait la synchro entre commentaire linéaire et GitHub et on va toucher aussi le commentaire sur linéaire. Comme ça je suis PM, je peux tester directement le ticket, faire la validée de la QA, merger dans master et du coup ça sera inclus dans la prochaine release. Et donc ce qu'on fait c'est qu'on cut la release le mercredi, enfin on cut la release un jour dans la semaine, c'est à dire qu'on crée une branche de release et tout ce qui est mergé dans master du coup ne sera pas inclus dans cette release. On cuait pendant deux jours, manuel et automatique, et on réalise le fin de semaine et ça part en prod le lundi matin. Et tout ça est quasiment automatisé. On crée une branche de release, le script sait que c'est une branche de release, que ça va marcher sur la prod et que du coup ça va faire une release avec Expo sur les stores, etc. On n'a pas automatisé la partie soumission, mais on n'a que la soumission engrouillée dans l'auto, mais pas la soumission iOS, mais c'était en cours d'investigation.
Ok, cool.
Ouais bah oui, me dis toute façon quand tu... Ouais.
pour la investigation.
Ouais ouais parce que toute façon c'est mobile tu peux toujours... De toute façon c'est simple. Si tu veux chipper toutes les semaines bah t'automatise... C'est même pas une question, c'est... By default, by design, t'es obligé d'automatiser. C'est comme les gens quand ils bossent avec moi, ils me disent David t'automatises tout. Je bah oui je suis censé relier tous les jours. Donc en vrai, je suis obligé d'automatiser sinon je sais pas... Le nom de la boîte c'est We ship it today. Donc l'objectif c'est relier tous les jours. Mais en vrai bon ça n'arrive pas.
...
Je vais dire tout le jour.
On va rester sérieux deux minutes. Après ça dépend. C'est pareil. tu te dis... Ouais, si tu te dis... Oui ça dépend de l'équipe en fait. En vrai je pourrais réaliser tout le jour vu que je suis tout seul tu vois. Script main, boom, yes, update, boom, done quoi. Mais en fait c'est ça si by design tu te dis bah là en fait on va réaliser toutes les semaines, on va mettre en place tous les outils pour que on aille hyper vite et qu'on perde pas du temps à ça et que release, ce soit à partir du workflow et que voilà quoi si il trois boutons hop là non il faut qu'il en qu'un seul.
Mais déjà, une semaine c'est cool déjà, en vrai.
Mais Smart, le truc des labels qui trigorent automatiquement des builds autom... Euh ça c'est pas bête.
Ouais, soit la paire est ready, soit tu mets la paire en ready, soit tu mets un label GitHub et ça trigger le job. Et pour les expos updates, on en fait un tout petit peu, enfin des updates over the air, on en fait un tout petit peu. Et là, en revanche, c'est un process manuel parce qu'en fait, on ne pas que ce soit quelque chose de standardisé. On veut que ce soit vraiment du cas par cas et en fonction de la criticité du bug, ce sera que pour des bugs fixes ou pour activer des features à distance, non même pas activer des features à distance, on utilise des features flag.
Non, je suis bon, bon.
Donc c'est vraiment que pour fixer des bugs énormes en prod, ce genre de choses.
Vous utilisez quoi feature flag pour gérer les feature flag ?
Firebase reboot config.
ok ouais j'ai déjà utilisé aussi ça marche bien
...
Super ! Trop bien, va passer à la deuxième partie... Ah oui, C'est quoi ton top 5 des librairies que tu utilises le plus souvent et que tu recommandes
Tu couples ça avec un Zod et ça fait le café.
Pourquoi ? Parce que les forms jadis quand React est arrivé, il n'y avait rien. Ensuite... Il y a... Oui, le premier jour, on a fait des formulaires, le troisième jour on s'est rendu compte que c'était la merde, le quatrième, il a... C'était quoi celui avant, React Hook Form ? Avec... Merde, comment il s'appelle ? Rien... Non, c'était pas ça.
premier jour
serais tout le temps. Final Form. C'est pas Final Form avec la petite formule 1, là ? Moi j'utilisais ça à un moment donné.
Non non c'était un autre. Ah ouais, incognito batallion, j'ai jamais vu ce truc là. Ah ça je ne connaissais pas du tout, Direct Final Form. Non moi c'était le mec de... Pas J-Man, Jason, le mec de Expo Router. y avait un autre. Bon bref, y avait une autre librairie de routers. Enfin une autre librairie de gestion de formulaires. Et le septième jour, Dieu a décidé de faire les Hooks.
Ouais c'est ça.
Ce qui a fracassé l'interterté de l'écosystème de React. Et React to Form survécu... Pareil, j'utiliserais React to Form depuis... Non, en fait c'est ma sœur qui utilisait React Hookforbes, enfin quand on a fait un bootcamp, je te jure. Alors c'est moi qui était teacher bootcamp, enfin teacher, ouais non mais en fait en vrai ma sœur, bref avant elle bossait dans le monde et je lui ai dit bah vas-y go, fais le wagon parce qu'elle voulait faire UX designer. Je suis pas... ouais au wagon ils en font et en vrai comme ça tu sauras comment ça fonctionne la tech.
C'est une affaire de famille en fait, le code chez toi.
Mais heureusement que je lui ai dit de ça, parce qu'en fait sinon elle aurait fait une cahière de 8 designers et puis là elle aurait plus de taf parce qu'en vrai maintenant... Déjà à l'époque j'en connais pas beaucoup, ouais c'est très compliqué, alors maintenant c'est encore pire quoi. Maintenant la valeur de faire un logo avec mid-journée, générations d'images et tout, c'est encore pire. Les gens ils disent, ouais mais ça je sais le faire, c'est très compliqué. bref, du coup elle a fait le wagon et elle a suivi mon bootcamp BreakNative et quand on arrivait le deuxième jour faire des formulaires, elle a pas utilisé l'eyebray que j'utilisais, elle a utilisé celle-là, Rectoform.
C'est un peu plus compliqué.
Du coup je me suis dit, ouais c'est vrai que c'est fait avec les Hooks et tout. Et comme tu disais avec Zod, ça permet de valider le schéma et t'as plus d'erreurs. Impossible d'avoir des erreurs. Enfin si, justement, tu peux afficher correctement la gestion d'erreurs de caractère minimum ou 3 ou 10 ou là il faut remplir tel... Enfin c'est impossible que t'aies des data mal faites ou mal typées ou que t'aies pas une expérience stylée.
C'est très cool.
Ouais !
C'est by design.
les erreurs sont by design quoi. C'est fait pour que justement tu les déclare quoi. Et ça c'est hyper intéressant.
Ouais, exactement. Moi je dis toujours, quand on commence un projet, on va pas faire d'illustration, on va commencer par faire les messages d'erreur.
Mais, c'est vrai.
bah surtout si on une app de bank en fait parce qu'il ya plein plein de cas où ça peut foirer et si on dit c'est ça et si on dit erreur bah non fuck it erreur pourquoi vas-y arrêtez de me saouler est ce que parce que justement regarde je suis le freelance hyper stressant il a une erreur de facture pourquoi c'est à dire j'ai pas reçu les fonds machin oui est qu'elle n'est pas été reçue est ce que est ce que lui il pas pu payer est ce que je dois
tellement de vignettes avec des clous.
Meuh
aller chercher le téléphone du CEO sur apollo.io parce qu'il m'a pas envoyé la facture parce qu'il a une erreur chez chez... Plein de sources de stress qui peuvent être évitées avec juste un message d'erreur sympa. Oups ! Quelque chose s'est mal passé, réessayez dans deux minutes et puis là ça marche et là tu as... ! Ok ! Cool !
Ce qui est important aussi dans le parcours UX, c'est de mettre de l'aide contextuelle. Nous, a beaucoup de liens d'aide qui sont contextualisés par rapport au parcours et qui sont reliés directement à des articles NDesk ou alors qui sont reliés au plugin Intercom pour pouvoir directement interagir avec le service client. Ça, c'est hyper important.
C'est... ouais c'est possible. C'est très bien possible qu'une fois j'avais eu direct un téléphone, je me suis dit, les gars sont trop smarts quand même. Ouais, clairement, clairement, Ok, donc, formulaires. Après, qu'est-ce qu'on a encore trois à trouver ? Ah ouais ! Alors, attends, faut expliquer tout. C'est qui ? David, David, Xavier Piano, X-T8. Qu'est-ce que c'est X-T8 ?
Ça, c'est hyper important en ce sens.
J'adore X-T8. J'adore X-T8. Je vais utiliser... Pardon, je refais le contexte.
Là on est au 10e jour, Dieu, Dieu il s'est dit, on va faire 10 livreries de state management et X state parce que... Pourquoi ? Vas-y explique-nous.
Là c'est la fusée en public space.
Parce qu'en fait, je à Ornicart, ça fait très longtemps que je connais X-Tate, j'ai rejeté le premier DAV à rejoindre l'assurance, on a monté un truc d'assurance auto et on avait un parcours de souscription et le parcours de souscription d'une assurance auto, il est très conditionnel. Tu me vois venir, tu me vois venir, il y a énormément de, en fonction de tu réponds à telle ou telle question, combien d'enfants tu as, tes années de conduite, tes accidents, machin, il y a des flots conditionnels qui vont se lancer.
Ouais... Je vois !
pour remplir des informations supplémentaires qui vont être envoyées à l'assurance, La première implémentation, c'est arrivé, c'était fait par des gens en freelance, c'était un IF. Donc il y avait un IF, enfin non pas un IF, mais plutôt 60 IF nested qui se basait sur un état global et qui déterminait, en gros, il n'y avait aucun lien de cause à effet entre un écran A et un écran B.
Oui.
Ah oui, non mais y'avait pas de wizard... Oui oui... Première version. On va dire que c'est une première version, tu vois les pauvres ils... Tu vois ? Ça...
Voilà. ça marchait, ça marchait, tu serrais les fesses quand tu rajoutais un écran parce que tu savais pas quand est-ce qu'il allait apparaître mais ça marchait. donc voilà, donc c'était vraiment très artisanal et en fait j'avais déjà utilisé pas mal X-State avant Charonica et je m'étais dit mais c'est mille mille fois l'usage d'un state, c'est mille fois X-State qu'il faut utiliser pour ça et du coup X-State C'est une librairie de machine à état qui permet de définir des transitions d'un point A à un point B et de les définir de manière complètement manuelle et de ne laisser aucune place à la devinette. Tout est défini dans une confine. On ne pas être dans un état impossible.
Impossible state... Alors si vous voulez tri... Si vous voulez trigger, vous allez voir David K. Piano et vous lui dites pourquoi je ne pas utiliser un ease loading pour mon state et là il va péter à câble. Moi c'est bon mais non, enfin je l'avais vu à React Finland en 2017, il bossait là-dessus et je l'avais rencontré et je me dit putain ouais c'est trop intéressant et je ne savais pas c'était quoi une machine à état. Enfin j'avais déjà entendu parler.
Bye
Et c'est lui qui m'a vraiment ouvert les yeux sur le fait que Ease loading boolean c'est de la merde, c'est nul, c'est la pire idée du monde ! depuis maintenant à chaque fois... Ouais c'est ça déjà, et à chaque fois je pense à lui, je pense à lui, et... J'ai jamais utilisé Xstate parce que c'est vrai que c'est compliqué quand même comme système, mais typiquement l'édition de contrat et tout, t'as un...
C'est bien, réduire c'est mieux.
gigantesque et tu dois justement visualiser toutes les étapes et à la fin ton chart ressemble à un diagramme en huitaine avec plein d'automation, en plus tu as un outil de visualisation assez stylé.
T'as un outil de visualisation, tu peux lui ton schéma et il te le fait automatiquement. Et d'ailleurs, c'est tellement fort que les machinalités en général, que Chakra, l'engine derrière Chakra, ça utilise Zag, qui est par le même créateur, et c'est des machinalités pour tes composants. Genre, est-ce qu'une modal est ouverte ou fermée ? Est-ce qu'elle est en train d'être animée ? Les boutons, est-ce qu'ils sont loading, press ? Enfin bref, tous tes composants derrière ont des machinalités dans Chakra.
Ouais c'est ça si je me rappelle bien.
pour justement éviter que c'est une possible saut, etc. Ça s'appelle Zach James, mais...
Smart. Ouais bah oui oui oui. Ok.
Et pour finir dans les libs, j'adore expo-router. Je suis assez fan même si j'ai du mal avec le file system routing parce que j'ai du mal parfois à voir mes urls. Mais avec ça, j'utilise un tout petit cli qu'un gars a développé qui permet de faire l'arbeau de tous les fichiers et du coup les liens, enfin, chaque écran. Je que ça s'appelle, je pourrais le retrouver, mais c'est un CLI pour expo-router qui fait juste...
oui ?
qui analise les fichiers et qui dump tous les urls. Et il me faut une cinquième...
Euh, bah si, bah c'est... Plus que... Ouais, ouais, non mais attends, pour expro... C'est plus que... Parce que quand tu fais underscore sitemap... Ben, t'sais, tu fais un link vers underscore sitemap... Tu vois direct tout ça.
Oui mais t'as pas quel fichier, map, quelle route. Parce que parfois tu vas avoir des nested layout routes avec des parenthèses tabs, parenthèses machin, truc bidule. Et du coup c'est intéressant moi je trouve aussi de voir quel fichier, map, quelle route. Parfois j'ai du mal à mapper les fichiers avec une URL parce que je suis pas à l'aise avec ce système de file routing, j'en ai très peu fait dans ma carrière de dev. J'ai toujours besoin de ce petit béquis de voir quel fichier correspond à quelle route.
Hmm?
Ouais ouais... Ouais...
Ouais, je vois, je Et puis même le fait que ça s'appelle... Ouais, que ça s'appelle index et tout, c'est un enfer parce que tu vas... Ah mais c'est où en fait en vrai ?
Ne faites pas la safe-up.
Ouais c'est ça. Oui ça s'appelle index mais ça prend potentiellement l'url, prend le nom de la route qui est au dessus. en fait tu sais pas exactement quel truc tu essaies.
Laissez-moi !
Ouais, vois, à naviguer. Non mais je comprends pareil, frustration, j'utilise aussi, c'est stylé, mais des fois un peu ugly à t'y retrouver, surtout si t'as une centaine de screens.
Mais derrière, le support est exceptionnel, les vidéos de Addy Kramer sont top. La falle-gou.
de Kadir, ce n'est pas, oui, c'est vraiment Kadir, dites-lui merci pour cette vidéo. Parce que tu sais, en fait je la connais bien, je la connais bien parce qu'elle était à Londres avant et tout, et elle m'a dit ouais, il a un commentaire que j'ai eu sous une demi-vidéo, c'est pourquoi c'est une AI, pourquoi vous avez utilisé une AI pour faire cette vidéo et tout. La pauvre, franchement la pauvre, elle doit record et tout. Le seul commentaire qu'elle a c'est, c'est de l'AI. Non pas du tout, c'est une vraie personne, je la connais bien, c'est un humain et tout, vous inquiétez pas.
Merci pour ce vrai.
...
c'est vraiment l'insulte de 2025 quoi.
ouais non mais... Je... Comment...
Mais ouais, très très cool ces vidéos, elles sont hyper instructives et du coup, mettre en place de l'autre, c'est hyper facile à faire avec ExponRouter parce que les layout routes, c'est du pain béni quoi, pour ce moment de chose.
C'est vrai, vous voulez savoir, il a un article qui a popé genre hier, il y a quatre minutes. Ah non, c'était hier. Ah non, c'était le 17. Je le mettrai dans les notes de l'émission. Ouais, ouais, c'est vrai, tout plus facile. Trop bien, trop bien. va arriver à la deuxième partie de l'émission. Alors, est-ce que tu te rappelles, tu peux dire quelles fonctionnalités tu aurais pris ? développé récemment ou une kit à marquer et combien de temps ça t'a pris pour la mettre en prod ? Enfin vous, parce que vous étiez en...
Et ben justement, c'est un truc intéressant parce que tu as parlé au début de l'amélioration du temps loading chez Shine, de l'application Shine. On peut parler de ça. C'est une... On a un fonctionnement... Donc quand j'étais staff chez Shine, donc maintenant je suis head of front-end ops, donc c'est un peu différent, mais en tant que staff chez Shine, on avait une façon de bosser assez cool, je trouvais. Je manquais clairement de ressources parce que j'étais le seul staff sur la partie front et en fait, c'était très difficile d'avoir des ressources pérennes. Donc ce qu'on faisait, c'est qu'on identifiait des problèmes. Les plus gros problèmes, c'était le design system et on a eu notamment les performances sur l'app mobile. Et en fait, du coup, j'ai réussi à monter une mini task force, on va dire, avec trois devs. J'avais piqué des devs chez des gens avec des et tout. en fait, objectif, c'était d'améliorer. On s'était mis des objectifs assez ambitieux, genre améliorer le temps de loading par deux.
Allez, les barbares, vas-y y en a marre ! Trop bien !
sur telles et telles pages, on avait vraiment pris des trucs concrets de performances et de faire un audit complet de la perf de l'app. Et donc ce qu'on a commencé à faire, c'est qu'on a utilisé Sentry pour mettre en place des espèces d'observeurs pour mesurer les performances de chargement, etc. Et donc on a fonctionné par itération jusqu'à ce qu'on soit satisfait du résultat et on disbandé l'équipe parce qu'il n'y avait plus rien à bosser. Donc ça, ça a duré peut-être un peu moins d'un quart d'heure, ça a duré deux mois. Et en fait, c'était... Moi, j'étais sur d'autres sujets en plus, mais ça, c'était un autre projet qui a duré deux mois. donc, a bossé, on a mis la première étape, c'était de voir où est-ce qu'on voulait améliorer les perfs. On savait que la home, donc ce que tu décrivais, le parcours, tu décris, j'ouvre l'application, je fais le Face ID et je me connecte sur l'application, je vois le montant de mon compte en banque, c'est le corps parcours et c'est ce que passent 100 % des utilisateurs. Donc ça, c'est le premier truc le plus facile à améliorer. Et il n'était pas terrible. On avait mesuré, on avait des P75, donc les P75 c'est le pourcentile de gens. Si par exemple on a un P75 à 2 secondes, ça veut dire que 75 % des utilisateurs voient l'application en 2 secondes, voient le montant de leur banque en 2 secondes. Donc c'est ce que ça veut dire. Et généralement dans des apps de banque, etc. En termes de performance et de reliability, on va plutôt regarder des indicateurs comme le P90, le P95. voire même le P99 qui est vraiment le 99 % des utilisateurs. Et du coup, ce qu'on a fait, c'est qu'on a mesuré déjà, on n'avait pas l'indicateur, on a mesuré la performance de notre rap actuelle. Elle était horrible. Donc on l'était, je pense, en P75, on était peut-être à 6 ou 7 secondes, même plus, on était à plutôt 10 secondes. Et notre objectif, c'est de faire un fois, enfin de diviser par trois, ou diviser par deux ou par trois. Et en gros, se dit OK, on fait ça. Comment on fait ? Et vraiment, a une approche très... très sur la mesure, très portée sur la data. Donc on a utilisé Sentry tout le temps, on faisait des releases toutes les semaines, on regardait ce qu'on avait amélioré, comment ça impactait le PS 60, enfin comment ça améliorait, etc. Un des trucs que Apollo n'est pas forcément très connu mais fait, c'est que par défaut, il va attendre le retour de toutes les queries pour... enfin il va batcher les queries.
c'est à qu'il va prendre trois quatre queries, il va les envoyer en même temps, il va attendre le retour de toutes les queries pour retourner. Le problème de ça c'est qu'il suffit qu'il une query qui est un P90 dégueulasse parce que le serveur il fait des trucs, des side effects, machin, il doit interroger la poste.fr ou je sais pas quoi et en en vrai il y a une API qu'on interrogeait à la poste à un moment donc c'est pour ça que ça prend du temps. Mais en gros il suffit qu'il en ait une qui soit hyper lente et ça plombe.
La poste. Mais je sais, non mais j'imagine bien, j'imagine bien.
le reste se décourait. Donc déjà on a enlevé ça, on a gagné je sais pas, on a gagné trois secondes, enfin c'était énorme quoi, parce qu'il en avait juste une qui servait à rien et qui était un peu loin. voilà. Et donc on a petit à petit, par itération, a fait ça, on a supprimé des champs qui servaient à rien, on a du dupliqué des champs, on a enlevé du chemin critique des infos qui servaient à rien, on loadait par exemple les notifications et c'était en bloquant. C'est à dire qu'on attendait d'avoir le retour des notifications. pour afficher l'écran de la home. Mais en fait, des notifications, on s'en fiche un peu. Tu peux les fêcher plus tard. Et en plus, potentiellement, sont compliquées à fêcher parce que ça vient de sources différentes. peux avoir des notifications de transactions, de factures, d'accès aux comptes. C'est...
Ouais non mais les notifs c'est un délire. De toute façon les gens savent pas le faire correctement, moi les notifications ça rend ouf. que... Ouais en plus t'as les pushs... Enfin moi je que de base je fais non à tout. Parce que j'ai pas envie. C'est chiant. J'ai que ça à foutre d'avoir des notifs. Et je sais que si je dis oui, il y toujours un risque que je reçoive une push notif de j'ai pas envie de l'équipe marketing qui dit hey ! Allez ! J'ai une idée on va faire genre...
C'est un acte d'égard de choses énormes.
Genre, dans la banque rouge là, on va t'envoyer une notif, genre tiens prenez après ! Bah oui, bien sûr. Genre je vais prendre après parce que j'ai reçu une push notif. Non mais les gars, vous êtes fous quoi ! Donc euh... C'est ça, et puis c'est très compl...
Et ouais, c'est ça. Et ça, coup, en faisant ça... Pardon.
Gérer la granularité de ce truc c'est un enfer, oui, vaut mieux le différer après et voilà comme tu le dis.
Et là c'était les notes inapp, donc y a énormément de différentes qui viennent de sources différentes qui sont hyper lourdes à charger etc. Et donc juste en faisant ces trucs là, en remettant du bon sens et surtout en mettant derrière un contrôle, c'est à dire de mettre des code on-er sur GitHub, sur tel et tel query qui sont impactants dans l'app pour s'assurer qu'en une équipe ne pas venir ajouter des trucs parce qu'ils en ont besoin et en soi ils en ont besoin et c'est valide. Mais est-ce que c'est vraiment le bon endroit pour mettre ça ? du coup ça permet un peu de s'assurer que ça maintient une espèce de qualité de code. donc avec ça on a réussi à atteindre nos indicateurs de performance et on a disbandé l'équipe en fait, il n'y avait plus besoin. c'est hyper intéressant je trouve comme approche parce que t'es hyper focus, t'as de l'impact très vite, très facile à mesurer et tu peux facilement le justifier auprès de stakeholders. parce que tu mesures l'impact, le coût, le calcul ressource-impact est facile.
Et du coup après, donc Blitzkrieg, on s'en va, c'est bien. Mais comment tu fais justement pour garder la performance over time ? Y'a des outils en place, y'a Ascentry qui dit hey ! Be careful !
Et va On a gardé les alertings entry. sur Slack, le P90 de l'app dépasse x secondes sur telle telle transaction, ça pop une alerte. Tu mets en place des codes honneur pour protéger certains fichiers qui peuvent être critiques. Notamment la home, la courri graph QVL, le hook, ce genre de truc. D'où l'intérêt de mettre ça dans des dossiers un peu spécifiques pour facilement mettre des codes honneur dessus.
Ok.
Ouais.
et de la doc et des règles que j'aime beaucoup. Moi, mon mantra c'est si c'est pas automatisable, ça n'a pas vraiment de sens à ce que ce soit une règle, que ce soit une guideline. Donc typiquement, si je peux faire ça sous forme de règle ESLint, Prétier ou un outil d'automation dans la CI, je me porte très très bien grosso modo. Ou des alertes Slack automatiques. Tout ça c'est... Toutes ces choses-là d'automatisation, vraiment pour moi le nerf de la guerre et c'est ça qui fait que tu maintiens une qualité. C'est parce que si tu comptes sur la surveillance de chacun, ça ne pas parce que ça fait une accumulation dans ta tête à autre chose à faire que de penser à comment je dois ne pas coder. Tu veux juste penser à comment je fais pour sortir ma feature. Tu ne pas penser en inverse.
Ouais, je suis d'accord. Ouais, moi c'est pareil. Tooling versus human et tooling win. Moi, pareil, je suis monsieur Tooling Guy, je mets plein de trucs en place parce que je ne me truste pas moi-même parce qu'entre deux journées, je change de code base et tout, j'oublie. Non mais ça, j'oublie, c'est sûr. Et il faut que ça fasse le job pour moi, sinon pas le temps. Mais pour en fait, c'est ça, développer super vite et super rapidement et qu'on ait des erreurs, boucle de feedback comme dans les jeux vidéo, hyper courtes.
Ouais, t'oublies. Ouais.
Pourquoi Breath of the Wild ? Parce que justement, toutes les 4 secondes, tu as un truc à faire. Et boucle de feedback. Si ça vous intéresse, vous tapez boucle de feedback sur YouTube, vous trouverez jeu vidéo et vous trouverez ce que je veux dire. Est-ce qu'il a un anecdote difficile dans le développement de cette app et comment vous l'avez géré ?
Exactement.
Ouais, c'est ça.
Dans le développement, un truc difficile, je pense, auquel tout monde peut s'identifier, c'est la démigration React Navigation quand c'est pas typé et que React Navigation a décidé de faire des breaking changes entre la 5 et la 6 parce que... c'est entre la 4 et la 5 je crois. Mais des trucs énormes genre... ouais 4 et 5, en fait tu peux plus navigate de manière...
Wot
4 et 5. 4 et 5.
Avant dans React Navigation 4, tu pouvais naviguer de manière nested et donc donner un nom de route qui n'est pas dans ton navigateur. React Navigation était quand même capable de retrouver le navigateur. Enfin l'écran. Dans la 5, ils ont dit non, on ne fait plus ça. Sauf que nous, avait une structure d'application qui était énormément nested. On avait navigateur dans navigateur, dans navigateur, dans navigateur. D'ailleurs, en parlant de perf, c'est un truc qu'on a complètement qu'il est. Maintenant, on a tout aplati. y a quelques navigateurs qui nested. mais quasiment l'entièreté des routes sont au même niveau. Donc déjà, ça facilite la navigation, mais surtout ça améliore énormément les performances. J'avais fait des tests de perfs, c'était gigantesque. Tu gagnais tellement de frames par seconde sur la neve, c'était impressionnant. Et donc du coup, la migration de React Navigation 4 à 5, en fait au début, ça a été fait, on l'a tenté trois fois, deux fois avant que j'arrive, parce qu'en fait, il été un peu distribué dans les équipes de faire leurs trucs. Ça n'a jamais marché parce qu'en fait, tu as besoin qu'il une personne qui coordonne.
Ouais.
Il n'y avait pas ce rôle-là. Il n'y avait pas ce rôle-là. Et moi, quand je suis arrivé, du coup, j'ai eu ce rôle ingrat. Salut. Mais en fait, oui, c'est un peu ça.
oui sinon ça va être juste ça.
Dictateur. Bonjour ! Je suis Quoranta, je dictateur, ça va bien se passer hein, mais vous faites ce que je dis et pas de questions. T'es obligé, t'es obligé. Ouais t'es obligé sinon ça marche pas, ça marche pas.
Et du coup, c'était vraiment, je te jure, un mois et demi après t'arriver chez Shine. Donc j'avais un peu la pression de ne sortir un truc en prod tout pété et de juste pas flinguer l'expérience de tous les gens. Et du coup, ça a été hyper long, hyper dur d'aligner tout le monde. Mais au final, on a réussi.
merde, il a été déco. C'est pas grave, va copier link, il va pouvoir rejoin. T'as perdu internet.
Ouais non t'inquiètes, je sais pas ça a des coups, t'as perdu internet Mais là j'entends pas du
T'inquiète, t'inquiète, avec le saut je pourrais édite. Y'a que les gens en live... Y'a que sur YouTube, y'a que YouTube qui s'en souviendra. Mais ouais j'ai pas le son, pourquoi j'ai pas le son ? Tain c'est chelou ça T'as qui l'app complète ?
Corentin recording... Ouais... Tell them to stop and restart the studio recording. Ok. Au pire relance...
Ouais tu kill complètement l'app et tu la relance... attention ça fait reconnecting...
on n'entend plus Corentin. Wesh Mathis, Corentin il est dans les limbes. a... c'est bon. putain on a deux fois Corentin. Attends, attends c'est pas grave. non c'est bon. Attends mais là ? Can change while recording. Vas-y parle attends.
Ah c'est bon ! Est-ce que c'est mieux là ? Ah putain on a deux fois 41 ! Ah punaise il faut quitter l'autre ! attends c'est pas grave. Ah non c'est bon. Attends mais là ? Can't change while recording. Vas-y parle attends. Est-ce que tu m'entends ? Ouais. Cool. Mais... Je m'entends moi-même.
Ouais, mais je m'entends moi-même.
Rebranche ton micro ? Euh, enfin ouais ton micro ouais. Parce que du coup, tout à l'heure on avait branché le micro...
Rebranche ton micro ? On peut faire un truc ? enfin ouais ton micro ouais. Parce que du coup, tout à l'heure on avait branché le micro. la la la la. Sacré setup. Ouais c'est pas grave. Non mais t'inquiète, le pire...
Ouais c'est pas grave. Non mais t'inquiètes le pire c'est avec Mox, on pourra pas faire pire que Mox. Mais grâce à la magie du... du... recording on a entendu.
Est-ce que ça change quelque chose là ou pas ? Sinon je peux essayer de juste brancher mes écouteurs et les débrancher ? Ouais c'est ça, pardon j'avais juste à rebrancher les écouteurs
Ouais c'est ça, pardon j'allais juste dire brancher écouteurs brancher écouteurs et changer le son
Donc là... Là, vas-y, reparle. Là j'entends pas... si là c'est bon, attendi quel, touche plus à rien ? Vas-y.
Tu m'entends pas
Vas-y, dis, vas-y parle, dis quelque chose.
Du coup, je parlais de... Je sais plus de quoi je parlais quand...
merde ! non ! On a repert du leçon ! Au secours. On a rep perdu le son. Ah mais là il fait reconnecting. Ah je sais pas pourquoi... Ah c'est bon, ouais si c'est bon, c'est bon mais tu vois ça va plus être bon dans deux minutes.
Je vous remercie.
Bon, qu'est-ce qui nous fait Riverside là ? Parce je suis vraiment sur un setup assez simple.
Ouais mais là on a reperdu en internet. reperdue internet. ouais ! Euh... enfin...
C'est mon temps para ?
Ah oui. Ça marche pas du tout en effet.
Ouais c'est pareil il va rejoin. là là, ça c'est... Ben oui ça va aller. ça va juste être... En plus, on est large, on est qu'à une heure de record. Franchement. En vrai, ça passe.
ça va passer, nickel ! Tu tu ru ru tu on pourrait mettre une musique d'ascenseur en attendant. Tu tu ru ru tu ru ru tu ru
Euh... ou alors ?
Ouais je pense Matisse, il qu'on fasse un test la prochaine fois sur l'app. Depuis l'app mobile. C'est bizarre qu'on est perdus.
Ou alors c'est qu'il n'a plus de batterie sur son téléphone, ce serait possible. C'est parce que j'utilise l'app mobile Riverside.
je pas nocé, nocé qui est... qui est... pas là... je parle espagnol, n'importe quoi, je ne parle pas du tout espagnol les amis
On va le récupérer ne vous inquiétez pas
est-ce que ça va aller ? Oui, oui, oui, oui,
mais en fait, ça c'est marrant.
Sur Twitch, Corentin est encore là. Attends, mais du coup si je fais copy link... euh... Saint.
Ça tombe, il a plus internet hein.
On va dire euh...
On va dire que... on va dire que quoi ? va dire que quoi ? on va dire que bah...
On va aller explorer, vas-y.
j'ai son mail si c'est on a retrouvé on a retrouvé ouais attends on a retrouvé on a retrouvé on a retrouvé
C'est beaucoup mieux ?
Attends, déjà on t'a retrouvé. Non, ça fait reconnecting. En fait, je sais pas, c'est ton internet qui galère.
ou wifi et ou...
bizarre hein. Parce que ça a été nickel pendant... Je vois pourquoi d'un coup ça a cut. Tu genre là pareil il a rejoin mais il a redisparu. l'enfer ! Mathis dis-moi comment je peux dire pour meubler.
ouais attends, si je sais, je vais lire un article en attendant. Garde.
On va lire la newsletter de Seb. Allez hop ! On va lire un article en attendant qu'il rejoigne. Alors, qu'est-ce qui se passe dans le monde de Racknative ? Cette semaine, Racknative 0.80 ? Mais genre ? Ah oui ! Ah oui, non mais ça, oui, non mais... Si, ça je savais ouais ! C'est tout ce qu'on a vu à BGS. With Frame, Expo Support for Racknative 0.54 Canary. ça va. ShredCNScaffoldComponent for ExpoApp in the lights. BlueSkyMobileAppair enable new arc. une BlueSky. il a la pull request. Est-ce qu'on lit la pull request ? Est-ce qu'ils ont changé du coup social hop new ark donc ils font ils ont mis un type ils ont créé un mock dans les tests new ark true à là c'est bon
Je pense en fait c'est Riverside qui en train d'uploader des vidéos en même temps. C'est Riverside qui upload les vidéos en même temps de...
c'est quoi ?
Ouais ouais, ça c'est normal en fait si il upload la conversation d'avant. Enfin en fait ça upload, en fait en gros ça... ça centralise et quand tu l'ouvres en fait ça sauvegarde en même temps donc en fait à la fin même si on a eu la conversation et que tu laisses le truc upload il va raccorder les mots et quand je ferai l'edit en fait ce sera raccord au même endroit tu vois. alors pourquoi ça a désynchronisé ? Aucune idée. Mais c'est pas grave on a récupéré, nickel, parle de map libraire. Matisse dans le chat il me dit parle de map libraire.
C'est bizarre.
non ! On t'a reperdu ! je sais pas, attends... Je sais pas si... Bah non, on est obligé du plot en fait. On est obligé du plot parce que là je t'ai reperdu. Et en 4G... C'est peut-être ton wifi non ? Est-ce que c'est ton wifi qui... Qui fait que ça...
Ah ouais ? Je suis en 5G là pourtant. Je suis en full 5G.
qui fixe à foire.
parce que là, re-tanker en fait. C'est trop bizarre.
là là zut zut zut zut ...
Alors, bon, c'est pas grave, je vais parler de RecNativeMapLibre.
Pouuuuh
Jean-Charles. bah j'y sais. Pourquoi maplibret? Pourquoi le bon moment? Le bon moment c'est maplibret? Parlons de maplibret. Hé, Jean-Charles Mathis qui est présent dans le chat, il a dit, bosser avec des librairies open source... non, avec des libristes pardon. C'est... Il y a plus de contraintes pour résumer. Bah c'est sûr que Versus... Ouais c'est Linux, c'est Linux versus Mac OS tu vois. Il y a un peu plus de contrats mais tu peux faire plus de choses. Parce que là on utilisait Rack Native Maps. Et Matisse il a découvert Rack Native Maps Libre. Et bon il a un peu plus de friction, il moins de docs, trouver les choses c'est un peu plus compliqué, travailler, ça demande un peu plus de temps. Il a moins de polish on va dire. c'est utiliser MacOS vs utiliser Linux. C'est pareil mais MacOS est quand même plus agréable quand même, tu perds moins de temps sur certaines choses.
Alors attends, sais pas si on va réussir... Ce serait dommage qu'on nous aves cut...
là comme ça parce que je ne pas
Je pas si Riverside, parce que moi je suis en uploading, je suis bon. Je sais pas si lui ça a tout coupé, ou si a des erreurs d'internet, ça, dns, tout bordel comme il a deux jours. Je pense pas parce qu'on est encore en live. Donc ça m'étonnerait que tous les tuyaux soient coupés.
Et on a récupéré Corentin, si, c'est bon. Ah ! Ah ! J'étais sur Android, j'étais sur un Android !
J'ai changé de Couteau suisse. C'est bon, je changer de device.
Ouais t'inquiète, t'as pas de stress hein.
plus
Ouais, ça va. Et ici, pas de stress en plus, Jean-Charles nous a rejoint sur le chat. Alors attends. T'as connu Parano.be ?
Très bien, c'est super des études.
Non ?
bah renciène-toi. Bon je t'enverrai le lien c'est avant jadis avant Facebook, réseau social, mais c'était en Belgique du coup forcément. T'es basé où je t'ai même pas demandé.
Je pas.
Moi j'habite dans le sud-ouest, près de l'Espagne, à Cap Breton, c'est vers au second.
Ok ok ok, bon, forcément, tu connais. Alors attends, va falloir raccorder.
Cordonneur Val-Grande.
On disait quoi ?
moment très difficile je crois on parlait de rec navigation et de migration et de...
Migration règle native. Ok. Tu te souviens, on le refait total.
Je sais plus où ça s'est coupé.
sais pas, dans le chat, dites-nous, 2003.
Mais les migrations reactivation et le fait que ce soit compliqué de... Oui tu demandais c'était quoi le moment le plus difficile et c'était ça en termes purement techniques on va dire parce qu'il fallait coordonner énormément de gens énormément d'équipes sur un truc qui impactait littéralement tout le monde et ça c'est vraiment le plus compliqué parce qu'il fallait pas empêcher de chipper des features il fallait pas couper la prod il y a énormément de contraintes Il fallait pas impacter le release cycle. Ça a été long, a été laborieux, mais quand c'est sorti, ça s'est bien passé, et tant mieux.
Tu te souviens combien de temps vous avez... C'était quoi ? Il y avait des pré-kaitied ? Vous avez des duplications avec des pré-kaitied partout ? C'était quoi la stratégie ?
mais c'est...
Non, fait, on n'a pas voulu utiliser des pre-caiteds parce qu'en fait, si c'était des pre-caiteds, on savait qu'à un moment donné, de toute façon, ça allait sauter. Donc, on demandé, on fait le truc à fond, etc. Ce qu'on a fait, c'est que tout bête, mais on est passé navigate par navigate. Moi, j'ai fait toute la partie un peu commune. Et après, dans chacune des équipes, je leur ai fait l'étiquet pour qu'ils passent navigate par navigate pour vérifier les navigations. On avait une branche normale et une branche qui était seule avec la mise à jour. et en fait on mergeait sur les deux à chaque fois. en fait on dupliquait et tu as une branche qui était pétée, était celle de la mise à jour, et celle qui marchait bien qui était la prod, et après on faisait des comparatifs. disait, là ça marche comme attendu, etc. On n'avait pas de test automatisé à l'époque, mais ça aurait été clairement l'opportunité de mettre un maestro ou un detox branché dessus et faire les scénarios et de les faire rejouer à chaque mise à jour.
Ouais, ok.
Et maintenant vous avez Maestro en place ?
Non, on a des TOCs parce qu'on avait besoin de faire des trucs très pénibles avec Maestro. C'est que l'engin.js qui est dedans, c'est un vieux truc pas ouf. Et du coup, y a énormément de fonctionnalités de JavaScript de base qui ne marchent pas. Notamment, c'est un polyfil de fetch. Je crois qu'il pas de fetch.
oui, mais ça c'est le rac native de base, c'est pas maestro... ouais.
Non, c'est Maestro qui utilise un autre engin JS. bref, c'est très bizarre. Et du coup, l'avantage qu'on avait avec DTAC, c'est qu'on pouvait run notre code. En fait, on avait besoin de se créer des personnels. avait besoin de... Comme on est dans une appli de banque, il y a beaucoup de trucs genre two-factor authentication, vérification d'identité. Et on avait besoin de bypass ces trucs-là depuis le code. On voulait tear down et créer des environnements de test à la volée par test. Et du coup, contrôler tout ça via du code. les créations de Persona, les créations de Flow, etc. Du coup, on était obligé de passer par des Tox, qui n'est pas idéal en termes de DX, c'est quand même assez compliqué, versus un Maestro qui est très...
Ouais, me parait, ouais. J'avoue. C'est exactement ce qu'on disait off quand à côté, c'est logiciel livre versus... versus... Linux versus macOS, tu vois.
C'était ça, il y vraiment un gap avec Maestro qui a été franchi, est assez intéressant en termes d'automation d'applications mobiles. Donc oui, c'est un peu le seul problème qu'on n'avait pas, le fait de ne avoir ça, a été quand même assez long, assez manuel et assez laborieux, mais ça s'est bien passé au final. Parce que justement, j'étais là pour coordonner et tout le monde était motivé et aligné, c'était plus simple.
Au revoir.
Super, j'en profite si y'a des gens dans le chat qui ont des questions, je les pose en direct live. Enfin je trie quand même avant. Les questions... Je sais pas, si y'a des questions pas politiquement correctes, ça tombe, je vais les poser quand même. Est-ce que les techniques de débug que tout RecNative Developer devrait connaître ou le Corentin de avant-Hornicare, qu'est-ce que tu lui conseillerais ?
Pour moi, l'instrumentalisation avec Sentry, ça a été game changer et d'avoir des stats en prod. Là, on ne pas des bugs, mais on parle un peu... Mais c'est quand très lié, c'est d'avoir des indicateurs de ton application en prod. moi, c'est hyper important parce que ça fait un peu boîte noire. Tu sais pas trop ce qui se passe, tu sais pas trop comment s'utiliser. Et Sentry ou n'importe quoi d'autre, peut être Data Dog et d'analyser des transactions des events sur Data Dog.
ça fonctionne quand même, c'est ce t'aide quand même.
Mais le principe d'instrumentaliser, d'instrumenter, pardon, et de mettre en place des mesures sur des parcours précis qui sont critiques à l'expérience utilisateur, de temps moyen, par exemple, de completion d'un parcours, nous, ça peut être le temps moyen pour faire un virement, tous ces trucs-là, c'est des indicateurs de santé de l'application.
Tu mets des loggers un peu partout et ça les crache la sentry ou y'a un truc spécifique ?
Avec Sentry, quand tu veux mesurer des parcours précis, vas mettre des espèces de sondes, des transactions avec des stops et tu vas créer ta transaction et dire je la commence à ce moment-là. Donc c'est toi qui émettre des moments de la transaction et tu dis ça finit là. Et ce que tu peux rajouter en plus, il y a des plugins avec React Navigation qui permettent de rajouter par exemple des spans. C'est-à-dire qu'une transaction va faire cinq secondes et il se passe plusieurs événements dedans.
Ouais.
Il peut se passer des erreurs, des navigations, des data fetching, etc. On peut imaginer, nous, qu'on a fait, c'est qu'on a rajouté des spans, donc juste des traits de mesure, va dire, d'activités. On a fait tchétel query en temps de seconde. On a fait la navigation à tel timestamp. Il y a eu telle erreur à tel moment. Tout ça, c'est des trucs en plus qui permettent de comprendre un peu les parcours utilisateurs. Et c'est assez intéressant.
Et te rappelle c'est quoi le nom de la pays ? C'est Sentry Instruments ?
C'est transaction de Sentry. C'est les transactions.
Sentry Transaction, ok. Pour ceux qui s'intéressent, se diront voir. Moi je mets juste des loggers et ça log des trucs mais j'ai jamais eu de trucs qui subassent parce que j'ai jamais eu l'occasion non plus en fait de faire des parcours entiers mais j'ai déjà fait sur un site web.
Ce qui est cool avec ces outils là, que ça fait des dashboards, peut sortir des indicateurs de performance, peut sortir des temps moyens de parcours, ça fait des jolis dashboards qu'on peut afficher sur un écran au bureau par exemple. C'est vrai, c'est des trucs qui sont marrants et qui sont intéressants à faire d'un point de vue business en fait, parce que s'il y a énormément d'insatisfaction à chaque fois, s'il y a énormément de temps pour faire un transfert alors que tu es une banque,
Ouais c'est ça.
dans le Ouais non mais si si si si...
ça la fout mal quoi, ça le fout mal. J'ai un accélération pas. Mais c'est imperceptible mais c'est quand même important. Donc moi ça tu vois c'est un truc que je me fais beaucoup après le nouveau debugger Ragnative c'est la folie et voilà quoi. Moi c'est ce j'utilise principalement et d'utiliser le flashlight pour mesurer les perfs c'est très très cool. La lib de bam
Moyen, moyen. Moi tu y'en a ça dérange pas. Y'en a que ça dérange pas. Né.
la livre de Bam, Ragnatif, sais plus comment ça s'appelle, Performance Flashlight ?
flashlight c'est codo apps mais maintenant mais ouais ça doit être vous allez sur le site light le site web flashlight.dev et je pense que vous arriverez à tout retrouver sinon pinguez moi je serais ravi de vous donner la ref
Oui c'est...
...
Celui-là, c'est ouf. Il faut faire un SDK de son app sous Android, l'export, et ça va mesurer les FPS, le heap usage, l'usage de la RAM, etc. ça, typiquement, quand j'ai mesuré, j'avais besoin d'indicateurs de perf pour mesurer l'impact de navigation nestée versus navigation flat. J'avais fait un espèce d'exemple de repro avec une navigation nested avec trois navigateurs nested, et la même, mais en flat. et les indicateurs de performance montraient que justement, on gagnait 40-50 % parfois de RAM sur des mêmes flots. Et du coup, c'était un argument supplémentaire que j'utilisais auprès du business pour justifier d'avoir des ressources avec moi pour améliorer ces performances-là. Parce que c'était... Quand c'est flat.
Quand c'était flat ou quand c'était nested ? Quand c'est flat il y a moins... Ouais logique. ok ouais.
Est-ce que tu crées moins d'objets en mémoire en réalité ? T'as qu'un signalier de temps
Ouais, si parce que dans ce moment j'ai un bug avec Explorouter. ça freeze, ouais en fait ça freeze. Il n'y a pas que moi, il a plein de gens en fait. Ouais bah bon je suis en plein dedans. Et là tu vois les objets en mémoire bizarrement, ça en fait plein. Alors je ne pas ce qui se passe mais...
Je l'ai vu passer son truc.
C'est aussi le reproche qu'on peut faire à Xporouter, c'est que du coup, t'as pas trop la main sur ces abstractions en plus.
Ouais tu sais pas trop... Ouais... Ouais pareil, j'ai même mis 4 jours à... Mais tu sais, vous savez, ce problème, pourquoi ça freeze, je pensais que c'était John State, mais on fait pas du tout, mais... Bon bref, classique. S'il y avait pas des trucs comme ça, on aurait pas de taf les amis. Parce que vu que l'AI maintenant est capable de faire des applications à la volée, hein... Quand il aura des gros bugs comme ça, il faudra encore des devs pour faire les vrais problèmes et ou régler les vraies choses.
Ouais.
il faut qu'on garde nos petits problèmes de perf...
En travaillant avec Rack Native, qu'as-tu appris sur le développement logiciel en général ?
En travaillant avec React Native, c'est surtout en travaillant avec des plateformes différentes. Le web est mobile. C'est la philosophie d'Expo, c'est... Le but, pour moi, j'ai l'impression, de toutes mes boîtes et Charmicar chez Shine, c'est vraiment de passer d'un... En fait, c'est la même chose. C'est juste le médium qui change. Mais la façon dont on a de faire du code, est la même. On utilise React, grosso malgré quelques subtilités. qui parfois sont énormes, et dans l'ensemble, c'est la même chose. Et en fait, ça m'a appris à concevoir des interfaces, des API de la même manière que quelle que soit la plateforme. Et du coup, de réfléchir beaucoup plus et que les props qu'on utilise, par exemple, un coup, dis le cas le plus pratique, c'est que les props d'un composant sont hyper importantes, d'autant plus s'il est partagé. Et ça, c'est... C'est vraiment la base de la base. Il faut vraiment faire attention à la façon dont on nomme les choses, la façon dont on met en place des usages. qu'en fonction de la taille de la boîte, et j'ai bossé avec globalement dans le centre, c'était entre 50 et 150 développeurs, ça a un impact énorme. On se trompe sur l'API, on se trompe sur la façon dont on met en place et on diffuse des mauvaises pratiques très rapidement. Et donc, du coup, c'est hyper important de penser la conception de nos interfaces d'API. hyper générique et cross-platform. Même si c'est pas forcément le but, même si on n'a pas une implémentation cross-platform, c'est quand important. Parce que les personnes qui collaborent, qui contribuent, elles peuvent faire les deux. Pour moi, c'est ça.
Allez, suivez
N'importe quoi.
Avoir une DX, la DX est importante aussi parce qu'en vrai tu vois en fait c'est comme un virus après. Si ta DX est nulle, je vais dépropter des bugs et après ça va être très compliqué de de soigner en fait.
Exactement. Et pour moi, performance, après. make it right, et après tu make it fast, parce qu'en fait, ça marche. La performance, est OK, à part si tu fais des trucs vraiment compliqués et où tu vas mettre en place des parcours qui sont vraiment complexes, etc. Make it right d'abord, avec des bonnes pratiques, bien sûr, ça ne veut pas dire qu'il faut faire ça à l'arrache, mais make it right et faut que ça marche, et après, faut que ça soit rapide.
Ouais.
C'est vraiment après, comment je peux l'optimiser par rapport à des critères de satisfaction. Et React Native, le coup, autre truc que j'ai appris, c'est que c'est natif. On utilise les primitives de la plateforme. J'ai vu, il avait beaucoup sur Twitter quand Apple a lancé son nouveau Fluid Design, machin là. Liquid Glass.
Liquid Glass.
Et il y avait tout le qui disait oui c'est la fin de REC NATIVE machin, une heure plus tard Evan Bacon il dropait une vidéo d'Expo Routard avec, vu qu'il pouvait se faire chier. Et ça m'a fait rire parce qu'en fait c'est la plateforme, il n'y a rien de...
Terminé ? Bah oui ! Ah oui la télécharge de l'SD ! Ah oui, est-ce qu'on parle du drama du coup ? En fait le drama c'est que Flutter ils ont dit « Stand by pour faire liquid glass ça va arriver » et les gars de Ragnative c'était « Evan Bacon une heure après Terminado c'est en prod ».
Une heure c'était littéralement le temps de mettre à jour Xcode.
Ouais c'est vraiment ça en plus, c'est ça le pire donc... Ouais moi je dis il faut tout ou faire un monde si Flutter prend une décision, enfin... Moi je ne sais pas, tu vois... Pareil, tu vois, je n'aime pas PHP, je déteste PHP, j'ai fait du Robion Rail, j'ai trouvé que c'était génial, je pense que... Tu il a encore plein de sites web PHP, pas besoin de guerre en fait entre...
Non, y'a pas besoin.
Mais ouais, c'est marrant, ce drama là est rigolo.
C'est plus le côté genre, ouais ça va être fini pour eux, et littéralement 30 minutes plus tard, Evan Bacon qui RT juste, bah voilà c'est bon ça marche les gars. C'est là, bon bah c'est natif en fait. Et ça c'est un truc qu'on réalise pas assez bien et qu'il faut continuer à évangéliser.
Nö.
moi ça fait longtemps, en fait quand j'ai compris que React tu pouvais faire des emails, en fait c'est là que j'ai compris, c'était au tout début, enfin pas au tout début mais je faisais du Amber à l'époque, et en fait je vois React encore un framework, encore un, je savais que, mais je voyais pas la différence en fait, je comprenais pas vraiment c'était quoi vraiment la différence fondamentale entre React, entre React et les autres, et React c'est un moteur de rendu, et c'est ce que dit Ken C.
...
Il a dit en fait, React, ce sera le dernier framework. Sa théorie, c'est ça. Ouais.
Et pareil, c'est serveur, le serveur c'est juste une autre source de rendu. Au lieu de sur un device, on rend sur un serveur. Et il y a une libe de React qui permet de des CLI avec React aussi. On peut tout faire avec
C'est ça.
Ouais, Ink. Ouais Ink. Ouais bah on peut tout faire. Exactement. Donc ouais, on n'est pas prisonnier si demain il a des glaces chez Apple ou à TvR. Bah hop, pas de problème, une heure après on télécharge Xcode, une heure après on compile et c'est bon, terminé. C'est quoi ta stratégie pour tenir au courant de ce qui se passe justement dans le monde de Ragnative ?
En vrai, passe du temps sur Twitter. Je suis un peu les offres d'emploi des autres entreprises pour voir qui bosse avec Racknative ou pas. du coup, je fais un peu du reverse engineering. regarde où est-ce qu'ils recrutent en Racknative. Je regarde les CTO et les gens qui bossent dans ces boîtes-là. Et du coup, je les suis. Ou je regarde ce qu'ils font. Ou je regarde les trucs open source. Et je regarde les confs.
!
bête. Si vous voulez savoir, vous avez sur wishypityoday, french, react native apps et à liste de toutes les apps. Pour l'instant, c'est avec chaque... en fait ça me sert de dashboard pour les gens que j'ai interviewés. Et Shine était dans le top dès le début.
ouais ? C'est toi qui la maintiens un jour manuellement ?
Je suis content de participer.
Ouais, de participer au truc. Je pense que c'est pareil. J'ai dû le voir en regardant offre d'emploi et j'ai vu et j'ai fait, tiens Smart, il de Racknative, faudrait que je les interviewe un jour. Voilà, ouais, juste française en fait. Faudrait que j'insistre réaliser la chose, mais pour l'instant, c'est juste à la mano. En voyant les gens qui sont interviewés, je mets le lien de l'interview direct dedans, comme ça c'est plus facile à retrouver.
Et il commence à y avoir énormément de grosses apps. Je ne me rends pas compte par rapport aux autres marchés, les autres pays d'Europe, comment on se place, est-ce qu'on est plus ou moins... Est-ce qu'on est une grosse communauté ou pas ?
En fait, tu regardes les stats, les stats de State of React Native, c'est l'enquête qui a lieu chaque année, fait par Software Mention. y a US, Pologne, forcément, et après c'est français, crois qu'on est dans le top 5. Alors je sais pas si c'est parce que c'est Seb, This Week in React, qui drive le truc et qui fait la pub pour le survey. Donc du coup, il y a plein de gens.
de la taille 2.
ou si juste les autres écosystèmes qui ne pas que ça existe, State of React Native tout simplement. Je n'ai pas la réponse mais...
Est-ce que c'est un biais peut-être ? Oui, je sais pas.
idée. Je ne sais pas. Celui qui a la réponse, veux bien qu'il vienne ici et qu'il m'explique. Dites-moi.
Expo pourrait avoir la réponse en fonction des stats des apps qui sont faites sur leur build et peut-être les pays des facturations. Ils pourraient se baser sur ça pour faire des stats.
Ouais, des pays... Ouais.
je demande, je trouve quelqu'un, Cédric, vas-y je note. Allez, stats usage France. Je vais demander. Il y peut-être moyen que je trouve l'info en plus. Alors...
c'est ça,
Est-ce que c'est quoi ton conseil Si tu devais démarrer une nouvelle app demain, serait quoi ton conseil que tu donnerais aux jeunes générations ?
Ouais, je suis d'accord. Si c'est trop compliqué, faut breakdown en plein de petits morceaux et vous verrez, ça ira plus vite. Est-ce qu'il a un sujet que tu aurais voulu aborder ? Dont on n'a pas parlé.
Ouais... Ouais, je suis complètement d'accord.
Tu connais le Valve Handbook ?
voilà. franchement bah c'est pareil, il faut vraiment le lire. En vrai moi j'ai lu ça, je mettrai le lien dans les notes de mission, c'est Valve Handbook. Ouais exactement. Ils font des jeux ? bon ? Je pense que c'est juste une plateforme de... Juste... Non non si ouais. Donc Valve, ceux qui ont fait Half-Life, voilà moi j'ai un affect parce que je connais la boîte parce que Half-Life, hein, et du coup je trouve l'histoire de comment ils ont switché incroyable et... En fait, ça rappelle exactement ce que tu dis, ils un handbook pour les nouveaux employés. en fait, en gros, c'est ça. Si t'es embauché chez Valve, on va dire tiens, première semaine, ce livre, lis-le. Et c'est à toi de trouver du taf. Donc en fait, ça brainfuck le cerveau des gens parce qu'au début, on dit quoi faire. Mais là, en fait, pas du tout ça, c'est genre dis, t'es bon là-dedans, trouve trois personnes et ship un truc. Et donc c'est vraiment l'espèce task force. C'est comme ça ça marche, en fait. Donc ça peut être. C'est complètement le chaos. Moi je sais que ça irait dans un environnement comme ça, j'arriverais à naviguer, à aider les gens et faire des choses à impact et à trouver moyen à me débrouiller moi-même en fait en
Ouais c'est...
Ouais. ouais là oui. C'est exactement... C'est complètement organique et du coup ils arrivent à chipper. Après ça demande une organisation quand même. c'est ce qu'ils disent en fait, les teams elles sont pas vouées à rester en fait en vrai. Comme vous avez fait pour la performance c'était Ops, Guerilla Performance, on fait une Blitzkrieg pendant trois mois et après... fait le meilleur qu'on pouvait, fait ça sert à rien qu'on reste sur le sujet parce que de toute façon on en refera peut-être une dans six mois mais c'est le format qui marche bien, la team se disloque et on Oui, oui.
ça. Est-ce que tu recommandes quelqu'un qui devrait passer dans l'émission ? Il y avait une personne mais elle est secrète défense ! Est-ce que tu as trouvé quelqu'un d'autre depuis ?
Ouais.
Sinon si c'est personne que ça tombe c'est clair que tu connais pas du...
Tu connais qui fait du React natif ?
Je sais pas...
Oui, oui oui oui oui oui. Ouais non mais c'est pas grave t'inquiètes, je prendrais le... je prends le défi. Un francophone, un francophone de chez Expo, ça devrait peut-être se trouver tu vois, parce qu'il veut... en fait...
Exactement, alors plot twist, y peut-être moyen que je réveille une maidsen de chez Infinite Raid parce qu'en fait il parle français bien, mais alors je sais pas s'il pourrait tenir un podcast parce que j'ai parlé avec Franck à Abjj justement et il m'a dit ouais il faudrait que tu l'invites parce que en fait il... alors je sais pas s'il tenir un podcast entier je ne sais pas mais ou au pire je ferais une exception où ferais du franglais et ça sera très bien Alors où est-ce qu'on peut te retrouver Corentin pour les gens qui veulent plus de Corentin en vrai et en OHD et tout ça ?
Bah c'est bien, c'est la plateforme, vois, le réseau social de bots. Je pensais que ça allait devenir un réseau social full bot. là c'est Mi AI. J'avais une théorie avant. C'est que devenir le premier réseau social de bots, là c'est plus AI qui parle avec AI. Mais y a des vrais gens dedans encore sur LinkedIn.
un AI... Moi j'ai déjà un adblock, enfin j'ai... You block origin et je bloque carrément des éléments de page, du coup en fait mon LinkedIn en fait il ressemble à rien, enfin il ressemble à rien, il y a deux cases et j'ai viré toute l'Ui. Ouais c'est ça, parce que c'est insupportable mais c'est vrai qu'un AI machin... Il faudrait...
Ah ouais, voilà là. On verra s'il a. Moi c'est David, pouvez me retrouver sur Twitter, BlueSky ou Github sur le nom Flexbox. Si vous avez survécu jusqu'ici, vous pouvez aller voir wishypity.today.com podcast pour soutenir l'émission, voir la expo checklist pour lancer votre prochain projet et rejoindre aussi le Slack de Rack Native Connection si vous voulez nous poser des questions. Pour donner de la force... Est-ce que tu sais que quand tu mets 5 stars sur Spotify sur le podcast, il se passe un truc ? Ouais. Il se passe un truc, c'est que du coup, j'ai 5 stars. Voilà, et ça incrémente le compteur. voilà, et Apple Podcast aussi s'envoie de la force. m'aide à inviter d'autres gens. vois, ça build de la trust. Comme ça, pourrais dire, les gars de chez Expo, vous voyez, j'ai un podcast cool, faites ramener un francophone. Donc du coup, prochain épisode, qu'est que ça va être ? Dans le backlog on a... Plan, on a toi... Pour l'instant j'ai rien. Ah bah c'est Ludwig, pas pour l'instant. Ah si ! Attends, j'ai quelque chose d'autre. J'ai quelqu'un d'autre. Le prochain cross-platform show. Ah bah oui ce sera avec Kim de... Qui a fait... Tu vois ce qu'il a fait ? Il a fait une conf à AbJS pour sa boîte de musique qui habite à Bordeaux. trop On sent les confs. trop fort. oui, si y une conf à voir, c'est vrai que celle de Kim elle est incroyable. En plus, elle doit être disponible en replay.
En tout cas je vous remercie d'avoir assisté à l'émission et on se retrouve à la prochaine. Ciao à tous !