{
  "meta": {
    "title": "Oulom Souvannavong — Tech Lead DevOps integration & sovereign cloud — Linux, K8s, AI",
    "description": "Tech Lead — 20+ years in critical Linux production, DevOps integration (Ansible, Terraform, GitLab CI), sovereign cloud (OpenStack/NUBO, Kubernetes/Onyxia) and AI in production (Ollama, n8n, Claude API). French Ministry of Finance, Radio France, BnF, INPI."
  },
  "person": {
    "fullName": "Oulom Souvannavong",
    "initials": "OS",
    "roleShort": "Tech Lead DevOps integration & sovereign cloud — Linux, K8s, AI",
    "shortRole": "Tech Lead DevOps & sovereign cloud",
    "tagline": "I design and harden your critical platforms — from bare metal to Kubernetes clusters, from sovereign cloud to AI agents in production.",
    "heroLead": "More than 20 years running critical Linux production, blending DevOps integration (Ansible, Terraform, GitLab CI), virtualization and sovereign clouds (VMware, OpenStack/NUBO, Kubernetes/Onyxia), and now AI in production. Cross-functional technical reference at the French Ministry of Finance, Radio France, the National Library of France, INPI.",
    "heroTags": [
      "Tech Lead DevOps",
      "Sovereign cloud & K8s",
      "Critical Linux production",
      "AI & agents in prod"
    ],
    "cardLine": "integration · platform · AI in prod"
  },
  "stats": [
    {
      "value": "20+",
      "unit": "yrs",
      "label": "of Linux production experience"
    },
    {
      "value": "500+",
      "unit": "VMs",
      "label": "operated in critical environments"
    },
    {
      "value": "8",
      "unit": "missions",
      "label": "major · public, media, finance, energy"
    },
    {
      "value": "3",
      "unit": "datacenters",
      "label": "migrated with no service downtime"
    }
  ],
  "valueProps": {
    "title": "Why work with me",
    "intro": "A rare profile: the technical depth of a Linux systems expert, combined with the rigor of a DevOps integrator who knows how to ship.",
    "items": [
      {
        "icon": "shield",
        "title": "Critical production with zero downtime",
        "body": "Carefully prepared go-lives, systematic rollback plans, cross-DC DRP. Proven service continuity in deposit and public service organizations."
      },
      {
        "icon": "stack",
        "title": "Full stack: from hardware to cloud",
        "body": "From rack mounting and Fibre Channel SAN to Kubernetes clusters and S3 / Ceph storage. End-to-end visibility few profiles can claim."
      },
      {
        "icon": "wrench",
        "title": "Integration & automation",
        "body": "Ansible, Terraform, Jenkins, GitLab CI, Helm. I turn fragile chains into reliable deliveries — and I document what I do."
      },
      {
        "icon": "people",
        "title": "Cross-functional technical reference",
        "body": "I support project managers, unblock teams on Linux/AD, virtualization and ANSSI security, and pass on my know-how."
      },
      {
        "icon": "sparkle",
        "title": "AI as broadened operational expertise",
        "body": "LLMs integrated into my tooling: Cursor, n8n + Claude agents, local Ollama / Mistral inference, RAG. Concretely: AI agents in production at a small business, legal RAG delivered at a hackathon, and this portfolio as a data-driven build."
      }
    ]
  },
  "aiSection": {
    "eyebrow": "AI · agents · inference",
    "title": "AI in my daily work",
    "intro": "AI is not a fad for me: ever since accessible LLMs appeared, I've made them both a daily working companion and an experimentation field. I use them to code, design and reason — and I build agents that run in production, including local inference to preserve data sovereignty.",
    "groups": [
      {
        "title": "Augmented coding & reasoning (daily)",
        "items": [
          {
            "name": "Cursor",
            "role": "AI-augmented IDE",
            "note": "my main development environment, with built-in agents and automation"
          },
          {
            "name": "Claude",
            "vendor": "Anthropic",
            "role": "Main LLM assistant",
            "note": "design, analysis, documentation, refactoring, code review"
          },
          {
            "name": "Grok",
            "vendor": "xAI",
            "role": "Research & reasoning",
            "note": "tech monitoring, benchmarks, multi-source synthesis"
          },
          {
            "name": "GitHub Copilot",
            "role": "Contextual auto-completion",
            "note": "occasional complement on GitHub-hosted projects"
          }
        ]
      },
      {
        "title": "Agents & inference (in production)",
        "items": [
          {
            "name": "n8n",
            "role": "Agent orchestrator",
            "note": "document sorting and processing pipelines, triggers and API calls"
          },
          {
            "name": "Claude API",
            "vendor": "Anthropic",
            "role": "Recognition & extraction",
            "note": "invoices, accounting documents, structuring of non-standard documents"
          },
          {
            "name": "Ollama",
            "role": "Local LLM inference",
            "note": "running on workstation / server, for data sovereignty"
          },
          {
            "name": "Mistral",
            "role": "Open-weight LLM",
            "note": "models served locally via Ollama, first deployment in a small business"
          }
        ]
      },
      {
        "title": "Hackathon & RAG (experimentation)",
        "items": [
          {
            "name": "Whisper",
            "vendor": "OpenAI",
            "role": "ASR — speech to text",
            "note": "Feb 2025 hackathon: voice input for the legal chatbot"
          },
          {
            "name": "LightRAG",
            "role": "Contextualized RAG",
            "note": "answers grounded in the French Legal Code (sources from git.tricoteuses.fr)"
          },
          {
            "name": "FastAPI",
            "role": "REST API",
            "note": "Python layer linking ASR, RAG engine and rendering"
          }
        ]
      }
    ],
    "projects": [
      "AI-assisted artwork collection management portal (2026)",
      "AI hackathon — voice chatbot on the French Legal Code, Whisper / LightRAG / SPESYS GPU K8s (Feb 2025)",
      "Data science & AI software portal for data scientists (since 2023)",
      "AI agents for the accounting chain of a small business (in production)"
    ]
  },
  "trustOrgs": {
    "title": "They have trusted me",
    "items": [
      "French Ministry of Finance — Bercy HUB & DGFIP",
      "Radio France",
      "Bibliothèque nationale de France",
      "INPI",
      "Naarea",
      "Sungard / Neoxam",
      "Enedis",
      "Fayat IT",
      "UCAD — Arts décoratifs"
    ]
  },
  "profile": {
    "paragraph": "French citizen — based in Paris. Technical reference on critical environments: bridge between production and development, delivery automation, security and large-scale operations (hundreds of VMs, monitoring, storage)."
  },
  "partners": {
    "title": "Partnerships",
    "intro": "In addition to my own assignments, I regularly collaborate with partners to address broader needs (cross-functional teams, GPU infrastructures, AI, etc.).",
    "items": [
      {
        "name": "SpeSYS Services",
        "url": "https://spesys-services.fr/",
        "tagline": "Cabinet of information system experts",
        "description": "Regular collaboration on infrastructure, AI and data topics — particularly through their Kubernetes GPU cluster (used during the February 2025 AI hackathon) and their ReSItal software suite (Data, Forge, Infra, Pilotage)."
      },
      {
        "name": "Cabinet RYC",
        "url": "mailto:cabinet.ryc@gmail.com",
        "linkLabel": "Contact by email",
        "tagline": "Day-to-day support for businesses — for over 20 years",
        "description": "Firm specialised in supporting businesses with their daily operations (administrative, pre-accounting). Long-standing collaboration on the IT and automation side: Windows workstations + Linux servers + Sage Coala, integration of the accounting chain, and first AI agents in production."
      }
    ]
  },
  "humanProfile": "A curious, calm and committed engineer: for twenty years I have worked at the heart of the critical information systems of major French organizations — Ministry of Finance, Radio France, BnF, INPI — keeping the desire to learn and experiment. I love being the meeting point between production and development teams, sharing what I have understood, and making systems more reliable and more peaceful for those who run them.",
  "languages": [
    {
      "name": "French",
      "level": "Native language"
    },
    {
      "name": "English",
      "level": "Professional — reading, international project exchanges (EPTOS, Sungard)"
    },
    {
      "name": "Lao",
      "level": "Family roots — basics"
    }
  ],
  "interests": [
    "Open source & self-hosting",
    "Art & museum collection management",
    "Sovereign AI & local inference",
    "Hackathons & public ecosystem (DINUM, Bercy HUB)",
    "Tech volunteering (Échirolles art institute)",
    "Systems, virtualization and HPC tech watch"
  ],
  "softSkills": [
    {
      "title": "Autonomy & focus on results",
      "body": "As an independent consultant, I work autonomously on advanced topics, set my priorities and deliver in demanding contexts."
    },
    {
      "title": "Mentoring & knowledge transfer",
      "body": "Cross-functional technical reference: I enjoy supporting project managers, explaining the why, and leaving teams stronger than I found them."
    },
    {
      "title": "Diagnosis & investigation",
      "body": "Comfortable with stalled situations others have failed to solve — like the SSSD episode at Radio France where three engineers had tried before I unblocked it."
    },
    {
      "title": "Rigor & risk awareness",
      "body": "Carefully prepared go-lives, systematic rollback plans. I know that in a deposit organization or public service, downtime has a cost."
    },
    {
      "title": "Curiosity & adaptability",
      "body": "From compiling Linux kernels in the 2000s to local Mistral inference in 2026 — I have crossed every technical disruption without freezing."
    },
    {
      "title": "Cross-team spirit",
      "body": "The B2I role at the BnF — the \"glue\" between dev and prod — taught me to listen, to arbitrate, and never to oppose studies and operations."
    }
  ],
  "downloads": {
    "title": "Documents to download",
    "intro": "Resumes and presentations as printable HTML (PDF), plus the raw data (JSON) and a structured text profile for ATS and recruiter AI tools.",
    "items": [
      {
        "id": "cv-classique",
        "file": "cv/cv-classique.html",
        "kind": "Resume",
        "title": "Classic resume — 1 page",
        "audience": "Traditional French format",
        "description": "Synthetic and dense resume that fits on a single A4 page. Best for classic applications, IT staffing recruiters and first contacts."
      },
      {
        "id": "cv-moderne",
        "file": "cv/cv-moderne.html",
        "kind": "Resume",
        "title": "Modern resume — multi-page",
        "audience": "IT recruiters & staffing firms",
        "description": "Spacious multi-page format, polished and readable presentation. Ideal for IT recruiters and headhunters who want detail."
      },
      {
        "id": "presentation-rh",
        "file": "cv/presentation-rh.html",
        "kind": "Presentation",
        "title": "HR Presentation — human angle",
        "audience": "HR recruiters & talent acquisition",
        "description": "My profile from a human angle: stance, soft skills, values, commitments and narrated career path. Free of jargon, for a first interview."
      },
      {
        "id": "presentation-technique",
        "file": "cv/presentation-technique.html",
        "kind": "Presentation",
        "title": "Technical Presentation — expertise angle",
        "audience": "CTOs, CIOs, technical leads",
        "description": "Exhaustive technical stack, deployed architectures, signature diagnostics and frameworks. For those who want to assess expertise on the substance."
      },
      {
        "id": "site-json",
        "file": "cv/site-data.json",
        "prettyView": "cv/pretty-json.html",
        "kind": "Data",
        "title": "JSON export — full site",
        "audience": "ATS, parsing, internal tools",
        "description": "Faithful copy of data/site.json: same source as the showcase and generated resumes. Ideal for importing the profile into another system or for automated processing."
      },
      {
        "id": "profil-ia-recruteurs",
        "file": "cv/profil-recruteurs-ia.md",
        "prettyView": "cv/pretty-md.html",
        "kind": "Text profile",
        "title": "Markdown profile — recruiters & AI",
        "audience": "ATS, AI assistants, candidate watch",
        "description": "All-text version, headings and lists, metadata in header: designed to be read by matching tools and LLMs integrated into ATS."
      }
    ]
  },
  "earlyIt": {
    "title": "Early steps in computing",
    "items": [
      {
        "period": "age 7",
        "body": "First computer: PC XT with 8088 processor at 8 MHz, 512 KB RAM, two 5.25-inch floppy drives (360 KB), 84-key keyboard, CGA monitor, MS-DOS 2.21; also discovered the Logo language; first at home, our first database-style software: a family genealogy program."
      },
      {
        "period": "age 8",
        "body": "Basics of GW-BASIC; MS-DOS and creation of batch files (.bat)."
      },
      {
        "period": "age 10",
        "body": "First time disassembling a computer, then full reinstall on my own after wiping data: floppy formatting, hard disk formatting, configuration of CONFIG.SYS and AUTOEXEC.BAT."
      },
      {
        "period": "age 11",
        "body": "Introduction to DTP (desktop publishing), as part of classes in Paris."
      },
      {
        "period": "age 12",
        "body": "Learning Turbo Pascal and first video game development; first steps in C."
      },
      {
        "period": "age 13",
        "body": "Created a computer club at middle school; first discovery of the Internet at university."
      },
      {
        "period": "age 14",
        "body": "Second computer: 486 DX at 40 MHz, 4 MB RAM, 3.5-inch floppy drive, 250 MB hard disk, VGA monitor; running MS-DOS 6.2 with Windows 3.1."
      },
      {
        "period": "age 16",
        "body": "First Linux installations on my personal machines; first kernel compilations; sharing the internet connection via ipchains."
      },
      {
        "period": "age 17",
        "body": "First LAN parties."
      }
    ]
  },
  "techWatch": {
    "title": "Tech watch & curiosities",
    "intro": "Selection of projects I find compelling to understand where the systems, virtualization and browser ecosystem is heading. Good illustration of today's frontiers between Linux, low-level and WebAssembly.",
    "items": [
      {
        "name": "Linux/Wasm",
        "url": "https://joelseverin.github.io/linux-wasm/",
        "tag": "Linux kernel · WebAssembly",
        "description": "The Linux kernel booting directly in the browser via WebAssembly: BusyBox + musl, Xterm.js terminal. A fascinating proof of concept for anyone interested in scheduling, system primitives and the limits of the modern JS sandbox (no MMU, task suspension emulated via Web Workers, etc.)."
      },
      {
        "name": "DOS Wasm X",
        "url": "https://github.com/nbarkhina/DosWasmX",
        "tag": "Emulation · WebAssembly",
        "description": "DOS / Windows 95-98 emulator in the browser, based on DOSBox-X compiled to WebAssembly via Emscripten. Browser-side persistent hard disk, ISO/IMG/CD handling, gamepad support — a very convincing demo of what Wasm with exceptions and asyncify enables today."
      }
    ]
  },
  "wasmLab": {
    "title": "Wasm Lab — \"career\" archives & in-browser demos",
    "intro": "Pick a tab: both demos are served from this site (DOS and Linux Wasm) with browser-friendly headers. The downloads further down remain optional.",
    "embedDemoTitle": "Interactive demos",
    "embedDemoIntro": "DOS tab: first load often takes 15 to 60 s (Wasm + archive), then START.BAT runs by itself. Linux tab: x86 v86 emulator that boots a real Linux kernel + BusyBox (~7 MB on first pass).",
    "dosEmbedUrl": "/wasm-lab/deploy/index.html",
    "linuxDemoUrl": "/wasm-lab/v86-linux/index.html?v=persist-1",
    "linuxTabIntro": "x86 v86 emulator (BSD-2) that runs a real Linux kernel + BusyBox — no kernel patches, no vfork bug, standard Linux behaviour.",
    "linuxTabFooter": "First boot: ~5 s download + ~5 s kernel boot. The terminal accepts classic Unix commands (ls, vi, top, htop if installed, etc.).",
    "dosSectionTitle": "DOS packs (optional)",
    "dosSectionIntro": "Four ZIP archives (including an all-in-one already used by the embedded demo). ASCII for CP437 compatibility; the first three are thematic splits.",
    "linuxSectionTitle": "Linux overlay",
    "linuxSectionIntro": "tar.gz archive: text tree to copy or mount inside a demo Linux — not a standalone bootable disk image.",
    "sourcesSectionTitle": "Sources & deployment",
    "sourcesSectionIntro": "Repo download, Emscripten build and publication under /wasm-lab/: detailed in wasm-lab/BUILD.md. Script: npm run wasm:fetch.",
    "dosPacks": [
      {
        "id": "premiers-pas",
        "file": "wasm-lab/images/dos/dos-pack-01-premiers-pas.zip",
        "label": "Early steps in computing",
        "hint": "EARLY01.TXT … childhood / teen milestones"
      },
      {
        "id": "organisations",
        "file": "wasm-lab/images/dos/dos-pack-02-organisations.zip",
        "label": "Organizations & key figures",
        "hint": "ORGS.TXT, STATS.TXT"
      },
      {
        "id": "experiences",
        "file": "wasm-lab/images/dos/dos-pack-03-experiences.zip",
        "label": "Professional experiences",
        "hint": "One TXT file per assignment"
      },
      {
        "id": "demo-complet",
        "file": "wasm-lab/images/dos/oulom.zip",
        "label": "All-in-one archive (the one used by the auto demo)",
        "hint": "EARLY*, ORGS, STATS, XP* — same content as the embedded demo"
      }
    ],
    "linuxPacks": [
      {
        "id": "parcours-overlay",
        "file": "wasm-lab/images/linux/oulom-parcours-overlay.tar.gz",
        "label": "Oulom career overlay",
        "hint": "oulom-parcours/{early,trust,xp}/"
      }
    ],
    "demoLinks": [
      {
        "label": "Dos Wasm X — online demo",
        "url": "https://www.neilb.net/doswasmx/",
        "tag": "DOS · Wasm"
      },
      {
        "label": "Linux Wasm — Joel Severin demo",
        "url": "https://joelseverin.github.io/linux-wasm/",
        "tag": "Linux · Wasm"
      }
    ],
    "selfHostPaths": {
      "dosEmulator": "/wasm-lab/deploy/",
      "note": "After npm run wasm:fetch, the emulator files are under wasm-lab/deploy/ (index.html at the root). Push as-is to the server, under the same tree."
    }
  },
  "personalProjects": {
    "intro": "In parallel with my assignments:",
    "items": [
      {
        "sortOrder": 1,
        "year": "2026",
        "title": "Artwork collection portal & AI",
        "html": true,
        "body": "<p>In <strong>2026</strong>, <strong>leading</strong> the creation of a <strong>web portal</strong> for managing <strong>artwork collections</strong>, with <strong>AI assistance</strong>.</p>"
      },
      {
        "sortOrder": 2,
        "year": "Feb 2025",
        "title": "AI hackathon — voice chatbot & Legal Code",
        "html": true,
        "expandBody": true,
        "body": "<p>In <strong>February 2025</strong>, took part in a <strong>hackathon dedicated to artificial intelligence</strong>: our team built a <strong>voice chatbot</strong> able to extract and quickly serve information from the <strong>French Legal Code</strong>. Goal: <strong>simplify access to law</strong> through speech recognition and synthesis.</p><p><strong>Legal sources</strong> — the reference texts came from <a href=\"https://git.tricoteuses.fr\" target=\"_blank\" rel=\"noopener noreferrer\">git.tricoteuses.fr</a>, providing a complete legislative base.</p><p><strong>Technologies</strong> — <strong>Whisper</strong> (voice → text), <strong>LightRAG</strong> (<a href=\"https://github.com/HKUDS/LightRAG\" target=\"_blank\" rel=\"noopener noreferrer\">contextualized RAG on GitHub</a>), <strong>shell</strong> scripts to clean and format datasets, <strong>Python</strong> &amp; <strong>FastAPI</strong> to expose web services, dataset preparation on a development machine (Mac mini, 24&nbsp;GB RAM).</p><p><strong>Infrastructure</strong> — LLM deployment on the <strong>Kubernetes GPU cluster</strong> of <strong>SPESYS Services</strong>, with GPU access for performance suitable to the short hackathon time frame.</p><p><strong>My role</strong> — dataset preparation: extraction, structuring and normalisation of legislative texts; creation of <strong>Python/FastAPI primitive APIs</strong> linking the speech recognition layer, the RAG module and the rendering.</p><p><strong>Collaboration</strong> — <strong>two-day</strong> hackathon with exchanges with the <strong>DINUM</strong>, the <strong>Bercy HUB</strong> team around the <strong>Onyxia (Nubonyxia)</strong> project, and other public-sector actors (Ministry of the Economy, Ministry of Justice, etc.).</p><p><strong>Acknowledgements</strong> — <strong>Stéphane Baisse</strong> and the <strong>SPESYS</strong> teams (<strong>Thomas Williot</strong>, <strong>Gérald Moreno</strong>) for infra access and support.</p><p><strong>Innovation</strong> — accessibility (questions out loud), GPU-powered speed, social impact for professionals and the general public.</p>"
      },
      {
        "sortOrder": 3,
        "year": "Since 2023",
        "title": "Software portal — data science & AI",
        "html": true,
        "body": "<p>Since <strong>2023</strong>, developing a <strong>software portal</strong> for <strong>data scientists</strong>, focused on <strong>data science</strong> and <strong>AI</strong>.</p>"
      },
      {
        "sortOrder": 4,
        "year": "2022",
        "title": "Art institute — Échirolles (volunteer)",
        "html": true,
        "body": "<p>In <strong>2022</strong>, <strong>volunteer</strong> participation in the creation of an <strong>art institute</strong> in <strong>Échirolles</strong>, as <strong>IT expert</strong> (advice and rollout of the digital base).</p>"
      },
      {
        "sortOrder": 5,
        "year": "2020",
        "title": "WordPress showcase websites",
        "html": true,
        "body": "<p>In <strong>2020</strong>, built <strong>websites</strong> with <strong>WordPress</strong> and <strong>Elementor</strong> for <strong>small entrepreneurs</strong>.</p>"
      },
      {
        "sortOrder": 6,
        "year": "Around 2019",
        "title": "Le Signe — collection management (Chaumont)",
        "html": true,
        "body": "<p><strong>Le Signe</strong> — <strong>artwork collection management</strong> software: <strong>Groovy</strong> (backend), <strong>JavaScript</strong> and <strong>React</strong> (frontend). Tested and developed around <strong>2019</strong> as part of collection inventory at <a href=\"https://www.le-signe.fr/\" target=\"_blank\" rel=\"noopener noreferrer\">Le Signe</a>, <strong>French national centre for graphic design</strong> in <strong>Chaumont</strong>.</p>"
      },
      {
        "sortOrder": 7,
        "year": "2013",
        "title": "Automatic MCQ correction — AMC",
        "html": true,
        "body": "<p>In <strong>2013</strong>, designed an <strong>automatic MCQ correction</strong> solution built on the open source <a href=\"https://www.auto-multiple-choice.net/fr/\" target=\"_blank\" rel=\"noopener noreferrer\">Auto Multiple Choice (AMC)</a> tool: generation of <strong>unique questionnaires</strong> per exam session (questions and answers <strong>in a different order</strong> from one copy to another), <strong>unique barcode</strong> per printed paper copy, then <strong>scanning</strong>, <strong>automatic answer recognition</strong> (OMR) and <strong>automatic grading</strong>.</p>"
      }
    ]
  },
  "contact": {
    "lead": "For a discussion about an assignment or a need for Linux / integration expertise.",
    "email": "ouloms@gmail.com",
    "phoneDisplay": "+33 6 18 67 96 00",
    "phoneTel": "+33618679600",
    "address": "142 avenue de Saint-Ouen, 75018 Paris",
    "website": "https://oulom-souvannavong.fr/",
    "websiteDisplay": "oulom-souvannavong.fr",
    "social": [
      {
        "id": "facebook",
        "label": "Facebook",
        "href": "https://www.facebook.com/oulom.souvannavong"
      },
      {
        "id": "linkedin",
        "label": "LinkedIn",
        "href": "https://www.linkedin.com/in/oulom-souvannavong/"
      },
      {
        "id": "whatsapp",
        "label": "WhatsApp",
        "href": "https://wa.me/33618679600"
      },
      {
        "id": "telegram",
        "label": "Telegram",
        "href": "https://t.me/+33618679600"
      }
    ]
  },
  "skillsIntro": "Synthesis aligned with my career: Linux/Unix operations in public service, finance, media and energy; virtualization (VMware to Proxmox), private OpenStack/NUBO clouds, Kubernetes & Helm (Onyxia, public-sector compliance), HPC Slurm/Apptainer; automation with Ansible, Terraform, GitLab, Salt; ANSSI hardening, MCS and Cyberwatch; AI agents and document chains in production.",
  "skills": [
    {
      "title": "Systems & networking",
      "icon": "server",
      "level": 3,
      "text": "Linux Red Hat/CentOS, Debian/Ubuntu, SUSE in production (level 3); Active Directory / LDAP / SSSD integration (Radio France, Naarea); PXE boot / Preseed, LTSP for thin clients (UCAD); BIND DNS, iptables firewall; kernel compilation and trimming (recycled fleet). Unix AIX, Solaris, HP-UX (INPI, Sungard GP3 migrations). Windows and Samba in mixed contexts (small businesses, museum)."
    },
    {
      "title": "Monitoring & observability",
      "icon": "chart",
      "level": 3,
      "text": "Centreon, Grafana, Prometheus; Nagios → Centreon → Prometheus journey (INPI, Naarea). Graylog, Elastic Stack for logs and correlation. JMX metrics (Tomcat/Java). Tech-functional operations dashboards."
    },
    {
      "title": "Storage, SAN & DRP",
      "icon": "disk",
      "level": 3,
      "text": "HP 3PAR SAN, iSCSI, Fibre Channel, NFS; Ceph, S3 / MinIO object storage; MySQL Galera + ProxySQL. VMware Site Recovery Manager DRP / BCP, cross-DC replication and datacenter migrations (INPI). Backups: Bacula, BackupPC, NetBackup, Veeam."
    },
    {
      "title": "Virtualization, cloud & Kubernetes",
      "icon": "cloud",
      "level": 3,
      "text": "VMware vSphere, oVirt, KVM, Proxmox, Hyper-V; OpenStack (NUBO, ministry). Kubernetes & Helm (Onyxia / Nubonyxia, \"Onyxia-flavored\" charts, catalog CI). Docker; Apptainer for container-style workloads; first clusters via Rancher / RancherOS (INPI)."
    },
    {
      "title": "Databases & middleware",
      "icon": "db",
      "level": 2,
      "text": "MySQL / MariaDB, PostgreSQL, Oracle (operations), MongoDB, MaxDB. Tomcat / Java stacks, Apache NiFi, CMDBuild (RADAR DGFIP). PHP, Node, Heurist (SHS at BnF) integrations. Ext JS (business UI)."
    },
    {
      "title": "Automation & CI/CD",
      "icon": "gear",
      "level": 3,
      "text": "Ansible (Tower), Terraform (OpenStack VMs), Puppet, SaltStack; Git, Jenkins, GitLab CI, Bercy/BnF/INPI release chains; Rundeck → Ansible Tower (Radio France). Dollar Universe (scheduling). Bamboo / SVN (Sungard era)."
    },
    {
      "title": "Development, scripting & AI",
      "icon": "code",
      "level": 3,
      "text": "Bash/shell, Python, JavaScript/React, Go, Ext JS; Django, PHP, VBA/AutoIt. Recent projects: FastAPI, RAG, Whisper. In production: n8n agents, Claude API, local Ollama / Mistral inference (small business), operations scripts and Selenium (prod checks)."
    },
    {
      "title": "HPC & operational security",
      "icon": "stack",
      "level": 2,
      "text": "Slurm, InfiniBand, Apptainer (MPI, scientific workloads), Lenovo platforms; protected network zones, dedicated LDAP (Naarea). Linux master images hardened to ANSSI guides, MCS. Cyberwatch (INPI rollout, Radio France advice)."
    }
  ],
  "education": [
    {
      "year": "2004",
      "institution": "EPSI Paris",
      "detail": "Master's degree (Bac+5) — Information Systems Expert"
    }
  ],
  "educationExtraTitle": "Education & degrees (excerpts)",
  "educationExtra": [
    "Typical path: French baccalaureate — BTS — EPSI program (LIS, DGC…) — Master's / IS expertise.",
    "Engineering internships: ISTA, STMI, METO X SILICIO, LFB, LIS, DGC (1999–2005). To be completed in index.html or in this JSON, then npm run build."
  ],
  "internships": [
    {
      "years": "1999",
      "employer": "ISTA",
      "context": "IT hardware supplier",
      "role": "PC assembly line temp"
    },
    {
      "years": "2000–2001",
      "employer": "STMI",
      "context": "COGEMA subsidiary",
      "role": "Desktop support intern"
    },
    {
      "years": "2001",
      "employer": "METO X SILICIO",
      "context": "Computer graphics",
      "role": "Desktop support intern"
    },
    {
      "years": "2002",
      "employer": "LFB",
      "context": "Pharmaceutical lab",
      "role": "Desktop support intern"
    },
    {
      "years": "2003",
      "employer": "LIS",
      "context": "Internet service provider (Laos)",
      "role": "Engineering intern"
    },
    {
      "years": "2004",
      "employer": "DGC",
      "context": "Training centre",
      "role": "Engineering intern"
    },
    {
      "years": "2005",
      "employer": "DGC",
      "context": "Training centre",
      "role": "Engineering intern"
    }
  ],
  "experience": [
    {
      "sortOrder": 1,
      "period": "Feb 2025 — Feb 2026",
      "location": "Paris Bercy / Noisy-le-Grand",
      "role": "Independent Linux expert consultant",
      "organization": "Ministry of Finance — Bercy HUB & DGFIP",
      "highlights": [
        {
          "tag": "Onyxia · Insee",
          "title": "Sovereign State data lab platform",
          "body": "Onyxia is the open source data lab portal developed by Insee, now used across the French government to give data scientists a self-service Kubernetes environment. Contributing to it means working on a building block of the State's digital sovereignty."
        },
        {
          "tag": "AI hackathon · Feb 2025",
          "title": "Voice chatbot & Legal Code",
          "body": "Two-day AI hackathon: team using Whisper, LightRAG and FastAPI for a voice assistant on texts from git.tricoteuses.fr; prepared datasets and APIs linking ASR, RAG and synthesis. SPESYS GPU Kubernetes infra; meetings with DINUM, Bercy HUB / Onyxia (Nubonyxia). Thanks to Stéphane Baisse, Thomas Williot and Gérald Moreno (SPESYS)."
        },
        {
          "tag": "Helm · Kubernetes",
          "title": "Catalog of compliant Helm charts",
          "body": "Adapting Helm charts so they can be launched from the Onyxia portal while meeting Bercy compliance requirements: a rare exercise blending Kubernetes packaging, security and the UX of an application catalog."
        },
        {
          "tag": "Terraform · OpenStack",
          "title": "IaC on the NUBO private cloud",
          "body": "Maintaining and hardening Ansible and Terraform code to provision VMs on OpenStack (NUBO, the ministry's internal cloud) — end-to-end IaC chain in a sovereign environment."
        },
        {
          "tag": "CMDBuild · NiFi",
          "title": "DGFIP inventory framework — RADAR",
          "body": "Stabilization and upgrade of RADAR, the framework that aggregates inventories across the entire DGFIP information system. CMDBuild + Apache NiFi on Tomcat/PostgreSQL: very few engineers in France have worked on this stack in critical production."
        }
      ],
      "sections": [
        {
          "title": "Two entities",
          "html": true,
          "body": "<p>Assignments with <strong>at least two entities</strong> of the ministry: <strong>Bercy HUB</strong> for the <strong>Nubonyxia</strong> project, then the <strong>DGFIP</strong> (taxes) for the <strong>RADAR</strong> project.</p>"
        },
        {
          "title": "Bercy HUB — Nubonyxia project",
          "html": true,
          "body": "<p>The <strong>Nubonyxia</strong> project relies on providing the <strong>Onyxia</strong> software — born at <strong>Insee</strong> with contributions from <strong>Bercy</strong> teams. <strong>Onyxia</strong> installs on a <strong>Kubernetes cluster</strong> and deploys workloads as <strong>pods</strong> via <strong>Helm charts</strong>. The offer rides on the chosen <strong>hosting base</strong> (<strong>Bercy HUB</strong> / <strong>NUBO</strong>), hence the project name (<strong>Nubo</strong> / <strong>Onyxia</strong>).</p><p>Role: contributing to the <strong>operations</strong> of an installation already in production, plus rolling out <strong>additional services</strong>. In practice: adapting <strong>Helm charts</strong> so they can be <strong>launched from the Onyxia portal</strong> — turning packages into the <strong>Onyxia flavor</strong> to comply with the catalog model and <strong>compliance</strong> requirements.</p><p>An <strong>automation chain</strong> was already in place to move deliverables from <strong>development</strong> through to <strong>user availability</strong>. I was responsible in particular for the <strong>healthy operation</strong> of this <strong>continuous integration chain</strong>, with many topics to handle around <strong>authentication</strong> and <strong>security</strong>.</p><p>One major challenge: <strong>mapping</strong> all <strong>components and flows</strong> to make them visible and controllable — the perimeter was hard to scope while <strong>authentication</strong> raised many issues and <strong>continuous integration chains</strong> remained <strong>only mildly stable</strong>.</p>"
        },
        {
          "title": "DGFIP — RADAR project",
          "html": true,
          "body": "<p><strong>RADAR project goal</strong>: provide a <strong>framework</strong> that <strong>aggregates several inventory sources</strong> in order to <strong>map</strong> the <strong>versions</strong> of the <strong>structuring components</strong> of the <strong>information system</strong> (visibility into the fleet and into what is actually running in production).</p><p>Role of <strong>application DevOps integrator</strong> on this perimeter: <strong>Ansible</strong>, <strong>Nexus</strong>, <strong>Jenkins</strong>, <strong>GitLab</strong> tool chain, with services including <strong>CMDBUILD</strong> and <strong>Apache NiFi</strong>, complemented by <strong>Tomcat</strong>, <strong>PostgreSQL</strong>, on a <strong>Linux</strong> base on <strong>NUBO</strong> / <strong>OpenStack</strong>. Deployment relies in particular on <strong>Jenkins</strong> and <strong>Ansible</strong>.</p><p>On <strong>arrival</strong>, the platform showed <strong>numerous malfunctions</strong>. My role was mostly to <strong>stabilise</strong> what had already been delivered — including <strong>writing and maintaining</strong> <strong>Ansible</strong> and <strong>Terraform</strong> code for <strong>creating virtual machines</strong> on <strong>OpenStack</strong> — then to <strong>drive the version upgrade</strong> of all RADAR components — including the move of <strong>CMDBUILD</strong> to its <strong>latest version</strong> (alignment with the integration chain and dependencies).</p><p>In the absence of a dedicated <strong>JavaScript developer</strong>, I also took part in <strong>maintaining</strong> and <strong>evolving the RADAR UI</strong>, built with the <strong>Ext JS</strong> framework.</p>"
        }
      ]
    },
    {
      "sortOrder": 2,
      "period": "Jan 2024 — Jan 2025",
      "location": "Nanterre",
      "role": "HPC platform operations",
      "organization": "Naarea — energy (small modular reactors)",
      "highlights": [
        {
          "tag": "Slurm · InfiniBand",
          "title": "HPC for nuclear simulation (SMR)",
          "body": "Slurm cluster on 10 Lenovo nodes interconnected via InfiniBand — the reference stack for supercomputers (Top500). Deploying that to simulate small modular reactors means working on the software chain of a strategic sector."
        },
        {
          "tag": "Apptainer (Singularity)",
          "title": "MPI-compatible HPC containers",
          "body": "Migration from Docker to Apptainer for HPC workloads: Apptainer is the container standard for scientific computing (MPI, GPU, multi-user without privileges). A skill rare outside national computing centres."
        },
        {
          "tag": "ANSSI",
          "title": "Linux master image hardened to State framework",
          "body": "Designed a Linux master image aligned with the ANSSI guides (French national cybersecurity agency). A reference required for any sensitive IS, and relevant in the nuclear sector."
        },
        {
          "tag": "SaltStack",
          "title": "Multi-node orchestration in a protected zone",
          "body": "Configured the entire platform with Salt — an alternative to Ansible, less common but formidable at scale, in a protected network zone with dedicated LDAP, SMTP and authentication."
        }
      ],
      "sections": [
        {
          "title": "Context",
          "html": true,
          "body": "<p>Startup in the <strong>small modular nuclear reactor</strong> (SMR) sector; mostly Windows-based information system, with a decision to invest in a <strong>HPC platform</strong> for simulation and scientific computing.</p>"
        },
        {
          "title": "Protected zone — directory, auth and mail",
          "html": true,
          "body": "<p>The entire <strong>Linux</strong> fleet sat in a <strong>protected network zone</strong>. Dedicated <strong>infrastructures</strong> were therefore needed within this perimeter: an <strong>LDAP</strong> directory, a zone-specific <strong>authentication</strong> mechanism, and an <strong>SMTP</strong> relay for the mail of the affected services.</p>"
        },
        {
          "title": "Linux master — ANSSI recommendations",
          "html": true,
          "body": "<p>At <strong>Naarea</strong>, designed a <strong>Linux master image</strong> to deploy a homogeneous and durable base: built on my <strong>experience</strong> and aligned with the <strong>guides and recommendations</strong> of the <a href=\"https://www.ssi.gouv.fr/\" target=\"_blank\" rel=\"noopener noreferrer\">ANSSI</a> (hardening, best practices).</p>"
        },
        {
          "title": "Lenovo platform — Slurm cluster",
          "html": true,
          "body": "<p><strong>Lenovo</strong> infrastructure: <strong>10 compute nodes</strong>, <strong>4 development machines</strong>, <strong>3 Proxmox machines</strong> hosting VMs. <strong>NAS</strong> with <strong>NFS</strong> shares for the data used by the <strong>Slurm</strong> cluster. <strong>InfiniBand</strong> network. Configuration of everything with <strong>Salt</strong> (SaltStack).</p><p>Observability and operations: Grafana, Prometheus, Centreon; OpenMP, MPI, Python, Bash; Helm where needed.</p>"
        },
        {
          "title": "Mission — Slurm, Proxmox and Linux support",
          "html": true,
          "body": "<p>Operations of the <strong>Slurm cluster</strong> and the <strong>Proxmox</strong> infrastructure (virtualization, hosting of virtual machines). <strong>Multi-hat</strong> role on every Linux need: integration of <strong>compute codes</strong> with <strong>scientific libraries</strong> (MPI, HPC software stack); <strong>continuous integration</strong> chains with <strong>GitLab</strong>; containers — starting with <strong>Docker</strong>, then moving to <strong>Apptainer</strong> (Singularity) for HPC-compatible workloads.</p>"
        }
      ]
    },
    {
      "sortOrder": 3,
      "period": "2022 — 2023",
      "location": "Paris / Maison de la radio",
      "role": "Linux expert — infrastructure project",
      "organization": "Radio France",
      "highlights": [
        {
          "tag": "SSSD · Active Directory",
          "title": "Three engineers had failed before me",
          "body": "Diagnosis and resolution of the SSSD deadlock (Linux/AD integration) that was blocking the arrival of new Linux servers in the public broadcaster's business IS — after three predecessors had failed. A pure expertise case."
        },
        {
          "tag": "Master Debian · PXE",
          "title": "Durable Linux base in an AD domain",
          "body": "Built the Linux master (Debian/Ubuntu) installable via Preseed/PXE, joined to the AD domain, hardened to ANSSI — designed for long-term MCO and MCS (security maintenance), not just to pass acceptance."
        },
        {
          "tag": "Cyberwatch",
          "title": "Advisory for the Linux installation",
          "body": "Direct reuse of INPI experience (where I had launched the Cyberwatch project) to advise Radio France: vulnerability management and compliance on the public broadcaster's Linux fleet."
        },
        {
          "tag": "Ansible Tower",
          "title": "Orchestration for the OnAir project",
          "body": "Migration of part of the radio business IS to Linux as part of the OnAir project: Ansible playbooks and roles, switch from Rundeck to Ansible Tower for industrialization."
        }
      ],
      "sections": [
        {
          "title": "OnAir project",
          "body": "Hired as part of the OnAir project: migration of part of the radio business information system to a Linux software base, while the legacy until then was essentially Windows-based."
        },
        {
          "title": "Linux, Active Directory and SSSD",
          "body": "Before my arrival, three Linux engineers had taken turns trying to unblock the situation. Critical issue: authentication and joining new Linux servers to the Microsoft network (Active Directory), through SSSD. Observed behaviour: significant slowdowns or no response — and no team could pin down the cause. Diagnosis and fixes on the Linux / AD (SSSD) integration chain that resolved these blocking incidents."
        },
        {
          "title": "Mission — Linux expertise",
          "body": "Hired as a Linux expert to support the infrastructure project team on Linux topics — including the creation of a Linux master (Debian/Ubuntu) in an AD domain (Preseed/PXE), installation hardening, and contribution to level 3 support. Expert assistance to Linux application projects; microservices; Bash/Ansible automation. Azure and Kubernetes training."
        },
        {
          "title": "Tech stack — VMware, PXE, Ansible",
          "html": true,
          "body": "<p>The whole perimeter was <strong>hosted on VMware</strong>. Development environments ran on machines <strong>booted via PXE</strong> (network boot). For customisation and deployment: <strong>Ansible playbooks and roles</strong>, with <strong>Rundeck</strong> then <strong>Ansible Tower</strong> (evolution of the orchestration / automation chain).</p>"
        },
        {
          "title": "Linux master — MCO, MCS and ANSSI",
          "html": true,
          "body": "<p><strong>At Radio France</strong>, beyond the <strong>technical specifications alone</strong> for the <strong>creation of the Linux master</strong>, I was able to invest time on a long-term framing: for <strong>MCO</strong> (operational maintenance), drawing on my <strong>professional experience</strong> in operations; for <strong>MCS</strong> (security maintenance), inspired by the <strong><a href=\"https://www.ssi.gouv.fr/\" target=\"_blank\" rel=\"noopener noreferrer\">ANSSI</a> framework</strong>.</p>"
        },
        {
          "title": "Advisory — Cyberwatch",
          "html": true,
          "body": "<p><strong>Reusing experience gained at INPI</strong> on <a href=\"https://www.cyberwatch.com/\" target=\"_blank\" rel=\"noopener noreferrer\">Cyberwatch</a>, <strong>I advised Radio France</strong> on the platform <strong>installation</strong> (vulnerabilities, compliance) for <strong>Linux environments</strong>.</p>"
        }
      ]
    },
    {
      "sortOrder": 4,
      "period": "2019 — 2022",
      "location": "Paris",
      "role": "Integration engineer",
      "organization": "National Library of France (~3000 staff)",
      "highlights": [
        {
          "tag": "Catalogue général · Réservations",
          "title": "At the heart of the BnF's operation",
          "body": "Integrator portfolio on the most strategic bricks of the institution: the general catalog (documentary plan) and the booking system (books and rooms) — the backbone of public service."
        },
        {
          "tag": "Heurist · SHS",
          "title": "Research in human and social sciences",
          "body": "Integration of the open source Heurist platform (HeuristNetwork) — a recognised tool for managing research data in the humanities (PHP/JS/MySQL). A little-known brick yet used worldwide by SHS researchers."
        },
        {
          "tag": "NFC · Vivaticket · Zebra",
          "title": "Physical public service: access, ticketing, checkout",
          "body": "Responsibility for the public service IS: NFC access control on gates, Vivaticket point-of-sale systems, Zebra printers. The rare combination of \"Linux engineer\" + \"physical public service infrastructure\"."
        },
        {
          "tag": "Podman · Ansible · Sonar",
          "title": "B2I bureau — glue between dev and prod",
          "body": "Within the B2I bureau (10 people for the entire application portfolio), led releases: commit reviews, Git merges, install packs, Jenkins continuous integration, Sonar quality, Podman containers."
        }
      ],
      "sections": [
        {
          "title": "B2I bureau — engineering and integration",
          "body": "The B2I bureau (engineering and integration) bridged the production / operations teams and the R&D / studies teams — in short, the glue between development and prod. A small team of about ten people splitting up the entire application portfolio of the institution. Profiles deliberately polyvalent: combining operations / production know-how with that of studies and development, able to intervene across the whole spectrum without compartmentalisation."
        },
        {
          "title": "Agile, Redmine and dual hat",
          "body": "Agile workflow; tracking development tasks in Redmine. Project support: studies / development side as technical reference; production side as integrators."
        },
        {
          "title": "Business portfolio",
          "body": "Portfolio focused on business activities: bibliography and public service. Among the major software: the general catalog, central tool of the library's documentary plan; equally strategic, the booking system — book and room booking — at the heart of the BnF's operation. Public service: ticketing, checkout, etc."
        },
        {
          "title": "Public service IS — NFC access and ticketing",
          "body": "Responsibility for the public service information system: access control based on NFC cards and rights management (room access, gates and doors with badge readers). For ticketing, the Vivaticket solution and associated checkout stations: each checkout combined a computer with the sales software, a touchscreen and a Zebra printer for tickets and labels."
        },
        {
          "title": "Project — Heurist (Heurist Network) integration",
          "html": true,
          "body": "<p>Integration project for the <strong>Heurist</strong> software (<a href=\"https://github.com/HeuristNetwork/heurist\" target=\"_blank\" rel=\"noopener noreferrer\">HeuristNetwork/heurist on GitHub</a>): an open source web platform for managing research data in the humanities (PHP, JavaScript, MySQL).</p>"
        },
        {
          "title": "Taking over and inherited perimeter",
          "body": "One of the goals of the role: take over my predecessor's work, who had led many specific developments or integrations relative to existing standards or, more broadly, to the state of the art."
        },
        {
          "title": "Release preparation and automation",
          "body": "One of the main difficulties: ahead of each release, reviewing developer commits, arbitrating what should enter the right version (release scope), Git branch merges, then preparing releases — driving history and branches, not just directory structure. Goal: automate a large part of this preparation to make the cycle reliable and faster."
        },
        {
          "title": "Deliverables, production and tooling",
          "body": "On the project / studies side: preparing for production the install packs, documentation, go-live processes, release notes, delivery slip and everything needed for deployment. We were also responsible for installing environments in production: with Jenkins, deploying environments aligned with development versions in flight — continuous integration; Sonar to enforce code quality. Containers (Podman) and Ansible were brought in incrementally. Predominant application stack at the BnF: Java, Tomcat, PostgreSQL; alongside, Git, Node.js, React, Linux (CentOS), VMware, oVirt depending on the perimeter. DevOps foundation and Kubernetes training."
        }
      ]
    },
    {
      "sortOrder": 5,
      "period": "2010 — 2019",
      "location": "Courbevoie / Bécon-les-Bruyères",
      "role": "Linux systems architect engineer",
      "organization": "INPI — French Industrial Property Institute (~800 staff)",
      "highlights": [
        {
          "tag": "EPTOS · OEB",
          "title": "European Patent Office software suite",
          "body": "Joined the eptosadmin team on EPTOS (European Patent and Trademark Office System), the suite delivered by the EPO/OEB for national offices. Very few engineers in France touch this strategic international programme."
        },
        {
          "tag": "VMware vSphere · SRM",
          "title": "Pioneer in virtualization + cross-DC DRP",
          "body": "Installed virtualization at INPI (vSphere 4.0 → 6.0, oVirt, Kubernetes RancherOS), then rolled out the disaster recovery plan with VMware Site Recovery Manager: orchestrated cross-datacenter replication and failover."
        },
        {
          "tag": "Galera · ProxySQL · Ceph · S3",
          "title": "Active-active SQL & object storage architecture",
          "body": "Studied and rolled out MySQL Galera clusters behind ProxySQL for active-active architectures, alongside Ceph clusters and the move to S3 object storage. A rare architectural trajectory in a public-sector body."
        },
        {
          "tag": "Cyberwatch",
          "title": "Pioneer on Linux compliance",
          "body": "As part of the IT executive committee, launched the project to install Cyberwatch — INPI being among the first deployments in France for vulnerability management and compliance of the Linux fleet."
        },
        {
          "tag": "HP 3PAR · iSCSI/FC · NFS",
          "title": "Enterprise SAN infrastructure",
          "body": "Drove the physical host ↔ SAN links (iSCSI over Ethernet, Fibre Channel, NFS), operating HP 3PAR arrays; three full server room migrations with no service interruption."
        },
        {
          "tag": "SLES · normalisation",
          "title": "RHEL 3 → SLES 11: fleet overhaul",
          "body": "Drove obsolescence management: a heterogeneous Linux fleet (down to RHEL 3) brought back to a homogeneous SUSE Linux Enterprise Server, with application migration from Unix (HP-UX, AIX, Solaris) to Linux."
        }
      ],
      "sections": [
        {
          "title": "After Sungard — joining INPI",
          "body": "After the Sungard experience, joined INPI — about nine years there, a very rich experience. On arrival: no virtualization yet, no containers as we know them today; services were still massively installed on dedicated hardware (\"bare metal\" approach). Linux was not yet dominant across the fleet: a lot of Windows and proprietary Unix (HP-UX, AIX, Solaris). The following years dramatically changed the landscape (virtualization, Linux, automation — see below)."
        },
        {
          "title": "Référent technique — Linux, VMware et virtualisation",
          "html": true,
          "body": "<p>À l’<strong>INPI</strong>, j’ai accompagné en tant que <strong>référent technique</strong> <strong>toutes les installations logicielles</strong> sous <strong>Linux</strong>.</p><p>J’étais aussi <strong>référent technique</strong> sur l’ensemble du périmètre <strong>VMware</strong> et, plus largement, de la <strong>virtualisation</strong>.</p><p><strong>C’est moi qui ai installé</strong> cette virtualisation à l’INPI : <strong>VMware vSphere</strong> de la <strong>4.0</strong> à la <strong>6.0</strong>, puis <strong>oVirt</strong> (<a href=\"https://www.ovirt.org/\" target=\"_blank\" rel=\"noopener noreferrer\">oVirt</a>), et plus tard les premiers environnements <strong>Kubernetes</strong> (« nuage » conteneurisé) avec <strong>RancherOS</strong> comme socle pour monter ces clusters.</p><p>J’ai aussi réalisé les <strong>premiers masters Linux</strong> de l’INPI (images / installateurs de référence pour déployer le socle), ainsi que les <strong>premiers référentiels de sécurité Linux</strong> (durcissement, règles et bonnes pratiques d’exploitation).</p><p>Chaque fois qu’un projet <strong>devait être installé sous Linux</strong>, j’<strong>accompagnais systématiquement</strong> le <strong>chef de projet</strong> (cadrage, déploiement, exploitation).</p>"
        },
        {
          "title": "Normalisation du parc Linux et gestion de l’obsolescence (RHEL, SUSE)",
          "html": true,
          "body": "<p>À mon arrivée, le système d’information comportait de nombreuses <strong>distributions Linux</strong> différentes, aux côtés de <strong>plusieurs Unix</strong>.</p><p><strong>À l’INPI</strong>, j’ai piloté la gestion de l’<strong>obsolescence</strong> du parc Linux : <strong>récupération</strong> des anciennes installations et <strong>report sur des plateformes à niveau</strong> — en faisant évoluer des socles très anciens (par ex. <strong>RHEL 3</strong>) vers des versions supportables (<strong>RHEL 5</strong>, puis <strong>RHEL 7</strong> selon les trajectoires). Au terme de la normalisation, le parc entreprise ne reposait plus que sur des installations <strong>SUSE Linux Enterprise Server</strong> : <a href=\"https://www.suse.com/products/server/\" target=\"_blank\" rel=\"noopener noreferrer\">SUSE Linux Enterprise Server</a> — une réussite notable au vu de l’hétérogénéité de départ.</p><p>Nous avons <strong>remplacé l’ensemble des machines Unix</strong> par des <strong>systèmes Linux</strong> et <strong>migré les applications</strong> d’<strong>Unix vers Linux</strong>, afin de ne conserver sur <strong>Unix</strong> que les <strong>bases de données Oracle</strong>.</p>"
        },
        {
          "title": "Projet EPTOS — équipe eptosadmin (run, intégration & architecture)",
          "html": true,
          "body": "<p>Première mission : intégration de l’équipe <strong>eptosadmin</strong> du projet <strong>EPTOS</strong> (<em>European Patent and Trademark Office System</em>) — la suite logicielle de gestion portée par l’<a href=\"https://www.epo.org\" target=\"_blank\" rel=\"noopener noreferrer\">Office européen des brevets (OEB / EPO)</a> pour les offices membres. L’équipe ne se limitait pas au run et à la production : nous étions aussi responsables de l’<strong>intégration</strong> et de l’<strong>architecture</strong> — en résumé tout le volet <strong>technique</strong>, y compris l’<strong>infrastructure</strong> : installation des serveurs sous <strong>Linux</strong>, montage <strong>en baie</strong> en salle informatique, administration de la <strong>baie SAN</strong>, câblage et raccordement <strong>réseau</strong>, etc. Pour une synthèse académique du programme EPTOS comme transfert de système de gestion des brevets depuis l’OEB : Marcuzzo Cavalheiro &amp; Joia (2016), <em>Public Administration &amp; Development</em>, DOI <a href=\"https://doi.org/10.1002/pad.1753\" target=\"_blank\" rel=\"noopener noreferrer\">10.1002/pad.1753</a> (étude de cas sur un office national en coopération avec l’EPO ; même famille de programme que les déploiements EPTOS).</p><p>La suite reposait sur quatre applicatifs majeurs : <strong>Soprano</strong> (back-office ; tierce maintenance assurée notamment par <a href=\"https://www.luminess.eu/article/jouve-acteur-majeur-du-numerique-devient-luminess\" target=\"_blank\" rel=\"noopener noreferrer\">Jouve</a>, groupe rebaptisé <strong>Luminess</strong>), <strong>e-OLF</strong> (dépôt en ligne), <strong>PHOENIX</strong> (gestion documentaire), et <strong>Register</strong> (registre). Développements en <strong>Java</strong>, servis via <strong>Tomcat</strong>, avec base de données <strong>MySQL</strong> ; le tout opéré sous <strong>Linux</strong>.</p><p>Les premières mises en production étaient exclusivement en <strong>bare metal</strong> : la virtualisation n’était pas encore déployée sur le site. À l’arrivée de <strong>VMware</strong> (<strong>vSphere 4</strong>), nous avons été parmi les premiers à <strong>migrer</strong> vers la virtualisation et à réaliser les <strong>premières conversions</strong>. Tout n’était pas encore abouti : en début de courbe, les <strong>outils de conversion P2V</strong> ne fonctionnaient pas pour tous les cas — il a fallu recourir à la <strong>création d’images disque brutes</strong> (copie depuis la machine physique) pour les <strong>réintégrer en machine virtuelle</strong> lorsque la conversion standard échouait. Puis généralisation des pratiques (vSphere 5.x, etc.).</p><p>Au départ, la virtualisation ciblait d’abord le périmètre <strong>EPTOS</strong>. Pour l’<strong>étendre à l’ensemble du système d’information</strong>, c’est notre équipe qui a porté le chantier : nous avions le plus d’<strong>expérience</strong> sur la virtualisation.</p><p>Plus précisément, EPTOS disposait d’une <strong>infrastructure dédiée</strong> : sauvegardes, bases de données et <strong>switchs</strong> propres au périmètre — fonctionnement <strong>autonome</strong> par rapport au reste du SI. Vers la fin du projet, décision de <strong>converger</strong> avec l’infrastructure centrale pour les fonctions transverses, notamment <strong>supervision</strong> et <strong>sauvegarde</strong>.</p><p>L’effort de <strong>normalisation</strong> réalisé dans le cadre d’EPTOS a ensuite été <strong>réinvesti</strong> pour l’ensemble du système d’information : notamment <strong>création des bases</strong> (données et référentiels), et <strong>migration</strong> des machines <strong>obsolètes</strong> vers le <strong>nouveau socle technique</strong>.</p><p>Plus tard, d’autres logiciels ont été intégrés autour de l’environnement EPTOS, notamment pour la <strong>diffusion et la valorisation des données</strong> : stack <strong>Talend</strong> couvrant entre autres <strong>ETL</strong>, <strong>ESB</strong> et <strong>MDM</strong> (<em>Master Data Management</em>).</p>"
        },
        {
          "title": "SUSE Linux Enterprise — migrations SLES 9 → 11 (EPTOS)",
          "html": true,
          "body": "<p>À l’<strong>INPI</strong>, nous avons géré les <strong>migrations</strong> de <strong>SLES 9</strong> vers <strong>SLES 11</strong> (<a href=\"https://www.suse.com/\" target=\"_blank\" rel=\"noopener noreferrer\">SUSE Linux Enterprise Server</a>) <strong>au fil de l’eau</strong> pour le périmètre <strong>EPTOS</strong> — planification des montées de version <strong>progressivement</strong>, sans tout basculer d’un seul coup.</p>"
        },
        {
          "title": "Parcours d’équipe — production brevets, fusion Linux/Unix, diffusion EPTOS",
          "html": true,
          "body": "<p>D’abord <strong>rattaché</strong> uniquement à une équipe <strong>dédiée à la production</strong> du <strong>système d’information brevets</strong>, j’ai ensuite <strong>rejoint</strong> le <strong>reste de l’équipe système Linux / Unix</strong> (élargissement de mon périmètre). J’y ai <strong>réinvesti</strong> dans l’<strong>ensemble du SI</strong> les <strong>briques nouvelles</strong> mises en place pour le projet <strong>EPTOS</strong> (socles, outillages, pratiques de normalisation).</p>"
        },
        {
          "title": "Salle serveurs — baies, KVM Raritan IP, volumes, câblage",
          "html": true,
          "body": "<p>Nous <strong>montions nous-mêmes en baie</strong> les <strong>machines</strong> et <strong>gérions l’exploitation</strong> des serveurs en <strong>salle serveur</strong> — notamment <strong>KVM over IP Raritan</strong> (<a href=\"https://www.raritan.com/\" target=\"_blank\" rel=\"noopener noreferrer\">Raritan</a>, consoles distantes), <strong>mises à jour de firmwares</strong>, <strong>création de volumes</strong> disque côté serveurs / stockage, <strong>raccordements électriques</strong> et <strong>réseau</strong>, etc.</p>"
        },
        {
          "title": "Disponibilité du dépôt — e-OLF, confidentialité et mises en production",
          "html": true,
          "body": "<p>L’<a href=\"https://www.inpi.fr/\" target=\"_blank\" rel=\"noopener noreferrer\">INPI</a> est un <strong>organisme de dépôt</strong> : le <strong>service de dépôt</strong> doit <strong>fonctionner en permanence</strong>. J’avais la responsabilité du volet <strong>dépôt des brevets</strong>, notamment <strong>e-OLF</strong> (dépôt en ligne — périmètre EPTOS), et la <strong>mise en place</strong> ainsi que l’<strong>exploitation</strong> de l’<strong>environnement sécurisé</strong> pour les données soumises au <strong>secret</strong> jusqu’à leur <strong>publication</strong> éventuelle.</p><p>Les <strong>mises en production</strong> étaient donc <strong>minutieusement préparées</strong> pour garder un <strong>temps de coupure</strong> <strong>aussi court que possible</strong>.</p>"
        },
        {
          "title": "Physique vers virtuel (P2V) — VMware Converter, dd, méthodes artisanales",
          "html": true,
          "body": "<p>Passer d’une installation sur <strong>machine physique</strong> à une installation sur <strong>machine virtuelle</strong> n’a pas été <strong>de tout repos</strong>. La voie « standard » était <strong>VMware Converter</strong> (conversion P2V), mais il existait des cas où l’outil ne suffisait pas.</p><p>Il a alors fallu créer des <strong>images disque brutes</strong> (<em>raw</em>) avec <strong>dd</strong> (copie secteur à secteur), puis parfois des chemins <strong>artisanaux</strong> : transfert par <strong>archives compressées</strong> et <strong>décompression</strong> sur la cible, réimport et ajustements manuels dans VMware lorsque la chaîne Converter / import direct échouait.</p>"
        },
        {
          "title": "Ordonnancement des flux (Dollar Universe)",
          "html": true,
          "body": "<p>Les volumes de <strong>données</strong> étaient importants : les <strong>sauvegardes</strong> constituaient un sujet critique — d’où la nécessité d’une <strong>fenêtre de sauvegarde</strong> bien organisée — typiquement en <strong>fenêtre de nuit</strong> / heures creuses, avec planification fine des plages rigoureusement orchestrée avec <strong>Dollar Universe</strong> : <a href=\"https://www.broadcom.com/products/software/automation/dollar-universe\" target=\"_blank\" rel=\"noopener noreferrer\">Broadcom — Dollar Universe</a> (workload automation).</p><p>Les <strong>traitements automatisés</strong> présentaient encore <strong>beaucoup d’erreurs</strong> : j’ai dû <strong>tout corriger</strong> et <strong>fiabiliser l’ensemble des scripts shell et Python</strong> qui les supportaient.</p>"
        },
        {
          "title": "MySQL — maintenance, sauvegardes et restaurations",
          "html": true,
          "body": "<p>Il a été nécessaire de disposer d’un <strong>savoir-faire</strong> solide sur la <strong>maintenance des bases MySQL</strong> : en particulier la capacité à <strong>sauvegarder</strong> correctement des bases <strong>importantes</strong> (volumétrie, criticité métier), et surtout à pouvoir les <strong>restaurer</strong> de manière fiable en exploitation.</p><p>À l’<strong>INPI</strong>, nous avons <strong>beaucoup étudié</strong> des sujets avancés dans le <strong>MCO MySQL</strong> : <strong>haute disponibilité</strong>, <strong>performance</strong>, <strong>sécurité</strong> et <strong>sauvegarde</strong>.</p><p><strong>Historiquement</strong>, le parc incluait aussi des bases <strong>MaxDB</strong> en complément de <strong>MySQL</strong> : <a href=\"https://en.wikipedia.org/wiki/MaxDB\" target=\"_blank\" rel=\"noopener noreferrer\">MaxDB</a> (moteur SAP, héritage de l’écosystème applicatif de l’époque).</p>"
        },
        {
          "title": "Évolution SI — SQL actif-actif (Galera, ProxySQL) et stockage (S3, Ceph)",
          "html": true,
          "body": "<p>Plus tard dans l’<strong>évolution du système d’information</strong>, pour des architectures <strong>plus solides et plus performantes</strong>, nous avons étudié la mise en place de <strong>SQL actif-actif</strong> : notamment des <strong>clusters MySQL Galera</strong> avec <strong>ProxySQL</strong> en couche d’accès : <a href=\"https://proxysql.com/\" target=\"_blank\" rel=\"noopener noreferrer\">ProxySQL</a>.</p><p>Nous avons aussi étudié les <strong>futures solutions de stockage</strong> : <strong>stockage objet</strong> exposé via le <strong>protocole S3</strong>, et <strong>installation de clusters Ceph</strong>.</p>"
        },
        {
          "title": "Conteneurs et orchestration (Docker, Kubernetes, Rancher)",
          "html": true,
          "body": "<p>Nous avons évidemment commencé à <strong>migrer</strong> et à <strong>déployer des applications sous conteneurs</strong> avec <strong>Docker</strong>, et à étudier l’<strong>orchestration</strong> avec <strong>Kubernetes</strong> ; la <strong>première approche</strong> est passée par <strong>Rancher</strong> : <a href=\"https://www.rancher.com/\" target=\"_blank\" rel=\"noopener noreferrer\">Rancher</a>.</p>"
        },
        {
          "title": "Intégration continue — Jenkins, Git, Ansible",
          "html": true,
          "body": "<p>Nous avons aussi mis en place des <strong>solutions d’intégration continue</strong> — ou du moins les <strong>socles</strong> pour les porter : installation de <strong>Jenkins</strong> (<a href=\"https://www.jenkins.io/\" target=\"_blank\" rel=\"noopener noreferrer\">Jenkins</a>) <strong>branché</strong> sur <strong>Git</strong>, et les <strong>premiers playbooks Ansible</strong>.</p>"
        },
        {
          "title": "Automatisation et industrialisation (Go, JavaScript, React)",
          "html": true,
          "body": "<p>Sur les volets <strong>automatisation</strong> et <strong>industrialisation</strong>, j’ai réalisé des <strong>développements</strong> en <strong>Go</strong>, en <strong>JavaScript</strong> et avec le framework <strong>React</strong> : <a href=\"https://react.dev/\" target=\"_blank\" rel=\"noopener noreferrer\">React</a>.</p>"
        },
        {
          "title": "Supervision et alertes sur les journaux (Nagios, Centreon, Prometheus / Grafana, Graylog, Elastic)",
          "html": true,
          "body": "<p>Le socle de <strong>supervision</strong> était d’abord <strong>Nagios</strong>. Nous avons ensuite <strong>migré vers Centreon</strong>, puis, plus tard, vers une stack <strong>Prometheus</strong> et <strong>Grafana</strong> — en complément de <strong>Centreon</strong> (cohabitation et périmètres selon les besoins). Nous avons aussi exploré les <strong>alertes basées sur les logs</strong> avec <strong>Graylog</strong> : <a href=\"https://graylog.org/\" target=\"_blank\" rel=\"noopener noreferrer\">Graylog</a> — gestion centralisée des journaux et corrélation pour l’exploitation.</p><p>La création de <strong>tableaux de bord</strong> avec <strong>Grafana</strong> a permis de <strong>compléter</strong> les tableaux de bord <strong>techniques</strong> par un tableau de bord <strong>technico-fonctionnel</strong> de <strong>production</strong>.</p><p>À l’<strong>INPI</strong>, nous avons aussi utilisé l’écosystème <strong>Elastic</strong> autour d’<strong>Elasticsearch</strong> pour <strong>centraliser les logs applicatifs</strong>, avec <strong>Logstash</strong> (pipelines) et les <strong>modules Filebeat</strong> pour la collecte : <a href=\"https://www.elastic.co/elastic-stack\" target=\"_blank\" rel=\"noopener noreferrer\">Elastic Stack</a>.</p>"
        },
        {
          "title": "Agents et métrologie Java — Tomcat, JMX",
          "html": true,
          "body": "<p>Au niveau des <strong>agents</strong> et de l’exposition des métriques applicatives : une grande partie du parc était en <strong>Java</strong> servie par <strong>Apache Tomcat</strong> (dont <strong>Tomcat 4</strong> sur une partie du périmètre à l’époque). Nous avons utilisé le <strong>protocole JMX</strong> (<em>Java Management Extensions</em>) pour superviser et instrumenter les JVM et les composants serveur : <a href=\"https://docs.oracle.com/javase/tutorial/jmx/\" target=\"_blank\" rel=\"noopener noreferrer\">Oracle — tutoriel JMX</a>.</p>"
        },
        {
          "title": "Proactivité — jobs de vérification Selenium (production)",
          "html": true,
          "body": "<p>Pour <strong>renforcer la proactivité</strong> sur la <strong>résolution d’incidents</strong>, nous avons mis en place des <strong>jobs de vérification</strong> avec <strong>Selenium</strong> : <a href=\"https://www.selenium.dev/\" target=\"_blank\" rel=\"noopener noreferrer\">Selenium</a>, afin de <strong>tester automatiquement les services en production</strong> (parcours critiques / contrôles de bout en bout).</p>"
        },
        {
          "title": "Sécurité — Cyberwatch",
          "html": true,
          "body": "<p><strong>À l’INPI</strong>, <strong>dans le cadre du CODIR informatique</strong>, <strong>j’ai lancé le projet d’installation de <a href=\"https://www.cyberwatch.com/\" target=\"_blank\" rel=\"noopener noreferrer\">Cyberwatch</a></strong> pour <strong>améliorer la sécurité des installations Linux</strong> : gestion des vulnérabilités et contrôle de conformité sur le système d’information. L’établissement a été <strong>parmi les premiers</strong> à déployer la plateforme.</p><p>J’ai <strong>accompagné</strong> ce déploiement pour la <strong>conformité</strong> vis-à-vis des <strong>référentiels de sécurité</strong> (cartographie des exigences, preuves et suivi des écarts).</p>"
        },
        {
          "title": "Infrastructure, salles informatiques et PRI / PRA (VMware Site Recovery)",
          "html": true,
          "body": "<p>Au niveau de l’<strong>infrastructure</strong>, nous avons <strong>migré de salles informatiques à trois reprises</strong> pour <strong>toute la production</strong>.</p><p>Après ces chantiers, la <strong>sécurité et la continuité d’exploitation</strong> se sont largement appuyées sur la <strong>virtualisation VMware</strong>, en particulier sur la capacité à déplacer ou répliquer les <strong>machines virtuelles</strong> d’un <strong>datacenter à un autre</strong> via <strong>VMware Site Recovery Manager</strong> : <a href=\"https://www.vmware.com/products/site-recovery-manager.html\" target=\"_blank\" rel=\"noopener noreferrer\">VMware — Site Recovery Manager</a> (PRA / réplication inter-sites).</p><p><strong>C’est moi qui ai mis en place</strong> le dispositif de <strong>plan de reprise informatique</strong> (<strong>PRI</strong>) et le volet <strong>PRA</strong> associé, avec <strong>VMware Site Recovery Manager</strong> : <strong>mise à jour du tableau de production</strong> (inventaire et criticité), définition de l’<strong>ordre d’importance</strong> des systèmes pour les bascules, et arbitrage sur ce qui devait être <strong>intégré pleinement au PRA</strong> (réplication, orchestration avec Site Recovery) ou <strong>laissé hors périmètre</strong>.</p>"
        },
        {
          "title": "SAN — hôtes physiques et accès (iSCSI, Fibre Channel, NFS)",
          "html": true,
          "body": "<p>À l’<strong>INPI</strong>, j’ai dû <strong>piloter le lien</strong> entre les <strong>hôtes physiques</strong> et le <strong>SAN</strong>. Plusieurs technologies ont été mises en œuvre : <strong>iSCSI</strong> sur <strong>câble Ethernet</strong>, <strong>Fibre Channel</strong>, et <strong>NFS</strong> pour les usages adaptés au partage de fichiers sur le réseau.</p><p>J’ai aussi eu l’occasion d’exploiter des <strong>SAN HP</strong>, notamment des baies <strong>HP 3PAR</strong> : <a href=\"https://www.hpe.com/fr/fr/storage/3par.html\" target=\"_blank\" rel=\"noopener noreferrer\">HPE 3PAR</a>. Pour le <strong>plan de reprise informatique</strong> (<strong>PRI</strong>) avec <strong>VMware Site Recovery Manager</strong>, il était indispensable que le <strong>stockage</strong> soit <strong>compatible</strong> avec la réplication et l’orchestration inter-sites VMware.</p>"
        },
        {
          "body": "MCO de larges parcs Linux (+500 VMs en phase mature) : CentOS, Red Hat, SUSE ; supervision : évolution Nagios → Centreon → Prometheus/Grafana (avec Centreon en complément) ; alerting logs (Graylog, Elasticsearch / Logstash / Filebeat) ; intégration Apache, Tomcat, PHP, MySQL/Galera, MaxDB, Oracle ; Dollar Universe ; automatisation (bash, Python, Go, Java, PHP, Selenium, AutoIt, Node, React) ; stockage NFS, SAN HP 3PAR, Ceph, NetApp, Samba ; support niveau 2."
        },
        {
          "title": "Projets",
          "body": "Virtualisation VMware vSphere 5.5, PRA (VMware Site Recovery Manager, réplication inter-datacenters), évolution stockage (Ceph, Cassandra, S3), Puppet et Ansible, réflexion cloud / conteneurs / OpenStack, trois migrations de salles informatiques pour la production."
        },
        {
          "title": "Synthèse du périmètre — Linux, mise en production, scripts",
          "html": true,
          "body": "<p>Mon travail à l’<strong>INPI</strong> m’a permis d’intervenir sur un <strong>large périmètre</strong> : <strong>installation</strong> et <strong>maintenance</strong> des <strong>machines physiques</strong> ; <strong>hébergement</strong> via la <strong>virtualisation</strong> ; <strong>infrastructure de stockage</strong> ; puis <strong>installation</strong> et <strong>MCO</strong> des <strong>services en production</strong> — complété par les <strong>choix et évolutions</strong> du socle <strong>Linux</strong>, les <strong>mises en production</strong>, les <strong>retours arrière</strong> et les <strong>scripts d’exploitation</strong> pour le run (dans un SI où Unix et autres environnements coexistaient encore).</p><p>Sur la <strong>chronologie</strong>, nous avions déjà <strong>réussi l’ensemble</strong> de l’<strong>automatisation</strong> et de la <strong>normalisation</strong> du périmètre <strong>avant</strong> l’arrivée d’<strong>Ansible</strong> et de <strong>Puppet</strong>, qui sont venus ensuite <strong>compléter</strong> le dispositif.</p><p>Mon expérience à l’<strong>INPI</strong> m’a permis de consolider une <strong>expérience validée et profonde</strong> de la <strong>production informatique</strong> sur des <strong>environnements critiques</strong>. J’y ai porté une attention particulière aux <strong>bonnes pratiques</strong> pour <strong>conduire les mises en production</strong> : préparation poussée et <strong>plans de retour arrière</strong> systématiques.</p>"
        },
        {
          "title": "Contexte (chronologie)",
          "body": "Agence publique, DSI ~40 agents, +500 postes Windows. Production applicative Java/PHP, Apache, MySQL ; administration SUSE, Red Hat ; +20 hôtes ESX (HP DL560) ; Dollar Universe, scripts Bash/Python ; 3 baies SAN HP 3PAR (~180 To) ; deux salles (production et développement). Assistance aux projets technico-fonctionnels, migration vers VMware, PRA, normalisation de l'infrastructure."
        }
      ]
    },
    {
      "sortOrder": 6,
      "period": "2007 — 2010",
      "location": "Saint-Cloud",
      "role": "Senior support consultant & integrator",
      "organization": "Sungard Group — Global Portfolio 3 / Asset Management (Neoxam)",
      "highlights": [
        {
          "tag": "Global Portfolio 3 (GP3)",
          "title": "Near-monopoly of asset management in France",
          "body": "Flagship product alongside notably: Société Générale, Crédit Agricole, Banque Populaire network, Caisse des dépôts, State Street, Allianz, MMA, CNP Assurances, in addition to actors already widely deployed on GP3 (CACEIS, Natixis, Covéa, CM-CIC, etc.) — in France and internationally. A rare exposure to the demands of financial actors."
        },
        {
          "tag": "OpenVMS · runtime Unix",
          "title": "Porting a VMS legacy to Unix",
          "body": "GP3 historically ran on OpenVMS; for sale on Unix, a specific runtime hosted VMS code and screens on HP-UX, Solaris, AIX, Linux. Very few engineers worked on this kind of now-gone migration."
        },
        {
          "tag": "Bamboo · SVN",
          "title": "Continuous integration before the Git era",
          "body": "One of the first teams to industrialise continuous integration with Atlassian Bamboo, on Subversion-versioned code, with fine-grained qualification on Red Hat, AIX and Solaris. CI know-how predating the Jenkins/Git generalisation."
        },
        {
          "tag": "Méthode d’analyse d’incidents",
          "title": "Complex diagnostics in critical environments",
          "body": "Handling incidents hard to locate: file descriptor exhaustion, HTTP flow modification by a proxy quietly added by a network team — without direct production access. A real expert support school."
        }
      ],
      "sections": [
        {
          "html": true,
          "body": "<p>Après l’expérience à l’UCAD, mission chez Sungard (une partie de l’offre GP3 existe aujourd’hui sous la marque Neoxam) : produit phare <strong>Global Portfolio 3</strong> (GP3), solution de gestion d’actifs (asset management) pour banques et assureurs. Part très importante du marché : en France, la quasi-totalité des banques et assureurs actifs en asset management utilisaient la solution ; clients aussi à l’étranger (États-Unis, Allemagne, perspective internationale incluant la Chine à l’époque). Société d’environ 500 salariés, déploiements Unix (HP, AIX, Solaris, Linux…).</p><p>Mon travail chez <strong>Sungard</strong> m’a appris à intervenir sur des <strong>environnements critiques</strong> dans un <strong>contexte à forte pression</strong> (exigence des acteurs financiers, délais serrés, enjeux de production).</p>"
        },
        {
          "title": "Références clients (exemples)",
          "body": "Parmi les clients ou périmètres côtoyés chez Sungard, notamment : Société Générale, Crédit Agricole, Banque Populaire, Caisse des dépôts, State Street, Allianz, MMA, CNP Assurances, ainsi que CACEIS, Natixis, Covéa, CM-CIC (Crédit Mutuel / CIC) et d’autres grands comptes asset management — liste non exhaustive, selon missions et filiales."
        },
        {
          "title": "Projets transverses, filiales & messagerie (JMS)",
          "body": "Référent sur les projets transverses : Sungard était un groupe possédant plusieurs filiales, dont une SSII — Décalog (services / intégration). Ces projets mobilisaient plusieurs entités pour faire circuler des informations entre logiciels métiers, en s’appuyant notamment sur des bus de messagerie et des mécanismes de type JMS (Java Message Service)."
        },
        {
          "title": "International & mobilité",
          "body": "Collaboration avec des correspondants allemands et déplacement professionnel en Allemagne — premier déplacement à l’étranger dans ce cadre. La société ambitionnait aussi de se développer sur des marchés internationaux, en particulier la Chine. Aux États-Unis, périmètres incluant notamment State Street (banque / services financiers)."
        },
        {
          "title": "Produit : héritage VMS, portage Unix, Java & Tomcat",
          "html": true,
          "body": "<p>La base historique reposait sur <strong>OpenVMS</strong>. Pour poursuivre la vente sur Unix, l’éditeur avait mis en place un <strong>runtime</strong> / socle d’exécution permettant d’héberger code et composants issus du monde VMS sur Unix. Développement surtout sous <strong>Linux</strong>, puis compilation et livraison vers les plateformes clients <strong>HP-UX</strong>, <strong>Solaris</strong>, <strong>AIX</strong>. Les services étaient exposés via <strong>Apache Tomcat</strong> ; une couche <strong>Java</strong> reprenait les anciens écrans, frames et masques « verts » VMS pour une interface Java. Pile effective : <strong>Java</strong>, <strong>Python</strong>, avec prolongement du patrimoine <strong>VMS</strong>.</p>"
        },
        {
          "title": "Intégration, support applicatif & Atlassian",
          "html": true,
          "body": "<p>Première expérience structurante en intégration logicielle et support applicatif : montée en compétence sur la résolution d’incidents applicatifs en environnement client critique. Avant Jira, le suivi des anomalies et demandes s’appuyait sur <a href=\"https://mantisbt.org/\" target=\"_blank\" rel=\"noopener noreferrer\">MantisBT</a> (bug tracker open source). Ensuite, passage à la suite Atlassian en premières versions — Jira, Confluence et Bamboo — pour piloter le cycle de vie du produit, la documentation et les recettes.</p>"
        },
        {
          "title": "SVN, Bamboo & qualification plateformes",
          "body": "À l’époque, Git n’était pas encore l’outil de référence dans nos chaînes — le source était versionné avec Subversion (SVN). L’équipe était parmi les premières à industrialiser de l’intégration continue via Bamboo, en particulier pour enchaîner la recette qualité. Les builds étaient qualifiés sur des plateformes très précises — Red Hat Enterprise Linux, IBM AIX, Oracle Solaris — avec des versions majeures et mineures du système strictement cadrées."
        },
        {
          "title": "Performance applicative",
          "body": "Périmètre personnel sur les sujets de performance du logiciel : lorsque le client constatait des lenteurs ou que « le logiciel était trop lent », j’étais chargé du diagnostic et du traitement de ces dossiers. J’avais défini une méthode d’analyse structurée pour investiguer (reproduction, mesures, identification des goulots d’étranglement, pistes de correction côté applicatif et plateforme)."
        },
        {
          "title": "Diagnostics difficiles — file descriptors, proxy HTTP (réseau)",
          "html": true,
          "body": "<p>Chez <strong>Sungard</strong>, il a fallu traiter des problèmes <strong>difficiles à détecter et à localiser</strong> — par exemple des incidents liés aux <strong>file descriptors</strong> sur des <strong>composants fortement sollicités</strong>, ou une <strong>modification du flux HTTP</strong> par un <strong>proxy</strong> ajouté par une <strong>équipe réseau</strong> dans un <strong>environnement critique</strong>, avec peu d’indices applicatifs visibles immédiatement.</p>"
        },
        {
          "title": "Outillage d’analyse & automatisation",
          "body": "Pour outiller les analyses (performance et autres investigations), scripts en Python et en shell ; développement de tableaux de bord avec Django. Automatisation de traitements sur documents en VBA (Visual Basic for Applications), puis passage à VB.NET pour fiabiliser et faire évoluer ces chaînes."
        },
        {
          "title": "Support & contraintes d’exploitation",
          "html": true,
          "body": "<p>Poste très exigeant : équipe support sous forte pression, sans accès systématique à la production — il fallait donc cerner un problème au mieux à partir d’informations partielles pour orienter et dépanner les équipes d’exploitation. Rythme soutenu. Les intégrations et livraisons vers la production restaient particulièrement délicates.</p><p>Nous avons dû <strong>mettre en place des méthodes d’analyse d’incidents</strong> : <strong>communication</strong> avec le <strong>client</strong>, <strong>analyse des journaux</strong>, <strong>vérifications minutieuses</strong> — nous sommes ainsi devenus de véritables <strong>experts support</strong>.</p>"
        },
        {
          "title": "Missions",
          "body": "Intégration des composants sur Unix ; support et TMA auprès des banques et assurances ; outils de support (VB .NET, Python) ; participation aux projets inter-filiales et aux nouvelles versions."
        }
      ]
    },
    {
      "sortOrder": 7,
      "period": "2006 — 2007",
      "location": "Paris",
      "role": "Computing engineer",
      "organization": "UCAD — Union centrale des arts décoratifs (museum)",
      "highlights": [
        {
          "tag": "LTSP · PXE · diskless",
          "title": "Thin clients — Linux Terminal Server (LTSP)",
          "body": "Use of the LTSP project (Linux Terminal Server Project, ltsp.org) for thin clients netbooted from a master image on the server — complemented by PXE, MAC-based profiles, diskless workstations and NFS mounts from the central infrastructure. Ideal to recycle low-spec hardware as plain terminals."
        },
        {
          "tag": "DD-WRT · Linksys WRT54G",
          "title": "Free firmware on Wi-Fi router",
          "body": "Replaced the manufacturer's firmware on Linksys WRT54G routers with DD-WRT, a cult open project of the networking community — to gain operational capability and simplify the museum's Wi-Fi maintenance."
        },
        {
          "tag": "Compilation noyau Linux",
          "title": "Mastering the system end-to-end",
          "body": "Iterated kernel compilations to make Linux work on \"end-of-life\" hardware: specific drivers, slimming (CPU, RAM, disk). A skill that has become exceptionally rare today."
        },
        {
          "tag": "GLPI · OCS Inventory",
          "title": "Custom plugin for full inventory",
          "body": "In the early days of GLPI and OCS Inventory, built a plugin to feed GLPI from OCS reports — a pioneer on open source ITSM well before it became a standard."
        }
      ],
      "sections": [
        {
          "body": "Institution muséale, +300 salariés. Parc mixte : postes de travail Windows et postes Linux ; serveurs Linux (production Debian, etc.) et stack Windows/Novell. Pas encore d’Active Directory : l’institution reposait sur Novell, dont l’annuaire (NDS / eDirectory) centralisait utilisateurs et ressources — l’équivalent fonctionnel antérieur à l’écosystème AD dans ce type d’infrastructure. MCO serveurs Windows et Novell, Solaris ; support bureautique niveau 1 et production niveau 2."
        },
        {
          "title": "Contexte — recyclage Windows → Linux",
          "html": true,
          "body": "<p>Pour <strong>revenir en arrière</strong> à l’époque où j’étais à l’<strong>UCAD</strong>, l’un des points les plus <strong>remarquables</strong> était le <strong>recyclage</strong> des anciennes machines <strong>abandonnées</strong> ou jugées <strong>obsolètes sous Windows</strong> : les nouvelles générations de Windows <strong>exigent toujours plus</strong> de puissance, alors que des installations sous <strong>Linux</strong> permettaient de <strong>réutiliser le matériel existant</strong> et de prolonger le service <strong>à moindre frais</strong>.</p><p>Expérience marquante dans l’ensemble du mandat : remettre à niveau un parc longtemps délaissé avec très peu de moyens ; les alternatives <strong>open source</strong> ont aussi permis de remplacer des logiciels propriétaires à coût de licence quasi nul, tout en évitant de mettre au rebut du matériel encore exploitable.</p>"
        },
        {
          "title": "Site distant & portables recyclés",
          "body": "Avec des budgets serrés, il fallait optimiser tout le parc et recycler au maximum. Les portables étaient encore très chers ; peu de collaborateurs en avaient un — le standard restait la tour sous le bureau. Pour équiper un site distant et permettre aux équipes de réaliser des inventaires dans les réserves du musée, nous avons récupéré d’anciens ordinateurs portables, à peine assez puissants pour faire tourner Linux avec une stack graphique légère (X11), puis le client Citrix pour accéder aux applications métier en mode bureau distant. L’association Linux + Citrix permettait de donner au personnel une expérience de poste de travail exploitable avec très peu de ressources locales."
        },
        {
          "title": "Debian, noyau & pilotes (matériel recyclé)",
          "html": true,
          "body": "<p>Pour <strong>arriver à ce résultat</strong> (fait tourner des machines « bout de course » sous Linux), il a fallu <strong>maîtriser l’ensemble des composantes</strong> du système Linux et, au premier chef, la <strong>compilation du noyau</strong> : <strong>itérations</strong> successives — compiler <strong>encore et encore</strong> jusqu’à obtenir une installation <strong>suffisante</strong> (stable et utilisable) sur le matériel cible.</p><p>Un <strong>effort considérable</strong> est aussi allé à la <strong>compatibilité matérielle</strong> : le support n’était pas encore homogène comme aujourd’hui, peu de pilotes vraiment génériques dans les noyaux standards ; traque de pilotes adaptés, <strong>recompilation</strong> pour du matériel très spécifique, et recompilation pour <strong>alléger</strong> le noyau (RAM, CPU, disque) en retirant les modules inutiles. Base essentiellement <strong>Debian</strong>.</p><p>À l’époque, je m’étais beaucoup appuyé sur la <strong>documentation</strong> et la <strong>formation</strong> qu’<strong>Alexis Delattre</strong> mettait <strong>librement</strong> à disposition sur Internet : <a href=\"https://linux.bouzzi.com/fichiers/FormationLinux.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">Formation Linux (PDF) — linux.bouzzi.com</a>.</p>"
        },
        {
          "title": "Affichage graphique — interfaces et configurations optimisées",
          "html": true,
          "body": "<p>À l’<strong>UCAD</strong>, j’ai aussi dû <strong>étudier</strong> les <strong>interfaces graphiques</strong> — ou du moins <strong>toute la chaîne de composants</strong> nécessaire à l’<strong>affichage graphique</strong> sous Linux — puis <strong>choisir</strong> et <strong>configurer</strong> les combinaisons les plus <strong>optimisées</strong> possibles pour qu’elles restent <strong>tenables sur du matériel peu puissant</strong> (parc recyclé), tout en restant compatibles avec l’usage bureautique.</p>"
        },
        {
          "title": "Contrôle et bureau à distance (VNC, RDP, NX Server)",
          "html": true,
          "body": "<p>J’ai aussi dû <strong>étudier</strong> les solutions de <strong>contrôle à distance</strong> et de <strong>bureau à distance</strong> : <strong>VNC</strong>, <strong>RDP</strong> (Remote Desktop Protocol) et <strong>NX Server</strong> / <a href=\"https://www.nomachine.com/\" target=\"_blank\" rel=\"noopener noreferrer\">NoMachine (NX)</a> — pour l’assistance, l’accès aux postes distants et l’exploitation d’un parc <strong>Windows / Linux</strong> hétérogène.</p>"
        },
        {
          "title": "Compilation depuis les sources (Apache, SSL, modules)",
          "body": "Il n’était pas rare de devoir compiler nous-mêmes des logiciels plutôt que de nous limiter aux paquets fournis : pour plusieurs briques, le packaging n’était pas encore assez abouti. C’était souvent le cas pour les serveurs Apache, les bibliothèques SSL/TLS et les différents modules Apache associés (mod_ssl, etc.)."
        },
        {
          "title": "Proxy Squid et miroir local de paquets (Apache)",
          "html": true,
          "body": "<p>À l’<strong>UCAD</strong>, j’avais installé un <strong>serveur proxy Squid</strong> : <a href=\"http://www.squid-cache.org/\" target=\"_blank\" rel=\"noopener noreferrer\">Squid</a> — pour sécuriser et fluidifier les accès Internet lors des <strong>installations de logiciels</strong>. Nous utilisions en parallèle un <strong>miroir local</strong> des <strong>paquets</strong> d’installation, exposé sous <strong>Apache</strong> (<a href=\"https://httpd.apache.org/\" target=\"_blank\" rel=\"noopener noreferrer\">HTTP Server</a>), afin de limiter la bande passante sortante et d’accélérer les déploiements sur le parc.</p>"
        },
        {
          "title": "Sauvegardes",
          "html": true,
          "body": "<p>La sauvegarde sur <strong>bande</strong> était assurée par <a href=\"https://www.bacula.org/\" target=\"_blank\" rel=\"noopener noreferrer\">Bacula</a> (pools, jobs, lecteurs…). La sauvegarde sur <strong>disque</strong> reposait sur <a href=\"https://backuppc.github.io/backuppc/\" target=\"_blank\" rel=\"noopener noreferrer\">BackupPC</a> — solution libre de sauvegardes incrémentelles vers stockage disque, complémentaire à la partie magnétique.</p>"
        },
        {
          "title": "Messagerie",
          "html": true,
          "body": "<p>Le socle messagerie : <strong>Postfix</strong> (MTA) avec accès <strong>IMAP</strong> pour les clients lourds, et <strong>webmail</strong> via <a href=\"https://www.squirrelmail.org/\" target=\"_blank\" rel=\"noopener noreferrer\">SquirrelMail</a> pour l’accès dans le navigateur.</p>"
        },
        {
          "title": "Périmètre réseau (Linux & iptables)",
          "body": "Il n’y avait pas encore d’appliance pare-feu dédiée : une machine Linux tenait lieu de pare-feu ; la configuration passait par iptables pour filtrer et piloter l’ensemble du trafic réseau du musée."
        },
        {
          "title": "DNS (BIND)",
          "html": true,
          "body": "<p>Le service DNS était assuré par <strong>BIND</strong> (<a href=\"https://www.isc.org/bind/\" target=\"_blank\" rel=\"noopener noreferrer\">Berkeley Internet Name Domain</a>), tel que maintenu par l’ISC.</p>"
        },
        {
          "title": "Wi-Fi : Linksys WRT54G & DD-WRT",
          "html": true,
          "body": "<p>Pour l’accès sans fil, utilisation de routeurs <a href=\"https://fr.wikipedia.org/wiki/WRT54G\" target=\"_blank\" rel=\"noopener noreferrer\">Linksys WRT54G</a>. Pour maximiser la capacité d’exploitation et simplifier la maintenance, le firmware constructeur a été remplacé par le projet libre <a href=\"https://fr.wikipedia.org/wiki/DD-WRT\" target=\"_blank\" rel=\"noopener noreferrer\">DD-WRT</a>.</p>"
        },
        {
          "title": "Sécurité, recyclage : LTSP, PXE & postes diskless",
          "html": true,
          "body": "<p>Pour les <strong>postes légers</strong>, je m’étais notamment appuyé sur <strong>LTSP</strong> — <a href=\"https://ltsp.org/\" target=\"_blank\" rel=\"noopener noreferrer\">Linux Terminal Server Project</a> — qui permet de faire démarrer les clients sur le LAN depuis une <strong>installation modèle</strong> sur le serveur (image/chroot), avec iPXE, DHCP/TFTP et root en squashfs/NFS : entretenir des dizaines de stations diskless comme un seul poste.</p><p>J’ai aussi <strong>étudié et mis en place</strong> le <strong>boot à distance</strong> via <strong>PXE</strong> et des déploiements <strong>diskless</strong> (sans disque dur local) : on <strong>manquait souvent de disques</strong> sur le matériel récupéré, et ce modèle permettait de n’avoir côté poste que de <strong>simples terminaux</strong> — système et données servis depuis l’infrastructure centrale.</p><p>Chaîne PXE opérationnelle (menu de boot, profils par <strong>adresse MAC</strong>, redéploiement à distance) pour <strong>sécuriser la remise en service</strong> du parc et prolonger le <strong>recyclage</strong> ; montages d’arborescences via <strong>NFS</strong> pour les postes diskless.</p>"
        },
        {
          "title": "Matériel, vidéo et kiosques",
          "html": true,
          "body": "<p>Le parc n’était pas très puissant : les machines les plus récentes étaient des <strong>Intel Pentium 4</strong>, à peine suffisantes pour la lecture vidéo. On travaillait surtout en <strong>MPEG-1</strong> et <strong>MPEG-2</strong> ; le H.264 / MP4 n’était pas encore la norme sur ce type de poste.</p><p><a href=\"http://www.videolan.org/\" target=\"_blank\" rel=\"noopener noreferrer\">VideoLAN</a> existait déjà, mais n’était pas le plus léger sur ce matériel. Le lecteur le plus frugal et optimisé pour nos usages était <a href=\"http://www.mplayerhq.hu/design7/news.html\" target=\"_blank\" rel=\"noopener noreferrer\">MPlayer</a>.</p><p>Dans les salles du musée, <strong>kiosques</strong> sur mesure : postes <strong>Linux</strong> lançant un navigateur (affichage plein écran), avec verrouillage des <strong>touches de fonction</strong> et des raccourcis pour empêcher l’utilisateur de sortir du parcours prévu. Postes dédiés à la lecture vidéo et autres dédiés à l’affichage de sites <strong>intranet</strong>.</p>"
        },
        {
          "title": "Gestion des collections (Mobidoc)",
          "body": "Pour la gestion des œuvres et du fonds muséal, le logiciel métier était Micro Musée, édité par la société Mobidoc ; à l’époque, aucun équivalent open source ne permettait de couvrir le besoin de façon satisfaisante."
        },
        {
          "title": "Déploiement & migrations",
          "html": true,
          "body": "<p>Les déploiements couvraient le poste Windows (réinstallation massive sous délais serrés) et la partie Linux du parc (postes et serveurs). Pour Windows, l’habitude était l’image disque avec <strong>Symantec Ghost</strong> et des masters sur l’infrastructure Novell — peu souple. Nous avons expérimenté <a href=\"https://unattended.sourceforge.net/\" target=\"_blank\" rel=\"noopener noreferrer\">Unattended</a> pour des installations automatisées et paramétrables, en complément des méthodes rigides par clone.</p><p>Première expérience marquante en <strong>automatisation</strong> : les chaînes Unattended reposaient sur de nombreux scripts mélangeant <strong>shell</strong>, <strong>Perl</strong> et <a href=\"https://www.autoitscript.com/site/\" target=\"_blank\" rel=\"noopener noreferrer\">AutoIt</a> — langage dédié au pilotage de l’interface Windows (fenêtres, frappes clavier, mouvements de souris) pour fiabiliser les installations, en parallèle de la préparation de <strong>paquets MSI</strong> et de déploiements silencieux.</p><p>Côté bureautique et fichiers : migration vers Samba pour le partage (Windows XP / NT4 / 2000), cohabitant avec l’annuaire Novell ; rationalisation des lecteurs CD.</p><p>Les débuts de <strong>GLPI</strong> et de l’<strong>OCS Inventory</strong> (serveur) sur le site : réalisation d’un <strong>plugin</strong> pour alimenter GLPI à partir des remontées OCS, ce qui a permis d’obtenir un <strong>inventaire complet</strong> et exploitable de tout le parc.</p><p>À l’époque, peu d’institutions avaient encore généralisé un <strong>système de tickets</strong> pour les incidents ; il a été décidé d’adopter <a href=\"https://www.request-tracker.fr/\" target=\"_blank\" rel=\"noopener noreferrer\">Request Tracker (RT)</a>, logiciel libre de gestion d’incidents et de suivi d’actions.</p>"
        },
        {
          "title": "Documentation",
          "html": true,
          "body": "<p>La documentation technique et procédurale a été rédigée en <strong>LaTeX</strong> (<a href=\"https://www.latex-project.org/\" target=\"_blank\" rel=\"noopener noreferrer\">LaTeX Project</a>), pour des livrables structurés, révisables et export PDF.</p>"
        }
      ]
    },
    {
      "sortOrder": 1.5,
      "period": "Occasional (2024 — 2025)",
      "location": "France",
      "role": "Support assignments",
      "organization": "Enedis, Fayat IT",
      "highlights": [
        {
          "tag": "Linux temps réel",
          "title": "Test bench for Enedis",
          "body": "Designed a test bench to verify the chaining between Linux and a real-time application — a sharp topic at the French electricity network operator."
        },
        {
          "tag": "Migration Linux → Windows",
          "title": "Application reversibility at Fayat IT",
          "body": "Rare intervention: migrating a piece of software from Linux to Windows — the opposite of the usual move. Requires fine knowledge of both worlds."
        }
      ],
      "sections": [
        {
          "title": "Enedis — Jan 2025",
          "html": true,
          "body": "<p>Designed a <strong>test bench</strong> for <strong>real-time software</strong>: verified the <strong>chaining</strong> between <strong>Linux</strong> and the <strong>real-time application</strong>.</p>"
        },
        {
          "title": "Fayat IT — Jan 2024",
          "html": true,
          "body": "<p>Worked on the <strong>migration of a piece of software</strong> from the <strong>Linux</strong> environment to <strong>Windows</strong>.</p>"
        }
      ]
    },
    {
      "sortOrder": 1.55,
      "period": "Since 2005",
      "location": "France",
      "role": "IT support (family-run business)",
      "organization": "RYC — business support",
      "highlights": [
        {
          "tag": "n8n · Claude API",
          "title": "AI agents for document processing",
          "body": "Set up AI agents orchestrated via n8n and Claude (Anthropic) API calls for sorting, recognising and processing invoices and attachments — well beyond plain office IT for an accounting firm."
        },
        {
          "tag": "Ollama · Mistral",
          "title": "Local LLM inference at a small business",
          "body": "First production rollout of local inference of two models via Ollama, based on Mistral LLMs. Very few French small businesses have moved to on-prem sovereign AI."
        },
        {
          "tag": "Sage Coala · Samba",
          "title": "20 years of infrastructure continuity",
          "body": "Uninterrupted maintenance since 2005 of a Windows client + Linux server + Samba shares fleet for the Coala accounting software. Concrete proof of long-term stability."
        }
      ],
      "sections": [
        {
          "html": true,
          "body": "<p>Since <strong>2005</strong>, supporting <strong>RYC</strong>, a <strong>business assistance</strong> structure (advice on <strong>administration</strong>, <strong>pre-accounting</strong> notably with <strong>Sage Coala</strong>).</p><p><strong>IT</strong> and <strong>office</strong> support: <strong>Windows workstations</strong> on the client side; <strong>Linux servers</strong> for infrastructure, with <strong>folder sharing via Samba</strong> — the <strong>Coala software</strong> running on the <strong>Windows workstations</strong>.</p>"
        },
        {
          "title": "Accounting flow automation",
          "html": true,
          "body": "<p>For about <strong>five years</strong>, strong rise in <strong>automation</strong>: <strong>automatic extraction</strong> of <strong>bank statements</strong> and <strong>semi-automatic integration</strong> into the accounting software up to the <strong>posting of accounting entries</strong>.</p><p>Very recently: <strong>automatic extraction of invoices</strong> and <strong>attachments</strong> to <strong>generate accounting entries</strong>, also relying on <strong>bank reconciliation</strong>.</p>"
        },
        {
          "title": "AI, agents and orchestration (very recent)",
          "html": true,
          "body": "<p>The arrival of <strong>AI</strong> opened up <strong>new possibilities</strong>: designing <strong>AI agents</strong>, using <a href=\"https://n8n.io/\" target=\"_blank\" rel=\"noopener noreferrer\">n8n</a> for <strong>document sorting and processing</strong>, calling <strong>APIs</strong> — notably <a href=\"https://www.anthropic.com/claude\" target=\"_blank\" rel=\"noopener noreferrer\">Claude</a> (Anthropic) — for the <strong>recognition</strong> and <strong>processing</strong> of documents, extending the existing automation.</p><p>First experience with <strong>local inference</strong> of <strong>two models</strong> via <a href=\"https://ollama.com/\" target=\"_blank\" rel=\"noopener noreferrer\">Ollama</a> (running on workstation / server), based on <strong>Mistral</strong> LLMs.</p>"
        }
      ]
    },
    {
      "sortOrder": 8,
      "period": "During EPSI program",
      "location": "Paris",
      "role": "Student job — IT support",
      "organization": "DGC — training centre (same group as EPSI)",
      "highlights": [
        {
          "tag": "Norton Ghost · multicast",
          "title": "Re-imaging an entire room",
          "body": "Created Ghost images deployed via multicast to re-image all student workstations (Windows NT 4 then 2000) in a single operation — an advanced fleet administration practice for the time."
        }
      ],
      "sections": [
        {
          "title": "Support and student fleet",
          "html": true,
          "body": "<p>During studies at <strong>EPSI</strong>, student job at <strong>DGC</strong>, a training centre in the <strong>same group</strong> as the school.</p><p><strong>IT support</strong> and <strong>fleet management</strong> of the workstations dedicated to <strong>students</strong>: <strong>Windows NT 4</strong>, then <strong>Windows 2000</strong>. Created <strong>images</strong> with <strong>Ghost</strong> (Symantec / Norton Ghost) and <strong>multicast deployment</strong> to re-image machines regularly; <strong>Windows profile management</strong> (many incidents to handle); <strong>permissions</strong> and <strong>access</strong> for student accounts; <strong>antivirus installation</strong>. Also handled <strong>training software</strong> / <strong>e-learning</strong> deployed on site.</p><p>Also the chance to set up <strong>Linux</strong> on <strong>recycled</strong> hardware to provide <strong>extra workstations</strong> serving site usage.</p>"
        }
      ]
    }
  ],
  "_README": "English overlay over data/site.json. Mirrors the FR structure (same array indices, same keys); only string values that need translation are present. Missing fields fall back to FR."
}