<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Side Effect — Blog</title><description>Notes sur l’architecture logicielle et le développement mobile.</description><link>https://sideeffect.io/</link><item><title>Le forgeron et l’IA</title><link>https://sideeffect.io/fr/posts/2026-08-30-leforgeronetlia/</link><guid isPermaLink="true">https://sideeffect.io/fr/posts/2026-08-30-leforgeronetlia/</guid><description>Comment j’ai formalisé dans Codex un cycle de développement agentique fondé sur des skills, des sous-agents spécialistes et des handoffs, afin de produire un code mobile cohérent avec mes choix d’architecture.</description><pubDate>Sun, 30 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Debounce avec Swift Concurrency</title><link>https://sideeffect.io/fr/posts/2023-01-11-regulate/</link><guid isPermaLink="true">https://sideeffect.io/fr/posts/2023-01-11-regulate/</guid><description>Lors du développement d’une application iOS, il est fréquent de devoir contrôler la fréquence de traitement d’une information. La programmation réactive et son opérateur Debounce offrent une solution, mais nous allons ici explorer une implémentation fondée uniquement sur Swift Concurrency.</description><pubDate>Wed, 11 Jan 2023 00:00:00 GMT</pubDate></item><item><title>Des extensions pour AsyncSequence</title><link>https://sideeffect.io/fr/posts/2022-03-13-asyncsequenceextensions/</link><guid isPermaLink="true">https://sideeffect.io/fr/posts/2022-03-13-asyncsequenceextensions/</guid><description>Swift 5.5 a introduit la concurrence structurée et AsyncSequence, une nouvelle manière de produire un flux de valeurs au fil du temps. Explorons ses différences et ses ressemblances avec Combine, ainsi que des opérateurs familiers.</description><pubDate>Mon, 21 Mar 2022 00:00:00 GMT</pubDate></item><item><title>Des erreurs Equatable en Swift</title><link>https://sideeffect.io/fr/posts/2021-12-10-equatableerror/</link><guid isPermaLink="true">https://sideeffect.io/fr/posts/2021-12-10-equatableerror/</guid><description>Error est un type de base en Swift qui représente un problème survenu dans le flux de l’application. Cet article explore une manière de rendre une erreur conforme à Equatable sans compromettre son abstraction.</description><pubDate>Fri, 10 Dec 2021 00:00:00 GMT</pubDate></item><item><title>Un DSL pour les machines à états en Swift</title><link>https://sideeffect.io/fr/posts/2021-02-13-statemachinedsl/</link><guid isPermaLink="true">https://sideeffect.io/fr/posts/2021-02-13-statemachinedsl/</guid><description>Les machines à états sont prévisibles et testables. Comme elles peuvent être définies de manière abstraite, elles se prêtent bien à un langage dédié. Créons un DSL Swift et utilisons-le dans une architecture en boucle de rétroaction.</description><pubDate>Sat, 13 Feb 2021 00:00:00 GMT</pubDate></item><item><title>Des fonctions comme dépendances en Swift</title><link>https://sideeffect.io/fr/posts/2020-08-19-functionsasdependencies/</link><guid isPermaLink="true">https://sideeffect.io/fr/posts/2020-08-19-functionsasdependencies/</guid><description>Mettre en place une architecture peut être délicat. Nous avons des règles et des patterns pour nous guider, mais certaines pratiques que nous pensions bien établies méritent parfois de prendre du recul.</description><pubDate>Wed, 19 Aug 2020 00:00:00 GMT</pubDate></item><item><title>Présentation de Spin</title><link>https://sideeffect.io/fr/posts/2020-03-26-spin/</link><guid isPermaLink="true">https://sideeffect.io/fr/posts/2020-03-26-spin/</guid><description>Présentation de Spin, un système universel de boucle de rétroaction en Swift. Une boucle de rétroaction s’autorégule en réutilisant le résultat de ses calculs comme prochaine entrée et en l’ajustant continuellement selon des règles données.</description><pubDate>Thu, 26 Mar 2020 00:00:00 GMT</pubDate></item><item><title>Swift est-il un langage de programmation orientée aspects ?</title><link>https://sideeffect.io/fr/posts/2019-07-20-swift-aop/</link><guid isPermaLink="true">https://sideeffect.io/fr/posts/2019-07-20-swift-aop/</guid><description>Pour répondre à cette question, nous devons d’abord comprendre la programmation orientée aspects, ou AOP. J’aime la voir comme une réponse à une certaine forme d’échec des conceptions orientées objet.</description><pubDate>Sat, 20 Jul 2019 00:00:00 GMT</pubDate></item><item><title>Les Property Wrappers de Swift 5.1 — L’implémentation manquante de Published</title><link>https://sideeffect.io/fr/posts/2019-06-18-propertywrappers/</link><guid isPermaLink="true">https://sideeffect.io/fr/posts/2019-06-18-propertywrappers/</guid><description>La WWDC a été formidable cette année. SwiftUI et Combine figuraient parmi les grandes annonces de la conférence. Ils auront un impact considérable sur notre quotidien de développeurs iOS.</description><pubDate>Tue, 18 Jun 2019 00:00:00 GMT</pubDate></item><item><title>RxReduce — Une architecture réactive de conteneur d’état, partie 2</title><link>https://sideeffect.io/fr/posts/2018-06-25-rxreduce-part2/</link><guid isPermaLink="true">https://sideeffect.io/fr/posts/2018-06-25-rxreduce-part2/</guid><description>Après avoir posé les bases des conteneurs d’état, voyons comment RxReduce gère l’état, ses mutations et le travail asynchrone lié aux effets de bord de manière réactive.</description><pubDate>Mon, 25 Jun 2018 00:00:00 GMT</pubDate></item><item><title>RxReduce — Architecture réactive à conteneur d’état, partie 1</title><link>https://sideeffect.io/fr/posts/2018-06-24-rxreduce-part1/</link><guid isPermaLink="true">https://sideeffect.io/fr/posts/2018-06-24-rxreduce-part1/</guid><description>La gestion d’état est récemment devenue une préoccupation très populaire dans les applications mobiles. L’idée d’un état constituant l’unique source de vérité d’une application est particulièrement séduisante ! Les vues ne seraient alors qu’une représentation affichable de cet état 👌.</description><pubDate>Sun, 24 Jun 2018 00:00:00 GMT</pubDate></item><item><title>Une couche réseau type-safe</title><link>https://sideeffect.io/fr/posts/2018-04-28-typesafenetworklayer/</link><guid isPermaLink="true">https://sideeffect.io/fr/posts/2018-04-28-typesafenetworklayer/</guid><description>De nombreux articles expliquent comment créer une couche réseau type-safe avec Swift. Quelle que soit l’API réseau utilisée, ces approches reposent toutes sur le renvoi du type de données précisément attendu. Dans cet article, nous allons essayer d’aller un peu plus loin en couplant fortement l’endpoint appelé et le type de données attendu.</description><pubDate>Sat, 28 Apr 2018 00:00:00 GMT</pubDate></item><item><title>Un aperçu de la conformité conditionnelle</title><link>https://sideeffect.io/fr/posts/2018-04-02-glanceatconditionalconformance/</link><guid isPermaLink="true">https://sideeffect.io/fr/posts/2018-04-02-glanceatconditionalconformance/</guid><description>Swift 4.1 est disponible depuis quelques jours et apporte une fonctionnalité intéressante, la conformité conditionnelle. C’est un nouvel outil au service de la programmation orientée protocoles et de la conception d’API. Cet article propose un premier aperçu de cette toute nouvelle technique.</description><pubDate>Mon, 02 Apr 2018 00:00:00 GMT</pubDate></item><item><title>Enchaîner élégamment des UIViewPropertyAnimators</title><link>https://sideeffect.io/fr/posts/2018-03-24-elegantlychaininguiviewpropertyanimators/</link><guid isPermaLink="true">https://sideeffect.io/fr/posts/2018-03-24-elegantlychaininguiviewpropertyanimators/</guid><description>Mes articles parlent généralement de design patterns, d’architectures logicielles — ou de RxFlow 😀 —, mais celui-ci sera différent. Je ne pensais franchement pas écrire un jour sur ce sujet, pourtant j’ai quelque chose de sympa à partager. Aujourd’hui, nous allons donc parler des animations avec Swift.</description><pubDate>Sat, 24 Mar 2018 00:00:00 GMT</pubDate></item><item><title>Quelques astuces orientées protocoles pour MVVM en Swift</title><link>https://sideeffect.io/fr/posts/2018-01-02-protocolorientedtipsmvvm/</link><guid isPermaLink="true">https://sideeffect.io/fr/posts/2018-01-02-protocolorientedtipsmvvm/</guid><description>MVVM est récemment devenu une sorte de standard pour l’architecture des applications iOS. Il offre une bonne séparation des responsabilités, un moyen efficace de formater les données et d’excellents mécanismes de binding avec des frameworks comme RxSwift. Voici quelques astuces qui facilitent son implémentation.</description><pubDate>Tue, 02 Jan 2018 00:00:00 GMT</pubDate></item><item><title>RxFlow, partie 3 — Trucs et astuces</title><link>https://sideeffect.io/fr/posts/2017-12-22-rxflow-part3/</link><guid isPermaLink="true">https://sideeffect.io/fr/posts/2017-12-22-rxflow-part3/</guid><description>Voici le dernier chapitre de notre voyage dans RxFlow. J’ai déjà présenté toutes les fonctionnalités et tous les principes clés du framework dans les deux parties précédentes. Plongeons-nous maintenant dans quelques trucs et astuces rendus possibles par la programmation réactive.</description><pubDate>Fri, 22 Dec 2017 00:00:00 GMT</pubDate></item><item><title>RxFlow Partie 2 — En pratique</title><link>https://sideeffect.io/fr/posts/2017-12-09-rxflow-part2/</link><guid isPermaLink="true">https://sideeffect.io/fr/posts/2017-12-09-rxflow-part2/</guid><description>Il y a quelques semaines, je présentais sur ce blog un framework iOS appelé RxFlow. Après plusieurs mois de travail, il est maintenant prêt à être utilisé. Passons de la théorie à la pratique.</description><pubDate>Sat, 09 Dec 2017 00:00:00 GMT</pubDate></item><item><title>Un namespace polyvalent</title><link>https://sideeffect.io/fr/posts/2017-11-22-versatilenamespace/</link><guid isPermaLink="true">https://sideeffect.io/fr/posts/2017-11-22-versatilenamespace/</guid><description>En Swift, certaines API comme RxSwift utilisent une technique qui confine le code qu’elles exposent dans un namespace dédié. Dans cet article, nous allons découvrir comment y parvenir de la manière la plus générique et polyvalente possible.</description><pubDate>Wed, 22 Nov 2017 00:00:00 GMT</pubDate></item><item><title>L’effacement de type en Swift</title><link>https://sideeffect.io/fr/posts/2017-11-09-typeerasure/</link><guid isPermaLink="true">https://sideeffect.io/fr/posts/2017-11-09-typeerasure/</guid><description>En Swift, vous pouvez définir des protocoles en leur associant un ou plusieurs types à l’aide du mot-clé associatedtype. L’appellation « type générique » est ici quelque peu usurpée : il s’agit plutôt d’un emplacement réservé à un type. Nous verrons que ces protocoles offrent peu de souplesse lorsqu’on souhaite les manipuler de manière générique.</description><pubDate>Thu, 09 Nov 2017 00:00:00 GMT</pubDate></item><item><title>RxFlow, partie 1 — La théorie</title><link>https://sideeffect.io/fr/posts/2017-11-08-rxflow-part1/</link><guid isPermaLink="true">https://sideeffect.io/fr/posts/2017-11-08-rxflow-part1/</guid><description>Voici le premier article d’une série qui occupera une place centrale sur ce blog pendant quelque temps. Je vais présenter RxFlow, un framework de ma conception qui implémente le pattern Reactive Flow Coordinator dans les applications iOS. RxFlow s’appuie sur RxSwift et bénéficie du soutien de la RxSwiftCommunity.</description><pubDate>Wed, 08 Nov 2017 00:00:00 GMT</pubDate></item><item><title>EZStream</title><link>https://sideeffect.io/fr/posts/2017-11-01-ezstream/</link><guid isPermaLink="true">https://sideeffect.io/fr/posts/2017-11-01-ezstream/</guid><description>EZStream est la manière la plus simple de diffuser la caméra de votre appareil dans n’importe quel navigateur web.</description><pubDate>Wed, 01 Nov 2017 00:00:00 GMT</pubDate></item></channel></rss>