diff options
93 files changed, 683 insertions, 1621 deletions
diff --git a/.gitignore b/.gitignore deleted file mode 100644 index b6a1d25..0000000 --- a/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -dist-newstyle/ -_cache/ -output/ -public/ diff --git a/Makefile b/Makefile deleted file mode 100644 index 6e56aad..0000000 --- a/Makefile +++ /dev/null @@ -1,25 +0,0 @@ -all: build - -start: - @nix-shell --command "tmuxinator local" - -stop: - @tmux kill-session -t personalPage - -clean: - @cabal new-exec personalPage clean > /dev/null 2>&1 || true - @cabal new-clean - -build: - @cabal new-build - @cabal new-exec personalPage build - -deploy: - @make clean build - @cabal new-exec personalPage deploy - -watch: - @nodemon --watch src -e hs --exec 'make watch-command --silent' - -watch-command: - @(killall personalPage || :) && sleep 1 && cabal new-build && cabal new-exec personalPage clean && cabal new-exec personalPage watch @@ -1,35 +1,13 @@ # Personal Page -Live [here](https://guyonvarch.gitlab.io/personalPage). +Live [here](https://guyonvarch.me). -[![build status](https://gitlab.com/guyonvarch/personalPage/badges/deploy/build.svg)](https://gitlab.com/guyonvarch/personalPage/commits/master) +## Getting started -## Required dependency - -- `pdflatex` - -## Gettings started - -Install nix and follow the instructions: - -```bash -curl https://nixos.org/nix/install | sh -``` - -Then, start the environment with: - -```bash -make start -``` - -Later, stop the environment with: - -```bash -make stop -``` +Open `public/index.html`. ## Deploy ```bash -./make deploy +./deploy ``` diff --git a/assets/gitlab-icon.svg b/assets/gitlab-icon.svg deleted file mode 100644 index fd2bdb8..0000000 --- a/assets/gitlab-icon.svg +++ /dev/null @@ -1 +0,0 @@ -<svg id="logo_art" data-name="logo art" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 586 559"><defs><style>.cls-1{fill:#fc6d26;}.cls-2{fill:#e24329;}.cls-3{fill:#fca326;}</style></defs><title>gitlab-icon-rgb</title><g id="g44"><path id="path46" class="cls-1" d="M461.17,301.83l-18.91-58.12L404.84,128.43a6.47,6.47,0,0,0-12.27,0L355.15,243.64H230.82L193.4,128.43a6.46,6.46,0,0,0-12.26,0L143.78,243.64l-18.91,58.19a12.88,12.88,0,0,0,4.66,14.39L293,435,456.44,316.22a12.9,12.9,0,0,0,4.73-14.39"/></g><g id="g48"><path id="path50" class="cls-2" d="M293,434.91h0l62.16-191.28H230.87L293,434.91Z"/></g><g id="g56"><path id="path58" class="cls-1" d="M293,434.91,230.82,243.63h-87L293,434.91Z"/></g><g id="g64"><path id="path66" class="cls-3" d="M143.75,243.69h0l-18.91,58.12a12.88,12.88,0,0,0,4.66,14.39L293,435,143.75,243.69Z"/></g><g id="g72"><path id="path74" class="cls-2" d="M143.78,243.69h87.11L193.4,128.49a6.47,6.47,0,0,0-12.27,0l-37.35,115.2Z"/></g><g id="g76"><path id="path78" class="cls-1" d="M293,434.91l62.16-191.28H442.3L293,434.91Z"/></g><g id="g80"><path id="path82" class="cls-3" d="M442.24,243.69h0l18.91,58.12a12.85,12.85,0,0,1-4.66,14.39L293,434.91l149.2-191.22Z"/></g><g id="g84"><path id="path86" class="cls-2" d="M442.28,243.69h-87.1l37.42-115.2a6.46,6.46,0,0,1,12.26,0l37.42,115.2Z"/></g></svg>
\ No newline at end of file diff --git a/assets/project/personal-page.png b/assets/project/personal-page.png Binary files differdeleted file mode 100644 index fa59e0e..0000000 --- a/assets/project/personal-page.png +++ /dev/null diff --git a/css/Body.hs b/css/Body.hs deleted file mode 100644 index 0ff8df0..0000000 --- a/css/Body.hs +++ /dev/null @@ -1,36 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} - -module Body - ( style - ) where - -import Clay hiding (style) -import Prelude hiding ((**)) - -import qualified Color -import qualified Link -import qualified Media -import qualified Size - -style :: Css -style = do - - ".Body__Container" ** p ? do - Media.desktop $ marginRight (pct 20) - lineHeight (px 28) - - ".Body__Container" ** ul ? do - paddingLeft (px 0) - Media.desktop $ margin (px 20) (px 0) (px 20) (px 30) - Media.tablet $ margin (px 15) (px 0) (px 15) (px 20) - Media.mobile $ marginBottom Size.listItemSep - - ".Body__Container" ** li ? do - Size.lineHeight - before & do - content (stringContent "•") - color Color.red - display inlineBlock - marginRight (px 10) - - Link.style (".Body__Container" ** a) diff --git a/css/Color.hs b/css/Color.hs deleted file mode 100644 index bfc8134..0000000 --- a/css/Color.hs +++ /dev/null @@ -1,27 +0,0 @@ -module Color where - -import qualified Clay.Color as C - -white :: C.Color -white = C.white - -red :: C.Color -red = C.rgb 170 57 57 - -orange :: C.Color -orange = C.rgb 182 119 25 - -green :: C.Color -green = C.rgb 0 93 0 - -blue :: C.Color -blue = C.rgb 79 182 187 - -black :: C.Color -black = C.rgb 0 0 0 - -link :: C.Color -link = blue C.-. 70 - -gray :: C.Color -gray = C.rgb 100 100 100 diff --git a/css/Header.hs b/css/Header.hs deleted file mode 100644 index ab58b0c..0000000 --- a/css/Header.hs +++ /dev/null @@ -1,53 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} - -module Header - ( style - ) where - -import Data.Monoid ((<>)) - -import Clay hiding (style) -import Clay.Display (displayTable) - -import qualified Color as Color -import qualified Media as Media - -style :: Css -style = do - - ".Header__Container" ? do - backgroundColor Color.red - color Color.white - fontSize (px 28) - display flex - - ".Header__Link" ? do - display flex - justifyContent center - alignItems center - flexGrow 1 - flexBasis (px 0) - height (em 3) - lineHeight (em 3) - textDecoration none - padding (px 0) (px 0) (px 0) (px 0) - textAlign (alignSide sideCenter) - color Color.white - textTransform capitalize - transition "background-color" (ms 500) ease (sec 0) - Media.tablet $ fontSize (em 0.8) - Media.mobile $ fontSize (em 0.6) - - (".Header__Link" # hover <> ".Header__Link" # focus <> ".Header__LinkCurrent") ? do - backgroundColor Color.red - borderBottomStyle solid - borderBottomColor (Color.red +. 40) - Media.mobile $ borderBottomWidth (px 6) - Media.tablet $ borderBottomWidth (px 8) - Media.desktop $ borderBottomWidth (px 10) - - ".Header__Icon" ? do - display flex - height (px 40) - marginRight (px 20) - Media.mobile $ display none diff --git a/css/IconLink.hs b/css/IconLink.hs deleted file mode 100644 index 9abbb5d..0000000 --- a/css/IconLink.hs +++ /dev/null @@ -1,31 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} - -module IconLink - ( style - ) where - -import Clay hiding (style) - -import qualified Link -import qualified Media - -style :: Css -style = do - - Link.style ".IconLink__Link" - - ".IconLink__Link" ? do - display inlineFlex - alignItems center - marginBottom (px 15) - - Media.desktop $ fontSize (px 18) - Media.tablet $ fontSize (px 16) - Media.mobile $ fontSize (px 14) - - ".IconLink__Icon" ? do - marginRight (px 12) - - Media.desktop $ height (px 20) - Media.tablet $ height (px 16) - Media.mobile $ height (px 14) diff --git a/css/Link.hs b/css/Link.hs deleted file mode 100644 index ba3b090..0000000 --- a/css/Link.hs +++ /dev/null @@ -1,23 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} - -module Link - ( style - ) where - -import Clay hiding (style) -import Clay.Selector (Fix, SelectorF (SelectorF)) - -import qualified Color - -style :: (Fix SelectorF) -> Css -style selector = do - - selector ? do - textDecoration none - color Color.link - transition "color" (sec 0.3) easeOut (sec 0) - focus & outline solid (px 0) Color.white - - (selector # hover) <> (selector # focus) ? do - textDecoration underline - color Color.blue diff --git a/css/Media.hs b/css/Media.hs deleted file mode 100644 index f9b56e1..0000000 --- a/css/Media.hs +++ /dev/null @@ -1,36 +0,0 @@ -module Media - ( mobile - , mobileTablet - , tablet - , tabletDesktop - , desktop - ) where - -import Clay hiding (query) -import qualified Clay -import qualified Clay.Media as Media -import Clay.Stylesheet (Feature) - -mobile :: Css -> Css -mobile = query [Media.maxWidth mobileTabletLimit] - -mobileTablet :: Css -> Css -mobileTablet = query [Media.maxWidth tabletDesktopLimit] - -tablet :: Css -> Css -tablet = query [Media.minWidth mobileTabletLimit, Media.maxWidth tabletDesktopLimit] - -tabletDesktop :: Css -> Css -tabletDesktop = query [Media.minWidth mobileTabletLimit] - -desktop :: Css -> Css -desktop = query [Media.minWidth tabletDesktopLimit] - -query :: [Feature] -> Css -> Css -query = Clay.query Media.screen - -mobileTabletLimit :: Size LengthUnit -mobileTabletLimit = (px 520) - -tabletDesktopLimit :: Size LengthUnit -tabletDesktopLimit = (px 950) diff --git a/css/NotFound.hs b/css/NotFound.hs deleted file mode 100644 index ee8a0af..0000000 --- a/css/NotFound.hs +++ /dev/null @@ -1,20 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} - -module Design.NotFound - ( notFoundCss - ) where - -import Clay - -notFoundCss :: Css -notFoundCss = - - ".notFoundPage" ? do - - h1 ? do - fontSize (px 40) - fontWeight bold - margin (px 20) (px 20) (px 20) (px 20) - - p ? - margin (px 20) (px 20) (px 20) (px 20) diff --git a/css/Project.hs b/css/Project.hs deleted file mode 100644 index 4d17e42..0000000 --- a/css/Project.hs +++ /dev/null @@ -1,19 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} - -module Project - ( style - ) where - -import qualified Color -import Clay hiding (style) - -style :: Css -style = do - - ".Project__Body" ? do - marginTop (px 20) - - ".Project__Body" ? img ? do - border solid (px 1) Color.gray - sym borderRadius (px 8) - width (pct 100) diff --git a/css/Resume.hs b/css/Resume.hs deleted file mode 100644 index ec7af62..0000000 --- a/css/Resume.hs +++ /dev/null @@ -1,87 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} - -module Resume - ( style - ) where - -import Clay hiding (style) - -import qualified Color -import qualified Media -import qualified Size - -style :: Css -style = do - - ".Resume__NameAndPrint" ? do - display flex - justifyContent spaceBetween - - ".Resume__Print" ? do - color Color.red - transition "all" (ms 100) ease (sec 0) - hover & transform (scale 1.2 1.2) - marginLeft (px 10) - - Media.desktop $ do - lineHeight (px 50) - height (px 50) - fontSize (px 40) - - Media.tablet $ do - lineHeight (px 40) - height (px 40) - fontSize (px 30) - - Media.mobile $ do - lineHeight (px 30) - height (px 30) - fontSize (px 20) - - ".Resume__GitLabLink" ? do - Media.desktop $ marginLeft (px 30) - Media.tablet $ marginLeft (px 20) - - ".Resume__Container" ? do - Media.desktop $ do - marginBottom (px 40) - marginLeft (px 30) - Media.tablet $ do - marginBottom (px 40) - marginLeft (px 20) - Media.mobile $ - marginBottom (px 25) - - ".Resume__Name" <> ".Resume__Location" <> ".Resume__Description" ? do - Size.lineHeight - - ".Resume__Name" ? do - backgroundColor Color.orange - color Color.white - padding (px 0) (px 10) (px 0) (px 10) - sym borderRadius (px 2) - - Media.desktop $ do - display inlineBlock - marginBottom (px 10) - - Media.mobileTablet $ - marginBottom (px 10) - - ".Resume__Time" ? do - fontStyle italic - marginBottom (px 10) - - Media.desktop $ do - display inlineBlock - marginLeft (px 15) - - Media.mobile $ - fontSize (pct 90) - - ".Resume__Location" ? do - color Color.green - Size.tabletMarginBottom - Media.mobile $ do - fontSize (pct 90) - marginBottom (px 10) diff --git a/css/Section.hs b/css/Section.hs deleted file mode 100644 index 4e236a3..0000000 --- a/css/Section.hs +++ /dev/null @@ -1,43 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} - -module Section - ( style - ) where - -import Clay hiding (style) - -import qualified Color -import qualified Media - -style :: Css -style = do - - ".Section__Container" ? do - position relative - margin (pct 0) (pct 10) (pct 0) (pct 10) - - ".Section__Title" ? do - color Color.red - fontFamily [] [monospace] - fontWeight bold - - Media.desktop $ do - lineHeight (px 50) - fontSize (px 30) - marginBottom (px 40) - marginTop (px 55) - - Media.tablet $ do - lineHeight (px 40) - fontSize (px 27) - marginBottom (px 35) - marginTop (px 45) - - Media.mobile $ do - lineHeight (px 30) - fontSize (px 22) - marginBottom (px 20) - marginTop (px 35) - - ".Section__Entries" ? do - paddingLeft (px 0) diff --git a/css/Size.hs b/css/Size.hs deleted file mode 100644 index 1fc097b..0000000 --- a/css/Size.hs +++ /dev/null @@ -1,24 +0,0 @@ -module Size - ( lineHeight - , listItemSep - , tabletMarginBottom - ) where - -import Clay hiding (lineHeight) -import qualified Clay - -import qualified Media - -lineHeight :: Css -lineHeight = do - Media.desktop $ Clay.lineHeight (px 40) - Media.tablet $ Clay.lineHeight (px 35) - Media.mobile $ Clay.lineHeight (px 30) - -listItemSep :: Size LengthUnit -listItemSep = - px 8 - -tabletMarginBottom :: Css -tabletMarginBottom = - Media.tablet $ marginBottom (px 15) diff --git a/css/Skills.hs b/css/Skills.hs deleted file mode 100644 index 96ef74e..0000000 --- a/css/Skills.hs +++ /dev/null @@ -1,22 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} - -module Skills - ( style - ) where - -import Clay hiding (style) -import qualified Clay.Flexbox as CF - -style :: Css -style = do - - ".Skills__List" ? do - display flex - flexWrap CF.wrap - sym2 margin (px 5) (px 0) - paddingLeft (px 0) - - ".Skills__Item" ? do - lineHeight normal - borderBottom solid (px 2) lightgray - margin (px 10) (px 15) (px 5) (px 0) diff --git a/css/Style.hs b/css/Style.hs deleted file mode 100644 index f53ca1e..0000000 --- a/css/Style.hs +++ /dev/null @@ -1,58 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} - -import Clay -import qualified Data.Text.Lazy.IO as T - -import qualified Body -import qualified Color -import qualified Header -import qualified IconLink -import qualified Media -import qualified Project -import qualified Resume -import qualified Section -import qualified Skills - -main :: IO () -main = T.putStrLn . renderWith compact [] $ do - - appearKeyframes - - body ? do - overflowX hidden - color Color.black - margin (px 0) (px 0) (px 40) (px 0) - Media.mobile $ fontSize (px 16) - Media.tabletDesktop $ fontSize (px 18) - - ".Main__Container" ? do - animationName "appear" - animationDuration (sec 0.2) - animationTimingFunction easeIn - animationIterationCount (iterationCount 1.0) - - svg ? do - width inherit - height inherit - - ul ? do - listStyleType none - paddingLeft (px 0) - - Body.style - Header.style - IconLink.style - Project.style - Resume.style - Section.style - Skills.style - -appearKeyframes :: Css -appearKeyframes = keyframes - "appear" - [ (0, do - "transform" -: "translateX(10px)" - opacity 0 - ) - , (100, "transform" -: "translateX(0px)") - ] @@ -1,23 +0,0 @@ -\section{Experience} - -$for(experience)$ - $body$ -$endfor$ - -\section{Educational background} - -$for(education)$ - $body$ -$endfor$ - -\section{Skills} - -$for(skills)$ - $body$ -$endfor$ - -\section{Interests} - -$for(hobbies)$ - $body$ -$endfor$ diff --git a/cv/education/1-insa.md b/cv/education/1-insa.md deleted file mode 100644 index fa2e34b..0000000 --- a/cv/education/1-insa.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -name: Master of Science Computer Science -location: INSA, Rennes ---- - -- Language -- System -- Network diff --git a/cv/education/2-master.md b/cv/education/2-master.md deleted file mode 100644 index 6fe177b..0000000 --- a/cv/education/2-master.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -name: Master of Research Computer Science -location: University of Rennes I ---- - -- Machine learning -- Modelisation -- Data indexation diff --git a/cv/experience/1-dividat.md b/cv/experience/1-dividat.md deleted file mode 100644 index 47fc25f..0000000 --- a/cv/experience/1-dividat.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -name: Developer -time: since 2019 -location: Dividat, Schindellegi -skills: - - Elm - - Scala - - Nix - - Python - - Ocaml - - Rust - - PostgreSQL ---- - -Prevent falls with technology-based training therapy which promotes autonomous -mobility and functional independence in old age, after an accident or illness. diff --git a/cv/experience/2-zengularity.md b/cv/experience/2-zengularity.md deleted file mode 100644 index 118550e..0000000 --- a/cv/experience/2-zengularity.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -name: Developer / Tech Lead -time: 5 years -location: Zengularity, Paris -skills: - - Scala - - Scala.js - - Elm - - Akka - - Play! - - MongoDB - - PostgreSQL - - ElasticSearch ---- - -Web Oriented Architecture (WOA) for information systems : - -- Training platform for the unemployed in Seine-Saint-Denis. -- File house insurance claims for Saretec. -- Unit and automatic franking of Colissimo labels for La Poste. -- Participant’s pages for the Mutuelle Nationale Territoriale (MNT). -- Food sample analysis with results visualization for Adisseo. diff --git a/cv/experience/3-irisa.md b/cv/experience/3-irisa.md deleted file mode 100644 index e33164a..0000000 --- a/cv/experience/3-irisa.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -name: Phd Intern -time: 5 months -location: IRISA, Rennes -skills: - - Semantic Web - - Scala - - Java - - LaTeX - - GWT - - Jena ---- - -Scalable query-based faceted search for guided and expressive search on the -semantic web. diff --git a/cv/experience/4-mission-critical-it.md b/cv/experience/4-mission-critical-it.md deleted file mode 100644 index e4b65a1..0000000 --- a/cv/experience/4-mission-critical-it.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: R&D Engineering Intern -time: 3 months -location: Mission Critical IT, Bruxelles -skills: -- Semantic Web -- Mercury ---- - -Guided querying and edition of semantic web information. diff --git a/cv/hobby/1-hobbies.md b/cv/hobby/1-hobbies.md deleted file mode 100644 index 33c5705..0000000 --- a/cv/hobby/1-hobbies.md +++ /dev/null @@ -1,2 +0,0 @@ -- Tune my workstation (NixOS, i3, bépo keyboard layout). -- Create video games (SDL, Elm). diff --git a/cv/skill/1-technical-lead.md b/cv/skill/1-technical-lead.md deleted file mode 100644 index 8d2788c..0000000 --- a/cv/skill/1-technical-lead.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -name: Technical lead ---- - -- Create tasks and subtasks from functional needs. -- Optimise task order for the development team. diff --git a/cv/skill/2-developer.md b/cv/skill/2-developer.md deleted file mode 100644 index 159a950..0000000 --- a/cv/skill/2-developer.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: Developer ---- - -- Program with functional languages (Haskell, Scala, Elm). -- Build web applications (HTTP protocol; HTML, CSS, Javascript and JSON languages). -- Interact with data (SQL, MongoDB, SPARQL). -- Work with versioning (Git). -- Review code and test functionalities. -- Write bash scripts. diff --git a/cv/skill/3-researcher.md b/cv/skill/3-researcher.md deleted file mode 100644 index 1f6b3e3..0000000 --- a/cv/skill/3-researcher.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -name: Researcher ---- - -- Conduct a bibliographic research. -- Build a prototype and experiment from it. -- Analyse the results from an experimentation and check the hypotheses. -- Present a research study through an article and a slideshow (LaTeX). @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -euo + +rsync -avzh public/ guyonvarch.me:/var/www/guyonvarch.me --delete diff --git a/fr/README.md b/fr/README.md deleted file mode 100644 index ebb5f0e..0000000 --- a/fr/README.md +++ /dev/null @@ -1,29 +0,0 @@ -# Currently not translated in french - -## Language bar - -```haskell -darkRed :: C.Color -darkRed = C.rgb 119 21 21 -``` - -```html -<div class="Language__Container"> - <a class="Language__Link" href="">FR</a> - <a class="Language__Link" href="">EN</a> -</div> -``` - -```haskell -".Language__Container" ? do - display flex - flexDirection rowReverse - backgroundColor Color.darkRed - paddingRight (px 5) - -".Language__Link" ? do - color Color.white - sym2 margin (px 5) (px 5) - fontSize (px 12) - textDecoration none -``` diff --git a/fr/cv.tex b/fr/cv.tex deleted file mode 100644 index 3d6aa2f..0000000 --- a/fr/cv.tex +++ /dev/null @@ -1,23 +0,0 @@ -\section{Experience} - -$for(experience)$ - $body$ -$endfor$ - -\section{Études} - -$for(education)$ - $body$ -$endfor$ - -\section{Compétences} - -$for(skills)$ - $body$ -$endfor$ - -\section{Intérêts} - -$for(hobbies)$ - $body$ -$endfor$ diff --git a/fr/cv/education/1-insa.md b/fr/cv/education/1-insa.md deleted file mode 100644 index fe722cc..0000000 --- a/fr/cv/education/1-insa.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -name: Diplôme d’ingénieur en informatique -location: INSA, Rennes ---- - -- Langage -- Système -- Réseau diff --git a/fr/cv/education/2-master.md b/fr/cv/education/2-master.md deleted file mode 100644 index 4e9b9f3..0000000 --- a/fr/cv/education/2-master.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -name: Master Recherche en Informatique -location: University of Rennes I ---- - -- Apprentissage artificiel -- Modélisation -- Indexation de données diff --git a/fr/cv/experience/1-developer.md b/fr/cv/experience/1-developer.md deleted file mode 100644 index 2fb3ccb..0000000 --- a/fr/cv/experience/1-developer.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -name: Développeur -time: depuis 2014 -location: Zengularity, Paris -skills: - - Scala - - Scala.js - - Elm - - Akka - - Play! - - MongoDB - - PostgreSQL - - ElasticSearch ---- - -Architecture web pour les systèmes d’information. - -- Catalogue de formations pour les bénéficiaires du RSA en Seine-Saint-Denis. -- Déclaration de sinistres pour Saretec. -- Affranchissement à l’unité et automatique d’étiquettes Colissimo pour La Poste. -- Espace adhérent de la Mutuelle Nationale Territoriale (MNT). -- Analyse d’échantillons alimentaires et visualisation des résultats pour Adisseo. diff --git a/fr/cv/experience/2-researcher.md b/fr/cv/experience/2-researcher.md deleted file mode 100644 index 6fe2c6d..0000000 --- a/fr/cv/experience/2-researcher.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -name: Chercheur stagiaire -time: 5 mois -location: IRISA, Rennes -skills: - - Semantic Web - - Scala - - Java - - LaTeX - - GWT - - Jena ---- - -Mise à l’échelle d’une recherche à facettes, à base de requêtes guidées et -expressives, dans le web sémantique. diff --git a/fr/cv/experience/3-research-developer.md b/fr/cv/experience/3-research-developer.md deleted file mode 100644 index f8da1cd..0000000 --- a/fr/cv/experience/3-research-developer.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: Ingénieur de recherche stagiaire -time: 3 mois -location: Mission Critical IT, Bruxelles -skills: -- Semantic Web -- Mercury ---- - -Recherche et édition guidées de données du web sémantique. diff --git a/fr/cv/hobby/1-hobbies.md b/fr/cv/hobby/1-hobbies.md deleted file mode 100644 index 25fd153..0000000 --- a/fr/cv/hobby/1-hobbies.md +++ /dev/null @@ -1,2 +0,0 @@ -- Ajuster mon poste informatique (NixOS, i3, clavier bépo). -- Créer des jeux vidéos (SDL, Elm). diff --git a/fr/cv/skill/1-technical-lead.md b/fr/cv/skill/1-technical-lead.md deleted file mode 100644 index 6fdd8b2..0000000 --- a/fr/cv/skill/1-technical-lead.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -name: Meneur technique ---- - -- Rédiger des tâches et sous-tâches à partir des besoins. -- Optimiser l’ordre des tâches pour l’équipe de développement. diff --git a/fr/cv/skill/2-developer.md b/fr/cv/skill/2-developer.md deleted file mode 100644 index f62363c..0000000 --- a/fr/cv/skill/2-developer.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: Développeur ---- - -- Programmer avec des langages fonctionnels (Haskell, Scala, Elm). -- Construire des applications web (protocole HTTP ; langages HTML, CSS, Javascript et JSON). -- Interagir avec des données (SQL, MongoDB, SPARQL). -- Travailler avec des versions (Git). -- Vérifier techniquement et fonctionnellement les développements. -- Écrire des scripts en Bash. diff --git a/fr/cv/skill/3-researcher.md b/fr/cv/skill/3-researcher.md deleted file mode 100644 index 5eb1320..0000000 --- a/fr/cv/skill/3-researcher.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -name: Chercheur ---- - -- Mener une recherche bibliographique. -- Construire un prototype et expérimenter à partir de ce prototype. -- Analyser les résultats du prototype et vérifier les hypothèses. -- Présenter un résultat de recherche à travers un article et un diaporama (LaTeX). diff --git a/fr/index.html b/fr/index.html deleted file mode 100644 index 960bc30..0000000 --- a/fr/index.html +++ /dev/null @@ -1,66 +0,0 @@ -<section class="Section__Container"> - - <h1 class="Resume__NameAndPrint Section__Title"> - Joris Guyonvarch - - <a class="Resume__Print" href="cv.pdf" target="_blank"> - $partial("templates/icons/printer.svg")$ - </a> - </h1> - - <a class="Resume__GitLabLink IconLink__Link" href="https://gitlab.com/guyonvarch"> - <span class="IconLink__Icon"> - $partial("templates/icons/gitlab.svg")$ - </span> - guyonvarch - </a> - -</section> - -<section class="Section__Container"> - - <h1 class="Section__Title">Expérience</h1> - - <ul class="Section__Entries"> - $for(experience)$ - $body$ - $endfor$ - </ul> - -</section> - -<section class="Section__Container"> - - <h1 class="Section__Title">Études</h1> - - <ul class="Section__Entries"> - $for(education)$ - $body$ - $endfor$ - </ul> - -</section> - -<section class="Section__Container"> - - <h1 class="Section__Title">Compétences</h1> - - <ul class="Section__Entries"> - $for(skills)$ - $body$ - $endfor$ - </ul> - -</section> - -<section class="Section__Container"> - - <h1 class="Section__Title">Intérêts</h1> - - <ul class="Section__Entries"> - $for(hobbies)$ - $body$ - $endfor$ - </ul> - -</section> diff --git a/fr/project/01-shared-cost.md b/fr/project/01-shared-cost.md deleted file mode 100644 index fc82853..0000000 --- a/fr/project/01-shared-cost.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -name: Shared Cost -gitlab: guyonvarch/sharedCost -skills: - - Haskell - - Scotty - - Elm - - Clay - - Persistent ---- - -Partage des coûts au sein d’un groupe de personnes avec une Application -Internet Riche (RIA). diff --git a/fr/project/02-ad-listener.md b/fr/project/02-ad-listener.md deleted file mode 100644 index 4cf85c3..0000000 --- a/fr/project/02-ad-listener.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -name: ad-listener -gitlab: guyonvarch/ad-listener -skills: - - Haskell - - TagSoup ---- - -Surveille l’ajout de nouvelles annonces à partir de critères de recherche -personnalisés et notifie par courriel lorsqu’une nouvelle annonce est -disponible. diff --git a/fr/project/03-reading.md b/fr/project/03-reading.md deleted file mode 100644 index ab8493a..0000000 --- a/fr/project/03-reading.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -name: Reading -gitlab: guyonvarch/reading -live: https://guyonvarch.gitlab.io/reading -skills: - - Scala - - Scala.js - - ScalaCSS - - Scalatags - - Scala.Rx ---- - -Guide les élèves à trouver un livre en raffinant le résultat avec une recherche -à facettes. diff --git a/fr/project/04-map-marks.md b/fr/project/04-map-marks.md deleted file mode 100644 index 4808a0a..0000000 --- a/fr/project/04-map-marks.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: Map Marks -gitlab: guyonvarch/mapMarks -live: https://guyonvarch.gitlab.io/mapMarks -skills: - - JavaScript - - Leaflet ---- - -Affiche des marqueurs sur une carte à partir d’un fichier CSV. diff --git a/fr/project/05-catchvoid.md b/fr/project/05-catchvoid.md deleted file mode 100644 index b270781..0000000 --- a/fr/project/05-catchvoid.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: cAtchVoid -gitlab: guyonvarch/catchvoid -live: http://guyonvarch.gitlab.io/catchvoid -skills: - - Elm - - Game development ---- - -Attrape les points de ta couleur tout en évitant les autres points. Tu peux inverser la couleur de ton joueur, ce qui a pour effet d’inverser la mécanique du jeu. Fais le meilleur score possible. diff --git a/fr/project/06-personal-page.md b/fr/project/06-personal-page.md deleted file mode 100644 index b391e97..0000000 --- a/fr/project/06-personal-page.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -name: Personal Page -gitlab: guyonvarch/personalPage -live: https://guyonvarch.me/ -skills: - - Haskell - - Hakyll - - Clay - - LaTeX ---- - -Présente le curriculum et les projets à partir de données au format YAML avec -une application web. diff --git a/fr/project/07-timer.md b/fr/project/07-timer.md deleted file mode 100644 index 8a5c1f7..0000000 --- a/fr/project/07-timer.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -name: Timer -gitlab: guyonvarch/timer -live: http://guyonvarch.gitlab.io/timer -skills: - - Elm ---- - -Crée et gère une liste de minuteurs avec une Application Internet Riche (RIA). diff --git a/fr/project/08-cooking.md b/fr/project/08-cooking.md deleted file mode 100644 index 9485e30..0000000 --- a/fr/project/08-cooking.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -name: Cooking -gitlab: guyonvarch/cooking -live: https://guyonvarch.gitlab.io/cooking -skills: - - Haskell - - Hakyll - - Clay ---- - -Présente des recettes sous la forme d’un blog à partir de fichiers -markdown. diff --git a/fr/project/09-nixos-config.md b/fr/project/09-nixos-config.md deleted file mode 100644 index 2884686..0000000 --- a/fr/project/09-nixos-config.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -name: nixos-config -gitlab: guyonvarch/nixos-config -skills: - - Nix ---- - -Configure de manière déclarative mon système NixOS. diff --git a/fr/project/10-dotfiles.md b/fr/project/10-dotfiles.md deleted file mode 100644 index 685f385..0000000 --- a/fr/project/10-dotfiles.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -name: dotfiles -gitlab: guyonvarch/dotfiles ---- - -Configure les applications que j’utilise. diff --git a/fr/projects.html b/fr/projects.html deleted file mode 100644 index 8659cbc..0000000 --- a/fr/projects.html +++ /dev/null @@ -1,5 +0,0 @@ -<ul class="Projects__List"> - $for(projects)$ - $body$ - $endfor$ -</ul> diff --git a/index.html b/index.html deleted file mode 100644 index a867f1e..0000000 --- a/index.html +++ /dev/null @@ -1,66 +0,0 @@ -<section class="Section__Container"> - - <h1 class="Resume__NameAndPrint Section__Title"> - Joris Guyonvarch - - <a class="Resume__Print" href="cv.pdf" target="_blank"> - $partial("templates/icons/printer.svg")$ - </a> - </h1> - - <a class="Resume__GitLabLink IconLink__Link" href="https://gitlab.com/guyonvarch"> - <span class="IconLink__Icon"> - $partial("templates/icons/gitlab.svg")$ - </span> - guyonvarch - </a> - -</section> - -<section class="Section__Container"> - - <h1 class="Section__Title">Experience</h1> - - <ul class="Section__Entries"> - $for(experience)$ - $body$ - $endfor$ - </ul> - -</section> - -<section class="Section__Container"> - - <h1 class="Section__Title">Educational background</h1> - - <ul class="Section__Entries"> - $for(education)$ - $body$ - $endfor$ - </ul> - -</section> - -<section class="Section__Container"> - - <h1 class="Section__Title">Skills</h1> - - <ul class="Section__Entries"> - $for(skills)$ - $body$ - $endfor$ - </ul> - -</section> - -<section class="Section__Container"> - - <h1 class="Section__Title">Hobbies</h1> - - <ul class="Section__Entries"> - $for(hobbies)$ - $body$ - $endfor$ - </ul> - -</section> diff --git a/personalPage.cabal b/personalPage.cabal deleted file mode 100644 index 54b497b..0000000 --- a/personalPage.cabal +++ /dev/null @@ -1,18 +0,0 @@ -name: personalPage -version: 0.0.1 -build-type: Simple -cabal-version: >= 1.10 - -executable personalPage - main-is: Main.hs - ghc-options: -Wall -Werror - hs-source-dirs: src - default-language: Haskell2010 - ghc-options: -threaded - build-depends: base >= 4.12 && < 4.13 - , hakyll >= 4.13 && < 4.14 - , clay - , process - , filepath - , text - , pandoc diff --git a/project/01-shared-cost.md b/project/01-shared-cost.md deleted file mode 100644 index 91b6c46..0000000 --- a/project/01-shared-cost.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -name: Shared Cost -gitlab: guyonvarch/shared-cost -skills: - - Haskell - - Scotty - - Clay - - GHCJS - - reflex-frp ---- - -Share costs with a group of people with a Rich Internet Application -(RIA). - -![](assets/project/shared-cost.png) diff --git a/project/02-todo.md b/project/02-todo.md deleted file mode 100644 index 3d65beb..0000000 --- a/project/02-todo.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -name: Todo -gitlab: guyonvarch/todo -skills: - - Python - - Qt ---- - -Manage a context-based next-action list. - -![](assets/project/todo.png) diff --git a/project/03-ad-listener.md b/project/03-ad-listener.md deleted file mode 100644 index 130cde1..0000000 --- a/project/03-ad-listener.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: ad-listener -gitlab: guyonvarch/ad-listener -skills: - - Haskell - - TagSoup ---- - -Watch for new ads according to custom search criteria and send an -email notification each time a new ad is available. diff --git a/project/04-reading.md b/project/04-reading.md deleted file mode 100644 index 273a405..0000000 --- a/project/04-reading.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -name: Reading -gitlab: guyonvarch/reading -live: https://guyonvarch.gitlab.io/reading -skills: - - Scala - - Scala.js - - ScalaCSS - - Scalatags - - Scala.Rx ---- - -Guide students to find a book by refining the result set with faceted -search. - -![](assets/project/reading.png) diff --git a/project/05-map.md b/project/05-map.md deleted file mode 100644 index ae01dac..0000000 --- a/project/05-map.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -name: Map -gitlab: guyonvarch/map -live: https://guyonvarch.gitlab.io/map -skills: - - Ocaml - - BuckleScript - - Leaflet ---- - -Add customized markers on a map. - -![](assets/project/map.png) diff --git a/project/06-catchvoid.md b/project/06-catchvoid.md deleted file mode 100644 index 5ac97e0..0000000 --- a/project/06-catchvoid.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -name: cAtchVoid -gitlab: guyonvarch/catchvoid -live: http://guyonvarch.gitlab.io/catchvoid -skills: - - Elm - - Game development ---- - -Catch the points of your color, avoid the others. You can switch -colors in order to reverse the game mechanic. Get the best score. - -![](assets/project/catchvoid.png) diff --git a/project/07-personal-page.md b/project/07-personal-page.md deleted file mode 100644 index f813be9..0000000 --- a/project/07-personal-page.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -name: Personal Page -gitlab: guyonvarch/personalPage -live: https://guyonvarch.me/ -skills: - - Haskell - - Hakyll - - Clay - - LaTeX ---- - -Show resume and projects from YAML data with a web application. - -![](assets/project/personal-page.png) diff --git a/project/08-timer.md b/project/08-timer.md deleted file mode 100644 index 7d98ff9..0000000 --- a/project/08-timer.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -name: Timer -gitlab: guyonvarch/timer -live: http://guyonvarch.gitlab.io/timer -skills: - - Elm ---- - -Create and manage timers with a Rich Internet Application (RIA). - -![](assets/project/timer.png) diff --git a/project/09-cooking.md b/project/09-cooking.md deleted file mode 100644 index 4f2b72a..0000000 --- a/project/09-cooking.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -name: Cooking -gitlab: guyonvarch/cooking -live: https://cooking.guyonvarch.me -skills: - - Zola - - Ocaml - - BuckleScript ---- - -Show recipes as a blog from markdown files. - -![](assets/project/cooking.png) diff --git a/project/10-nixos-config.md b/project/10-nixos-config.md deleted file mode 100644 index b09c11f..0000000 --- a/project/10-nixos-config.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -name: nixos-config -gitlab: guyonvarch/nixos-config -skills: - - Nix ---- - -Configure declaratively my NixOS system. diff --git a/project/11-dotfiles.md b/project/11-dotfiles.md deleted file mode 100644 index 582dcf8..0000000 --- a/project/11-dotfiles.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -name: dotfiles -gitlab: guyonvarch/dotfiles ---- - -Configure the tools I use. diff --git a/projects.html b/projects.html deleted file mode 100644 index 8659cbc..0000000 --- a/projects.html +++ /dev/null @@ -1,5 +0,0 @@ -<ul class="Projects__List"> - $for(projects)$ - $body$ - $endfor$ -</ul> diff --git a/assets/icon.png b/public/icon.png Binary files differindex 115a297..115a297 100644 --- a/assets/icon.png +++ b/public/icon.png diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..9aac4ed --- /dev/null +++ b/public/index.html @@ -0,0 +1,203 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <meta name="author" content="Joris Guyonvarch"> + <meta name="description" content="I am a developer using functional programming. Here are my resume and projects."> + <title>Joris Guyonvarch</title> + <link rel="stylesheet" href="style.css" /> + <link rel="icon" href="icon.png" /> + </head> + + <body> + <header class="g-Header"> + <a href="" class="g-Header__Link g-Header__Link--Current">Resume</a> + <a href="projects.html" class="g-Header__Link ">Projects</a> + </header> + + <main class="g-Main"> + <section class="g-Section"> + <h1 class="g-Section__Title">Experience</h1> + + <ul class="g-Section__Entries"> + + <li class="g-Resume"> + <div class="g-Resume__Title"> + <em>Dividat</em> since 2019 + </div> + + <p class="g-Paragraph"> + Prevent falls with technology-based training therapy which + promotes autonomous mobility and functional independence in old + age, after an accident or illness. + </p> + + <ul class="g-Skills"> + <li class="g-Skills__Item">Elm</li> + <li class="g-Skills__Item">Scala</li> + <li class="g-Skills__Item">Nix</li> + <li class="g-Skills__Item">Python</li> + <li class="g-Skills__Item">Ocaml</li> + <li class="g-Skills__Item">Rust</li> + <li class="g-Skills__Item">PostgreSQL</li> + </ul> + </li> + + <li class="g-Resume"> + <div class="g-Resume__Title"> + <em>Zengularity</em> for 5 years + </div> + + <p class="g-Paragraph"> + Web Oriented Architecture (WOA) for information systems : + </p> + + <ul class="g-List"> + <li class="g-List__Item">Training platform for the unemployed in Seine-Saint-Denis.</li> + <li class="g-List__Item">File house insurance claims for Saretec.</li> + <li class="g-List__Item">Unit and automatic franking of Colissimo labels for La Poste.</li> + <li class="g-List__Item">Participant’s pages for the Mutuelle Nationale Territoriale (MNT).</li> + <li class="g-List__Item">Food sample analysis with results visualization for Adisseo.</li> + </ul> + + <ul class="g-Skills"> + <li class="g-Skills__Item">Scala</li> + <li class="g-Skills__Item">Scala.js</li> + <li class="g-Skills__Item">Elm</li> + <li class="g-Skills__Item">Akka</li> + <li class="g-Skills__Item">Play!</li> + <li class="g-Skills__Item">MongoDB</li> + <li class="g-Skills__Item">PostgreSQL</li> + <li class="g-Skills__Item">ElasticSearch</li> + </ul> + </li> + + <li class="g-Resume"> + <div class="g-Resume__Title"> + <em>IRISA Rennes</em> for 5 months + </div> + + <p class="g-Paragraph"> + Scalable query-based faceted search for guided and expressive + search on the semantic web. + </p> + + <ul class="g-Skills"> + <li class="g-Skills__Item">Semantic Web</li> + <li class="g-Skills__Item">Scala</li> + <li class="g-Skills__Item">Java</li> + <li class="g-Skills__Item">LaTeX</li> + <li class="g-Skills__Item">GWT</li> + <li class="g-Skills__Item">Jena</li> + </ul> + </li> + + <li class="g-Resume"> + <div class="g-Resume__Title"> + <em>Mission Critical IT</em> for 3 months + </div> + + <p class="g-Paragraph"> + Guided querying and edition of semantic web information. + </p> + + <ul class="g-Skills"> + <li class="g-Skills__Item">Semantic Web</li> + <li class="g-Skills__Item">Mercury</li> + </ul> + </li> + </ul> + </section> + + <section class="g-Section"> + <h1 class="g-Section__Title">Educational background</h1> + + <ul class="g-Section__Entries"> + <li class="g-Resume"> + <div class="g-Resume__Title"> + <em>Master of Science Computer Science</em> at INSA Rennes + </div> + + <ul class="g-List"> + <li class="g-List__Item">Language</li> + <li class="g-List__Item">System</li> + <li class="g-List__Item">Network</li> + </ul> + </li> + + <li class="g-Resume"> + <div class="g-Resume__Title"> + <em>Master of Research Computer Science</em> at University of Rennes I + </div> + + <ul class="g-List"> + <li class="g-List__Item">Machine learning</li> + <li class="g-List__Item">Modelisation</li> + <li class="g-List__Item">Data indexation</li> + </ul> + </li> + </ul> + </section> + + <section class="g-Section"> + <h1 class="g-Section__Title">Skills</h1> + + <ul class="g-Section__Entries"> + <li class="g-Resume"> + <div class="g-Resume__Title"> + <em>Technical lead</em> + </div> + + <ul class="g-List"> + <li class="g-List__Item">Create tasks and subtasks from functional needs.</li> + <li class="g-List__Item">Optimise task order for the development team.</li> + </ul> + </li> + + <li class="g-Resume"> + <div class="g-Resume__Title"> + <em>Developer</em> + </div> + + <ul class="g-List"> + <li class="g-List__Item">Program with functional languages (Haskell, Scala, Elm).</li> + <li class="g-List__Item">Build web applications (HTTP protocol; HTML, CSS, Javascript and JSON languages).</li> + <li class="g-List__Item">Interact with data (SQL, MongoDB, SPARQL).</li> + <li class="g-List__Item">Work with versioning (Git).</li> + <li class="g-List__Item">Review code and test functionalities.</li> + <li class="g-List__Item">Write bash and Python scripts.</li> + </ul> + </li> + + <li class="g-Resume"> + <div class="g-Resume__Title"> + <em>Researcher</em> + </div> + + <ul class="g-List"> + <li class="g-List__Item">Conduct a bibliographic research.</li> + <li class="g-List__Item">Build a prototype and experiment from it.</li> + <li class="g-List__Item">Analyse the results from an experimentation and check the hypotheses.</li> + <li class="g-List__Item">Present a research study through an article and a slideshow (LaTeX).</li> + </ul> + </li> + </ul> + </section> + + <section class="g-Section"> + <h1 class="g-Section__Title">Hobbies</h1> + + <ul class="g-Section__Entries"> + <li class="g-Resume"> + + <ul class="g-List"> + <li class="g-List__Item">Tune my workstation (NixOS, i3, bépo keyboard layout).</li> + <li class="g-List__Item">Create video games (SDL, Elm).</li> + </ul> + </li> + </ul> + </section> + </main> + </body> +</html> diff --git a/public/projects.html b/public/projects.html new file mode 100644 index 0000000..476b152 --- /dev/null +++ b/public/projects.html @@ -0,0 +1,302 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <meta name="author" content="Joris Guyonvarch"> + <meta name="description" content="I’m a developer using functional programming. View my resume and projects."> + <title>Joris Guyonvarch</title> + <link rel="stylesheet" href="style.css" /> + <link rel="icon" href="icon.png" /> + </head> + + <body> + <header class="g-Header"> + <a href="index.html" class="g-Header__Link ">Resume</a> + <a href="projects.html" class="g-Header__Link g-Header__Link--Current">Projects</a> + </header> + + <main class="g-Main"> + <ul class="g-Projects__List"> + <li class="g-Section"> + <h1 class="g-Section__Title">Shared Cost</h1> + + <div> + <a class="g-IconLink__Link" href="https://gitlab.com/guyonvarch/shared-cost"> + <span class="g-IconLink__Icon"> + <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22.65 14.39L12 22.13 1.35 14.39a.84.84 0 0 1-.3-.94l1.22-3.78 2.44-7.51A.42.42 0 0 1 4.82 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.49h8.1l2.44-7.51A.42.42 0 0 1 18.6 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.51L23 13.45a.84.84 0 0 1-.35.94z"></path></svg> + </span> + guyonvarch/shared-cost + </a> + </div> + + <p class="g-Paragraph"> + Share costs with a group of people with a Rich Internet + Application (RIA). + </p> + + <img class="g-Image" src="projects/shared-cost.png" /> + + <ul class="g-Skills"> + <li class="g-Skills__Item">Haskell</li> + <li class="g-Skills__Item">Scotty</li> + <li class="g-Skills__Item">Clay</li> + <li class="g-Skills__Item">GHCJS</li> + <li class="g-Skills__Item">reflex-frp</li> + </ul> + </li> + + <li class="g-Section"> + <h1 class="g-Section__Title">Todo</h1> + + <div> + <a class="g-IconLink__Link" href="https://gitlab.com/guyonvarch/todo"> + <span class="g-IconLink__Icon"> + <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22.65 14.39L12 22.13 1.35 14.39a.84.84 0 0 1-.3-.94l1.22-3.78 2.44-7.51A.42.42 0 0 1 4.82 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.49h8.1l2.44-7.51A.42.42 0 0 1 18.6 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.51L23 13.45a.84.84 0 0 1-.35.94z"></path></svg> + </span> + guyonvarch/todo + </a> + </div> + + <p class="g-Paragraph">Manage a context-based next-action list.</p> + + <img class="g-Image" src="projects/todo.png" /> + + <ul class="g-Skills"> + <li class="g-Skills__Item">Python</li> + <li class="g-Skills__Item">Qt</li> + </ul> + </li> + + <li class="g-Section"> + <h1 class="g-Section__Title">Reading</h1> + + <div> + <a class="g-IconLink__Link" href="https://gitlab.com/guyonvarch/reading"> + <span class="g-IconLink__Icon"> + <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22.65 14.39L12 22.13 1.35 14.39a.84.84 0 0 1-.3-.94l1.22-3.78 2.44-7.51A.42.42 0 0 1 4.82 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.49h8.1l2.44-7.51A.42.42 0 0 1 18.6 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.51L23 13.45a.84.84 0 0 1-.35.94z"></path></svg> + </span> + guyonvarch/reading + </a> + </div> + + <div> + <a class="g-IconLink__Link" href="https://guyonvarch.gitlab.io/reading"> + <span class="g-IconLink__Icon"> + <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line></svg> + + </span> + https://guyonvarch.gitlab.io/reading + </a> + </div> + + <p class="g-Paragraph"> + Guide students to find a book by refining the result set with faceted search. + </p> + + <img class="g-Image" src="projects/reading.png" /> + + <ul class="g-Skills"> + <li class="g-Skills__Item">Scala</li> + <li class="g-Skills__Item">Scala.js</li> + <li class="g-Skills__Item">ScalaCSS</li> + <li class="g-Skills__Item">Scalatags</li> + <li class="g-Skills__Item">Scala.Rx</li> + </ul> + </li> + + <li class="g-Section"> + <h1 class="g-Section__Title">Map</h1> + + <div> + <a class="g-IconLink__Link" href="https://gitlab.com/guyonvarch/map"> + <span class="g-IconLink__Icon"> + <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22.65 14.39L12 22.13 1.35 14.39a.84.84 0 0 1-.3-.94l1.22-3.78 2.44-7.51A.42.42 0 0 1 4.82 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.49h8.1l2.44-7.51A.42.42 0 0 1 18.6 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.51L23 13.45a.84.84 0 0 1-.35.94z"></path></svg> + </span> + guyonvarch/map + </a> + </div> + + <div> + <a class="g-IconLink__Link" href="https://guyonvarch.gitlab.io/map"> + <span class="g-IconLink__Icon"> + <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line></svg> + + </span> + https://guyonvarch.gitlab.io/map + </a> + </div> + + <p class="g-Paragraph">Add customized markers on a map.</p> + + <img class="g-Image" src="projects/map.png" /> + + <ul class="g-Skills"> + <li class="g-Skills__Item">Ocaml</li> + <li class="g-Skills__Item">BuckleScript</li> + <li class="g-Skills__Item">Leaflet</li> + </ul> + </li> + + <li class="g-Section"> + <h1 class="g-Section__Title">cAtchVoid</h1> + + <div> + <a class="g-IconLink__Link" href="https://gitlab.com/guyonvarch/catchvoid"> + <span class="g-IconLink__Icon"> + <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22.65 14.39L12 22.13 1.35 14.39a.84.84 0 0 1-.3-.94l1.22-3.78 2.44-7.51A.42.42 0 0 1 4.82 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.49h8.1l2.44-7.51A.42.42 0 0 1 18.6 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.51L23 13.45a.84.84 0 0 1-.35.94z"></path></svg> + </span> + guyonvarch/catchvoid + </a> + </div> + + <div> + <a class="g-IconLink__Link" href="http://guyonvarch.gitlab.io/catchvoid"> + <span class="g-IconLink__Icon"> + <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line></svg> + + </span> + http://guyonvarch.gitlab.io/catchvoid + </a> + </div> + + <p class="g-Paragraph"> + Catch the points of your color, avoid the others. You can switch + colors in order to reverse the game mechanic. Get the best score. + </p> + <img class="g-Image" src="projects/catchvoid.png" /> + + <ul class="g-Skills"> + <li class="g-Skills__Item">Elm</li> + <li class="g-Skills__Item">Game development</li> + </ul> + </li> + + <li class="g-Section"> + <h1 class="g-Section__Title">Timer</h1> + + <div> + <a class="g-IconLink__Link" href="https://gitlab.com/guyonvarch/timer"> + <span class="g-IconLink__Icon"> + <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22.65 14.39L12 22.13 1.35 14.39a.84.84 0 0 1-.3-.94l1.22-3.78 2.44-7.51A.42.42 0 0 1 4.82 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.49h8.1l2.44-7.51A.42.42 0 0 1 18.6 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.51L23 13.45a.84.84 0 0 1-.35.94z"></path></svg> + </span> + guyonvarch/timer + </a> + </div> + + <div> + <a class="g-IconLink__Link" href="http://guyonvarch.gitlab.io/timer"> + <span class="g-IconLink__Icon"> + <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line></svg> + + </span> + http://guyonvarch.gitlab.io/timer + </a> + </div> + + <p class="g-Paragraph"> + Create and manage timers with a Rich Internet Application (RIA). + </p> + + <img class="g-Image" src="projects/timer.png" /> + + <ul class="g-Skills"> + <li class="g-Skills__Item">Elm</li> + </ul> + </li> + + <li class="g-Section"> + <h1 class="g-Section__Title">Cooking</h1> + + <div> + <a class="g-IconLink__Link" href="https://gitlab.com/guyonvarch/cooking"> + <span class="g-IconLink__Icon"> + <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22.65 14.39L12 22.13 1.35 14.39a.84.84 0 0 1-.3-.94l1.22-3.78 2.44-7.51A.42.42 0 0 1 4.82 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.49h8.1l2.44-7.51A.42.42 0 0 1 18.6 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.51L23 13.45a.84.84 0 0 1-.35.94z"></path></svg> + </span> + guyonvarch/cooking + </a> + </div> + + <div> + <a class="g-IconLink__Link" href="https://cooking.guyonvarch.me"> + <span class="g-IconLink__Icon"> + <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line></svg> + + </span> + https://cooking.guyonvarch.me + </a> + </div> + + <p class="g-Paragraph">Show recipes as a blog from markdown files.</p> + + <img class="g-Image" src="projects/cooking.png" /> + + <ul class="g-Skills"> + <li class="g-Skills__Item">Zola</li> + <li class="g-Skills__Item">Ocaml</li> + <li class="g-Skills__Item">BuckleScript</li> + </ul> + </li> + + <li class="g-Section"> + <h1 class="g-Section__Title">ad-listener</h1> + + <div> + <a class="g-IconLink__Link" href="https://gitlab.com/guyonvarch/ad-listener"> + <span class="g-IconLink__Icon"> + <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22.65 14.39L12 22.13 1.35 14.39a.84.84 0 0 1-.3-.94l1.22-3.78 2.44-7.51A.42.42 0 0 1 4.82 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.49h8.1l2.44-7.51A.42.42 0 0 1 18.6 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.51L23 13.45a.84.84 0 0 1-.35.94z"></path></svg> + </span> + guyonvarch/ad-listener + </a> + </div> + + <p class="g-Paragraph"> + Watch for new ads according to custom search criteria and send an + email notification each time a new ad is available. + </p> + + <ul class="g-Skills"> + <li class="g-Skills__Item">Haskell</li> + <li class="g-Skills__Item">TagSoup</li> + </ul> + </li> + + <li class="g-Section"> + <h1 class="g-Section__Title">nixos-config</h1> + + <div> + <a class="g-IconLink__Link" href="https://gitlab.com/guyonvarch/nixos-config"> + <span class="g-IconLink__Icon"> + <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22.65 14.39L12 22.13 1.35 14.39a.84.84 0 0 1-.3-.94l1.22-3.78 2.44-7.51A.42.42 0 0 1 4.82 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.49h8.1l2.44-7.51A.42.42 0 0 1 18.6 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.51L23 13.45a.84.84 0 0 1-.35.94z"></path></svg> + </span> + guyonvarch/nixos-config + </a> + </div> + + <p class="g-Paragraph">Configure declaratively my NixOS system.</p> + + <ul class="g-Skills"> + <li class="g-Skills__Item">Nix</li> + </ul> + </li> + + <li class="g-Section"> + <h1 class="g-Section__Title">dotfiles</h1> + + <div> + <a class="g-IconLink__Link" href="https://gitlab.com/guyonvarch/dotfiles"> + <span class="g-IconLink__Icon"> + <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22.65 14.39L12 22.13 1.35 14.39a.84.84 0 0 1-.3-.94l1.22-3.78 2.44-7.51A.42.42 0 0 1 4.82 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.49h8.1l2.44-7.51A.42.42 0 0 1 18.6 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.51L23 13.45a.84.84 0 0 1-.35.94z"></path></svg> + </span> + guyonvarch/dotfiles + </a> + </div> + + <p class="g-Paragraph"> + Configure my tools. + </p> + </li> + </ul> + </main> + </body> +</html> diff --git a/assets/project/catchvoid.png b/public/projects/catchvoid.png Binary files differindex bc05c6b..bc05c6b 100644 --- a/assets/project/catchvoid.png +++ b/public/projects/catchvoid.png diff --git a/assets/project/cooking.png b/public/projects/cooking.png Binary files differindex 2d2bcc9..2d2bcc9 100644 --- a/assets/project/cooking.png +++ b/public/projects/cooking.png diff --git a/assets/project/map.png b/public/projects/map.png Binary files differindex 495dd3f..dcc83e4 100644 --- a/assets/project/map.png +++ b/public/projects/map.png diff --git a/assets/project/reading.png b/public/projects/reading.png Binary files differindex 4b58f0e..4b58f0e 100644 --- a/assets/project/reading.png +++ b/public/projects/reading.png diff --git a/assets/project/shared-cost.png b/public/projects/shared-cost.png Binary files differindex e0101cb..e0101cb 100644 --- a/assets/project/shared-cost.png +++ b/public/projects/shared-cost.png diff --git a/assets/project/timer.png b/public/projects/timer.png Binary files differindex dd37a2d..dd37a2d 100644 --- a/assets/project/timer.png +++ b/public/projects/timer.png diff --git a/assets/project/todo.png b/public/projects/todo.png Binary files differindex 763f1bb..763f1bb 100644 --- a/assets/project/todo.png +++ b/public/projects/todo.png diff --git a/public/style.css b/public/style.css new file mode 100644 index 0000000..999fb7c --- /dev/null +++ b/public/style.css @@ -0,0 +1,170 @@ +@keyframes appear { + 0.0% { + transform: translateX(0.8rem); + opacity: 0; + } + 100.0% { + transform: translateX(0); + } +} + +@media screen and (max-width: 500px) { + html { + font-size: 90%; + } +} + +@media screen and (min-width: 500px) and (max-width: 900px) { + html { + font-size: 100%; + } +} + +@media screen and (min-width: 900px) { + html { + font-size: 110%; + } +} + +body { + overflow-x: hidden; + margin: 0; + line-height: 1.8rem; +} + +.g-Main { + animation-name: appear; + animation-duration: 0.2s; + animation-timing-function: ease-in; + animation-iteration-count: 1; + width: 80%; + margin: 0 auto; +} + +svg { + width: inherit; + height: inherit; +} + +ul { + list-style-type: none; + padding-left: 0; +} + +.g-Paragraph { + margin-bottom: 1rem; +} + +.g-List { + padding-left: 0; + margin: 0.5rem 0 1rem 0.5rem; +} + +.g-List__Item::before { + content: "•"; + color: #bf7f3f; + display: inline-block; + margin-right: 0.5rem; +} + +.g-List__Item { + padding: 0.2rem 0; +} + +.g-Image { + border: solid 1px #646464; + border-radius: 0.5rem; + margin-bottom: 1rem; + width: 100%; + max-width: 900px; +} + +.g-Header { + background-color: #bf7f3f; + font-size: 2.5rem; + display: flex; + font-variant: small-caps; +} + +.g-Header__Link { + display: flex; + font-size: 0.6em; + justify-content: center; + align-items: center; + flex-grow: 1; + flex-basis: 0; + height: 3.5rem; + text-decoration: none; + padding: 0; + text-align: center; + color: #ffffff; +} + +.g-Header__Link:hover, +.g-Header__Link:focus, +.g-Header__Link--Current { + border-bottom: #9a5f20 solid 0.6rem; +} + +.g-IconLink__Link { + text-decoration: none; + color: #515170; + transition: color 0.3s ease-out 0.0s; + display: inline-flex; + align-items: center; +} + +.g-IconLink__Link:focus { + outline: solid 0 #ffffff; +} + +.g-IconLink__Link:hover, +.g-IconLink__Link:focus { + text-decoration: underline; +} + +.g-IconLink__Icon { + margin-right: 1rem; + height: 1.2rem; +} + +.g-Resume__Title { + margin: 2.5rem 0 0.5rem; +} + +.g-Resume__Title > em { + font-style: normal; + border-bottom: solid 0.2rem #bf7f3f; +} + +.g-Section__Title { + color: #bf7f3f; + font-size: 1.8rem; + font-weight: lighter; + margin-bottom: 2rem; + margin-top: 3.5rem; + border-bottom: 0.1rem solid #bf7f3f; + padding-bottom: 0.5rem; + font-variant: small-caps; + letter-spacing: 0.1rem; +} + +.g-Section__Entries { + padding-left: 0; +} + +.g-Skills { + display: flex; + flex-wrap: wrap; + margin-bottom: 1rem; + padding-left: 0; +} + +.g-Skills__Item { + font-size: 0.8rem; + margin-right: 1rem; + margin-bottom: 0.5rem; + background-color: #EEEEEE; + border-radius: 0.1rem; + padding: 0 0.5rem; +} diff --git a/resume/external-link.png b/resume/external-link.png Binary files differdeleted file mode 100644 index cf25c68..0000000 --- a/resume/external-link.png +++ /dev/null diff --git a/resume/gitlab.png b/resume/gitlab.png Binary files differdeleted file mode 100644 index 0d8b975..0000000 --- a/resume/gitlab.png +++ /dev/null diff --git a/shell.nix b/shell.nix deleted file mode 100644 index 186912b..0000000 --- a/shell.nix +++ /dev/null @@ -1,29 +0,0 @@ -with (import (builtins.fetchGit { - name = "nixpkgs-20.03"; - url = "git@github.com:nixos/nixpkgs.git"; - rev = "5272327b81ed355bbed5659b8d303cf2979b6953"; - ref = "refs/tags/20.03"; -}) {}); - -haskell.lib.buildStackProject { - name = "myenv"; - - buildInputs = [ - cabal-install - zlib - stack - nodePackages.nodemon - tmux - tmuxinator - nodejs - (texlive.combine { - inherit (texlive) scheme-medium marvosym enumitem bookman titlesec - hyperref fancyhdr changepage lastpage xcolor xifthen ifmtarg; - } - ) - ]; - - shellHook = '' - export PATH=node_modules/.bin:$PATH; - ''; -} diff --git a/src/Main.hs b/src/Main.hs deleted file mode 100644 index 1e9e6d9..0000000 --- a/src/Main.hs +++ /dev/null @@ -1,151 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} - -import Control.Applicative (empty) -import qualified Data.Text as T -import Hakyll ((.&&.)) -import Hakyll (Compiler, Configuration (..), - Context (Context), - ContextField (ListField), Identifier, - Item, MonadMetadata, TmpFile (TmpFile)) -import qualified Hakyll as H -import qualified System.FilePath as FilePath (replaceExtension, - takeDirectory) -import qualified System.Process as Process (rawSystem, readCreateProcess, - shell, system) -import qualified Text.Pandoc as Pandoc - -main :: IO () -main = H.hakyllWith configuration $ do - - -- Static files - H.match "assets/**" $ do - H.route H.idRoute - H.compile H.copyFileCompiler - - H.match "css/**.hs" $ do - H.route . H.customRoute $ const "style.css" - H.compile $ do - H.unsafeCompiler (Process.readCreateProcess (Process.shell "cd css && runghc Style.hs") "") - >>= H.makeItem - - H.match "cv/**" $ H.version "html" $ do - H.route $ H.setExtension "html" - let context = - metadataListField `mappend` - H.defaultContext - H.compile $ H.pandocCompiler - >>= H.loadAndApplyTemplate "templates/resume.html" context - >>= H.relativizeUrls - - H.match "cv/**" $ H.version "tex" $ do - H.route $ H.setExtension "tex" - let context = - metadataListField `mappend` - H.defaultContext - H.compile $ H.getResourceBody - >>= H.readPandoc - >>= writeLaTeX - >>= H.loadAndApplyTemplate "templates/resume.tex" context - - H.match "project/**" $ do - H.route $ H.setExtension "html" - let context = - metadataListField `mappend` - H.defaultContext - H.compile $ H.pandocCompiler - >>= H.loadAndApplyTemplate "templates/project.html" context - >>= H.relativizeUrls - - H.match "index.html" $ do - H.route H.idRoute - let layoutContext = - H.constField "isResume" "true" `mappend` - H.defaultContext - let context = - H.listField "experience" H.defaultContext (H.loadAll ("cv/experience/*" .&&. H.hasVersion "html")) `mappend` - H.listField "education" H.defaultContext (H.loadAll ("cv/education/*" .&&. H.hasVersion "html")) `mappend` - H.listField "skills" H.defaultContext (H.loadAll ("cv/skill/*" .&&. H.hasVersion "html")) `mappend` - H.listField "hobbies" H.defaultContext (H.loadAll ("cv/hobby/*" .&&. H.hasVersion "html")) `mappend` - H.defaultContext - H.compile $ - H.getResourceBody - >>= H.applyAsTemplate context - >>= H.loadAndApplyTemplate "templates/layout.html" layoutContext - >>= H.relativizeUrls - - H.match "projects.html" $ do - H.route H.idRoute - let layoutContext = - H.constField "isProjects" "true" `mappend` - H.defaultContext - let context = - H.listField "projects" H.defaultContext (H.loadAll "project/*") `mappend` - H.defaultContext - H.compile $ - H.getResourceBody - >>= H.applyAsTemplate context - >>= H.loadAndApplyTemplate "templates/layout.html" layoutContext - >>= H.relativizeUrls - - H.match "cv.tex" $ do - H.route $ H.setExtension ".pdf" - let context = - H.listField "experience" H.defaultContext (H.loadAll ("cv/experience/*" .&&. H.hasVersion "tex")) `mappend` - H.listField "education" H.defaultContext (H.loadAll ("cv/education/*" .&&. H.hasVersion "tex")) `mappend` - H.listField "skills" H.defaultContext (H.loadAll ("cv/skill/*" .&&. H.hasVersion "tex")) `mappend` - H.listField "hobbies" H.defaultContext (H.loadAll ("cv/hobby/*" .&&. H.hasVersion "tex")) `mappend` - H.defaultContext - H.compile $ - H.getResourceBody - >>= H.applyAsTemplate context - >>= H.readPandoc - >>= writeLaTeX - >>= H.loadAndApplyTemplate "templates/layout.tex" context - >>= generatePdf - - H.match "templates/**" $ - H.compile H.templateBodyCompiler - -writeLaTeX :: Item Pandoc.Pandoc -> Compiler (Item String) -writeLaTeX = traverse $ \pandoc -> - case Pandoc.runPure (Pandoc.writeLaTeX Pandoc.def pandoc) of - Left err -> fail $ show err - Right x -> return (T.unpack x) - -configuration :: Configuration -configuration = H.defaultConfiguration - { destinationDirectory = "public" - , deploySite = const $ - Process.rawSystem "rsync" [ "-avzh", "public/", "joris@guyonvarch.me:/var/www/guyonvarch.me" ] - } - -metadataListField :: Context a -metadataListField = Context $ \k _ i -> do - values <- getMetadataListField (H.itemIdentifier i) k - case values of - Just vs -> do - listItems <- mapM H.makeItem vs - return $ ListField (H.field "item" (return . H.itemBody)) listItems - Nothing -> - empty - -getMetadataListField :: MonadMetadata m => Identifier -> String -> m (Maybe [String]) -getMetadataListField identifier key = do - metadata <- H.getMetadata identifier - return $ H.lookupStringList key metadata - -generatePdf :: Item String -> Compiler (Item TmpFile) -generatePdf item = do - TmpFile texPath <- H.newTmpFile "file.tex" - let tmpDir = FilePath.takeDirectory texPath - pdfPath = FilePath.replaceExtension texPath "pdf" - - H.unsafeCompiler $ do - writeFile texPath $ H.itemBody item - _ <- Process.system $ unwords ["cd resume", "&&", "pdflatex", "-halt-on-error", - "-output-directory", "../" ++ tmpDir, "../" ++ texPath, ">/dev/null", "2>&1"] - _ <- Process.system $ unwords ["cd resume", "&&", "pdflatex", "-halt-on-error", - "-output-directory", "../" ++ tmpDir, "../" ++ texPath, ">/dev/null", "2>&1"] - return () - - H.makeItem $ TmpFile pdfPath diff --git a/stack.yaml.lock b/stack.yaml.lock deleted file mode 100644 index 6d1882e..0000000 --- a/stack.yaml.lock +++ /dev/null @@ -1,26 +0,0 @@ -# This file was autogenerated by Stack. -# You should not edit this file by hand. -# For more information, please see the documentation at: -# https://docs.haskellstack.org/en/stable/lock_files - -packages: -- completed: - hackage: hakyll-4.12.5.1@sha256:d1948b265e6628bcb6875571212f9acefe23179c73ca4f87f417b290ff381ca6,8677 - pantry-tree: - size: 7631 - sha256: ac35d6b2a3b6d87517ff5184430a283c378330ec5da6f7dce26416568bf134ee - original: - hackage: hakyll-4.12.5.1@sha256:d1948b265e6628bcb6875571212f9acefe23179c73ca4f87f417b290ff381ca6 -- completed: - hackage: lrucache-1.2.0.1@sha256:18fc3d7052012c7ab3cd395160f34b53c5e1ec5379cc45185baf35b90ffadc2e,1254 - pantry-tree: - size: 619 - sha256: 61b2a39a11873f2d8a577e1f6b5e848d2f465ea7f6837ce15436796d3a20eda0 - original: - hackage: lrucache-1.2.0.1@sha256:18fc3d7052012c7ab3cd395160f34b53c5e1ec5379cc45185baf35b90ffadc2e -snapshots: -- completed: - size: 498365 - url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/13/18.yaml - sha256: c813b03544da8a9053b722f00f3f9a0aade23443130ac7160fefa89e01f5fb17 - original: lts-13.18 diff --git a/templates/icons/code.svg b/templates/icons/code.svg deleted file mode 100644 index c4954b5..0000000 --- a/templates/icons/code.svg +++ /dev/null @@ -1 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-code"><polyline points="16 18 22 12 16 6"></polyline><polyline points="8 6 2 12 8 18"></polyline></svg>
\ No newline at end of file diff --git a/templates/icons/external-link.svg b/templates/icons/external-link.svg deleted file mode 100644 index 6371124..0000000 --- a/templates/icons/external-link.svg +++ /dev/null @@ -1 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-external-link"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line></svg> diff --git a/templates/icons/gitlab.svg b/templates/icons/gitlab.svg deleted file mode 100644 index 85d54a1..0000000 --- a/templates/icons/gitlab.svg +++ /dev/null @@ -1 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-gitlab"><path d="M22.65 14.39L12 22.13 1.35 14.39a.84.84 0 0 1-.3-.94l1.22-3.78 2.44-7.51A.42.42 0 0 1 4.82 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.49h8.1l2.44-7.51A.42.42 0 0 1 18.6 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.51L23 13.45a.84.84 0 0 1-.35.94z"></path></svg>
\ No newline at end of file diff --git a/templates/icons/printer.svg b/templates/icons/printer.svg deleted file mode 100644 index 8a9a7ac..0000000 --- a/templates/icons/printer.svg +++ /dev/null @@ -1 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-printer"><polyline points="6 9 6 2 18 2 18 9"></polyline><path d="M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2"></path><rect x="6" y="14" width="12" height="8"></rect></svg>
\ No newline at end of file diff --git a/templates/icons/user.svg b/templates/icons/user.svg deleted file mode 100644 index 7bb5f29..0000000 --- a/templates/icons/user.svg +++ /dev/null @@ -1 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-user"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"></path><circle cx="12" cy="7" r="4"></circle></svg>
\ No newline at end of file diff --git a/templates/layout.html b/templates/layout.html deleted file mode 100644 index aabe2b8..0000000 --- a/templates/layout.html +++ /dev/null @@ -1,34 +0,0 @@ -<!DOCTYPE html> -<html> - - <head> - <meta charset="utf-8"> - <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="author" content="Joris Guyonvarch"> - <meta name="description" content="I’m a developer using functional programming. View my resume and projects."> - <title>Joris Guyonvarch</title> - <link rel="stylesheet" href="/style.css" /> - <link rel="icon" href="/assets/icon.png" /> - </head> - - <body> - - <header class="Header__Container"> - <a href="/" class="Header__Link $if(isResume)$Header__LinkCurrent$endif$"> - <div class="Header__Icon">$partial("templates/icons/user.svg")$</div> - CV - </a> - - <a href="/projects.html" class="Header__Link $if(isProjects)$Header__LinkCurrent$endif$"> - <div class="Header__Icon">$partial("templates/icons/code.svg")$</div> - Projects - </a> - </header> - - <main class="Main__Container"> - $body$ - </main> - - </body> - -</html> diff --git a/templates/layout.tex b/templates/layout.tex deleted file mode 100644 index 320dee7..0000000 --- a/templates/layout.tex +++ /dev/null @@ -1,93 +0,0 @@ -\documentclass[a4paper, 11pt]{article} - -\usepackage[hmargin=2.5cm,tmargin=2cm,bmargin=3.5cm,footskip=2cm]{geometry} - -\usepackage{color} -\definecolor{darkblue}{RGB}{0,0,100} - -\usepackage[colorlinks=true, allcolors=darkblue, pdfborder={0 0 0}]{hyperref} - -\usepackage{titlesec} - -\usepackage{graphicx} - -\usepackage{parskip} -\setlength{\parindent}{0em} -\setlength{\parskip}{0.25cm} -\setcounter{secnumdepth}{-1} - -\usepackage[dvipsnames]{xcolor} -\usepackage[inline]{enumitem} -\setlist[itemize]{leftmargin=0.8cm,after=\vspace{0.1cm}} -\renewcommand{\labelitemi}{$$\color{brown}\bullet$$} - -% Other packages - -\usepackage[utf8]{inputenc} -\usepackage[T1]{fontenc} -\usepackage{fp,etoolbox,marvosym,bookman,titlesec,hyperref,tabularx,graphicx,fancyhdr,changepage,lastpage,ulem} -\usepackage{xifthen} - -% Conf - -\setlength{\parindent}{0pt} -\color[HTML]{303030} % Default foreground color -\definecolor{link}{HTML}{505070} -\hypersetup{colorlinks,breaklinks,urlcolor=link,linkcolor=link} -\setlength{\tabcolsep}{0pt} - -\pagestyle{fancy} -\lhead{} -\chead{} -\rhead{} -\renewcommand{\headrulewidth}{0pt} -\cfoot{\thepage\ / \pageref{LastPage}} - -\titleformat - {\section} - {\LARGE\scshape\raggedright\color{brown}} % format - {} % label - {0cm} % sep - {\vspace{0.3cm}} % before - [\titlerule\vspace{0.2cm}] % after - -\titleformat - {\subsection} - {\large\raggedright\bf} % format - {} % label - {0cm} % sep - {\vspace{0.3cm}} % before - [\vspace{0.1cm}] % after - -% Commands - -\providecommand{\tightlist}{% - \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} - -\newcommand{\iconLink}[3] { - \includegraphics[width=8px]{#1} & \href{#2}{\sf\small#3} \\ -} - -% Doc - -\begin{document} - -\begin{minipage}[t]{0.6\textwidth} - \centering - {\Huge Joris Guyonvarch} \\ - \vspace{0.2cm} - {\Large Developer} \\ -\end{minipage} -\begin{minipage}[t]{0.4\textwidth} - \begin{flushright} - \vspace{-1.3em} - \begin{tabular}{p{15pt}l} - \iconLink{external-link.png}{https://guyonvarch.me}{guyonvarch.me} - \iconLink{gitlab.png}{https://gitlab.com/guyonvarch}{guyonvarch} - \end{tabular} - \end{flushright} -\end{minipage} - -$body$ - -\end{document} diff --git a/templates/project.html b/templates/project.html deleted file mode 100644 index 4bcc386..0000000 --- a/templates/project.html +++ /dev/null @@ -1,37 +0,0 @@ -<li class="Section__Container"> - - <h1 class="Section__Title">$name$</h1> - - <div> - <a class="IconLink__Link" href="https://gitlab.com/$gitlab$"> - <span class="IconLink__Icon"> - $partial("templates/icons/gitlab.svg")$ - </span> - $gitlab$ - </a> - </div> - - <div> - $if(live)$ - <a class="IconLink__Link" href="$live$"> - <span class="IconLink__Icon"> - $partial("templates/icons/external-link.svg")$ - </span> - $live$ - </a> - $endif$ - </div> - - <div class="Project__Body Body__Container"> - $body$ - </div> - - $if(skills)$ - <ul class="Skills__List"> - $for(skills)$ - <li class="Skills__Item">$item$</li> - $endfor$ - </ul> - $endif$ - -</li> diff --git a/templates/resume.html b/templates/resume.html deleted file mode 100644 index e848025..0000000 --- a/templates/resume.html +++ /dev/null @@ -1,28 +0,0 @@ -<li class="Resume__Container"> - - $if(name)$ - <div class="Resume__Name"> - $name$ - </div> - $endif$ - - $if(location)$ - <div class="Resume__Location"> - $location$ - $if(time)$– $time$$endif$ - </div> - $endif$ - - <div class="Body__Container"> - $body$ - </div> - - $if(skills)$ - <ul class="Skills__List"> - $for(skills)$ - <li class="Skills__Item">$item$</li> - $endfor$ - </ul> - $endif$ - -</li> diff --git a/templates/resume.tex b/templates/resume.tex deleted file mode 100644 index 678e20b..0000000 --- a/templates/resume.tex +++ /dev/null @@ -1,18 +0,0 @@ -$if(name)$ - \subsection{$name$} -$endif$ - -{\color{OliveGreen} $if(location)$ $location$ $endif$ $if(time)$ – $time$ $endif$} - -$body$ - -$if(skills)$ - \begin{enumerate*}[label={}] - $for(skills)$ - \item{} - \hspace{-0.3cm} - {\color{gray}\uline{\textcolor{black}{$item$}}} - \hspace{0.2cm} - $endfor$ - \end{enumerate*} -$endif$ |