← Tous les articles

Ce que je refuse d'écrire

Le moyen le plus rapide de comprendre ce qu’un auteur pense, c’est la liste des sujets qu’il pourrait traiter et qu’il écarte. Le volume publié dit ce qui est sorti. La liste des refus, elle, dit la position tenue. Un blog doté d’une liste de refus définie se lit comme une personne ; un blog qui n’en a pas se lit comme un flux.

La série Apple Ecosystem a une voix. Cette voix ne se construit pas d’abord avec les articles qui sortent. Elle se construit avec ceux qui ne sortent pas, et avec les formes d’écriture récurrentes qui restent nominalement dans le sujet mais qui sont coupées quand même. Les articles que vous avez lus dans cette série découlent des coupes. Le reste de cet essai nomme les coupes.

Deux types de refus méritent d’être distingués. Les refus catégoriels portent sur des sujets hors du territoire de la série. Les refus de forme portent sur des choix de voix et de structure qui disqualifient un brouillon quel que soit son sujet. Le premier relève du goût ; le second, du métier. Les deux façonnent ce que vous lisez.

En bref

  • Refus catégoriels : tout ce qui sort de l’intersection entre l’écosystème Apple et les agents. Développement web générique, tutoriels sur les LLM cloud, technologies de recrutement, tout ce qui diluerait l’identité de la série.
  • Refus de forme : le cadrage « voici mon installation » recyclé (« ce que 120 hooks m’ont appris »), la télémétrie privée comme preuve, l’échafaudage éditorial (étiquettes de planification, numéros de PRD), les tutoriels sans architecture, les avis tranchés sans fondement.
  • Refus intéressants : des sujets qui appartiennent au territoire nominal de la série et qui sont pourtant coupés parce qu’ils ne consolident pas la position (applications de productivité visionOS, Swift côté serveur, interfaces Mac exclusivement AppKit).
  • Le refus n’est pas une absence. Le refus donne sa forme à ce qui reste.

Refus catégoriels

La série traite du développement Apple à son intersection avec les agents IA. Tout ce qui sort de cette intersection est hors périmètre, non parce que ce serait inintéressant, mais parce que cela ne consolide rien.

Développement web générique. Blakecrosley.com tourne lui-même sur FastAPI et HTMX. Des dizaines d’articles pourraient être écrits sur cette pile : motifs de remplacement HTMX, injection de dépendances dans FastAPI, pièges de SQLAlchemy en asynchrone. Aucun n’a sa place dans cette série. Le lecteur visé est un développeur iOS qui réfléchit aux agents ; les articles de développement web diluent le signal, même s’ils attireraient leur propre public. Ces articles ont un endroit où exister ; ce n’est pas ici.

Tutoriels sur les API des LLM cloud. L’API d’Anthropic. Celle d’OpenAI. Les SDK Python. Les écarts de latence entre Claude Sonnet et Opus. Du contenu de forme tutorielle pour quelqu’un qui apprend à appeler des LLM cloud depuis un service backend. La position de la série, c’est que l’Apple agentique est la ressource rare ; les tutoriels sur les LLM cloud sont une denrée banale que le reste d’internet couvre déjà en profondeur. En écrire un reviendrait à lire la documentation à voix haute, sans rien ajouter à l’autorité de la série.

ResumeGeni et les technologies de recrutement 941. Autre société, autre marque, autre site. Une pollinisation croisée entre les deux affaiblirait les deux. La pile de recrutement a ses propres décisions techniques dignes d’un article (analyseurs ATS, pipelines d’embeddings, algorithmes d’appariement de candidats) ; leur place est sur un autre blog, sous une autre identité, pas ici.

Tout ce qui diluerait l’identité de la série. Un excellent article sur le pooling de connexions Postgres, un coup de gueule Hacker News sur la valse des frameworks JavaScript, une réflexion soignée sur les environnements d’exécution asynchrones de Rust : tout cela se défend, et tout cela sort du territoire de la série. Le critère d’inclusion n’est pas « l’article est-il bon ». Le critère, c’est « consolide-t-il ce qui existe déjà ici ».

Les refus catégoriels découlent de l’identité de la série. Une fois l’identité nommée, les refus s’imposent d’eux-mêmes.

Refus de forme

Les refus de forme traversent les sujets. Un brouillon peut coller parfaitement au périmètre de la série et se faire rejeter à cause de sa manière d’être écrit.

