<!doctype html>
<!--


                                                            :+***###%%%%%%%%##****=:
                                                     .-*##%%%%%%##%%%%%%%%%%%%%%%%%%%%##+.
                                                 .=#%%%#%#%+.:..........::--------=#%%%%%%%%*:
                                              .+#%%%##:........:------------------------+%%@@@@@:.
                                          ..=%#%##=......:----------------------------------*%%@@@#..
                                        .:#%##*=.....:----:---------------------------=#@@%+=--*%@@@%-.
                                       :####+.....:-+%@@@*=:-------------------------=@@@@@@@+----#@@@%=.
                                     :#%%#+....:::*@@@@@@@@:-------------------------=**+-+##=------#@@@%-
                                   .*#%%+....:::::=#%*--++-------------------------------------------=#@@@#:
                                  -#%%*....:::::::::------------------------------------=++++++=-----===%@@#-
                                 =#%%=...:::::::--=++++++----------------------------+************+=--===*@@%=
                                +%%%-...:-:::-++************+-----------------------******************====*@@@=.
                               +%%%-..:-----******************+--------------------****#%%%%%%##*******+===*@@@=
                              =%%%-..:----**********%@@@@@@****+------------------***%@@@%**%@@@@@*******===*@@@=
                             -#%%-..:----*******#@@@@%*=-=%@@@%**-----------------*#@#-::....::-#%@@#*****===*@@@%%=.
                         ...=#%%=...:--=******#%@@+-::.....::-%@%*----------------*%-::+@@#-.....:%@@*****+==+#@@@%%%@:
                       .-%%%%%%%=..:---******#@@*-:....+%@@@%-:-%#----------------#==#:..+@@@%-....#@%*****+==*@@@##%%%*.
                     .-%%%%+*%%=..:---*******%@*:.......*@@@@@%--%*---------------==@@#-+%@@@@@-....@@*****+===#@@%#*%%%%.
                    .%%%#=.=%%%=..:--=******#@@*....**==%@@@@@@%:+*----------------*@@@@@@@@@@@-....@%******+==#@@@##+%@%+
                   .%%%#..-#@@@=..:--+******#%@*...:*@@@@@@@@@@%==#-------++++++=--=@@@@@@@@@@@-...=@%******+==+%@@##*%@@%
                   *%%#.:+*%@@#-.:---+*******#@*:...+@@@@@@@@@@%-#=---=*#*+=====*%*=-%@@@@@@@%-...=@%******+====#@@%##%@@%
                   %%%+.++#%@@*-::----********#@#-...-#@@@@@@%=:*+:::=#%#*+++++*#%%%-:=+*#+=-...+%@#******+-:===#@@@#*@@@%
                   %%%+=+##%@@#-------=*********%%*-...:------**-:...=@@%%%%%%@@@@@@#..:=++**#%##********+:..-==#@@@#%@@@:
                   %%%%++**#@@#=------.:**********#%%#####%*#*-:.....+@@@@@@@@@@@@@%-:....:=**********+:.....-==#@@%%%@%:
                   -@@@#+**#@@@+-----:...:*****************-:.........:*@@@@@@@@@@#=-:::....................:-=*%@@@@@%.
                    =@@@%+*#@@@+-----:.......-*+++****=:.................-#@@@@*=--::::=*...................:-=#@@@@+.
                     .%@@@#*%@@%=-----........................:@@#............:-::-:-=%@*:::...............:==*@@@-
                      .-%@@@@@@@*-----.........................:*%@#-:......:::::-=+@@#=::::::............:==+#@@*:
                         .=##%@@@+-----...........................-#%@@@%*===+#@@@%#*::::::::::.........:-==+%@@#:
                              +%@@*-----:.............................:+#******#-:::::::::::::::.......-===*@@@*:
                               =%@@#=-----:...................................::::::::::::::::::....:-====#@@%=.
                                -#@@@*------:................................:::::::::::::::::::::-====+#@@@#:
                                 .-%@@@#-------::......................:::::::::::::::::::::::--=====#%@@@#-        =+*+.
                                   .-%@@@%#==-------::.........::::::::::::::::::::::::::---=====-#%@@@@#:        +%@@%@@*
                                     .:%@@@@%#+========------::::::::::::::::::::------======-*%@@@@@#:.         .#@=--*@%-
                                        .:*@@@@@@%#+--==--------------------------------====#@@@@@+:.            :#@=---@@=
                                           ..:#@@@@@@@@%=------------------------------=-===#@@@:                :#@---=@@=
                                                  .+%@@@=-----------------------------------*%@@:                .#@%*-@@@@@@%+.
                                                    -#@@=------------------------------------#@@+.             .*%%%*%@@=-=%=%@#-
                                                    .*%%-..--------------------:::::::-------#@@@:            -#@=----=@%=*%=+#@*:
                                                     *%%#..----------------:..............:--+%@@:.           +@@+==#%@@*#@#+*%@*:
                                                     +%%%:..-------------:..................:-#@@@%==:    ..-+%%%*+++###%@@@%@@%-
                                                     :#%%:..:----------:......................*@@@@@@%%%%%%%%%%*::=++++++*#@@%+.
                                                  .=#%%%*-...:--------:........................#@@#+++*###*==:..:---===+++*@@#.
                                                -#%%%#=...::---------:.........................=%@@*--::::::::---------==+@@%+
                                             .-#%%%+:..::------------:..........................#@@@=-----------------===@@@*.
                                            :#%%#=...::--------------:..........................-%@@%=-------------====#@@@*.
                                          .#%%%+...:-----------------:..........................:+@@@+==---------====+%%@%:
                                         .%%%*...:::-----------------:...........................-%@@%====--=======+%@@@%
                                        .%%%*..:--------------=%=----:...........................--@@@#++++=====+#@@@@#.
                                        %%%#..::------------+%%+-----:...........................:-%@@%+++++**%@@@@#+.
                                       .%%#:..::----------#@@%*=-----:............................-=@@@@@@@@@@@%#+.
                                       =%%#..-:----------%@@@=+=-----:............................-=#@@@@%#*+=.
                                       :%%%-------------=+%@@#=------:............................-==@@%+
                                        %%%#-------------=+%@@#------:............................:==@@@#
                                        .@@%#=------------=+@@%+-----:.............................==*@@#:
                                         .#@@%*=---------==++@@%-----:.............................===@@@*
                                          .-%@@@%%%%%%%*++++*@@%-----:.............................===%@@*
                                            ..=@@@@@*+++++++@@%=-----:.............................-==+@@#-
                                               =@@#+++++++%@@@+=----:..............................:==+@@@*
                                               =@@#*++%@@@@@%===----:..............................:===%@@*
                                               .=%@@@@@@%%++===-----:..............................:===*@@#:
         .:=+%%@#*++--------:::..........:::-----+%@@#+++++===-----:...............................:===+@@@+
       :+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@#+=====--------:..............................::===+@@@*
      :#%%%******++++++**#######*++++=++++++++*#%%%=.:-------------:............................::::===+%@@*
      -%%%#*********************-:::::::::::::=#%%+..:-------------:..........................::::::===+#@@*.
      .+%%%#*******************=--------------*%%*:.::-------------:........................::::::::====+@@#:
       .=%@@@%#****************=-------------+@@#=..:--------------:......................:::::::::-====+@@#-
         .-#@@@%%*********####*=============+@@@+..:---------------:....................::::::::::-=====+@@@+
           ..+%@@@@@@#***#####+=============#@@*..:-----------------:................::::::::::::-======+@@@+
                .#@@@@@@@@%###+============+@@@*.:-------------------:............::::::::::::::========+@@@+
                    .*%%@@@@@@@@@@%*=++++++#@@*..:---------------------:.......::::::::::::::--=====+===+@@@+
                         .:*##%@@@@@@@@@@@@@@@*.:-------------------------::::::::::::::::--============+@@@+
                                  .:=+***##@@@*.:-----------------------======---------===========+=+===+@@@+
                                          :@@%+:--------------------================================+===+@@@+
                                          :@@%=------------------====================++++++++++++++=====+@@@+
                                         .:@@#=---------------==========*###%@@@@@@@@@@@@%%##*+==+++====+@@%=
                                         .-@@%=------------=========*#%@@@@@@@@##@@@@@@@@@@%##*+++++++++*@@#-
                                          :@@%+----------========+#%@@@#=-...    :@@@%++++++++++++++++++*@@#:
                                       =#%%@@%*-------=========+#@@@*-.          .-@@@#=++++++++++++++++*@@@@%%*:
                                     =%%@@#:::------==========+%@@#:.             .=@@%*+++++++++++++++++=-=*%@@@%-
                                    #@@@....-----============+@@@#                 .*@@#++++++++++++++++++++=--*@@@:
                                  .:%@@@@@@@@@@@@@@@@@@@@@@@@@@@#                   :%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#:
                                  .+############################:                    :##############################:.




