[
  {
    "id": 1,
    "slug": "android-offline-first",
    "category": "android",
    "fr": {
      "title": "Android offline-first : construire une synchronisation fiable",
      "angle": "sync locale/serveur, files d’attente, conflits et reprise"
    },
    "ar": {
      "title": "بناء تطبيق أندرويد يعمل دون اتصال مع مزامنة موثوقة",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "Android offline-first: building reliable synchronization",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 2,
    "slug": "android-performance-field-app",
    "category": "android",
    "fr": {
      "title": "Accélérer une application Android terrain sur smartphone et tablette",
      "angle": "profilage, listes, mémoire, cartes et entrées clavier"
    },
    "ar": {
      "title": "تسريع تطبيق أندرويد ميداني على الهاتف واللوحي",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "Speeding up a field Android app on phones and tablets",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 3,
    "slug": "android-search-architecture",
    "category": "android",
    "fr": {
      "title": "Concevoir une recherche Android qui affiche vraiment tous les résultats",
      "angle": "index local, normalisation, ranking et filtres"
    },
    "ar": {
      "title": "تصميم بحث أندرويد يعرض كل النتائج فعلياً",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "Designing Android search that actually returns every result",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 4,
    "slug": "android-keyboard-insets",
    "category": "android",
    "fr": {
      "title": "Clavier Android : éviter que l’IME masque les champs et les actions",
      "angle": "WindowInsets, scroll et Compose/View"
    },
    "ar": {
      "title": "لوحة مفاتيح أندرويد: منعها من إخفاء الحقول والأزرار",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "Android keyboard: keeping fields and actions above the IME",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 5,
    "slug": "android-map-large-data",
    "category": "android",
    "fr": {
      "title": "Cartes Android avec beaucoup de points : clusters, viewport et pagination",
      "angle": "chargement par zone visible, clustering et cache"
    },
    "ar": {
      "title": "خرائط أندرويد مع آلاف النقاط: التجميع ونطاق العرض",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "Android maps with large datasets: clustering and viewport loading",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 6,
    "slug": "android-multilingual-rtl",
    "category": "android",
    "fr": {
      "title": "FR, AR, EN sur Android : i18n, RTL et contenu métier",
      "angle": "ressources, sens du layout et contenu partageable"
    },
    "ar": {
      "title": "تطبيق أندرويد FR/AR/EN: الترجمة وRTL والمحتوى المهني",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "FR/AR/EN Android apps: i18n, RTL and business content",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 7,
    "slug": "android-workmanager-sync",
    "category": "android",
    "fr": {
      "title": "WorkManager pour la synchronisation silencieuse sans bloquer l’UI",
      "angle": "contraintes réseau, retry et idempotence"
    },
    "ar": {
      "title": "WorkManager للمزامنة الصامتة دون تعطيل الواجهة",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "WorkManager for silent sync without blocking the UI",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 8,
    "slug": "android-room-migrations",
    "category": "android",
    "fr": {
      "title": "Room : migrations de base sans perdre les données terrain",
      "angle": "versions de schéma, migrations testées et rollback"
    },
    "ar": {
      "title": "Room: ترحيل قاعدة البيانات دون فقد بيانات الميدان",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "Room migrations without losing field data",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 9,
    "slug": "php-mvc-shared-hosting",
    "category": "web",
    "fr": {
      "title": "MVC PHP propre sur hébergement mutualisé sans framework lourd",
      "angle": "front controller, routeur, services et sécurité"
    },
    "ar": {
      "title": "MVC PHP نظيف على استضافة مشتركة بدون إطار ثقيل",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "Clean PHP MVC on shared hosting without a heavy framework",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 10,
    "slug": "php-rest-api-security",
    "category": "security",
    "fr": {
      "title": "Sécuriser une API REST PHP pour une application mobile",
      "angle": "authentification, quotas, validation et journaux"
    },
    "ar": {
      "title": "تأمين REST API بلغة PHP لتطبيق الهاتف",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "Securing a PHP REST API for a mobile app",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 11,
    "slug": "php-mysql-fast-queries",
    "category": "data",
    "fr": {
      "title": "MySQL : rendre les recherches rapides avec les bons index",
      "angle": "EXPLAIN, index composites et pagination"
    },
    "ar": {
      "title": "MySQL: تسريع البحث باستخدام الفهارس المناسبة",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "MySQL: making searches fast with the right indexes",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 12,
    "slug": "php-session-security",
    "category": "security",
    "fr": {
      "title": "Sessions PHP : cookies, rotation et protections essentielles",
      "angle": "session fixation, CSRF et cookies sécurisés"
    },
    "ar": {
      "title": "جلسات PHP: الكوكيز والتدوير والحماية الأساسية",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "PHP sessions: cookies, rotation and essential protections",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 13,
    "slug": "php-cache-file",
    "category": "web",
    "fr": {
      "title": "Cache fichier PHP : gagner en vitesse sans Redis",
      "angle": "TTL, invalidation et concurrence"
    },
    "ar": {
      "title": "تخزين مؤقت بالملفات في PHP دون Redis",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "PHP file caching: speed without Redis",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 14,
    "slug": "seo-multilingual-dev-blog",
    "category": "web",
    "fr": {
      "title": "SEO multilingue FR/AR/EN pour un blog de développeur",
      "angle": "URLs, canonical, hreflang et contenu localisé"
    },
    "ar": {
      "title": "SEO متعدد اللغات لمدونة مطور FR/AR/EN",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "Multilingual SEO for a developer blog in FR/AR/EN",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 15,
    "slug": "schema-software-portfolio",
    "category": "web",
    "fr": {
      "title": "Données structurées pour présenter des applications et leurs versions",
      "angle": "SoftwareApplication, BlogPosting et JSON-LD"
    },
    "ar": {
      "title": "البيانات المنظمة لعرض التطبيقات وإصداراتها",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "Structured data for software projects and versions",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 16,
    "slug": "rss-importer-editorial",
    "category": "web",
    "fr": {
      "title": "Importer des flux RSS sans transformer son blog en copie",
      "angle": "déduplication, brouillons, attribution et valeur ajoutée"
    },
    "ar": {
      "title": "استيراد RSS دون تحويل المدونة إلى نسخة مكررة",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "Importing RSS without turning your blog into a copy",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 17,
    "slug": "seo-content-clusters",
    "category": "web",
    "fr": {
      "title": "Construire des clusters de contenu techniques qui restent utiles",
      "angle": "pillar pages, maillage interne et intention"
    },
    "ar": {
      "title": "بناء مجموعات محتوى تقنية تبقى مفيدة",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "Building technical content clusters that remain useful",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 18,
    "slug": "core-web-vitals-practical",
    "category": "web",
    "fr": {
      "title": "Core Web Vitals : optimisations pratiques sans sur-ingénierie",
      "angle": "images, JS, polices et rendu"
    },
    "ar": {
      "title": "Core Web Vitals: تحسينات عملية دون تعقيد",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "Core Web Vitals: practical optimization without overengineering",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 19,
    "slug": "javascript-progressive-enhancement",
    "category": "web",
    "fr": {
      "title": "JavaScript progressif : une interface moderne qui reste robuste",
      "angle": "HTML d’abord, comportements ensuite"
    },
    "ar": {
      "title": "JavaScript تدريجي: واجهة حديثة وقوية",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "Progressive JavaScript: modern UI that stays robust",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 20,
    "slug": "css-responsive-no-wasted-space",
    "category": "web",
    "fr": {
      "title": "Responsive CSS : supprimer l’espace perdu du mobile à la tablette",
      "angle": "fluid type, grid, container queries et densité"
    },
    "ar": {
      "title": "CSS متجاوب: إزالة المساحات الضائعة من الهاتف للوح",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "Responsive CSS: removing wasted space from phone to tablet",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 21,
    "slug": "rest-idempotency",
    "category": "architecture",
    "fr": {
      "title": "Idempotence REST : éviter doublons et créations multiples",
      "angle": "clés d’idempotence, retry et journal"
    },
    "ar": {
      "title": "Idempotence في REST لمنع التكرار",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "REST idempotency: preventing duplicate writes",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 22,
    "slug": "sync-conflict-resolution",
    "category": "architecture",
    "fr": {
      "title": "Résoudre les conflits de synchronisation sans perdre le travail utilisateur",
      "angle": "versions, horodatage, merge métier"
    },
    "ar": {
      "title": "حل تعارضات المزامنة دون فقد عمل المستخدم",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "Resolving sync conflicts without losing user work",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 23,
    "slug": "audit-log-design",
    "category": "architecture",
    "fr": {
      "title": "Concevoir un journal d’audit exploitable par un manager",
      "angle": "qui, quoi, quand, avant/après et recherche"
    },
    "ar": {
      "title": "تصميم سجل تدقيق مفيد للمدير",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "Designing an audit log a manager can actually use",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 24,
    "slug": "rbac-multi-team",
    "category": "security",
    "fr": {
      "title": "RBAC multi-équipe : rôles, permissions et périmètres de données",
      "angle": "roles, permissions, scopes et héritage"
    },
    "ar": {
      "title": "RBAC لفرق متعددة: الأدوار والصلاحيات ونطاق البيانات",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "Multi-team RBAC: roles, permissions and data scopes",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 25,
    "slug": "secure-file-upload",
    "category": "security",
    "fr": {
      "title": "Upload de fichiers : validation, stockage et sécurité côté serveur",
      "angle": "MIME, taille, noms, accès et antivirus"
    },
    "ar": {
      "title": "رفع الملفات بأمان: التحقق والتخزين",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "Secure file uploads: validation, storage and server-side safety",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 26,
    "slug": "api-pagination",
    "category": "architecture",
    "fr": {
      "title": "Pagination d’API : offset, cursor et gros volumes",
      "angle": "latence, tri stable et cohérence"
    },
    "ar": {
      "title": "ترقيم صفحات API: offset وcursor والبيانات الكبيرة",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "API pagination: offset, cursors and large datasets",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 27,
    "slug": "database-zero-loss-sync",
    "category": "data",
    "fr": {
      "title": "Base locale + serveur : viser zéro perte de données",
      "angle": "outbox, ack, retry, tombstones"
    },
    "ar": {
      "title": "قاعدة محلية وخادم: تصميم لتقليل فقد البيانات",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "Local + server databases: designing for near-zero data loss",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 28,
    "slug": "sql-explain-field-guide",
    "category": "data",
    "fr": {
      "title": "Lire EXPLAIN MySQL comme un outil de diagnostic",
      "angle": "type, key, rows et filesort"
    },
    "ar": {
      "title": "قراءة EXPLAIN في MySQL كأداة تشخيص",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "Reading MySQL EXPLAIN as a diagnostic tool",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 29,
    "slug": "excel-vba-robot-architecture",
    "category": "automation",
    "fr": {
      "title": "Robot Excel/VBA : passer du macro-script à une architecture fiable",
      "angle": "queues, workers, logs, locks et reprise"
    },
    "ar": {
      "title": "روبوت Excel/VBA: من ماكرو بسيط إلى بنية موثوقة",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "Excel/VBA automation: from macro script to reliable architecture",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 30,
    "slug": "outlook-vba-safe-processing",
    "category": "automation",
    "fr": {
      "title": "Automatiser Outlook sans retraiter deux fois le même email",
      "angle": "identifiants, verrouillage et état"
    },
    "ar": {
      "title": "أتمتة Outlook دون معالجة نفس البريد مرتين",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "Automating Outlook without processing the same email twice",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 31,
    "slug": "vba-error-observability",
    "category": "automation",
    "fr": {
      "title": "VBA : journaliser les erreurs sans polluer l’utilisateur",
      "angle": "logs structurés, niveaux et support"
    },
    "ar": {
      "title": "VBA: تسجيل الأخطاء دون إزعاج المستخدم",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "VBA error logging without bothering the user",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 32,
    "slug": "automation-job-queue",
    "category": "automation",
    "fr": {
      "title": "Créer une file de jobs simple pour des robots bureautiques",
      "angle": "états, workers et reprise après incident"
    },
    "ar": {
      "title": "إنشاء طابور مهام بسيط لروبوتات المكتب",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "Building a simple job queue for desktop automation",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 33,
    "slug": "barcode-scanning-android",
    "category": "android",
    "fr": {
      "title": "Scanner code-barres Android : pipeline fiable après la lecture",
      "angle": "normalisation, validation et feedback"
    },
    "ar": {
      "title": "مسح الباركود في أندرويد: معالجة موثوقة بعد القراءة",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "Android barcode scanning: a reliable post-scan pipeline",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 34,
    "slug": "gps-reverse-geocoding",
    "category": "android",
    "fr": {
      "title": "GPS et reverse geocoding : remplir ville et quartier intelligemment",
      "angle": "permissions, cache et fallback"
    },
    "ar": {
      "title": "GPS والترميز الجغرافي العكسي لملء المدينة والحي",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "GPS and reverse geocoding for smart city/neighborhood filling",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 35,
    "slug": "notifications-routing",
    "category": "architecture",
    "fr": {
      "title": "Notifications métier : informer la bonne personne au bon moment",
      "angle": "événements, destinataires, priorités et accusés"
    },
    "ar": {
      "title": "الإشعارات المهنية: الشخص الصحيح في الوقت الصحيح",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "Business notifications: the right person at the right time",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 36,
    "slug": "dashboard-decision-design",
    "category": "architecture",
    "fr": {
      "title": "Dashboard manager : concevoir pour décider, pas pour décorer",
      "angle": "KPI, exceptions, drill-down et carte"
    },
    "ar": {
      "title": "لوحة المدير: صمم لاتخاذ القرار لا للزينة",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "Manager dashboards: design for decisions, not decoration",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 37,
    "slug": "http-https-config",
    "category": "web",
    "fr": {
      "title": "HTTP/HTTPS : configuration propre sans URLs codées en dur",
      "angle": "base URL, proxy headers et redirections"
    },
    "ar": {
      "title": "HTTP/HTTPS: إعداد صحيح دون روابط ثابتة",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "HTTP/HTTPS configuration without hard-coded URLs",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 38,
    "slug": "web-security-headers",
    "category": "security",
    "fr": {
      "title": "Headers de sécurité web à mettre en production",
      "angle": "CSP, frame, referrer, MIME et permissions"
    },
    "ar": {
      "title": "ترويسات أمان الويب للإنتاج",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "Web security headers worth shipping",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 39,
    "slug": "backup-restore-drill",
    "category": "security",
    "fr": {
      "title": "Sauvegarde : la vraie fiabilité se teste à la restauration",
      "angle": "RPO, RTO, rotation et vérification"
    },
    "ar": {
      "title": "النسخ الاحتياطي: الموثوقية تظهر عند الاستعادة",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "Backups: reliability is proven by restore tests",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 40,
    "slug": "versioning-changelog",
    "category": "architecture",
    "fr": {
      "title": "Versionner une application pour que chaque livraison soit traçable",
      "angle": "SemVer, changelog, migration et SHA-256"
    },
    "ar": {
      "title": "إدارة إصدارات التطبيق لتكون كل نسخة قابلة للتتبع",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "Versioning an application so every release is traceable",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 41,
    "slug": "api-contract-testing",
    "category": "architecture",
    "fr": {
      "title": "Tester un contrat API avant de brancher l’application mobile",
      "angle": "schemas, exemples, erreurs et compatibilité"
    },
    "ar": {
      "title": "اختبار عقد API قبل ربط تطبيق الهاتف",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "Testing an API contract before wiring the mobile app",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 42,
    "slug": "tech-writing-human",
    "category": "tech",
    "fr": {
      "title": "Écrire un tutoriel technique utile : problème, preuve, décision",
      "angle": "retour terrain, exemples, limites et vérification"
    },
    "ar": {
      "title": "كتابة درس تقني مفيد: مشكلة ودليل وقرار",
      "angle": "دليل عملي من واقع التطوير"
    },
    "en": {
      "title": "Writing useful technical tutorials: problem, evidence, decision",
      "angle": "practical engineering notes"
    }
  },
  {
    "id": 43,
    "slug": "android-offline-first-deep-dive-2",
    "category": "android",
    "fr": {
      "title": "Deep dive — Android offline-first : construire une synchronisation fiable",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — بناء تطبيق أندرويد يعمل دون اتصال مع مزامنة موثوقة",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Android offline-first: building reliable synchronization",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 44,
    "slug": "android-performance-field-app-deep-dive-2",
    "category": "android",
    "fr": {
      "title": "Deep dive — Accélérer une application Android terrain sur smartphone et tablette",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — تسريع تطبيق أندرويد ميداني على الهاتف واللوحي",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Speeding up a field Android app on phones and tablets",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 45,
    "slug": "android-search-architecture-deep-dive-2",
    "category": "android",
    "fr": {
      "title": "Deep dive — Concevoir une recherche Android qui affiche vraiment tous les résultats",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — تصميم بحث أندرويد يعرض كل النتائج فعلياً",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Designing Android search that actually returns every result",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 46,
    "slug": "android-keyboard-insets-deep-dive-2",
    "category": "android",
    "fr": {
      "title": "Deep dive — Clavier Android : éviter que l’IME masque les champs et les actions",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — لوحة مفاتيح أندرويد: منعها من إخفاء الحقول والأزرار",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Android keyboard: keeping fields and actions above the IME",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 47,
    "slug": "android-map-large-data-deep-dive-2",
    "category": "android",
    "fr": {
      "title": "Deep dive — Cartes Android avec beaucoup de points : clusters, viewport et pagination",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — خرائط أندرويد مع آلاف النقاط: التجميع ونطاق العرض",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Android maps with large datasets: clustering and viewport loading",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 48,
    "slug": "android-multilingual-rtl-deep-dive-2",
    "category": "android",
    "fr": {
      "title": "Deep dive — FR, AR, EN sur Android : i18n, RTL et contenu métier",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — تطبيق أندرويد FR/AR/EN: الترجمة وRTL والمحتوى المهني",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — FR/AR/EN Android apps: i18n, RTL and business content",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 49,
    "slug": "android-workmanager-sync-deep-dive-2",
    "category": "android",
    "fr": {
      "title": "Deep dive — WorkManager pour la synchronisation silencieuse sans bloquer l’UI",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — WorkManager للمزامنة الصامتة دون تعطيل الواجهة",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — WorkManager for silent sync without blocking the UI",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 50,
    "slug": "android-room-migrations-deep-dive-2",
    "category": "android",
    "fr": {
      "title": "Deep dive — Room : migrations de base sans perdre les données terrain",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — Room: ترحيل قاعدة البيانات دون فقد بيانات الميدان",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Room migrations without losing field data",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 51,
    "slug": "php-mvc-shared-hosting-deep-dive-2",
    "category": "web",
    "fr": {
      "title": "Deep dive — MVC PHP propre sur hébergement mutualisé sans framework lourd",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — MVC PHP نظيف على استضافة مشتركة بدون إطار ثقيل",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Clean PHP MVC on shared hosting without a heavy framework",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 52,
    "slug": "php-rest-api-security-deep-dive-2",
    "category": "security",
    "fr": {
      "title": "Deep dive — Sécuriser une API REST PHP pour une application mobile",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — تأمين REST API بلغة PHP لتطبيق الهاتف",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Securing a PHP REST API for a mobile app",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 53,
    "slug": "php-mysql-fast-queries-deep-dive-2",
    "category": "data",
    "fr": {
      "title": "Deep dive — MySQL : rendre les recherches rapides avec les bons index",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — MySQL: تسريع البحث باستخدام الفهارس المناسبة",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — MySQL: making searches fast with the right indexes",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 54,
    "slug": "php-session-security-deep-dive-2",
    "category": "security",
    "fr": {
      "title": "Deep dive — Sessions PHP : cookies, rotation et protections essentielles",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — جلسات PHP: الكوكيز والتدوير والحماية الأساسية",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — PHP sessions: cookies, rotation and essential protections",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 55,
    "slug": "php-cache-file-deep-dive-2",
    "category": "web",
    "fr": {
      "title": "Deep dive — Cache fichier PHP : gagner en vitesse sans Redis",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — تخزين مؤقت بالملفات في PHP دون Redis",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — PHP file caching: speed without Redis",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 56,
    "slug": "seo-multilingual-dev-blog-deep-dive-2",
    "category": "web",
    "fr": {
      "title": "Deep dive — SEO multilingue FR/AR/EN pour un blog de développeur",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — SEO متعدد اللغات لمدونة مطور FR/AR/EN",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Multilingual SEO for a developer blog in FR/AR/EN",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 57,
    "slug": "schema-software-portfolio-deep-dive-2",
    "category": "web",
    "fr": {
      "title": "Deep dive — Données structurées pour présenter des applications et leurs versions",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — البيانات المنظمة لعرض التطبيقات وإصداراتها",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Structured data for software projects and versions",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 58,
    "slug": "rss-importer-editorial-deep-dive-2",
    "category": "web",
    "fr": {
      "title": "Deep dive — Importer des flux RSS sans transformer son blog en copie",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — استيراد RSS دون تحويل المدونة إلى نسخة مكررة",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Importing RSS without turning your blog into a copy",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 59,
    "slug": "seo-content-clusters-deep-dive-2",
    "category": "web",
    "fr": {
      "title": "Deep dive — Construire des clusters de contenu techniques qui restent utiles",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — بناء مجموعات محتوى تقنية تبقى مفيدة",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Building technical content clusters that remain useful",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 60,
    "slug": "core-web-vitals-practical-deep-dive-2",
    "category": "web",
    "fr": {
      "title": "Deep dive — Core Web Vitals : optimisations pratiques sans sur-ingénierie",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — Core Web Vitals: تحسينات عملية دون تعقيد",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Core Web Vitals: practical optimization without overengineering",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 61,
    "slug": "javascript-progressive-enhancement-deep-dive-2",
    "category": "web",
    "fr": {
      "title": "Deep dive — JavaScript progressif : une interface moderne qui reste robuste",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — JavaScript تدريجي: واجهة حديثة وقوية",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Progressive JavaScript: modern UI that stays robust",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 62,
    "slug": "css-responsive-no-wasted-space-deep-dive-2",
    "category": "web",
    "fr": {
      "title": "Deep dive — Responsive CSS : supprimer l’espace perdu du mobile à la tablette",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — CSS متجاوب: إزالة المساحات الضائعة من الهاتف للوح",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Responsive CSS: removing wasted space from phone to tablet",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 63,
    "slug": "rest-idempotency-deep-dive-2",
    "category": "architecture",
    "fr": {
      "title": "Deep dive — Idempotence REST : éviter doublons et créations multiples",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — Idempotence في REST لمنع التكرار",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — REST idempotency: preventing duplicate writes",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 64,
    "slug": "sync-conflict-resolution-deep-dive-2",
    "category": "architecture",
    "fr": {
      "title": "Deep dive — Résoudre les conflits de synchronisation sans perdre le travail utilisateur",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — حل تعارضات المزامنة دون فقد عمل المستخدم",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Resolving sync conflicts without losing user work",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 65,
    "slug": "audit-log-design-deep-dive-2",
    "category": "architecture",
    "fr": {
      "title": "Deep dive — Concevoir un journal d’audit exploitable par un manager",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — تصميم سجل تدقيق مفيد للمدير",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Designing an audit log a manager can actually use",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 66,
    "slug": "rbac-multi-team-deep-dive-2",
    "category": "security",
    "fr": {
      "title": "Deep dive — RBAC multi-équipe : rôles, permissions et périmètres de données",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — RBAC لفرق متعددة: الأدوار والصلاحيات ونطاق البيانات",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Multi-team RBAC: roles, permissions and data scopes",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 67,
    "slug": "secure-file-upload-deep-dive-2",
    "category": "security",
    "fr": {
      "title": "Deep dive — Upload de fichiers : validation, stockage et sécurité côté serveur",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — رفع الملفات بأمان: التحقق والتخزين",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Secure file uploads: validation, storage and server-side safety",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 68,
    "slug": "api-pagination-deep-dive-2",
    "category": "architecture",
    "fr": {
      "title": "Deep dive — Pagination d’API : offset, cursor et gros volumes",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — ترقيم صفحات API: offset وcursor والبيانات الكبيرة",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — API pagination: offset, cursors and large datasets",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 69,
    "slug": "database-zero-loss-sync-deep-dive-2",
    "category": "data",
    "fr": {
      "title": "Deep dive — Base locale + serveur : viser zéro perte de données",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — قاعدة محلية وخادم: تصميم لتقليل فقد البيانات",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Local + server databases: designing for near-zero data loss",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 70,
    "slug": "sql-explain-field-guide-deep-dive-2",
    "category": "data",
    "fr": {
      "title": "Deep dive — Lire EXPLAIN MySQL comme un outil de diagnostic",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — قراءة EXPLAIN في MySQL كأداة تشخيص",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Reading MySQL EXPLAIN as a diagnostic tool",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 71,
    "slug": "excel-vba-robot-architecture-deep-dive-2",
    "category": "automation",
    "fr": {
      "title": "Deep dive — Robot Excel/VBA : passer du macro-script à une architecture fiable",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — روبوت Excel/VBA: من ماكرو بسيط إلى بنية موثوقة",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Excel/VBA automation: from macro script to reliable architecture",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 72,
    "slug": "outlook-vba-safe-processing-deep-dive-2",
    "category": "automation",
    "fr": {
      "title": "Deep dive — Automatiser Outlook sans retraiter deux fois le même email",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — أتمتة Outlook دون معالجة نفس البريد مرتين",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Automating Outlook without processing the same email twice",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 73,
    "slug": "vba-error-observability-deep-dive-2",
    "category": "automation",
    "fr": {
      "title": "Deep dive — VBA : journaliser les erreurs sans polluer l’utilisateur",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — VBA: تسجيل الأخطاء دون إزعاج المستخدم",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — VBA error logging without bothering the user",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 74,
    "slug": "automation-job-queue-deep-dive-2",
    "category": "automation",
    "fr": {
      "title": "Deep dive — Créer une file de jobs simple pour des robots bureautiques",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — إنشاء طابور مهام بسيط لروبوتات المكتب",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Building a simple job queue for desktop automation",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 75,
    "slug": "barcode-scanning-android-deep-dive-2",
    "category": "android",
    "fr": {
      "title": "Deep dive — Scanner code-barres Android : pipeline fiable après la lecture",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — مسح الباركود في أندرويد: معالجة موثوقة بعد القراءة",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Android barcode scanning: a reliable post-scan pipeline",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 76,
    "slug": "gps-reverse-geocoding-deep-dive-2",
    "category": "android",
    "fr": {
      "title": "Deep dive — GPS et reverse geocoding : remplir ville et quartier intelligemment",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — GPS والترميز الجغرافي العكسي لملء المدينة والحي",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — GPS and reverse geocoding for smart city/neighborhood filling",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 77,
    "slug": "notifications-routing-deep-dive-2",
    "category": "architecture",
    "fr": {
      "title": "Deep dive — Notifications métier : informer la bonne personne au bon moment",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — الإشعارات المهنية: الشخص الصحيح في الوقت الصحيح",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Business notifications: the right person at the right time",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 78,
    "slug": "dashboard-decision-design-deep-dive-2",
    "category": "architecture",
    "fr": {
      "title": "Deep dive — Dashboard manager : concevoir pour décider, pas pour décorer",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — لوحة المدير: صمم لاتخاذ القرار لا للزينة",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Manager dashboards: design for decisions, not decoration",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 79,
    "slug": "http-https-config-deep-dive-2",
    "category": "web",
    "fr": {
      "title": "Deep dive — HTTP/HTTPS : configuration propre sans URLs codées en dur",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — HTTP/HTTPS: إعداد صحيح دون روابط ثابتة",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — HTTP/HTTPS configuration without hard-coded URLs",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 80,
    "slug": "web-security-headers-deep-dive-2",
    "category": "security",
    "fr": {
      "title": "Deep dive — Headers de sécurité web à mettre en production",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — ترويسات أمان الويب للإنتاج",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Web security headers worth shipping",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 81,
    "slug": "backup-restore-drill-deep-dive-2",
    "category": "security",
    "fr": {
      "title": "Deep dive — Sauvegarde : la vraie fiabilité se teste à la restauration",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — النسخ الاحتياطي: الموثوقية تظهر عند الاستعادة",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Backups: reliability is proven by restore tests",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 82,
    "slug": "versioning-changelog-deep-dive-2",
    "category": "architecture",
    "fr": {
      "title": "Deep dive — Versionner une application pour que chaque livraison soit traçable",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — إدارة إصدارات التطبيق لتكون كل نسخة قابلة للتتبع",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Versioning an application so every release is traceable",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 83,
    "slug": "api-contract-testing-deep-dive-2",
    "category": "architecture",
    "fr": {
      "title": "Deep dive — Tester un contrat API avant de brancher l’application mobile",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — اختبار عقد API قبل ربط تطبيق الهاتف",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Testing an API contract before wiring the mobile app",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 84,
    "slug": "tech-writing-human-deep-dive-2",
    "category": "tech",
    "fr": {
      "title": "Deep dive — Écrire un tutoriel technique utile : problème, preuve, décision",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — كتابة درس تقني مفيد: مشكلة ودليل وقرار",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Writing useful technical tutorials: problem, evidence, decision",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 85,
    "slug": "android-offline-first-deep-dive-3",
    "category": "android",
    "fr": {
      "title": "Deep dive — Android offline-first : construire une synchronisation fiable",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — بناء تطبيق أندرويد يعمل دون اتصال مع مزامنة موثوقة",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Android offline-first: building reliable synchronization",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 86,
    "slug": "android-performance-field-app-deep-dive-3",
    "category": "android",
    "fr": {
      "title": "Deep dive — Accélérer une application Android terrain sur smartphone et tablette",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — تسريع تطبيق أندرويد ميداني على الهاتف واللوحي",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Speeding up a field Android app on phones and tablets",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 87,
    "slug": "android-search-architecture-deep-dive-3",
    "category": "android",
    "fr": {
      "title": "Deep dive — Concevoir une recherche Android qui affiche vraiment tous les résultats",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — تصميم بحث أندرويد يعرض كل النتائج فعلياً",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Designing Android search that actually returns every result",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 88,
    "slug": "android-keyboard-insets-deep-dive-3",
    "category": "android",
    "fr": {
      "title": "Deep dive — Clavier Android : éviter que l’IME masque les champs et les actions",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — لوحة مفاتيح أندرويد: منعها من إخفاء الحقول والأزرار",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Android keyboard: keeping fields and actions above the IME",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 89,
    "slug": "android-map-large-data-deep-dive-3",
    "category": "android",
    "fr": {
      "title": "Deep dive — Cartes Android avec beaucoup de points : clusters, viewport et pagination",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — خرائط أندرويد مع آلاف النقاط: التجميع ونطاق العرض",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Android maps with large datasets: clustering and viewport loading",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 90,
    "slug": "android-multilingual-rtl-deep-dive-3",
    "category": "android",
    "fr": {
      "title": "Deep dive — FR, AR, EN sur Android : i18n, RTL et contenu métier",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — تطبيق أندرويد FR/AR/EN: الترجمة وRTL والمحتوى المهني",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — FR/AR/EN Android apps: i18n, RTL and business content",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 91,
    "slug": "android-workmanager-sync-deep-dive-3",
    "category": "android",
    "fr": {
      "title": "Deep dive — WorkManager pour la synchronisation silencieuse sans bloquer l’UI",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — WorkManager للمزامنة الصامتة دون تعطيل الواجهة",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — WorkManager for silent sync without blocking the UI",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 92,
    "slug": "android-room-migrations-deep-dive-3",
    "category": "android",
    "fr": {
      "title": "Deep dive — Room : migrations de base sans perdre les données terrain",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — Room: ترحيل قاعدة البيانات دون فقد بيانات الميدان",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Room migrations without losing field data",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 93,
    "slug": "php-mvc-shared-hosting-deep-dive-3",
    "category": "web",
    "fr": {
      "title": "Deep dive — MVC PHP propre sur hébergement mutualisé sans framework lourd",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — MVC PHP نظيف على استضافة مشتركة بدون إطار ثقيل",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Clean PHP MVC on shared hosting without a heavy framework",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 94,
    "slug": "php-rest-api-security-deep-dive-3",
    "category": "security",
    "fr": {
      "title": "Deep dive — Sécuriser une API REST PHP pour une application mobile",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — تأمين REST API بلغة PHP لتطبيق الهاتف",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Securing a PHP REST API for a mobile app",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 95,
    "slug": "php-mysql-fast-queries-deep-dive-3",
    "category": "data",
    "fr": {
      "title": "Deep dive — MySQL : rendre les recherches rapides avec les bons index",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — MySQL: تسريع البحث باستخدام الفهارس المناسبة",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — MySQL: making searches fast with the right indexes",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 96,
    "slug": "php-session-security-deep-dive-3",
    "category": "security",
    "fr": {
      "title": "Deep dive — Sessions PHP : cookies, rotation et protections essentielles",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — جلسات PHP: الكوكيز والتدوير والحماية الأساسية",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — PHP sessions: cookies, rotation and essential protections",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 97,
    "slug": "php-cache-file-deep-dive-3",
    "category": "web",
    "fr": {
      "title": "Deep dive — Cache fichier PHP : gagner en vitesse sans Redis",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — تخزين مؤقت بالملفات في PHP دون Redis",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — PHP file caching: speed without Redis",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 98,
    "slug": "seo-multilingual-dev-blog-deep-dive-3",
    "category": "web",
    "fr": {
      "title": "Deep dive — SEO multilingue FR/AR/EN pour un blog de développeur",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — SEO متعدد اللغات لمدونة مطور FR/AR/EN",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Multilingual SEO for a developer blog in FR/AR/EN",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 99,
    "slug": "schema-software-portfolio-deep-dive-3",
    "category": "web",
    "fr": {
      "title": "Deep dive — Données structurées pour présenter des applications et leurs versions",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — البيانات المنظمة لعرض التطبيقات وإصداراتها",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Structured data for software projects and versions",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 100,
    "slug": "rss-importer-editorial-deep-dive-3",
    "category": "web",
    "fr": {
      "title": "Deep dive — Importer des flux RSS sans transformer son blog en copie",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — استيراد RSS دون تحويل المدونة إلى نسخة مكررة",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Importing RSS without turning your blog into a copy",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 101,
    "slug": "seo-content-clusters-deep-dive-3",
    "category": "web",
    "fr": {
      "title": "Deep dive — Construire des clusters de contenu techniques qui restent utiles",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — بناء مجموعات محتوى تقنية تبقى مفيدة",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Building technical content clusters that remain useful",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 102,
    "slug": "core-web-vitals-practical-deep-dive-3",
    "category": "web",
    "fr": {
      "title": "Deep dive — Core Web Vitals : optimisations pratiques sans sur-ingénierie",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — Core Web Vitals: تحسينات عملية دون تعقيد",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Core Web Vitals: practical optimization without overengineering",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 103,
    "slug": "javascript-progressive-enhancement-deep-dive-3",
    "category": "web",
    "fr": {
      "title": "Deep dive — JavaScript progressif : une interface moderne qui reste robuste",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — JavaScript تدريجي: واجهة حديثة وقوية",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Progressive JavaScript: modern UI that stays robust",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 104,
    "slug": "css-responsive-no-wasted-space-deep-dive-3",
    "category": "web",
    "fr": {
      "title": "Deep dive — Responsive CSS : supprimer l’espace perdu du mobile à la tablette",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — CSS متجاوب: إزالة المساحات الضائعة من الهاتف للوح",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Responsive CSS: removing wasted space from phone to tablet",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 105,
    "slug": "rest-idempotency-deep-dive-3",
    "category": "architecture",
    "fr": {
      "title": "Deep dive — Idempotence REST : éviter doublons et créations multiples",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — Idempotence في REST لمنع التكرار",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — REST idempotency: preventing duplicate writes",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 106,
    "slug": "sync-conflict-resolution-deep-dive-3",
    "category": "architecture",
    "fr": {
      "title": "Deep dive — Résoudre les conflits de synchronisation sans perdre le travail utilisateur",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — حل تعارضات المزامنة دون فقد عمل المستخدم",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Resolving sync conflicts without losing user work",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 107,
    "slug": "audit-log-design-deep-dive-3",
    "category": "architecture",
    "fr": {
      "title": "Deep dive — Concevoir un journal d’audit exploitable par un manager",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — تصميم سجل تدقيق مفيد للمدير",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Designing an audit log a manager can actually use",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 108,
    "slug": "rbac-multi-team-deep-dive-3",
    "category": "security",
    "fr": {
      "title": "Deep dive — RBAC multi-équipe : rôles, permissions et périmètres de données",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — RBAC لفرق متعددة: الأدوار والصلاحيات ونطاق البيانات",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Multi-team RBAC: roles, permissions and data scopes",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 109,
    "slug": "secure-file-upload-deep-dive-3",
    "category": "security",
    "fr": {
      "title": "Deep dive — Upload de fichiers : validation, stockage et sécurité côté serveur",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — رفع الملفات بأمان: التحقق والتخزين",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Secure file uploads: validation, storage and server-side safety",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 110,
    "slug": "api-pagination-deep-dive-3",
    "category": "architecture",
    "fr": {
      "title": "Deep dive — Pagination d’API : offset, cursor et gros volumes",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — ترقيم صفحات API: offset وcursor والبيانات الكبيرة",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — API pagination: offset, cursors and large datasets",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 111,
    "slug": "database-zero-loss-sync-deep-dive-3",
    "category": "data",
    "fr": {
      "title": "Deep dive — Base locale + serveur : viser zéro perte de données",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — قاعدة محلية وخادم: تصميم لتقليل فقد البيانات",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Local + server databases: designing for near-zero data loss",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 112,
    "slug": "sql-explain-field-guide-deep-dive-3",
    "category": "data",
    "fr": {
      "title": "Deep dive — Lire EXPLAIN MySQL comme un outil de diagnostic",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — قراءة EXPLAIN في MySQL كأداة تشخيص",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Reading MySQL EXPLAIN as a diagnostic tool",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 113,
    "slug": "excel-vba-robot-architecture-deep-dive-3",
    "category": "automation",
    "fr": {
      "title": "Deep dive — Robot Excel/VBA : passer du macro-script à une architecture fiable",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — روبوت Excel/VBA: من ماكرو بسيط إلى بنية موثوقة",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Excel/VBA automation: from macro script to reliable architecture",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 114,
    "slug": "outlook-vba-safe-processing-deep-dive-3",
    "category": "automation",
    "fr": {
      "title": "Deep dive — Automatiser Outlook sans retraiter deux fois le même email",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — أتمتة Outlook دون معالجة نفس البريد مرتين",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Automating Outlook without processing the same email twice",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 115,
    "slug": "vba-error-observability-deep-dive-3",
    "category": "automation",
    "fr": {
      "title": "Deep dive — VBA : journaliser les erreurs sans polluer l’utilisateur",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — VBA: تسجيل الأخطاء دون إزعاج المستخدم",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — VBA error logging without bothering the user",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 116,
    "slug": "automation-job-queue-deep-dive-3",
    "category": "automation",
    "fr": {
      "title": "Deep dive — Créer une file de jobs simple pour des robots bureautiques",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — إنشاء طابور مهام بسيط لروبوتات المكتب",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Building a simple job queue for desktop automation",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 117,
    "slug": "barcode-scanning-android-deep-dive-3",
    "category": "android",
    "fr": {
      "title": "Deep dive — Scanner code-barres Android : pipeline fiable après la lecture",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — مسح الباركود في أندرويد: معالجة موثوقة بعد القراءة",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Android barcode scanning: a reliable post-scan pipeline",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 118,
    "slug": "gps-reverse-geocoding-deep-dive-3",
    "category": "android",
    "fr": {
      "title": "Deep dive — GPS et reverse geocoding : remplir ville et quartier intelligemment",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — GPS والترميز الجغرافي العكسي لملء المدينة والحي",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — GPS and reverse geocoding for smart city/neighborhood filling",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 119,
    "slug": "notifications-routing-deep-dive-3",
    "category": "architecture",
    "fr": {
      "title": "Deep dive — Notifications métier : informer la bonne personne au bon moment",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — الإشعارات المهنية: الشخص الصحيح في الوقت الصحيح",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Business notifications: the right person at the right time",
      "angle": "tests, measurement and field notes"
    }
  },
  {
    "id": 120,
    "slug": "dashboard-decision-design-deep-dive-3",
    "category": "architecture",
    "fr": {
      "title": "Deep dive — Dashboard manager : concevoir pour décider, pas pour décorer",
      "angle": "tests, mesure et retour d’expérience"
    },
    "ar": {
      "title": "تعمق — لوحة المدير: صمم لاتخاذ القرار لا للزينة",
      "angle": "اختبارات وقياس وتجربة عملية"
    },
    "en": {
      "title": "Deep dive — Manager dashboards: design for decisions, not decoration",
      "angle": "tests, measurement and field notes"
    }
  }
]