Le cadrage « voici mon installation » recyclé. « Ce que 120 hooks et 49 commandes m’ont appris en 6 mois. » « Après 500 sessions, trois choses ont tenu. » « Ma configuration à 95 hooks. » Ce cadrage recycle l’environnement de travail de l’auteur comme preuve d’expertise. Les applications dont parle la série forment un petit ensemble ; le même décompte de hooks, de skills, de commandes, de sessions reviendra d’article en article si l’auteur s’appuie dessus. Cela se lit comme un raclement de gorge, pas comme un argument. La règle adoptée par la série : le volume penche vers l’explication de frameworks et l’essai de frontière ; les articles sur du code livré pointent vers de vrais projets publics, pas vers la taxonomie d’outils de l’auteur.

La télémétrie privée comme preuve. « Le hook s’est déclenché 52 fois en 34 jours. » « La vérification fantôme est passée de 12 % des sessions à moins de 2 %. » Des chiffres privés sont invérifiables de l’extérieur ; ils se lisent comme de la vantardise ; ils ne peuvent être confrontés à aucun artefact public. La bonne forme de preuve, ce sont des sources publiques (documentation Apple Developer, spécifications Anthropic, code open source livré, articles de recherche) accompagnées d’un raisonnement. Les métriques privées ont leur place dans les messages de commit et les post-mortems, pas dans une prose publiée.

L’échafaudage éditorial. Des étiquettes en gras qui classent l’article selon la taxonomie interne de l’auteur. Des numéros de PRD dans le corps du texte. « Conformément à l’échelle du plan cave. » Le lecteur n’a pas besoin de savoir dans quelle case l’article se range dans le document de planification de l’auteur. Le genre saute aux yeux dès la première phrase. Le plan est un outil de travail, pas du texte destiné au lecteur. L’artefact est l’artefact ; le flux de travail reste dans le flux de travail.

Les tutoriels sans architecture. Un article qui explique « voici comment installer XcodeBuildMCP » sans nommer ce qui change architecturalement quand l’agent dispose d’un accès structuré aux outils est un tutoriel. Les tutoriels ont de la valeur, mais ce n’est pas l’apport de la série. Son apport, c’est le motif d’architecture qui se cumule avec le reste de la série. Un tutoriel qui n’atteint pas ce niveau est soit réécrit jusqu’à y parvenir, soit coupé.

Les avis tranchés sans fondement. « Codex est meilleur que Claude Code. » « MCP est surcoté. » « Les App Intents sont une impasse. » Le genre de l’avis tranché attire le trafic mais ne résiste pas à l’examen. Un avis juste s’appuie sur des comportements précis que l’auteur a observés et sait défendre ; un avis faux s’effondre dès que le deuxième meilleur développeur du moment le lit. Les articles à opinion forte de la série (Confiance, Tool RL, App Intents contre MCP) sont des positions, pas des avis ; les positions apportent les preuves.

Tout ce qui oblige à réciter des évidences. « Installez d’abord Xcode. » « Lancez npm install. » « La documentation d’Apple se trouve sur developer.apple.com. » Du remplissage. Un lecteur à qui il faut expliquer comment installer Xcode n’est pas le lecteur de la série. Celle-ci part du principe que son lecteur est déjà le genre de personne qui la lirait ; aller chercher un autre lecteur là où il se trouve, c’est un autre article sur un autre site.

Les refus intéressants

Les refus catégoriels sont faciles. Les refus de forme suivent des règles. Les refus intéressants, eux, portent sur les sujets situés à l’intérieur du territoire nominal de la série, et coupés malgré tout parce qu’ils ne consolident pas la position.

visionOS pour les applications de productivité. Un long article du type « utilisez visionOS comme second écran » ou « livrer une application de journal personnel sur Vision Pro ». Pile Apple, dans le sujet. Coupé parce que la position de la série sur visionOS, c’est que RealityKit et son modèle mental spatial constituent le levier architectural ; « utiliser visionOS comme une surface de productivité plate » relève d’un tout autre cadre de pensée et ne prolonge pas la série. Un article sur les ornements, les espaces immersifs ou le suivi des mains consoliderait la position ; un article sur « faire tourner votre app iPad sur visionOS », non.

Swift côté serveur. Vapor, Hummingbird, Swift côté serveur dans un conteneur Linux. Réel, en croissance, techniquement intéressant. Hors de la série. La position serveur de la série, c’est « iCloud Drive, plus un fichier JSON, plus un serveur MCP » : un engagement côté serveur délibérément minimal, parce que l’engagement plus large (un service backend en Swift) ouvre une autre conversation architecturale, sans intersection avec la frontière Apple agentique. Le jour où un backend Swift deviendra porteur dans une architecture iOS-avec-agents, l’article gagnera sa place. Aujourd’hui, non.