-->

<html lang=en dir=ltr class="mdx-wrapper mdx-page plugin-pages plugin-id-default" data-has-hydrated=false><head><meta charset=UTF-8><meta name=generator content="Docusaurus v3.9.2"><title data-rh=true>Personal blog about Docker, PHP, Joomla and much more | Christophe Avonture</title><meta data-rh=true name=viewport content="width=device-width, initial-scale=1.0"/><meta data-rh=true name=twitter:card content=summary_large_image /><meta data-rh=true property=og:image content=https://www.avonture.be/img/social-card.jpg /><meta data-rh=true name=twitter:image content=https://www.avonture.be/img/social-card.jpg /><meta data-rh=true property=og:url content=https://www.avonture.be/ /><meta data-rh=true property=og:locale content=en /><meta data-rh=true name=docusaurus_locale content=en /><meta data-rh=true name=docusaurus_tag content=default /><meta data-rh=true name=docsearch:language content=en /><meta data-rh=true name=docsearch:docusaurus_tag content=default /><meta data-rh=true property=og:title content="Personal blog about Docker, PHP, Joomla and much more | Christophe Avonture"/><link data-rh=true rel=icon href=/img/favicon.png /><link data-rh=true rel=canonical href=https://www.avonture.be/ /><link data-rh=true rel=alternate href=https://www.avonture.be/ hreflang=en /><link data-rh=true rel=alternate href=https://www.avonture.be/ hreflang=x-default /><link data-rh=true rel=preconnect href=https://SIOYZRXPKJ-dsn.algolia.net crossorigin=anonymous /><script data-rh=true>document.addEventListener("DOMContentLoaded",function(){void 0===window.docusaurus&&insertBanner()});function insertBanner(){var n=document.createElement("div");n.id="__docusaurus-base-url-issue-banner-container",n.innerHTML='\n<div id="__docusaurus-base-url-issue-banner" style="border: thick solid red; background-color: rgb(255, 230, 179); margin: 20px; padding: 20px; font-size: 20px;">\n   <p style="font-weight: bold; font-size: 30px;">Your Docusaurus site did not load properly.</p>\n   <p>A very common reason is a wrong site <a href="https://docusaurus.io/docs/docusaurus.config.js/#baseUrl" style="font-weight: bold;">baseUrl configuration</a>.</p>\n   <p>Current configured baseUrl = <span style="font-weight: bold; color: red;">/</span>  (default value)</p>\n   <p>We suggest trying baseUrl = <span id="__docusaurus-base-url-issue-banner-suggestion-container" style="font-weight: bold; color: green;"></span></p>\n</div>\n',document.body.prepend(n);var e=document.getElementById("__docusaurus-base-url-issue-banner-suggestion-container"),s=window.location.pathname;e.innerHTML="/"===s.substr(-1)?s:s+"/"}</script><link rel=alternate type=application/atom+xml href=/blog/atom.xml title="Christophe Avonture Atom Feed"><link rel=alternate type=application/json href=/blog/feed.json title="Christophe Avonture JSON Feed"><link rel=search type=application/opensearchdescription+xml title="Christophe Avonture" href=/opensearch.xml><link rel=preconnect href=https://fonts.googleapis.com><link rel=preconnect href=https://fonts.gstatic.com crossorigin=anonymous><link rel=stylesheet href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;800&display=swap"><script type=text/javascript>var _paq=window._paq=window._paq||[];_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["setTrackerUrl","https://matomo.avonture.be/matomo.php"]),_paq.push(["setSiteId","1"])</script><script type=application/ld+json>{"@context":"https://schema.org","@type":"WebSite","description":"Personal blog about Docker, WSL, Python, Quarto, PHP, Joomla, Docusaurus and even more","name":"Christophe Avonture","potentialAction":{"@type":"SearchAction","query-input":"required name=search_term_string","target":"https://www.avonture.be/search?q={search_term_string}"},"url":"https://www.avonture.be/"}</script><script type=application/ld+json>{"@context":"https://schema.org","@type":"Organization","logo":"https://www.avonture.be/img/avatar.webp","name":"Christophe Avonture","sameAs":["https://bsky.app/profile/avonture.be","https://github.com/cavo789"],"url":"https://www.avonture.be/"}</script><script src=https://scripts.withcabin.com/hello.js async defer></script><script src=https://matomo.avonture.be/matomo.js async></script><link rel=stylesheet href=/assets/css/styles.b9b20e48.css /><script src=/assets/js/runtime~main.93ba482b.js defer></script><script src=/assets/js/main.1c60b4f8.js defer></script></head><body class=navigation-with-keyboard><svg style="display: none;"><defs>
<symbol id=theme-svg-external-link viewBox="0 0 24 24"><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
</defs></svg>
<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme-5cf")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{for(var[t,e]of new URLSearchParams(window.location.search).entries())if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id=__docusaurus><link rel=preload as=image href=/img/avatar.webp /><link rel=preload as=image href=/img/v2/repo_with_fzf.webp /><link rel=preload as=image href=/img/v2/using_ollama_local_network.webp /><link rel=preload as=image href=/img/v2/belgif.webp /><link rel=preload as=image href=/img/v2/markdown.webp /><link rel=preload as=image href=/img/v2/sshf.webp /><link rel=preload as=image href=/img/v2/docker-python-mermaid.webp /><link rel=preload as=image href=/img/v2/minification.webp /><link rel=preload as=image href=/img/v2/git_branches_status.webp /><link rel=preload as=image href=/img/v2/playing_with_ollama.webp /><div role=region aria-label="Skip to main content"><a class=skipToContent_fXgn href=#__docusaurus_skipToContent_fallback>Skip to main content</a></div><nav aria-label=Main class="theme-layout-navbar navbar navbar--fixed-top"><div class=navbar__inner><div class="theme-layout-navbar-left navbar__items"><button aria-label="Toggle navigation bar" aria-expanded=false class="navbar__toggle clean-btn" type=button><svg width=30 height=30 viewBox="0 0 30 30" aria-hidden=true><path stroke=currentColor stroke-linecap=round stroke-miterlimit=10 stroke-width=2 d="M4 7h22M4 15h22M4 23h22"/></svg></button><a class=navbar__brand href=/><div class=navbar__logo><img src=/img/avatar.webp alt="Christophe Avonture" class="themedComponent_mlkZ themedComponent--light_NVdE" height=40 width=40 /><img src=/img/avatar.webp alt="Christophe Avonture" class="themedComponent_mlkZ themedComponent--dark_xIcU" height=40 width=40 /></div><b class="navbar__title text--truncate">Christophe Avonture (cavo789)</b></a><a class="navbar__item navbar__link" href=/blog>Blog</a><a class="navbar__item navbar__link" href=/series>Series</a><a class="navbar__item navbar__link" href=/blog/tags>Tags</a><a class="navbar__item navbar__link" href=/repositories>Repositories</a><a class="navbar__item navbar__link" href=/blog/archive>Archive</a><a class="navbar__item navbar__link" href=/about>About me</a></div><div class="theme-layout-navbar-right navbar__items navbar__items--right"><a href=https://github.com/cavo789/blog target=_blank rel="noopener noreferrer" class="navbar__item navbar__link header-github-link" aria-label="GitHub repository">GitHub<svg width=13.5 height=13.5 aria-label="(opens in new tab)" class=iconExternalLink_nPIU><use href=#theme-svg-external-link /></svg></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type=button disabled title="system mode" aria-label="Switch between dark and light mode (currently system mode)"><svg viewBox="0 0 24 24" width=24 height=24 aria-hidden=true class="toggleIcon_g3eP lightToggleIcon_pyhR"><path fill=currentColor d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"/></svg><svg viewBox="0 0 24 24" width=24 height=24 aria-hidden=true class="toggleIcon_g3eP darkToggleIcon_wfgR"><path fill=currentColor d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"/></svg><svg viewBox="0 0 24 24" width=24 height=24 aria-hidden=true class="toggleIcon_g3eP systemToggleIcon_QzmC"><path fill=currentColor d="m12 21c4.971 0 9-4.029 9-9s-4.029-9-9-9-9 4.029-9 9 4.029 9 9 9zm4.95-13.95c1.313 1.313 2.05 3.093 2.05 4.95s-0.738 3.637-2.05 4.95c-1.313 1.313-3.093 2.05-4.95 2.05v-14c1.857 0 3.637 0.737 4.95 2.05z"/></svg></button></div><div class=navbarSearchContainer_Bca1><button type=button class="DocSearch DocSearch-Button" aria-label="Search (Meta+k)" aria-keyshortcuts=Meta+k><span class=DocSearch-Button-Container><svg width=20 height=20 class=DocSearch-Search-Icon viewBox="0 0 24 24" aria-hidden=true><circle cx=11 cy=11 r=8 stroke=currentColor fill=none stroke-width=1.4 /><path d="m21 21-4.3-4.3" stroke=currentColor fill=none stroke-linecap=round stroke-linejoin=round /></svg><span class=DocSearch-Button-Placeholder>Search</span></span><span class=DocSearch-Button-Keys></span></button></div></div></div><div role=presentation class=navbar-sidebar__backdrop></div></nav><div id=__docusaurus_skipToContent_fallback class="theme-layout-main main-wrapper mainWrapper_z2l0"><main class="container container--fluid margin-vert--lg"><div class="row mdxPageWrapper_j9I6"><div class=col><article><header class=heroHeader_tJsd><div class=heroGrid_sXrK><div class=introText_RRKT><h1>Hi, I'm <span>Christophe</span></h1><p>Welcome to my digital garden. I share practical guides on streamlining workflows with Docker, Linux, Python, PHP, Quarto, Docusaurus, ...<div class=buttonsContainer_BMaJ><a class="button button--primary button--lg" href=/blog>Read the Blog<!-- --> <svg xmlns=http://www.w3.org/2000/svg width=18 height=18 viewBox="0 0 24 24" fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round class="lucide lucide-arrow-right arrowIcon_ggYq" aria-hidden=true><path d="M5 12h14"/><path d="m12 5 7 7-7 7"/></svg></a><a class="button button--secondary button--lg" href=/blog/archive>Archive</a></div></div><div class=videoWrapper_dXoe><video class=videoElement_vFHN src=/img/welcome.mp4 autoplay muted loop playsinline></video><button type=button class=muteButton_yiSv aria-label=Unmute><svg xmlns=http://www.w3.org/2000/svg width=20 height=20 viewBox="0 0 24 24" fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round class="lucide lucide-volume-x" aria-hidden=true><path d="M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z"/><line x1=22 x2=16 y1=9 y2=15 /><line x1=16 x2=22 y1=9 y2=15 /></svg></button></div></div></header>
<main><div class=margin-top--xl><section class=cardsSection_wCHT><h2>Explore the site</h2><div class=cardsGrid_JKz4><a class=cardLink_nvyL href=/blog><div class=card><img class=card__image src=/img/homepage/blog.webp alt=Blog loading=lazy /><div class="card__body padding-vert--md text--center text--center text--uppercase"><h3>Blog</h3><p>I'm publishing at least one article by week.<!-- --> →</div></div></a><a class=cardLink_nvyL href=/series><div class=card><img class=card__image src=/img/homepage/series.webp alt=Series loading=lazy /><div class="card__body padding-vert--md text--center text--center text--uppercase"><h3>Series</h3><p>Browse articles grouped by series.<!-- --> →</div></div></a><a class=cardLink_nvyL href=/blog/tags><div class=card><img class=card__image src=/img/homepage/tags.webp alt=Tags loading=lazy /><div class="card__body padding-vert--md text--center text--center text--uppercase"><h3>Tags</h3><p>Quick way to find posts by topic or keyword.<!-- --> →</div></div></a><a class=cardLink_nvyL href=/repositories><div class=card><img class=card__image src=/img/homepage/repositories.webp alt=Repositories loading=lazy /><div class="card__body padding-vert--md text--center text--center text--uppercase"><h3>Repositories</h3><p>Discover my public repositories hosted on GitHub.com.<!-- --> →</div></div></a><a class=cardLink_nvyL href=/blog/archive><div class=card><img class=card__image src=/img/homepage/archive.webp alt=Archive loading=lazy /><div class="card__body padding-vert--md text--center text--center text--uppercase"><h3>Archive</h3><p>A timeline view of everything I've published so far.<!-- --> →</div></div></a><a class=cardLink_nvyL href=/about><div class=card><img class=card__image src=/img/homepage/about.webp alt=About loading=lazy /><div class="card__body padding-vert--md text--center text--center text--uppercase"><h3>About</h3><p>Who I am, why I write, and what this blog is about.<!-- --> →</div></div></a></div></section><section class=cardsSection_u9Mo><h2>Latest <!-- -->9<!-- --> post<!-- -->s<!-- --> (out of <span>236</span> total)</h2><div class=cardsGrid_cuje><a class=cardLink_gjdM href=/blog/modular-zsh-workflow><div class=card><img class=card__image src=/img/v2/repo_with_fzf.webp alt="Beyond the Monolith - Organizing Your ZSH Workflow Like a Pro"/><div class="card__body padding-vert--md text--center text--center text--uppercase"><h3>Beyond the Monolith - Organizing Your ZSH Workflow Like a Pro</h3><p>Stop bloating your shell configuration. Learn why moving ZSH functions to standalone files improves performance and maintainability, featuring a universal project navigator.<!-- --> →</p><span>May 25, 2026</span></div></div></a><a class=cardLink_gjdM href=/blog/accessing-ollama-across-your-local-network><div class=card><img class=card__image src=/img/v2/using_ollama_local_network.webp alt="Accessing Ollama across your local network"/><div class="card__body padding-vert--md text--center text--center text--uppercase"><h3>Accessing Ollama across your local network</h3><p>Learn how to set up a dedicated Ollama server on your local network and configure VSCode with the Continue extension for a private, free AI coding assistant.<!-- --> →</p><span>May 18, 2026</span></div></div></a><a class=cardLink_gjdM href=/blog/belgif-api-linter><div class=card><img class=card__image src=/img/v2/belgif.webp alt="Validate your OpenAPI schema against the Belgif REST standards"/><div class="card__body padding-vert--md text--center text--center text--uppercase"><h3>Validate your OpenAPI schema against the Belgif REST standards</h3><p>Use VS Code Remote - SSH: connect to production servers, and edit/execute remotely while avoiding common pitfalls.<!-- --> →</p><span>May 11, 2026</span></div></div></a><a class=cardLink_gjdM href=/blog/markitdown><div class=card><img class=card__image src=/img/v2/markdown.webp alt="Markitdown - Convert files and MS Office documents to Markdown"/><div class="card__body padding-vert--md text--center text--center text--uppercase"><h3>Markitdown - Convert files and MS Office documents to Markdown</h3><p>Easily convert MS Office documents (Word, Excel) and PDFs into Markdown format with Microsoft's Markitdown tool. Includes step-by-step instructions for installation via Docker.<!-- --> →</p><span>May 4, 2026</span></div></div></a><a class=cardLink_gjdM href=/blog/ssh-with-fuzzy-finder><div class=card><img class=card__image src=/img/v2/sshf.webp alt="Master your ssh command and select the host from a list"/><div class="card__body padding-vert--md text--center text--center text--uppercase"><h3>Master your ssh command and select the host from a list</h3><p>Build an interactive, searchable SSH host selector using FZF. Learn to modularize your SSH configurations, add rich documentation, and trigger advanced custom actions via a fast Terminal User Interface.<!-- --> →</p><span>April 27, 2026</span></div></div></a><a class=cardLink_gjdM href=/blog/docker-python-mermaid><div class=card><img class=card__image src=/img/v2/docker-python-mermaid.webp alt="Documentation as Code - Transform Your Infrastructure into Beautiful Diagrams with Python and Mermaid"/><div class="card__body padding-vert--md text--center text--center text--uppercase"><h3>Documentation as Code - Transform Your Infrastructure into Beautiful Diagrams with Python and Mermaid</h3><p>Automate your Documentation as Code by building a Dockerized Python and Mermaid CLI stack to generate dynamic architecture diagrams directly from your codebase.<!-- --> →</p><span>April 20, 2026</span></div></div></a><a class=cardLink_gjdM href=/blog/assets-minification><div class=card><img class=card__image src=/img/v2/minification.webp alt="Streamline Your Frontend - Minifying Assets with Docker, Bash, and YAML"/><div class="card__body padding-vert--md text--center text--center text--uppercase"><h3>Streamline Your Frontend - Minifying Assets with Docker, Bash, and YAML</h3><p>Drop the heavy Node toolchains. Build a fast, dependency-free asset minification pipeline using a declarative YAML manifest, Bash, and Docker.<!-- --> →</p><span>April 13, 2026</span></div></div></a><a class=cardLink_gjdM href=/blog/git-branches-gst><div class=card><img class=card__image src=/img/v2/git_branches_status.webp alt="Showing the last 3 updated branches when you jump in a git repo"/><div class="card__body padding-vert--md text--center text--center text--uppercase"><h3>Showing the last 3 updated branches when you jump in a git repo</h3><p>Learn how to configure ZSH to automatically display your most recently updated Git branches whenever you enter a repository or check its status.<!-- --> →</p><span>April 6, 2026</span></div></div></a><a class=cardLink_gjdM href=/blog/ollama-installation><div class=card><img class=card__image src=/img/v2/playing_with_ollama.webp alt="Installing Ollama and get local AI"/><div class="card__body padding-vert--md text--center text--center text--uppercase"><h3>Installing Ollama and get local AI</h3><p>Learn how to deploy Ollama locally via Docker to run private, free LLMs and enable AI-powered code autocompletion in VSCode.<!-- --> →</p><span>March 30, 2026</span></div></div></a></div><div class=seeMoreContainer_rDiS><a class=seeMoreLink_RtW3 href=/blog>See all articles<!-- --> →</a></div></section><section class=cardsSection_bLoK><h2>Explore the main topics</h2><div class=cardsGrid_0TTj><a class=cardLink_xdTr href=/blog/tags/docker><article class=cardItem_c5pI><span class=cardIcon_dZrp aria-hidden=true>🐳</span><h3 class=cardTitle_e2iO>Docker</h3><p class=cardDescription_jgnC>Deep dives into containerization, orchestration, and Docker Compose.</article></a><a class=cardLink_xdTr href=/blog/tags/vscode><article class=cardItem_c5pI><span class=cardIcon_dZrp aria-hidden=true>💻</span><h3 class=cardTitle_e2iO>VSCode</h3><p class=cardDescription_jgnC>Tips, extensions, and configuration guides for Visual Studio Code.</article></a><a class=cardLink_xdTr href=/blog/tags/markdown><article class=cardItem_c5pI><span class=cardIcon_dZrp aria-hidden=true>📝</span><h3 class=cardTitle_e2iO>Markdown</h3><p class=cardDescription_jgnC>Advanced formatting and best practices for technical documentation.</article></a><a class=cardLink_xdTr href=/blog/tags/linux><article class=cardItem_c5pI><span class=cardIcon_dZrp aria-hidden=true>🐧</span><h3 class=cardTitle_e2iO>Linux</h3><p class=cardDescription_jgnC>Command line, system administration, and general Linux workflows.</article></a><a class=cardLink_xdTr href=/blog/tags/php><article class=cardItem_c5pI><span class=cardIcon_dZrp aria-hidden=true>🐘</span><h3 class=cardTitle_e2iO>PHP</h3><p class=cardDescription_jgnC>Backend development, framework guides, and language features.</article></a><a class=cardLink_xdTr href=/blog/tags/docusaurus><article class=cardItem_c5pI><span class=cardIcon_dZrp aria-hidden=true>🦖</span><h3 class=cardTitle_e2iO>Docusaurus</h3><p class=cardDescription_jgnC>Building, customizing, and extending static sites with Docusaurus.</article></a><a class=cardLink_xdTr href=/blog/tags/bash><article class=cardItem_c5pI><span class=cardIcon_dZrp aria-hidden=true>⚙️</span><h3 class=cardTitle_e2iO>Bash</h3><p class=cardDescription_jgnC>Scripting, shell commands, and automation techniques.</article></a><a class=cardLink_xdTr href=/blog/tags/wsl><article class=cardItem_c5pI><span class=cardIcon_dZrp aria-hidden=true>🏠</span><h3 class=cardTitle_e2iO>WSL</h3><p class=cardDescription_jgnC>Guides for Windows Subsystem for Linux (WSL 2) setup and usage.</article></a><a class=cardLink_xdTr href=/blog/tags/quarto><article class=cardItem_c5pI><span class=cardIcon_dZrp aria-hidden=true>📊</span><h3 class=cardTitle_e2iO>Quarto</h3><p class=cardDescription_jgnC>Creating dynamic reports, presentations, and scientific publishing.</article></a></div><div class=seeMoreContainer_Ptpo><a class=seeMoreLink_JeXj href=/blog/tags>See all tags<!-- --> →</a></div></section><button type=button class=scrollBtn_Pv66 aria-label="Scroll to top"><img src="data:image/webp;base64,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" alt="Scroll to top" class=no-zoom width=30 height=30 /></button></div></main></article></div></div></main></div><footer class="theme-layout-footer footer footer--dark"><div class="container container-fluid"><div class="footer__bottom text--center"><div class=footer__copyright>Copyright © 2026 Christophe Avonture. Powered by Docusaurus.</div></div></div></footer></div></body>