commit 3e92397fe1f6731d9aac5b33f7a90781b7d77cfb Author: Lyes Saadi Date: Sat Dec 6 18:42:49 2025 +0100 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..364fdec --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +public/ diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..7abab5b --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "themes/ametrine"] + path = themes/ametrine + url = https://codeberg.org/Geode/ametrine.git diff --git a/config.toml b/config.toml new file mode 100644 index 0000000..b1804d9 --- /dev/null +++ b/config.toml @@ -0,0 +1,101 @@ +base_url = "https://lyes.eu" +title = "Lyes Saadi" +description = "Le site de Lyes" +author = "Lyes Saadi" +default_language = "fr" +output_dir = "public" + +theme = "ametrine" +compile_sass = true + +# generate_feeds = true +feed_filenames = ["atom.xml", "rss.xml"] +build_search_index = true + +[markdown] +highlight_code = true +# extra_syntaxes_and_themes = ["sublime"] +highlight_theme = "dracula" +# highlight_themes_css = [ +# { theme = "monokai-pro-dark", filename = "syntax-theme-dark.css" }, +# { theme = "monokai-pro-light", filename = "syntax-theme-light.css" }, +# ] +render_emoji = true +smart_punctuation = true +bottom_footnotes = true +lazy_async_image = true +external_links_class = "external" +insert_anchor_links = "left" + +[slugify] +paths = "on" +taxonomies = "on" +anchors = "on" + +[languages.en] +title = "Lyes Saadi" +description = "Lyes' website" +# generate_feeds = true +feed_filenames = ["atom.xml", "rss.xml"] +build_search_index = true + +[extra] +home_url = "@/home/index.md" +accent_color = ["hsl(19 75% 42%)", "hsl(276 82% 78%)"] +katex = true +toc = true +show_copy_button = true +show_reading_time = true +show_backlinks = true +timezone = "Europe/Paris" +theme_switcher = true +date_locale = "fr_FR" + +[extra.en] +date_locale = "en_US" + +[extra.meta] +favicon = "icon.png" +apple_touch_icon = "icon.png" + +[extra.nav] +icon = "icon.png" +links = [ + { url = "@/blog/_index.md", name = "Blog", icon = "newspaper" }, + { name = "Académique", category = [ + { url = "@/studies/index.md", name = "Formation", icon = "graduation-cap" }, + { url = "@/research/_index.md", name = "Recherche", icon = "microscope" }, + ] }, + # { name = "Projets", category = [ + # { url = "#", name = "Informatique", icon = "linux-logo" }, + # ] }, +] + +[extra.nav.en] +# icon = "icon.png" +links = [ + { url = "@/blog/_index.md", name = "Blog", icon = "newspaper" }, + { name = "Academic", category = [ + { url = "@/studies/index.md", name = "Studies", icon = "graduation-cap" }, + { url = "@/research/_index.md", name = "Research", icon = "microscope" }, + ] }, + # { name = "Projects", category = [ + # { url = "#", name = "Computer science", icon = "linux-logo" }, + # ] }, +] + +[extra.footer] +copyright = true +show_timestamp = true +show_powered_by = true +socials = [ + # { url = "https://matrix.to/#/@lyessaadi:crans.org", icon = "matrix" } +] + +[extra.footer.en] +copyright = true +show_timestamp = true +show_powered_by = true +socials = [ + # { url = "https://matrix.to/#/@lyessaadi:crans.org", icon = "matrix" } +] diff --git a/content/_index.en.md b/content/_index.en.md new file mode 100644 index 0000000..800a244 --- /dev/null +++ b/content/_index.en.md @@ -0,0 +1,3 @@ ++++ +render = false ++++ diff --git a/content/_index.md b/content/_index.md new file mode 100644 index 0000000..800a244 --- /dev/null +++ b/content/_index.md @@ -0,0 +1,3 @@ ++++ +render = false ++++ diff --git a/content/blog/_index.en.md b/content/blog/_index.en.md new file mode 100644 index 0000000..2f37100 --- /dev/null +++ b/content/blog/_index.en.md @@ -0,0 +1,7 @@ ++++ +title = "Lyes' Blog" +generate_feeds = true ++++ + +Nothing to see here yet unfortunately :pensive:. But that shan't remain this +way for long! diff --git a/content/blog/_index.md b/content/blog/_index.md new file mode 100644 index 0000000..c845645 --- /dev/null +++ b/content/blog/_index.md @@ -0,0 +1,7 @@ ++++ +title = "Le blog de Lyes" +generate_feeds = true ++++ + +Rien à voir ici pour l'instant malheureusement :pensive:. Mais cela ne saurait +rester comme ça pour longtemps ! diff --git a/content/home/index.en.md b/content/home/index.en.md new file mode 100644 index 0000000..053237a --- /dev/null +++ b/content/home/index.en.md @@ -0,0 +1,82 @@ ++++ +title = "Lyes' website" +aliases = ["/en/"] +[extra] +styles = ["home.css"] +scripts = ["home/index.js"] +no_header = true ++++ + +
+
+ +
+
+ Lyes Saadi +
+
+ Studying the foundations of computer science +
+
+
+ +
+ +## Who am I ? + +My name's Lyes Saadi (in phonetic : +{{ audio(name="/ljes/ /sæ.ɑːdi/", url="pron_ipa.flac") }}, in arabic : +{{ audio(name="إِلْيَاسْ السَّعْدِي", url="pron_ar.flac") }}), my pronouns are He/They +and I am (i was born on the 18/04/2002, you can compute my age +yourself if you are skilled enough to know how to deactivate JavaScript ^^) + years old! + +Currently, I'm in my 2nd year of Master's at the Parisian Master of +Research in Computer Science ([MPRI](https://mpri-master.ens.fr/)) +and in my 3rd year of studies at the École Normale Supérieure +de Paris-Saclay. + +### My passions + +I have long been passioned by computer science. My interests are mainly around +the foundations of computer science and its interactions with mathematics. In +particular, I am interested by type theory, category theory, proof assistants, +programming languages and logics. I am also very interested with the +interactions between these domains and other domains of computer science and +mathematics. + +I am also a staunnch activist for free software! For example, this wesite uses +[Zola](https://www.getzola.org/) and [Ametrine](https://ametrine.daudix.one/) +and is served by my own server `zora`, currently hosted in the bay of the +[Cra@ns](https://crans.org/)! I use on both my server and my own personal +computer [NixOS](https://nixos.org/). I also contribute to a wide variety of +Free or Open Source software when I have some free time. + +Outside of computer science, I also follow with great attention the debats +around the academic world. I also follow debates around urbanism and public +transportation. Tchoo tchoo :steam_locomotive: ! + +### My goals in life + +Currently, my main goal in life is trying to become a university professor, to +do both research and teaching. + +I would like to do research first and foremost, to change the world, type by +type, functor by functor. But also because theoretical computer science is too +awesome and incredible not to dedicate it [find a joke]. + +But also teaching, to spread further the beautiful world that is theoretical +computer science, which unfortunately remains largely unknown to the wider +public. Computer science isn't only computers and programs, but it's also a +whole other world of science which extends upon mathematics and logics ! + +## Contacting me + +To reach me, I prefer to be contacted using one of the following ways: +- mail : `perso.web-1` at `lyes.eu` +- matrix : [`@lyessaadi:crans.org`](https://matrix.to/#/@lyessaadi:crans.org) +- signal : [`ntlyes.42`](https://signal.me/#eu/bFE8tdLcYtSVBxPpu0ErfZ8ZlcC1jMmres4JOfzYn4b9v8h3UxlHWJ3rTSYWwmEd) diff --git a/content/home/index.js b/content/home/index.js new file mode 100644 index 0000000..9877d95 --- /dev/null +++ b/content/home/index.js @@ -0,0 +1,25 @@ +// Source - https://stackoverflow.com/questions/4076321/javascript-age-calculation +// Posted by Matt +// Retrieved 2025-11-22, License - CC BY-SA 2.5 +function calculateAge(birthDate, otherDate) { + var years = (otherDate.getFullYear() - birthDate.getFullYear()); + + if (otherDate.getMonth() < birthDate.getMonth() || + otherDate.getMonth() == birthDate.getMonth() && otherDate.getDate() < birthDate.getDate()) { + years--; + } + + return years; +} + +function lyesAge() { + let birth = new Date("2002-04-18") + let today = new Date() + return calculateAge(birth, today) +} + +function changeAge() { + document.getElementById("age").setHTML(lyesAge()) +} + +changeAge() diff --git a/content/home/index.md b/content/home/index.md new file mode 100644 index 0000000..05880fd --- /dev/null +++ b/content/home/index.md @@ -0,0 +1,86 @@ ++++ +title = "Le site de Lyes" +aliases = ["/"] +[extra] +styles = ["home.css"] +scripts = ["home/index.js"] +no_header = true +audio_button = true ++++ + +
+
+ +
+
+ Lyes Saadi +
+
+ Étudiant en informatique fondamentale +
+
+
+ +
+ +## Qui suis-je ? + +Je m'appelle Lyes Saadi (en phonétique : +{{ audio(name="/ljes/ /sæ.ɑːdi/", url="pron_ipa.flac") }}, en arabe : +{{ audio(name="إِلْيَاسْ السَّعْدِي", url="pron_ar.flac") }}), mes pronoms sont Il/Iel +et j'ai (je suis né le 18/04/2002, vous pouvez calculer mon age +vous-même si vous savez désactiver JavaScript ^^) ans ! + +En ce moment, je suis en 2ème année de Master au Master Parisien +de Recherche en Informatique ([MPRI](https://mpri-master.ens.fr/)) ainsi qu'en +3ème année d'étude à l'École Normale Supérieure Paris-Saclay. + +### Mes passions + +Je suis un passioné d'informatique, notamment des fondements de l'informatique +et de ses interactions avec les mathématiques. Mes passions sont ainsi la +théorie des types, la théorie des catégories, les assistants de preuve, les +langages de programmation et la logique mathématique et informatique. Je suis +aussi très intéressé par les intéractions de ces domaines avec les autres +domaines de l'informatique et des mathématiques plus largement. + +Je suis aussi un ardent défendeur du logiciel libre ! Ce site web utilise ainsi +[Zola](https://www.getzola.org/) et [Ametrine](https://ametrine.daudix.one/) et +est servi par mon propre serveur `zora` actuellement hébergé dans la baie du +[Cra@ns](https://crans.org/) ! J'utilise pour mon ordinateur personnel et mon +serveur [NixOS](https://nixos.org/). Je contibue aussi à plusieurs projets +Libre ou Open Source quand j'ai du temps libre. + +En dehors de l'informatique, je suis avec attention les débats autour du monde +académique et universitaires. Et j'aime aussi beaucoup suivre les politiques +d'urbanisme et de transports en communs. Vive les trains :steam_locomotive: ! + +### Mes objectifs dans la vie + +Actuellement, mon but principal dans la vie est de devenir +enseignant-chercheur. + +Faire de la recherche avant tout, pour changer le monde, type par type, +foncteur par foncteur. Mais surtout parce que l'informatique fondamentale c'est +trop génial et passionant pour ne pas s'y plonger corps et groupe[^1] dans son +étude. + +Mais aussi de l'enseignement, pour aussi mieux faire connaître ces domaines +pourtant passionants, mais malheureusement méconnus du grand public. +L'informatique ce n'est pas que des ordinateurs et des programmes, mais c'est +aussi toute une science au prolongements des mathématiques et de la logique. + +## Me contacter + +Pour me joindre, je préfère être contacté par ces moyens : +- mail : `perso.web-1` arobase `lyes.eu` +- matrix : [`@lyessaadi:crans.org`](https://matrix.to/#/@lyessaadi:crans.org) +- signal : [`ntlyes.42`](https://signal.me/#eu/bFE8tdLcYtSVBxPpu0ErfZ8ZlcC1jMmres4JOfzYn4b9v8h3UxlHWJ3rTSYWwmEd) + +--- + +[^1]: Je m'excuse dès à présent pour la qualité sous-optimale de mes blagues. diff --git a/content/home/pron_ar.flac b/content/home/pron_ar.flac new file mode 100644 index 0000000..7b86334 Binary files /dev/null and b/content/home/pron_ar.flac differ diff --git a/content/home/pron_ipa.flac b/content/home/pron_ipa.flac new file mode 100644 index 0000000..d5b4f73 Binary files /dev/null and b/content/home/pron_ipa.flac differ diff --git a/content/research/_index.en.md b/content/research/_index.en.md new file mode 100644 index 0000000..e106587 --- /dev/null +++ b/content/research/_index.en.md @@ -0,0 +1,6 @@ ++++ +title = "My research work" +generate_feeds = true ++++ + +Still writing this section, come back later ! diff --git a/content/research/_index.md b/content/research/_index.md new file mode 100644 index 0000000..cab2b67 --- /dev/null +++ b/content/research/_index.md @@ -0,0 +1,6 @@ ++++ +title = "Mes travaux de recherche" +generate_feeds = true ++++ + +Section toujours en rédaction, revenez plus tard ! diff --git a/content/studies/index.en.md b/content/studies/index.en.md new file mode 100644 index 0000000..0526153 --- /dev/null +++ b/content/studies/index.en.md @@ -0,0 +1,5 @@ ++++ +title = "My studies" ++++ + +Still writing this section, come back later ! diff --git a/content/studies/index.md b/content/studies/index.md new file mode 100644 index 0000000..aa9ef6a --- /dev/null +++ b/content/studies/index.md @@ -0,0 +1,5 @@ ++++ +title = "Mon parcours" ++++ + +Section toujours en rédaction, revenez plus tard ! diff --git a/i18n/fr.toml b/i18n/fr.toml new file mode 100644 index 0000000..5e80905 --- /dev/null +++ b/i18n/fr.toml @@ -0,0 +1,73 @@ +language_name = "Français" # Shown in language picker for multi-language sites. +date_locale = "fr_FR" +full_stop = "." # Used at the end of a sentence. + +skip_to_content = "Skip to Main Content" +comments = "Commentaires" +read_also = "Voir aussi" +filter_tag = "Filtrer par tag" +filter_category = "Filtrer par catégorie" +many_posts = "$NUMBER billets de blog au total" +# As in "Previous post" +previous = "Précédent" +# As in "Next post" +next = "Suivant" +file_an_issue = "Signaler un problème" +# As in "Post details"; publication date, tags, and such. +details = "Détails" +header_tags = "Tags" +author_separator = ", " +author_conjunction = " et " +by_author = "Par $AUTHOR" +article_author = "Auteur de l'article" +loading = "Chargement…" +no_comments = "Aucun commentaire :/" +reload = "Recharger" +sensitive = "Contenu sensible" +comments_qr = "Code QR vers le message Mastodon" +comments_description = "Vous pouvez commenter sur ce billet de blog en répondant publiquement à ce billet sur Mastodon ou tout autre compte ActivityPub/Fediverse. Les commentaires publiés sur les instances publiques connues sont affichés ci-dessous." +load_comments = "Charger les commentaires" +open_post = "Open Post" +comments_noscript = "JavaScript est nécessaire pour charger les commentaires. Pour voir les commentaires, activez JavaScript et rechargez la page ou visitez le message sur Mastodon." +random = "Aléatoire" +toggle_sidebar = "Activer/Désactiver la barre verticale" +search_shortcut = "Appuyez sur « / » pour ouvrir la barre de recherche" +search = "Recherche" +search_placeholder = "Recherchez…" +first = "Premier" +last = "Dernier" +archived = "Archivé" +trigger_warning = "Trigger Warning" +disclaimer = "Avertissement" +alert_note = "Information" +alert_tip = "Astuce" +alert_important = "Important" +alert_warning = "Attention" +alert_caution = "Prudence" +alert_edit = "Modification" +alert_fact = "Anecdote" +many_tags = "$NUMBER tags au total" +one_tags = "$NUMBER tag au total" +one_posts = "$NUMBER billet de blog au total" +posts = "$NUMBER billets de blog au total" +tags = "$NUMBER tags au total" +all_tags = "Voir tous les tags" +header_categories = "Catégories" +many_categories = "$NUMBER catégories au total" +one_categories = "$NUMBER catégorie au total" +categories = "$NUMBER catégories au total" +category_description = "Aucune information renseignée sur cette categorie." +all_categories = "Voir toutes les categories" +powered_by = "Créé avec $ZOLA et $AMETRINE" +change_language = "Langue" +category_no_info = "Aucune information renseignée sur cette categorie." +minutes = "$NUMBER minutes" +one_minutes = "$NUMBER minute" +many_minutes = "$NUMBER minutes" +copy_code = "Copier le code" +contents = "Sommaire" +back_to_top = "Revenir au début" +feed = "Flux" +words = "$NUMBER mots" +many_words = "$NUMBER mots" +one_words = "$NUMBER mot" diff --git a/sass/_fonts.sass b/sass/_fonts.sass new file mode 100644 index 0000000..33b983b --- /dev/null +++ b/sass/_fonts.sass @@ -0,0 +1,7 @@ +@font-face + font-family: "LibreBaskerville" + src: url("/fonts/LibreBaskerville-Regular.otf") format("opentype") + +@font-face + font-family: "YoungSerif" + src: url("/fonts/YoungSerif-Regular.otf") format("opentype") diff --git a/sass/home.sass b/sass/home.sass new file mode 100644 index 0000000..cccb2c6 --- /dev/null +++ b/sass/home.sass @@ -0,0 +1,38 @@ +@use "fonts" + +.presentation + height: calc(100vh - 9rem) + display: flex + padding: 2rem + margin-bottom: 6rem + justify-content: center + flex-direction: column + + img + height: 10rem + width: 10rem + margin: .5rem 1rem + border-radius: 100% + + .presentation-inside + display: flex + flex-direction: row + flex-wrap: wrap + + .name-box + flex: auto + + .name + font: + size: 5.5rem + family: "YoungSerif" + style: italic + weight: bold + color: var(--accent-color) + margin: .5rem 0 + line-height: normal + + .description + color: var(--fg-muted-2) + font-size: 1.25rem + diff --git a/static/fonts/LibreBaskerville-Regular.otf b/static/fonts/LibreBaskerville-Regular.otf new file mode 100644 index 0000000..2f9e968 Binary files /dev/null and b/static/fonts/LibreBaskerville-Regular.otf differ diff --git a/static/fonts/YoungSerif-Regular.otf b/static/fonts/YoungSerif-Regular.otf new file mode 100644 index 0000000..85464b1 Binary files /dev/null and b/static/fonts/YoungSerif-Regular.otf differ diff --git a/static/icon.png b/static/icon.png new file mode 100644 index 0000000..178527b Binary files /dev/null and b/static/icon.png differ diff --git a/themes/ametrine b/themes/ametrine new file mode 160000 index 0000000..b77ea3f --- /dev/null +++ b/themes/ametrine @@ -0,0 +1 @@ +Subproject commit b77ea3fa81362265b80bc77237670ec130573fe6