diff --git a/.claude/tasks/TODO.md b/.claude/tasks/TODO.md index 3212ba2..ed5cde7 100644 --- a/.claude/tasks/TODO.md +++ b/.claude/tasks/TODO.md @@ -10,6 +10,24 @@ State of the landing page + CV project. Append-only: keep history readable. - CV `CV_Bastien_Chanot.html` + matching PDF regenerated via weasyprint. - Local serve verified at `http://192.168.1.101:8000/`. +## 2026-05-17 — Extended-vitrine refactor (in progress) + +Align landing with CV + add depth (Projets, Méthode, bullet-format Parcours). + +- [ ] Meta description sync (kernel, AOSP, cloud gaming, GPU) +- [ ] Nav links: add #projets + #methode +- [ ] Hero: titre "Systèmes · Embarqué · Backend", banner "Backend · Cloud" +- [ ] About: expand paragraphs (pourquoi bas niveau / cherche / pas envie) +- [ ] Stack: Langages (Java AOSP, drop Python order, + Familier avec C++) · Conteneurs (- VMware + cgroups/namespaces) · Systèmes (+ SELinux) · DevOps (- Gitflow/Agile, + GitHub Actions) · NEW Cloud/Infra · NEW IA/Outils +- [ ] Parcours: kill "seul"/"responsable unique" — reformuler autonomie+collab +- [ ] CareGame: intro contexte + 9 bullets + stack pills +- [ ] ZenQuality: intro CDI + 3 bullets + stack pills +- [ ] Deewee: dates Fév-Nov 2017 + contract line + 2 bullets + stack pills +- [ ] NEW Projets section (entre Parcours et Formation): Git source + Homelab +- [ ] NEW Méthode section (entre Formation et Contact): 5 points bundle A +- [ ] Contact email → bastien@bchanot.fr +- [ ] CSS extensions: timeline-bullets, timeline-stack, timeline-contract, projects-grid, methode-list + ## Known follow-ups - Visual QA on real mobile device (375 px) — not just emulator. diff --git a/index.html b/index.html index 5a96af8..b05758f 100644 --- a/index.html +++ b/index.html @@ -3,10 +3,10 @@ - + -Bastien Chanot — Développeur Systèmes & Backend +Bastien Chanot — Développeur Systèmes · Embarqué · Backend @@ -470,6 +470,34 @@ border-color: var(--g300); color: var(--g700); } + .pill-context { + opacity: 0.65; + font-weight: 400; + margin-left: 3px; + } + .stack-note { + margin-top: 14px; + padding-top: 12px; + border-top: 1px dashed var(--rule); + font-family: var(--mono); + font-size: 12px; + color: var(--ink-3); + letter-spacing: 0.02em; + display: flex; + align-items: center; + gap: 8px; + flex-wrap: wrap; + } + .stack-note code { + font-family: var(--mono); + font-size: 12px; + font-weight: 500; + color: var(--g700); + background: var(--g050); + border: 1px solid var(--g100); + padding: 2px 8px; + border-radius: var(--r-sm); + } @media (min-width: 768px) { .stack-grid { grid-template-columns: repeat(2, 1fr); } } @media (min-width: 1200px) { .stack-grid { grid-template-columns: repeat(3, 1fr); } } @@ -552,11 +580,132 @@ line-height: 1.6; max-width: 64ch; } + .timeline-contract { + font-family: var(--mono); + font-size: 12px; + color: var(--ink-3); + font-style: italic; + margin-top: -6px; + margin-bottom: 12px; + } + .timeline-intro { + color: var(--ink-2); + line-height: 1.55; + max-width: 64ch; + margin-bottom: 14px; + } + .timeline-bullets { + list-style: none; + display: flex; + flex-direction: column; + gap: 10px; + margin-bottom: 18px; + max-width: 70ch; + } + .timeline-bullets li { + position: relative; + padding-left: 22px; + color: var(--ink-2); + line-height: 1.55; + font-size: 15px; + } + .timeline-bullets li::before { + content: "▸"; + position: absolute; + left: 0; + top: 1px; + color: var(--g500); + font-size: 13px; + line-height: 1.55; + } + .timeline-stack { + margin-top: 4px; + } + .timeline-stack .pill { + font-size: 11px; + padding: 4px 10px; + } + + /* ── PROJETS ── */ + .projets { background: var(--page); } + .projects-grid { + display: grid; + grid-template-columns: 1fr; + gap: 20px; + margin-top: 40px; + } + @media (min-width: 768px) { .projects-grid { grid-template-columns: repeat(2, 1fr); } } + .project-card { + background: #fff; + border: 1px solid var(--rule); + border-radius: var(--r-md); + padding: 24px; + transition: border-color .25s ease, transform .25s ease, box-shadow .25s ease; + display: flex; + flex-direction: column; + } + .project-card:hover { + border-color: var(--g300); + transform: translateY(-2px); + box-shadow: var(--shadow-md); + } + .project-card-head { + display: flex; + align-items: baseline; + justify-content: space-between; + gap: 12px; + margin-bottom: 12px; + padding-bottom: 10px; + border-bottom: 1px dashed var(--rule); + } + .project-card h3 { + font-family: var(--serif); + font-weight: 600; + font-size: 20px; + color: var(--ink-1); + letter-spacing: -0.01em; + } + .project-card-tag { + font-family: var(--mono); + font-size: 11px; + color: var(--g500); + letter-spacing: 0.1em; + flex-shrink: 0; + white-space: nowrap; + } + .project-tagline { + font-family: var(--serif); + font-style: italic; + font-weight: 300; + font-size: 15px; + color: var(--g700); + margin-bottom: 12px; + line-height: 1.4; + } + .project-desc { + color: var(--ink-2); + line-height: 1.6; + font-size: 15px; + margin-bottom: 14px; + } + .project-link { + margin-top: auto; + font-family: var(--mono); + font-size: 13px; + color: var(--g500); + border-bottom: 1px solid transparent; + transition: color .18s ease, border-color .18s ease; + align-self: flex-start; + } + .project-link:hover { + color: var(--g700); + border-bottom-color: var(--g500); + } /* ── FORMATION ── */ - .formation { background: var(--page); } + .formation { background: var(--g050); } .formation .timeline { border-left-color: var(--g100); } - .formation .timeline-item::before { box-shadow: 0 0 0 4px var(--page); } + .formation .timeline-item::before { box-shadow: 0 0 0 4px var(--g050); } .formation-school-desc { font-family: var(--serif); @@ -692,6 +841,61 @@ font-size: 13px; } + /* ── MÉTHODE ── */ + .methode { background: var(--page); } + .methode-list { + list-style: none; + display: grid; + grid-template-columns: 1fr; + gap: 16px; + margin-top: 40px; + max-width: 820px; + } + .methode-item { + display: grid; + grid-template-columns: 56px 1fr; + gap: 20px; + align-items: start; + background: #fff; + border: 1px solid var(--rule); + border-radius: var(--r-md); + padding: 22px 24px; + transition: border-color .25s ease, transform .25s ease, box-shadow .25s ease; + } + .methode-item:hover { + border-color: var(--g300); + transform: translateY(-2px); + box-shadow: var(--shadow-md); + } + .methode-num { + font-family: var(--mono); + font-size: 22px; + font-weight: 700; + color: var(--g500); + letter-spacing: -0.02em; + line-height: 1; + padding-top: 4px; + } + .methode-body h3 { + font-family: var(--serif); + font-weight: 600; + font-size: 19px; + color: var(--ink-1); + letter-spacing: -0.01em; + margin-bottom: 6px; + line-height: 1.25; + } + .methode-body p { + color: var(--ink-2); + line-height: 1.6; + font-size: 15px; + max-width: 64ch; + } + @media (max-width: 640px) { + .methode-item { grid-template-columns: 1fr; gap: 8px; padding: 20px; } + .methode-num { font-size: 18px; padding-top: 0; } + } + /* ── CONTACT ── */ .contact { background: var(--dark); @@ -815,7 +1019,9 @@
  • À propos
  • Stack
  • Parcours
  • +
  • Projets
  • Formation
  • +
  • Méthode
  • Contact
  • @@ -829,7 +1035,7 @@

    Disponible — CDI systèmes / embarqué · missions freelance

    Bastien Chanot

    -

    Développeur confirmé·Systèmes & Backend

    +

    Développeur Systèmes·Embarqué·Backend

    Du kernel Linux au backend Rust — 7 ans de développement systèmes en production.

    @@ -848,7 +1054,7 @@
    C · Rust · Linux Kernel AOSP · Embarqué - Backend · DevOps + Backend · Cloud
    @@ -860,8 +1066,10 @@

    Sept ans à écrire du code qui tourne là où ça compte.

    -

    Je suis développeur systèmes confirmé, formé à l'École 42 et passé par six ans chez CareGame où j'ai écrit des drivers Linux kernel, un backend Rust temps réel et fait tourner des serveurs GPU bare-metal en production.

    +

    Je suis développeur systèmes senior, formé à l'École 42 et passé par six ans chez CareGame où j'ai écrit des drivers Linux kernel, un backend Rust temps réel et fait tourner des serveurs GPU bare-metal en production.

    Mon terrain de jeu : C, Rust, Linux kernel, AOSP, embarqué, infrastructure. Quand un problème touche au bas niveau — port matériel, latence, sécurité, kernel — c'est là que j'apporte le plus de valeur.

    +

    Ce qui m'intéresse, c'est descendre jusqu'à ce qu'il n'y ait plus de magie — kernel, hardware, drivers. Là, soit ça marche, soit ça ne marche pas.

    +

    C'est ce confort-là que je cherche dans une équipe : systèmes, embarqué, backend bas niveau, sur une stack dont on peut lire le code source. Pas envie d'aller vers le buzzword-driven — microservices à tout prix, framework du mois, archi conçue pour le pitch deck.

    Aujourd'hui indépendant sous la marque ZenQuality, mais avant tout en recherche d'un CDI en systèmes embarqués ou logiciel — les missions freelance se font en parallèle.

    Côté présence : full remote idéalement, ou hybride 1 à 2 jours par mois si l'équipe est à Paris. Mobilité visée à moyen terme : Pays de la Loire.

    @@ -897,10 +1105,11 @@
    • C
    • Rust
    • -
    • Java
    • Bash
    • Python
    • +
    • Java(AOSP/Android)
    +

    Familier avec : C++

    @@ -928,7 +1137,8 @@
  • Docker
  • LXC / LXD
  • QEMU
  • -
  • VMware
  • +
  • cgroups
  • +
  • namespaces
  • @@ -955,20 +1165,51 @@
  • AOSP
  • Android Backup
  • systemd
  • +
  • SELinux
  • + + + +
    +
    +

    Cloud / Infra

    + // 06 +
    +
      +
    • AWS EC2
    • +
    • AWS g4dn bare-metal
    • +
    • IAM
    • +
    • S3
    • +
    • CloudWatch
    • +
    • Scaleway VPS
    • +
    • OVH / Hetzner
    • +
    • Nginx
    • +
    • Apache
    • +
    • Let's Encrypt

    DevOps

    - // 06 + // 07
    • Git
    • -
    • GitHub / GitLab
    • -
    • CI / CD
    • -
    • Gitflow
    • -
    • Agile
    • +
    • GitHub Actions
    • +
    • GitLab
    • +
    • CI/CD
    • +
    +
    + +
    +
    +

    IA / Outils

    + // 08 +
    +
      +
    • Claude Code (agents/skills custom)
    • +
    • N8N
    • +
    • automatisation
    @@ -993,7 +1234,23 @@

    ZenQuality

    Développeur indépendant · Systèmes & Backend

    -

    Développement système et embarqué en indépendant. Interventions sur Linux, Rust, kernel et infrastructure critique. Premier contrat : audit SEO et conformité légale pour un client e-commerce (portfolio en construction).

    +

    Indépendant systèmes / embarqué / backend. En recherche prioritaire d'un CDI en parallèle.

    + +
  • @@ -1002,24 +1259,94 @@ Paris · Full remote dès 2020
  • CareGame

    -

    Développeur systèmes & backend

    -

    Seul responsable de la couche kernel, AOSP et serveur de jeu pendant 6 ans. Développement de drivers Linux en C (x86/ARM), backend Rust (~2 000 lignes, WebSocket), virtual touchscreen/gamepad AOSP en Java. Architecture de serveurs GPU bare-metal (8× GPU T4, 64 vCPU) — isolation CPU/GPU par session, I/O sur ramdisk, 32 sessions jeux AAA simultanées. Intégration d'un système LXC/LXD issu d'une R&D Nvidia abandonnée — résultats reconnus par leurs équipes. Collaboration directe avec Canonical (Anbox, accès pre-commercial) et Ampere Computing (serveurs ARM pre-launch).

    +

    Développeur logiciel · Systèmes & Backend

    +

    Plateforme de cloud gaming en production : fleet GPU bare-metal AWS g4dn, conteneurs AOSP, backend Rust temps réel. Plusieurs centaines de joueurs servis simultanément.

    + +
  • - 2017 + fév. 2017 — nov. 2017 Ivry-sur-Seine

    Deewee

    -

    Développeur C embarqué

    -

    Système embarqué complet développé seul en C sur Orange Pi (Debian ARM) : interception du flux ESC/POS d'une imprimante thermique, génération PNG du ticket, déclenchement GPIO sur bouton physique, création d'un hotspot WiFi embarqué avec diffusion des credentials via NFC, envoi de l'image en WiFi direct vers une application mobile tierce.

    +

    Développeur C · Système embarqué

    +

    Stage 42 (6 mois) puis CDD (4 mois)

    +

    Boîtier connecté pour interception du flux d'une imprimante thermique.

    + +
  • + +
    +
    + +

    Ce que je fais à côté.

    +

    Infra perso et code public — l'environnement où je teste, casse, documente, et reprends.

    + +
    + +
    +
    +

    Code source & projets persos

    + en continu +
    +

    Serveur Git auto-hébergé en production.

    +

    Configuration Claude Code, dotfiles, projets bas-niveau (42, expérimentations C/Rust) — accessibles publiquement. Mirror automatique vers GitHub via push hook.

    + git.bchanot.fr/bchanot ↗ +
    + +
    +
    +

    Homelab

    + en continu +
    +

    Infrastructure personnelle.

    +

    Auto-hébergement Git (Gogs) / DNS / VPN / SMB — NAS Asustor, Freebox WireGuard VPN site-to-site, Pi-hole, segmentation réseau, hardening fail2ban, gocryptfs sur dossiers sensibles.

    +
    + +
    +
    +
    +
    @@ -1105,6 +1432,59 @@
    + +
    +
    + +

    Façon de travailler.

    +

    Cinq habitudes héritées de sept ans en prod — pas un manifeste, des réflexes.

    + +
      + +
    1. + 01 +
      +

      Comprendre avant d'écrire.

      +

      Si je n'arrive pas à expliquer comment un système se comporte, je ne touche pas au code.

      +
      +
    2. + +
    3. + 02 +
      +

      Solutions éprouvées > hype.

      +

      Choix techniques défendus sur leurs garanties (perf, lisibilité, maintenabilité), pas sur leur buzz.

      +
      +
    4. + +
    5. + 03 +
      +

      Autonome sur la décomposition technique.

      +

      En interface directe avec les équipes produit, infra et stakeholders externes quand ça compte.

      +
      +
    6. + +
    7. + 04 +
      +

      Trace écrite par défaut.

      +

      Décisions, post-mortems, docs internes. Le code qui n'est pas documenté est un code qui sera réécrit dans 6 mois.

      +
      +
    8. + +
    9. + 05 +
      +

      Anglais ou français.

      +

      Communication aussi bien en anglais (Nvidia, Canonical, Ampere) qu'en français — peu importe, je m'adapte à l'équipe.

      +
      +
    10. + +
    +
    +
    +
    @@ -1116,11 +1496,11 @@