Compare commits
6 Commits
83c294898e
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 5698073e51 | |||
| 4bf8ea3ceb | |||
| 17624d3525 | |||
| 4829761261 | |||
| e2db45aedf | |||
| 40ebb52ca6 |
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 12 KiB |
Binary file not shown.
+76
-7
@@ -1,17 +1,37 @@
|
|||||||
#import "template.typ"
|
#import "template.typ"
|
||||||
|
|
||||||
|
// Configuration
|
||||||
|
|
||||||
|
// Polymny config
|
||||||
|
#let spacing = 0.2cm
|
||||||
|
#let show_publications = true
|
||||||
|
#let show_projects = false
|
||||||
|
|
||||||
= Parcours
|
= Parcours
|
||||||
|
|
||||||
#template.entry2(
|
#template.entry2(
|
||||||
left: image(height: 15pt, "./assets/icons/adjust.svg"),
|
left: image(height: 15pt, "./assets/icons/adjust.svg"),
|
||||||
|
heading: [*Yuzzit*, _Paris (télétravail)_, #link("https://www.yuzzit.video")],
|
||||||
|
description: [Logiciel de découpe et de montage vidéo depuis un flux live],
|
||||||
|
note: [
|
||||||
|
Senior backend engineer
|
||||||
|
- découpe vidéo au format HLS
|
||||||
|
- ajout du support pour bucket S3 privé
|
||||||
|
- adaptation de la plate-forme à l'envoi de fichier via MASV
|
||||||
|
- authentification via google workspaces avec support des groupes
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
#template.entry2(
|
||||||
|
left: [2025],
|
||||||
heading: [*Polymny Studio*, _Toulouse_, #link("https://polymny.studio")],
|
heading: [*Polymny Studio*, _Toulouse_, #link("https://polymny.studio")],
|
||||||
description: [Logiciel SAAS permettant la réalisation de MOOC facilement],
|
description: [Logiciel SAAS permettant la réalisation de MOOC facilement],
|
||||||
note: [
|
note: [
|
||||||
Co-fondateur, responsable R&D, développeur
|
Co-fondateur, responsable R&D, développeur
|
||||||
- pilotage et développement de l'architecture multi-instances
|
- pilotage et développement de l'architecture multi-instances
|
||||||
- instance sur cluster kubernetes OVHcloud avec stockage S3
|
// - instance sur cluster kubernetes OVHcloud avec stockage S3
|
||||||
- instance auto-hébergée chez tetaneutral
|
// - instance auto-hébergée chez tetaneutral
|
||||||
- développement de l'UI/UX, frontend et backend
|
// - développement de l'UI/UX, frontend et backend
|
||||||
- président de l’Association Polymny Studio jusqu’en Sept 2022
|
- président de l’Association Polymny Studio jusqu’en Sept 2022
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
@@ -24,8 +44,8 @@
|
|||||||
Transmission adaptative de modèles 3D massifs
|
Transmission adaptative de modèles 3D massifs
|
||||||
- encodage de modèle 3D optimisé pour le streaming interactif
|
- encodage de modèle 3D optimisé pour le streaming interactif
|
||||||
- streaming adapté au point de vue
|
- streaming adapté au point de vue
|
||||||
- interface du bureau avec clavier / souris
|
// - interface du bureau avec clavier / souris
|
||||||
- interface smartphone avec joystick virtuel et gyroscope
|
// - interface smartphone avec joystick virtuel et gyroscope
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -36,7 +56,54 @@
|
|||||||
note: [Spécialisation en multimédia et traitement d'images]
|
note: [Spécialisation en multimédia et traitement d'images]
|
||||||
)
|
)
|
||||||
|
|
||||||
#v(0.55cm)
|
#v(spacing)
|
||||||
|
|
||||||
|
#if show_publications [
|
||||||
|
|
||||||
|
= Publications
|
||||||
|
|
||||||
|
#let local_spacing = 0.0em
|
||||||
|
|
||||||
|
#template.entry2(
|
||||||
|
left: [2019],
|
||||||
|
heading: [*Using 3D Bookmarks for Desktop and Mobile DASH-3D Clients*],
|
||||||
|
description: [
|
||||||
|
ACMMM 19 Demo Paper \
|
||||||
|
#link("https://tforgione.fr/publications/acmmm19/")
|
||||||
|
],
|
||||||
|
note: [T. Forgione, A. Carlier, G. Morin, W. T. Ooi, V. Charvillat],
|
||||||
|
disable_line: true,
|
||||||
|
)
|
||||||
|
|
||||||
|
#v(local_spacing)
|
||||||
|
|
||||||
|
#template.entry2(
|
||||||
|
left: [2018],
|
||||||
|
heading: [*DASH for 3D Networked Virtual Environment*],
|
||||||
|
description: [
|
||||||
|
ACMMM 18 Long Paper + Demo paper \
|
||||||
|
#link("https://tforgione.fr/publications/acmmm18/")
|
||||||
|
],
|
||||||
|
note: [T. Forgione, A. Carlier, G. Morin, W. T. Ooi, V. Charvillat, P. K. Yadav],
|
||||||
|
disable_line: true,
|
||||||
|
)
|
||||||
|
|
||||||
|
#v(local_spacing)
|
||||||
|
|
||||||
|
#template.entry2(
|
||||||
|
left: [2016],
|
||||||
|
heading: [*Impact of 3D Bookmarks on Navigation and Streaming in a Networked Virtual Environment*],
|
||||||
|
description: [
|
||||||
|
MMSys 16 Long Paper \
|
||||||
|
#link("https://tforgione.fr/publications/mmsys16/")
|
||||||
|
],
|
||||||
|
note: [T. Forgione, A. Carlier, G. Morin, W. T. Ooi, V. Charvillat],
|
||||||
|
disable_line: true,
|
||||||
|
)
|
||||||
|
|
||||||
|
]
|
||||||
|
|
||||||
|
#if show_projects [
|
||||||
|
|
||||||
= Projets
|
= Projets
|
||||||
|
|
||||||
@@ -65,7 +132,9 @@
|
|||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
#v(0.54cm)
|
]
|
||||||
|
|
||||||
|
#v(spacing)
|
||||||
|
|
||||||
= Loisirs
|
= Loisirs
|
||||||
|
|
||||||
|
|||||||
+54
-5
@@ -1,12 +1,53 @@
|
|||||||
#import "template.typ"
|
#import "template.typ"
|
||||||
|
|
||||||
|
#let is_polymny = false
|
||||||
|
#let is_yuzzit = true
|
||||||
|
|
||||||
|
#let spacing = 0.2cm
|
||||||
|
|
||||||
= Contact
|
= Contact
|
||||||
|
|
||||||
#align(left + top, [
|
#if is_polymny {
|
||||||
|
|
||||||
|
// Version polymny
|
||||||
|
align(left + top, [
|
||||||
#grid(columns: (auto, auto), row-gutter: 0.5cm, column-gutter: 0.2cm,
|
#grid(columns: (auto, auto), row-gutter: 0.5cm, column-gutter: 0.2cm,
|
||||||
[ #image("assets/icons/location.svg", height: 10pt) ],
|
[ #image("assets/icons/location.svg", height: 10pt) ],
|
||||||
[ 9 bd de la Gare, appt 83 \
|
[ Polymny Studio \
|
||||||
31500 Toulouse France
|
16 route de Luchon \
|
||||||
|
31110 Moustajon
|
||||||
|
],
|
||||||
|
[ #image("assets/icons/phone.svg", height: 10pt) ], [ 05.82.95.91.76 ],
|
||||||
|
[ #image("assets/icons/mail.svg", height: 10pt) ], [ #link("mailto:contact@polymny.studio")[contacter\@polymny.studio] ],
|
||||||
|
[ #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] ]
|
||||||
|
)
|
||||||
|
])
|
||||||
|
|
||||||
|
} else if is_yuzzit {
|
||||||
|
|
||||||
|
// Version yuzzit
|
||||||
|
align(left + top, [
|
||||||
|
#grid(columns: (auto, auto), row-gutter: 0.5cm, column-gutter: 0.2cm,
|
||||||
|
[ #image("assets/icons/location.svg", height: 10pt) ],
|
||||||
|
[ 6 Rue de la Tourelle, \
|
||||||
|
92100 Boulogne-Billancourt
|
||||||
|
],
|
||||||
|
[ #image("assets/icons/phone.svg", height: 10pt) ], [ 06.71.22.05.84 ],
|
||||||
|
[ #image("assets/icons/mail.svg", height: 10pt) ], [ #link("mailto:thomas.forgione@yuzzitpro.com")[thomas.forgione \ \@yuzzitpro.com] ],
|
||||||
|
[ #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] ]
|
||||||
|
)
|
||||||
|
])
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
// Version perso
|
||||||
|
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
|
||||||
],
|
],
|
||||||
[ #image("assets/icons/phone.svg", height: 10pt) ], [ 06.71.22.05.84 ],
|
[ #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/mail.svg", height: 10pt) ], [ #link("mailto:thomas@forgione.fr")[thomas\@forgione.fr] ],
|
||||||
@@ -15,6 +56,10 @@
|
|||||||
)
|
)
|
||||||
])
|
])
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#v(spacing)
|
||||||
|
|
||||||
= Programmation
|
= Programmation
|
||||||
|
|
||||||
#align(left + top, [
|
#align(left + top, [
|
||||||
@@ -29,17 +74,21 @@
|
|||||||
)
|
)
|
||||||
])
|
])
|
||||||
|
|
||||||
|
#v(spacing)
|
||||||
|
|
||||||
= DevOps
|
= DevOps
|
||||||
|
|
||||||
#align(left + top, [
|
#align(left + top, [
|
||||||
#grid(columns: (2cm, auto), row-gutter: 0.5cm, column-gutter: 0.5cm,
|
#grid(columns: (2cm, auto), row-gutter: 0.5cm, column-gutter: 0.5cm,
|
||||||
[ Docker ], [ #template.score(level: 4) ],
|
[ Docker ], [ #template.score(level: 4) ],
|
||||||
[ Kubernetes ], [ #template.score(level: 4) ],
|
[ Kubernetes ], [ #template.score(level: 3) ],
|
||||||
[ RabbitMQ ], [ #template.score(level: 3) ],
|
[ RabbitMQ ], [ #template.score(level: 3) ],
|
||||||
[ S3 ], [ #template.score(level: 3) ],
|
[ S3 ], [ #template.score(level: 4) ],
|
||||||
)
|
)
|
||||||
])
|
])
|
||||||
|
|
||||||
|
#v(spacing)
|
||||||
|
|
||||||
= Langues
|
= Langues
|
||||||
|
|
||||||
#align(left + top, [
|
#align(left + top, [
|
||||||
|
|||||||
@@ -18,10 +18,10 @@
|
|||||||
#leftcolumn
|
#leftcolumn
|
||||||
|
|
||||||
// Go back to the top of the page
|
// Go back to the top of the page
|
||||||
#style(styles => {
|
#context {
|
||||||
let size = measure(leftcolumn, styles)
|
let size = measure(leftcolumn)
|
||||||
v(-size.height - 0.75cm)
|
v(-size.height - 0.75cm)
|
||||||
})
|
}
|
||||||
|
|
||||||
// Include content
|
// Include content
|
||||||
#v(1.2cm)
|
#v(1.2cm)
|
||||||
|
|||||||
+49
-20
@@ -1,16 +1,29 @@
|
|||||||
|
#let color = blue
|
||||||
|
// #let color = rgb("#018d32")
|
||||||
|
|
||||||
// Basic template settings. Must be shown at very begining
|
// Basic template settings. Must be shown at very begining
|
||||||
#let init(doc) = {
|
#let init(doc) = {
|
||||||
|
|
||||||
|
let opacity = "33" // opacity hex chars
|
||||||
|
|
||||||
|
// let polymny = read("./assets/polymny.svg")
|
||||||
|
// let polymny_transparent = polymny
|
||||||
|
// .replace("#FFFFFFFF", "#FFFFFF" + opacity)
|
||||||
|
// .replace("#EAE2D4FF", "#EAE2D4" + opacity)
|
||||||
|
// .replace("#BDB299FF", "#BDB299" + opacity)
|
||||||
|
|
||||||
set page(
|
set page(
|
||||||
paper: "a4",
|
paper: "a4",
|
||||||
numbering: none,
|
numbering: none,
|
||||||
margin: (left: 0.25cm, right: 0.25cm, top: 0.5cm, bottom: 0.5cm),
|
margin: (left: 0.25cm, right: 0.25cm, top: 0.5cm, bottom: 0.5cm),
|
||||||
background: [
|
background: [
|
||||||
#align(top + left, rect(width: 5.55cm, height: 100%, fill: blue.lighten(90%)))
|
// #place(bottom + left, dx: 2cm, dy: 2.75cm, {
|
||||||
#v(-100%)
|
// image.decode(polymny_transparent, width: 65em, height: 65em)
|
||||||
#v(-1.3em)
|
// })
|
||||||
#align(top, rect(width: 100%, height: 4.4cm, fill: blue))
|
|
||||||
#v(-5cm)
|
#place(top + left, rect(width: 5.8cm, height: 100%, fill: color.lighten(90%)))
|
||||||
#align(top + left, box(inset: (x: 0.8cm, y: 1cm), image("./assets/moi.png", height: 4cm)))
|
#place(top + left, rect(width: 100%, height: 4.4cm, fill: color))
|
||||||
|
#place(top + left, dx: 0.8cm, dy: 1cm, image("./assets/moi.png", height: 4cm))
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -47,15 +60,15 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
show heading.where(level: 1): it => {
|
show heading.where(level: 1): it => {
|
||||||
set text(fill: blue)
|
set text(fill: color)
|
||||||
grid(
|
grid(
|
||||||
gutter: 1em,
|
gutter: 1em,
|
||||||
columns: (5cm, 7fr),
|
columns: (5.25cm, 7fr),
|
||||||
[], // align(horizon, [#v(3pt) #rect(width: 1cm, height: 0.33em, fill: blue)]),
|
[], // align(horizon, [#v(3pt) #rect(width: 1cm, height: 0.33em, fill: color)]),
|
||||||
[
|
[
|
||||||
#it.body
|
#it.body
|
||||||
#v(-0.5cm)
|
#v(-0.5cm)
|
||||||
#line(stroke: blue, length: 100%)
|
#line(stroke: color, length: 100%)
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -86,7 +99,7 @@
|
|||||||
#let entry(body, left: content) = {
|
#let entry(body, left: content) = {
|
||||||
grid(
|
grid(
|
||||||
gutter: 1em,
|
gutter: 1em,
|
||||||
columns: (5.5cm, 0.75fr, 7fr),
|
columns: (5.75cm, 0.75fr, 7fr),
|
||||||
[],
|
[],
|
||||||
align(right, left),
|
align(right, left),
|
||||||
body,
|
body,
|
||||||
@@ -95,7 +108,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
// An entry in the CV with "until" date, heading, description and note.
|
// An entry in the CV with "until" date, heading, description and note.
|
||||||
#let entry2(left: content, heading: content, description: content, note: content) = {
|
#let entry2(left: content, heading: content, description: content, note: content, disable_line: false) = {
|
||||||
|
|
||||||
let content = [
|
let content = [
|
||||||
#heading \
|
#heading \
|
||||||
@@ -105,22 +118,38 @@
|
|||||||
#note
|
#note
|
||||||
]
|
]
|
||||||
|
|
||||||
style(styles => {
|
layout(size => {
|
||||||
let size = measure(content, styles)
|
context {
|
||||||
let offset = measure(left, styles)
|
let size = measure({
|
||||||
|
block(
|
||||||
|
width: size.width,
|
||||||
grid(
|
grid(
|
||||||
gutter: 1em,
|
gutter: 1em,
|
||||||
columns: (5.5cm, 0.75fr, 7fr),
|
columns: (5.75cm, 0.75fr, 7fr),
|
||||||
|
[], [], content
|
||||||
|
)
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
let offset = measure(left)
|
||||||
|
|
||||||
|
grid(
|
||||||
|
gutter: 1em,
|
||||||
|
columns: (5.75cm, 0.75fr, 7fr),
|
||||||
[],
|
[],
|
||||||
|
if not disable_line {
|
||||||
align(center, [
|
align(center, [
|
||||||
#left
|
#left
|
||||||
#v(-0.5em)
|
#v(-0.5em)
|
||||||
#line(angle: 90deg, length: size.height - offset.height - 0.5em)
|
#line(angle: 90deg, length: size.height - offset.height - 0.5em)
|
||||||
]),
|
])
|
||||||
|
} else {
|
||||||
|
left
|
||||||
|
},
|
||||||
content
|
content
|
||||||
)
|
)
|
||||||
v(-4pt)
|
v(-4pt)
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -131,9 +160,9 @@
|
|||||||
|
|
||||||
for x in range(5) {
|
for x in range(5) {
|
||||||
if level > x {
|
if level > x {
|
||||||
elems.push(rect(width: 0.4cm, height: 0.2cm, fill: blue))
|
elems.push(rect(width: 0.4cm, height: 0.2cm, fill: color))
|
||||||
} else {
|
} else {
|
||||||
elems.push(rect(width: 0.4cm, height: 0.2cm, fill: blue.lighten(60%)))
|
elems.push(rect(width: 0.4cm, height: 0.2cm, fill: color.lighten(60%)))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user