Interfaces Mac exclusivement AppKit. Les apps Mac continuent d’être livrées avec un gros travail AppKit, et l’article de la série sur la livraison multiplateforme traite de SwiftUI sur Mac, mais les sujets spécifiques à AppKit (personnalisation de NSToolbar, subtilités de la chaîne NSResponder, pièges du pontage AppKit-SwiftUI) se situent juste en dehors de la voix de la série. Ils renforceraient davantage la position d’une autre série, consacrée au développement Mac, que celle-ci.

Les articles comparatifs au-delà de ceux qui existent déjà. App Intents contre MCP mérite sa place parce que la comparaison met au jour une règle d’architecture. Une comparaison entre Cursor, Zed et JetBrains pour le développement iOS attirerait du trafic mais ne révélerait rien de plus que « les IDE fonctionnent différemment ». Le critère pour ajouter un comparatif : la comparaison produit-elle en elle-même une idée digne d’un essai de frontière, ou un simple benchmark ?

Tout ce qui m’obligerait à feindre l’autorité. Un article sur la quantification Core ML au niveau de profondeur technique qui impressionnerait un membre de l’équipe Core ML. Un article sur les shaders Metal en visionOS à un niveau qui impressionnerait un ingénieur graphique. L’autorité de la série se situe à l’intersection entre architecture Apple et agents ; en sortir produit des articles assez justes pour ne pas être faux, mais trop superficiels pour consolider quoi que ce soit. Le geste honnête consiste à citer la voix plus experte (le blog d’un chercheur Core ML, le compte rendu d’un ingénieur graphique) plutôt que d’en jouer le rôle.

Le refus comme produit

La liste des refus n’est pas un aveu de limites. C’est un acte de positionnement. La campagne publicitaire du Mac en 1984 est restée célèbre pour être précisément tout sauf une campagne IBM. La gamme d’Apple à l’époque de la grille 2×2 de Steve Jobs en 1998 (grand public/pro × bureau/portable, quatre cases pour toute la gamme Mac) est restée célèbre pour ce qui a été supprimé, pas pour ce qui a survécu. Choisir de refuser une catégorie est un signal produit plus fort que choisir d’y livrer quelque chose.

En écriture, le refus fait le même travail. La voix de la série (directe, tranchée, adossée aux preuves, avec ses encadrés finaux d’honnêteté brutale) existe parce que le cadrage « voici mon installation » a été coupé, la télémétrie privée a été coupée, l’échafaudage éditorial a été coupé, les tutoriels sur les LLM cloud ont été coupés. Chaque coupe est l’espace négatif qui définit l’espace positif.

Ce motif fait écho à Le dépôt n’a pas voix au chapitre sur sa propre fiabilité : la valeur de la boîte de dialogue de confiance vient de ce qu’elle refuse d’interpréter avant que l’utilisateur ait donné son accord. Une barrière de confiance qui lit les octets de l’espace de travail n’est pas une barrière. Une série qui dit oui à tout article dans le sujet n’est pas une série. C’est le refus à la frontière qui donne du sens à l’artefact.

Corollaire : un auteur sans liste de refus, ce n’est pas un problème en soi, mais il produit un flux, pas une position. Les deux sont de vrais artefacts. Un seul accumule de l’autorité avec le temps.

Ce que cela implique pour qui écrit à la frontière de l’écosystème Apple

Trois enseignements.

  1. Nommez d’abord les refus catégoriels. Qu’est-ce qui sort du territoire de la série ? Écrivez la liste. La série gagne son identité dans la réponse ; la réponse gagne en durabilité à être explicite.

  2. Nommez ensuite les refus de forme. Quelles formes de voix et de structure sont proscrites, quel que soit le sujet ? Le cadrage « voici mon installation » recyclé, la télémétrie privée, l’échafaudage éditorial, les avis tranchés sans fondement. Chaque forme qui survit dans le corpus dilue la voix.

  3. Repérez les refus intéressants. Les sujets qui sont dans le territoire et qui sont coupés quand même. Ce sont les décisions de goût porteuses. D’autres auteurs les publieraient ; vous, non. La raison pour laquelle vous ne le faites pas, c’est la position de la série.

