diff --git a/index.html b/index.html index 72b2cfb..e97b555 100644 --- a/index.html +++ b/index.html @@ -553,6 +553,145 @@ max-width: 64ch; } + /* ── FORMATION ── */ + .formation { background: var(--page); } + .formation .timeline { border-left-color: var(--g100); } + .formation .timeline-item::before { box-shadow: 0 0 0 4px var(--page); } + + .formation-school-desc { + font-family: var(--serif); + font-style: italic; + font-weight: 300; + color: var(--ink-2); + line-height: 1.55; + max-width: 64ch; + margin-bottom: 20px; + } + + .formation-themes { + display: grid; + grid-template-columns: 1fr; + gap: 18px; + margin-top: 24px; + } + @media (min-width: 768px) { .formation-themes { grid-template-columns: repeat(2, 1fr); } } + @media (min-width: 1200px) { .formation-themes { grid-template-columns: repeat(3, 1fr); } } + + .theme-card { + background: #fff; + border: 1px solid var(--rule); + border-radius: var(--r-md); + padding: 22px; + transition: border-color .25s ease, transform .25s ease, box-shadow .25s ease; + display: flex; + flex-direction: column; + } + .theme-card:hover { + border-color: var(--g300); + transform: translateY(-2px); + box-shadow: var(--shadow-md); + } + .theme-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); + } + .theme-card h4 { + font-family: var(--serif); + font-weight: 600; + font-size: 18px; + color: var(--ink-1); + letter-spacing: -0.01em; + line-height: 1.2; + } + .theme-card-tag { + font-family: var(--mono); + font-size: 11px; + color: var(--g500); + letter-spacing: 0.1em; + flex-shrink: 0; + } + .theme-quote { + font-family: var(--serif); + font-style: italic; + font-weight: 300; + color: var(--ink-2); + font-size: 14px; + line-height: 1.5; + padding-left: 12px; + border-left: 2px solid var(--g500); + margin-bottom: 16px; + } + .theme-list { + list-style: none; + display: flex; + flex-direction: column; + gap: 10px; + } + .theme-list li { + font-size: 13.5px; + line-height: 1.55; + color: var(--ink-2); + } + .theme-list code { + font-family: var(--mono); + font-size: 12px; + font-weight: 500; + color: var(--g700); + background: var(--g050); + border: 1px solid var(--g100); + padding: 1px 7px; + border-radius: var(--r-sm); + } + + .formation-tsrit-list { + list-style: none; + display: flex; + flex-direction: column; + gap: 10px; + margin-top: 12px; + max-width: 64ch; + } + .formation-tsrit-list li { + color: var(--ink-2); + line-height: 1.55; + padding-left: 18px; + position: relative; + } + .formation-tsrit-list li::before { + content: ""; + position: absolute; + left: 0; top: 0.65em; + width: 8px; height: 1px; + background: var(--g500); + } + .formation-tsrit-list li strong { color: var(--ink-1); font-weight: 600; } + + .honors { + display: inline-flex; + align-items: center; + gap: 8px; + font-family: var(--mono); + font-size: 12px; + font-weight: 600; + color: var(--g700); + background: var(--g100); + border: 1px solid var(--g300); + padding: 6px 14px; + border-radius: var(--r-pill); + letter-spacing: 0.04em; + margin: 4px 0 14px; + } + .honors::before { + content: "★"; + color: var(--g500); + font-size: 13px; + } + /* ── CONTACT ── */ .contact { background: var(--dark); @@ -619,40 +758,8 @@ word-break: break-word; } - .contact-side { - border: 1px solid rgba(106,185,138,0.2); - border-radius: var(--r-md); - padding: 24px; - background: rgba(13, 27, 18, 0.5); - } - .contact-side h3 { - font-family: var(--serif); - font-size: 20px; - color: #fff; - margin-bottom: 10px; - } - .contact-side p { - color: rgba(223, 240, 231, 0.85); - font-size: 14px; - line-height: 1.6; - margin-bottom: 16px; - } - .contact-side .education { - list-style: none; - border-top: 1px solid rgba(106,185,138,0.15); - padding-top: 16px; - margin-top: 16px; - } - .contact-side .education li { - font-family: var(--mono); - font-size: 12px; - color: rgba(223, 240, 231, 0.7); - margin-bottom: 6px; - } - .contact-side .education strong { color: var(--g100); font-weight: 600; } - @media (min-width: 768px) { - .contact-grid { grid-template-columns: 1.4fr 1fr; gap: 48px; } + .contact-list { grid-template-columns: repeat(2, 1fr); } } /* ── FOOTER ── */ @@ -708,6 +815,7 @@
  • À propos
  • Stack
  • Parcours
  • +
  • Formation
  • Contact
  • @@ -912,6 +1020,92 @@ + +
    +
    + +

    Formation

    +

    Le socle technique derrière sept ans de production.

    + +
      + +
    1. +
      + 2015 — 2019 + Clichy +
      +

      École 42

      +

      Programmation par projets · sans cours, sans notes

      +

      Uniquement du code qui passe ou qui ne passe pas.

      + +
      + +
      +
      +

      Systèmes & Kernel

      + // 01 +
      +

      Bootstrap d'OS, drivers, gestion matérielle, allocation mémoire.

      +
        +
      • ft_linux & kfs-1 — Linux From Scratch et noyau minimaliste : bootloader ASM, GDT, interruptions, driver char device clavier mappé.
      • +
      • drivers & interrupt — drivers kernel Linux et gestion d'interruptions niveau noyau.
      • +
      • process & memory — modèle de processus Unix, gestion mémoire kernel.
      • +
      • little penguin — contribution kernel Linux : style guide, patch submission, contrib upstream.
      • +
      • malloc — allocateur mémoire complet (libft_malloc.so) avec mmap, zones tiny / small / large.
      • +
      +
      + +
      +
      +

      Bas niveau & Outils système

      + // 02 +
      +

      Recoder les outils qu'on utilise tous les jours pour comprendre vraiment ce qu'ils font.

      +
        +
      • nm — parsing d'exécutables ELF, tables de symboles.
      • +
      • 42sh / 21 — shell POSIX complet : parser, redirections, jobs, history, autocomplétion.
      • +
      • ft_ls — réimplémentation ls avec options POSIX, permissions, tri, formats.
      • +
      • ft_select — TUI custom avec gestion termios, signaux, redessin partiel.
      • +
      +
      + +
      +
      +

      Sécurité & Algorithmie

      + // 03 +
      +

      Comprendre comment un système peut être cassé pour savoir le sécuriser.

      +
        +
      • snow crash — wargame exploitation système : escalation de privilèges, stack overflow, format string, race conditions.
      • +
      • doctor quine — programme auto-réplicatif (métaprogrammation).
      • +
      • ft_ssl_md5 — réimplémentation MD5, SHA-256, base64.
      • +
      • lem-in, push-swap — algorithmique : pathfinding (Edmonds-Karp), optimisation de tri sous contrainte.
      • +
      +
      + +
      +
    2. + +
    3. +
      + 2013 — 2015 + Vincennes +
      +

      TSRIT — Next Formation

      +

      BTS Technicien Supérieur Réseaux Informatiques & Télécoms

      + Félicitations du jury +

      Le socle réseau et infrastructure derrière les compétences systèmes.

      +
        +
      • Architecture réseau (OSI, TCP/IP), routage, commutation.
      • +
      • Administration Linux / Windows Server, sécurité réseau, virtualisation.
      • +
      • Stage final transformé en CDI chez CareGame.
      • +
      +
    4. + +
    +
    +
    +
    @@ -963,15 +1157,6 @@ - -