#import "template.typ" #show: doc => template.apply(doc) #v(1cm) #grid( columns: (6cm, 1fr), [], [ #v(-0.25cm) #set text(size: 40pt, fill: white) Thomas Forgione \ #set text(size: 18pt, style: "italic") Docteur en informatique et télécommunications ], ) #v(1cm) #set text(size: 12pt) #let leftcolumn = [ #show link: content => { underline(content) } #show heading.where(level: 1): it => { v(0.75cm) text(size: 16pt, weight: "bold", it.body) v(-0.5cm) line(length: 5cm) } #v(-0.5cm) = Contact #align(left + top, [ #grid(columns: (auto, auto), row-gutter: 0.5cm, column-gutter: 0.2cm, [ #image("assets/icons/location.svg", height: 10pt) ], [ 9 bd de la Gare, appt 83 \ 31500 Toulouse France ], [ #image("assets/icons/phone.svg", height: 10pt) ], [ 06.71.22.05.84 ], [ #image("assets/icons/mail.svg", height: 10pt) ], [ #link("mailto:thomas@forgione.fr")[thomas\@forgione.fr] ], [ #image("assets/icons/world.svg", height: 10pt) ], [ #link("https://tforgione.fr")[https://tforgione.fr] ], [ #image("assets/icons/github.svg", height: 10pt) ], [ #link("https://github.com/tforgione")[\@tforgione] ] ) ]) = Programmation #align(left + top, [ #grid(columns: (2cm, auto), row-gutter: 0.5cm, column-gutter: 0.5cm, [ Rust ], [ #template.score(level: 4) ], [ Elm ], [ #template.score(level: 4) ], [ JS ], [ #template.score(level: 4) ], [ C++ ], [ #template.score(level: 3) ], [ Python ], [ #template.score(level: 3) ], [ Java ], [ #template.score(level: 3) ], [ Shell ], [ #template.score(level: 4) ], ) ]) = DevOps #align(left + top, [ #grid(columns: (2cm, auto), row-gutter: 0.5cm, column-gutter: 0.5cm, [ Docker ], [ #template.score(level: 3) ], [ Kubernetes ], [ #template.score(level: 3) ], [ RabbitMQ ], [ #template.score(level: 2) ], [ S3 ], [ #template.score(level: 3) ], ) ]) = Langues #align(left + top, [ #grid(columns: (auto, auto), row-gutter: 0.5cm, column-gutter: 0.3cm, [ *Français* ], [ _Langue maternelle_ ], [ *Anglais* ], [ _Niveau C1_ ] ) ]) ] #leftcolumn #style(styles => { let size = measure(leftcolumn, styles) v(-size.height - 0.75cm) }) #show link: content => { set text(fill: blue) underline(content) } #v(0.21cm) = Parcours #template.entry2( left: image(height: 15pt, "./assets/icons/adjust.svg"), heading: [*Polymny Studio*, _Toulouse_, #link("https://polymny.studio")], description: [ Logiciel SAAS permettant la réalisation de MOOC facilement ], note: [ Co-fondateur, responsable R&D, développeur - président de l'Association Polymny Studio jusqu'en Sept 2022 - base de données unique pour deux instances : gratuite / payante - partie gratuite auto-hébergée chez tetaneutral - partie payante sur cluster kubernetes OVHcloud avec stockage S3 ] ) #template.entry2( left: [2019], heading: [*Doctorat*, _Toulouse INP_, #link("https://tforgione.fr/phd/")], description: [Doctorat en informatique et télécommunications], note: [ Transmission adaptative de modèles 3D massifs - encodage de modèle 3D optimisé pour le streaming interactif - streaming adapté au point de vue - interface du bureau avec clavier / souris - interface smartphone avec joystick virtuel et gyroscope ] ) #template.entry2( left: [2015], heading: [*Diplôme d'ingénieur*, _ENSEEIHT_], description: [_Diplôme d'ingénieur en informatique et mathématiques appliquées_], note: [_Spécialisation en multimédia et traitement d'images_] ) = Projets #template.entry2( left: [2021], heading: [*Ergol*, #link("https://ergol-rs.github.io")], description: [ORM asynchrone pour Rust], note: [ - proc macro via annotation pour génération de code lié aux tables - gestion des one-to-one, one-to-many, many-to-many - création / réinitialisation de tables automatiques - fonctions utilitaires pour SELECT, UPDATE, DELETE - intégration avec le framework web Rocket ] ) #template.entry2( left: [2019], heading: [*My Twitch Replays*, #link("https://twitch.tforgione.fr")], description: [Plate-forme de vidéo à la demande serverless via HTTP], note: [ - encodage vidéo multi-résolution en HLS avec FFmpeg - lecteur vidéo custom en elm avec miniatures de navigation - selection manuelle ou automatique de la résolution via hls.js ] ) = Loisirs #template.entry(left: [Sport])[*jiujitsu brésilien depuis 2021, ceinture bleue*] #template.entry(left: [Moto])[*permis A2 depuis 2016, permis A depuis 2018*] #template.entry(left: [Musique])[*guitare acoustique et éléctrique depuis 2008*]