La série Apple Ecosystem au complet : les App Intents typés pour la surface Apple Intelligence ; les serveurs MCP pour la surface agent ; la question du routage entre les deux ; Foundation Models pour les fonctionnalités LLM embarquées dans l’app ; la distinction entre LLM d’exécution et LLM d’outillage ; la synthèse des trois surfaces ; le motif de la source unique de vérité ; Deux serveurs MCP pour l’intégration Xcode ; les hooks pour le développement Apple ; les Live Activities ; le contrat de l’environnement d’exécution watchOS ; les rouages internes de SwiftUI ; le modèle mental spatial de RealityKit ; la discipline de schéma SwiftData ; les motifs Liquid Glass ; la livraison multiplateforme. Le point d’entrée est la série Apple Ecosystem. Pour un contexte plus large sur iOS et les agents IA, consultez le guide de développement d’agents iOS.

FAQ

Que signifie « le refus comme produit » ?

Le refus comme produit signifie que choisir de laisser quelque chose en dehors d’un artefact est une décision de positionnement, pas un manque de contenu. Une série qui refuse certains sujets ou certaines formes structurelles produit une voix plus identifiable qu’une série qui publie tout ce qui entre dans son sujet. On retrouve ce motif dans les produits physiques : la grille produit d’Apple dessinée par Steve Jobs en 1998 est restée célèbre pour ce qu’elle a supprimé, pas pour ce qu’elle a conservé. La même logique s’applique à l’écriture.

Ces refus sont-ils définitifs ?

Certains oui, d’autres non. Les refus catégoriels (tutoriels sur les LLM cloud, technologies de recrutement) tiennent à l’identité de la série et ont peu de chances de changer. Les refus de forme (cadrage « voici mon installation » recyclé, échafaudage éditorial) sont des règles de voix qui ont de vraies dents et valent pour la suite. Les refus intéressants (Swift côté serveur, interfaces exclusivement AppKit) sont réévalués quand l’architecture sous-jacente bouge : le jour où un backend Swift deviendra porteur dans un flux de travail Apple agentique, Swift côté serveur gagnera sa place. Cette liste n’est pas un dogme ; c’est le goût du moment.

Pourquoi publier une liste de refus ?

Publier cette liste sert trois publics. Les lecteurs découvrent le territoire de la série plus vite qu’en piochant au hasard dans les articles. L’auteur, lui, se donne un point de repère pour plus tard : la série a-t-elle dérivé vers un territoire qu’elle disait refuser ? D’autres auteurs voient à quoi ressemble une écriture façonnée par le goût dans ce coin d’internet, ce qui abaisse l’énergie d’activation nécessaire pour en faire autant. Le coût est faible (un article) ; le bénéfice, durable.

Refuser des sujets ne réduit-il pas l’audience ?

Si, délibérément. La série est conçue pour capitaliser auprès d’un lecteur précis (un développeur iOS qui réfléchit aux agents) plutôt que pour maximiser l’audience brute. Des articles hors du territoire de la série attireraient d’autres lecteurs, mais ceux-là ne reviendraient de toute façon pas pour l’article suivant, puisqu’ils étaient venus pour un autre sujet. Le geste qui capitalise, c’est d’écrire vingt fois d’affilée pour le même lecteur, pas d’écrire une fois pour vingt lecteurs différents.

Comment traitez-vous un sujet limite ?

Appliquez le critère de la section Les refus intéressants : le sujet consolide-t-il la position de la série, ou se contente-t-il de la côtoyer ? Un sujet limite qui consolide est écrit. Un sujet limite qui ne consolide pas est coupé, même s’il attirerait du trafic. La décision ne porte pas sur le volume ; elle porte sur la cohérence de la série dans la durée. La consolidation, c’est le critère qui tient.

Références

Les règles de voix de la série (pas de cadrage « voici mon installation » recyclé, pas d’échafaudage éditorial, pas de télémétrie privée comme preuve) sont visibles dans le corpus lui-même. Lisez un article de la série, puis un autre : les formes récurrentes qui n’y apparaissent jamais sont les règles en action. La série publiée est la source de référence.

Articles connexes

De quoi est faite SwiftUI

SwiftUI est un DSL à result builder posé sur un arbre de vues à types valeur. Une fois ce substrat visible, AnyView et V…

21 min de lecture

Le vrai coût de SwiftData, c'est la discipline du schéma

L'API de SwiftData se résume à deux macros. Le coût, c'est ce qui arrive après la mise en production. Les champs optionn…

27 min de lecture

Le public, désormais, ce sont les assistants

Données de première main : les assistants IA demandent mes pages environ 66 fois plus souvent que les humains, surtout e…

19 min de lecture