<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title/><link>https://celine-fouard.fr/</link><atom:link href="https://celine-fouard.fr/index.xml" rel="self" type="application/rss+xml"/><description/><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Mon, 24 Oct 2022 00:00:00 +0000</lastBuildDate><image><url>https://celine-fouard.fr/media/icon_hu_eee4a95885829ab2.png</url><title/><link>https://celine-fouard.fr/</link></image><item><title>Retrieving similar cases for clinical decision support in the context of revascularization of lower limbs</title><link>https://celine-fouard.fr/publication/2025-roux-ijmi/</link><pubDate>Mon, 01 Sep 2025 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/publication/2025-roux-ijmi/</guid><description/></item><item><title>New Method CMR-Guided Endomyocardial Biopsy in Suspicion Context of Isolated Cardiac Sarcoidosis</title><link>https://celine-fouard.fr/publication/2024-barone-circulation/</link><pubDate>Sun, 01 Sep 2024 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/publication/2024-barone-circulation/</guid><description/></item><item><title>⚡️ Turn Jupyter Notebooks into Blog Posts</title><link>https://celine-fouard.fr/old-blog/notebook-onboarding/</link><pubDate>Mon, 15 Jul 2024 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/old-blog/notebook-onboarding/</guid><description>&lt;p&gt;As a researcher or data scientist, your work often lives in Jupyter Notebooks. But sharing those insights effectively usually means taking screenshots, messy copy-pasting, or exporting to PDF.&lt;/p&gt;
&lt;p&gt;Hugo Blox changes that. With the &lt;code&gt;{{&amp;lt; notebook &amp;gt;}}&lt;/code&gt; shortcode, you can render your actual &lt;code&gt;.ipynb&lt;/code&gt; files directly as beautiful, interactive blog posts or project pages. Keep your code, outputs, and narrative in one place.&lt;/p&gt;
&lt;details class="print:hidden xl:hidden" open&gt;
&lt;summary&gt;Table of Contents&lt;/summary&gt;
&lt;div class="text-sm"&gt;
&lt;nav id="TableOfContents"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#why-publish-notebooks"&gt;Why publish notebooks?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#example-data-science-workflow"&gt;Example: Data Science Workflow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#how-to-add-a-notebook"&gt;How to add a notebook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#next-steps"&gt;Next steps&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/nav&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;h2 id="why-publish-notebooks"&gt;Why publish notebooks?&lt;/h2&gt;
&lt;div class="callout flex px-4 py-3 mb-6 rounded-md border-l-4 bg-emerald-100 dark:bg-emerald-900 border-emerald-500"
data-callout="tip"
data-callout-metadata=""&gt;
&lt;span class="callout-icon pr-3 pt-1 text-emerald-600 dark:text-emerald-300"&gt;
&lt;svg height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M12 18v-5.25m0 0a6 6 0 0 0 1.5-.189m-1.5.189a6 6 0 0 1-1.5-.189m3.75 7.478a12.1 12.1 0 0 1-4.5 0m3.75 2.383a14.4 14.4 0 0 1-3 0M14.25 18v-.192c0-.983.658-1.823 1.508-2.316a7.5 7.5 0 1 0-7.517 0c.85.493 1.509 1.333 1.509 2.316V18"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;div class="callout-content dark:text-neutral-300"&gt;
&lt;div class="callout-title font-semibold mb-1"&gt;Tip&lt;/div&gt;
&lt;div class="callout-body"&gt;&lt;p&gt;&lt;strong&gt;Reproducible Research&lt;/strong&gt;: By publishing the actual notebook, you allow others to download and run your code, verifying your results and building upon your work.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;No more screenshots&lt;/strong&gt; – Render crisp code and vector plots directly from your source.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Theme consistent&lt;/strong&gt; – Notebooks automatically adapt to your site&amp;rsquo;s theme (including dark mode).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Flexible sourcing&lt;/strong&gt; – Display notebooks from your &lt;code&gt;assets/&lt;/code&gt; folder, page bundles, or even directly from a remote GitHub URL.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Interactive&lt;/strong&gt; – Users can copy code blocks or download the full notebook to run locally.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="example-data-science-workflow"&gt;Example: Data Science Workflow&lt;/h2&gt;
&lt;p&gt;Below is a live example of a notebook rendered right here in this post. Notice how the markdown, code, and outputs (text, HTML, and JSON) are all preserved and styled.&lt;/p&gt;
&lt;div id="hb-notebook-e650bf30c48d00c38130d5095bdf12b6" class="hb-notebook not-prose" data-hb-component="notebook" aria-label="Notebook Launch Readiness Analysis" style="--hb-notebook-output-max-height:26rem;"&gt;
&lt;div class="hb-notebook-header"&gt;
&lt;div class="hb-notebook-heading"&gt;
&lt;p class="hb-notebook-title"&gt;Launch Readiness Analysis&lt;/p&gt;
&lt;p class="hb-notebook-subtitle"&gt;Python · Kernel: Python 3 · nbformat 4.5 · 6 cells&lt;/p&gt;
&lt;/div&gt;
&lt;a class="hb-notebook-download" href="https://celine-fouard.fr/old-blog/notebook-onboarding/hugoblox-onboarding.ipynb" download&gt;
&lt;svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5M16.5 12L12 16.5m0 0L7.5 12m4.5 4.5V3"/&gt;&lt;/svg&gt;
&lt;span&gt;Download notebook&lt;/span&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;dl class="hb-notebook-metadata"&gt;
&lt;div&gt;
&lt;dt&gt;Language&lt;/dt&gt;
&lt;dd&gt;Python&lt;/dd&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;dt&gt;Version&lt;/dt&gt;
&lt;dd&gt;3.11&lt;/dd&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;dt&gt;Kernel&lt;/dt&gt;
&lt;dd&gt;Python 3 python3&lt;/dd&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;dt&gt;nbformat&lt;/dt&gt;
&lt;dd&gt;4.5&lt;/dd&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;dt&gt;Authors&lt;/dt&gt;
&lt;dd&gt;HugoBlox Studio&lt;/dd&gt;
&lt;/div&gt;
&lt;/dl&gt;&lt;div class="hb-notebook-body"&gt;&lt;article class="hb-notebook-cell hb-notebook-cell--markdown" data-cell-type="markdown"&gt;
&lt;header class="hb-notebook-cell-header"&gt;
&lt;span class="hb-notebook-pill"&gt;Markdown&lt;/span&gt;
&lt;/header&gt;
&lt;div class="hb-notebook-markdown prose dark:prose-invert"&gt;
&lt;h1 id="ship-notebook-stories-in-minutes"&gt;Ship Notebook Stories in Minutes&lt;/h1&gt;
&lt;p&gt;Hugo Blox Notebook renderer turns your &lt;code&gt;.ipynb&lt;/code&gt; experiments into beautiful long-form posts.
Use this sample to see how markdown, code, and outputs flow together.&lt;/p&gt;
&lt;/div&gt;
&lt;/article&gt;&lt;article class="hb-notebook-cell hb-notebook-cell--markdown" data-cell-type="markdown"&gt;
&lt;header class="hb-notebook-cell-header"&gt;
&lt;span class="hb-notebook-pill"&gt;Markdown&lt;/span&gt;
&lt;/header&gt;
&lt;div class="hb-notebook-markdown prose dark:prose-invert"&gt;
&lt;ol&gt;
&lt;li&gt;Drop notebooks inside &lt;code&gt;assets/notebooks/&lt;/code&gt; (or import them as page resources).&lt;/li&gt;
&lt;li&gt;Reference them with &lt;code&gt;{{&amp;lt;/* notebook src=&amp;quot;your.ipynb&amp;quot; */&amp;gt;}}&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Control code, outputs, metadata badges, and download links via shortcode params.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/article&gt;&lt;article class="hb-notebook-cell hb-notebook-cell--code" data-cell-type="code"&gt;
&lt;header class="hb-notebook-cell-header"&gt;
&lt;span class="hb-notebook-pill"&gt;In [1]&lt;/span&gt;
&lt;div class="hb-notebook-tags"&gt;
&lt;span&gt;demo&lt;/span&gt;
&lt;span&gt;quickstart&lt;/span&gt;
&lt;/div&gt;
&lt;/header&gt;
&lt;div class="hb-notebook-code" data-language="python"&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;math&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;accuracy&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.982&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Collecting data...&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Training notebook-ready block...&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Done!&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;accuracy&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;div class="hb-notebook-outputs"&gt;&lt;pre class="hb-notebook-output hb-notebook-output--stream"&gt;&lt;code&gt;Collecting data...
Training notebook-ready block...
Done!
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class="hb-notebook-output hb-notebook-output--text"&gt;&lt;code&gt;0.982&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/article&gt;&lt;article class="hb-notebook-cell hb-notebook-cell--code" data-cell-type="code"&gt;
&lt;header class="hb-notebook-cell-header"&gt;
&lt;span class="hb-notebook-pill"&gt;In [2]&lt;/span&gt;
&lt;/header&gt;
&lt;div class="hb-notebook-code" data-language="python"&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;IPython.display&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;HTML&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;HTML&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;lt;div style=&amp;#39;font-family:Inter,ui-sans-serif;&amp;#39;&amp;gt;&amp;lt;strong&amp;gt;Launch Readiness:&amp;lt;/strong&amp;gt; &amp;lt;span style=&amp;#39;color:#22c55e;&amp;#39;&amp;gt;98.2&lt;/span&gt;&lt;span class="si"&gt;% c&lt;/span&gt;&lt;span class="s2"&gt;onfidence&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;em&amp;gt;Notebook blocks are theme-aware and dark-mode friendly.&amp;lt;/em&amp;gt;&amp;lt;/div&amp;gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;div class="hb-notebook-outputs"&gt;
&lt;div class="hb-notebook-output hb-notebook-output--html"&gt;&lt;div style='font-family:Inter,ui-sans-serif;'&gt;&lt;strong&gt;Launch Readiness:&lt;/strong&gt; &lt;span style='color:#22c55e;'&gt;98.2% confidence&lt;/span&gt;&lt;br&gt;&lt;em&gt;Notebook blocks are theme-aware and dark-mode friendly.&lt;/em&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/article&gt;&lt;article class="hb-notebook-cell hb-notebook-cell--code" data-cell-type="code"&gt;
&lt;header class="hb-notebook-cell-header"&gt;
&lt;span class="hb-notebook-pill"&gt;In [3]&lt;/span&gt;
&lt;div class="hb-notebook-tags"&gt;
&lt;span&gt;metrics&lt;/span&gt;
&lt;/div&gt;
&lt;/header&gt;
&lt;div class="hb-notebook-code" data-language="python"&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;metrics&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;metrics&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;engagement_rate&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.73&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;read_time_minutes&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;4.6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;subscribers&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1280&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;metrics&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;div class="hb-notebook-outputs"&gt;&lt;pre class="hb-notebook-output hb-notebook-output--json"&gt;&lt;code&gt;{
"metrics": {
"engagement_rate": 0.73,
"read_time_minutes": 4.6,
"subscribers": 1280
}
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/article&gt;&lt;article class="hb-notebook-cell hb-notebook-cell--markdown" data-cell-type="markdown"&gt;
&lt;header class="hb-notebook-cell-header"&gt;
&lt;span class="hb-notebook-pill"&gt;Markdown&lt;/span&gt;
&lt;/header&gt;
&lt;div class="hb-notebook-markdown prose dark:prose-invert"&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Tip: Pair this block with Call-to-Action cards or the Embed shortcode to link to GitHub repos, datasets, or ARXIV preprints.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;/article&gt;
&lt;/div&gt;
&lt;div class="sr-only" data-hb-component="notebook" data-hb-version="1.0" data-hb-license="MIT"&gt;
Powered by Hugo Blox Kit - https://github.com/HugoBlox/kit
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="how-to-add-a-notebook"&gt;How to add a notebook&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Save your notebook.&lt;/strong&gt; Place your &lt;code&gt;.ipynb&lt;/code&gt; file in &lt;code&gt;assets/notebooks/&lt;/code&gt; (for global access) or inside a page bundle (like &lt;code&gt;content/blog/my-post/analysis.ipynb&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Add the shortcode.&lt;/strong&gt; In any Markdown page, simply use:
&lt;code&gt;{{&amp;lt; notebook src=&amp;quot;analysis.ipynb&amp;quot; &amp;gt;}}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Customize.&lt;/strong&gt; You can hide code cells for non-technical audiences (&lt;code&gt;show_code=false&lt;/code&gt;) or just show the output (&lt;code&gt;show_outputs=true&lt;/code&gt;).&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="callout flex px-4 py-3 mb-6 rounded-md border-l-4 bg-purple-100 dark:bg-purple-900 border-purple-500"
data-callout="important"
data-callout-metadata=""&gt;
&lt;span class="callout-icon pr-3 pt-1 text-purple-600 dark:text-purple-300"&gt;
&lt;svg height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M12 9v3.75m9-.75a9 9 0 1 1-18 0a9 9 0 0 1 18 0m-9 3.75h.008v.008H12z"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;div class="callout-content dark:text-neutral-300"&gt;
&lt;div class="callout-title font-semibold mb-1"&gt;Important&lt;/div&gt;
&lt;div class="callout-body"&gt;&lt;p&gt;Hugo Blox respects your privacy. Notebook rendering happens statically at build time—no third-party services required.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="next-steps"&gt;Next steps&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Try it out:&lt;/strong&gt; Drop one of your existing notebooks into this site and see how it looks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Link your papers:&lt;/strong&gt; Use the Embed shortcode to link your notebook to your latest arXiv preprint or GitHub repository.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Get help:&lt;/strong&gt; Join the community on
or check the
.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Happy researching! 🚀&lt;/p&gt;</description></item><item><title>Example Talk: Recent Work</title><link>https://celine-fouard.fr/slides/example/</link><pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/slides/example/</guid><description>&lt;!-- no-branding --&gt;
&lt;h1 id="example-talk"&gt;Example Talk&lt;/h1&gt;
&lt;h3 id="dr-alex-johnson--meta-ai"&gt;Dr. Alex Johnson · Meta AI&lt;/h3&gt;
&lt;hr&gt;
&lt;h2 id="research-overview"&gt;Research Overview&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Multimodal LLMs&lt;/li&gt;
&lt;li&gt;Efficient training&lt;/li&gt;
&lt;li&gt;Responsible AI&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="code--math"&gt;Code &amp;amp; Math&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;score&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;$$
E = mc^2
$$&lt;hr&gt;
&lt;h2 id="dual-column-layout"&gt;Dual Column Layout&lt;/h2&gt;
&lt;div class="r-hstack"&gt;
&lt;div style="flex: 1; padding-right: 1rem;"&gt;
&lt;h3 id="left-column"&gt;Left Column&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Point A&lt;/li&gt;
&lt;li&gt;Point B&lt;/li&gt;
&lt;li&gt;Point C&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div style="flex: 1; padding-left: 1rem;"&gt;
&lt;h3 id="right-column"&gt;Right Column&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Detail 1&lt;/li&gt;
&lt;li&gt;Detail 2&lt;/li&gt;
&lt;li&gt;Detail 3&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;!-- Alternative: Asymmetric columns --&gt;
&lt;div style="display: flex; gap: 2rem;"&gt;
&lt;div style="flex: 2;"&gt;
&lt;h3 id="main-content-23-width"&gt;Main Content (2/3 width)&lt;/h3&gt;
&lt;p&gt;This column takes up twice the space of the right column.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;example&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;code works too&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div style="flex: 1;"&gt;
&lt;h3 id="sidebar-13-width"&gt;Sidebar (1/3 width)&lt;/h3&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;&lt;br&gt;
Key points in smaller column&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id="image--text-layout"&gt;Image + Text Layout&lt;/h2&gt;
&lt;div class="r-hstack" style="align-items: center;"&gt;
&lt;div style="flex: 1;"&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="https://images.unsplash.com/photo-1708011271954-c0d2b3155ded?w=400&amp;amp;dpr=2&amp;amp;h=400&amp;amp;auto=format&amp;amp;fit=crop&amp;amp;q=60&amp;amp;ixid=M3wxMjA3fDB8MXxzZWFyY2h8MTh8fG1hdGhlbWF0aWNzfGVufDB8fHx8MTc2NTYzNTEzMHww&amp;amp;ixlib=rb-4.1.0" alt="" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;div style="flex: 1; padding-left: 2rem;"&gt;
&lt;h3 id="results"&gt;Results&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;95% accuracy&lt;/li&gt;
&lt;li&gt;10x faster inference&lt;/li&gt;
&lt;li&gt;Lower memory usage&lt;/li&gt;
&lt;/ul&gt;
&lt;span class="fragment " &gt;
&lt;strong&gt;Breakthrough!&lt;/strong&gt;
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id="speaker-notes"&gt;Speaker Notes&lt;/h2&gt;
&lt;p&gt;Press &lt;strong&gt;S&lt;/strong&gt; to open presenter view with notes!&lt;/p&gt;
&lt;p&gt;This slide has hidden speaker notes below.&lt;/p&gt;
&lt;p&gt;Note:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;This is a &lt;strong&gt;speaker note&lt;/strong&gt; (only visible in presenter view)&lt;/li&gt;
&lt;li&gt;Press &lt;code&gt;S&lt;/code&gt; key to open presenter console&lt;/li&gt;
&lt;li&gt;Perfect for remembering key talking points&lt;/li&gt;
&lt;li&gt;Can include reminders, timing, references&lt;/li&gt;
&lt;li&gt;Supports &lt;strong&gt;Markdown&lt;/strong&gt; formatting too!&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="progressive-reveals"&gt;Progressive Reveals&lt;/h2&gt;
&lt;p&gt;Content appears step-by-step:&lt;/p&gt;
&lt;span class="fragment " &gt;
First point appears
&lt;/span&gt;
&lt;span class="fragment " &gt;
Then the second point
&lt;/span&gt;
&lt;span class="fragment " &gt;
Finally the conclusion
&lt;/span&gt;
&lt;span class="fragment highlight-red" &gt;
This one can be &lt;strong&gt;highlighted&lt;/strong&gt;!
&lt;/span&gt;
&lt;p&gt;Note:
Use fragments to control pacing and maintain audience attention. Each fragment appears on click.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="diagrams-with-mermaid"&gt;Diagrams with Mermaid&lt;/h2&gt;
&lt;div class="mermaid"&gt;graph LR
A[Research Question] --&gt; B{Hypothesis}
B --&gt;|Valid| C[Experiment]
B --&gt;|Invalid| D[Revise]
C --&gt; E[Analyze Data]
E --&gt; F{Significant?}
F --&gt;|Yes| G[Publish]
F --&gt;|No| D
&lt;/div&gt;
&lt;p&gt;Perfect for: Workflows, architectures, processes&lt;/p&gt;
&lt;p&gt;Note:
Mermaid diagrams are created from simple text. They&amp;rsquo;re version-controllable and edit anywhere!&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="research-results"&gt;Research Results&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Accuracy&lt;/th&gt;
&lt;th&gt;Speed&lt;/th&gt;
&lt;th&gt;Memory&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Baseline&lt;/td&gt;
&lt;td&gt;87.3%&lt;/td&gt;
&lt;td&gt;1.0x&lt;/td&gt;
&lt;td&gt;2GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ours (v1)&lt;/td&gt;
&lt;td&gt;92.1%&lt;/td&gt;
&lt;td&gt;1.5x&lt;/td&gt;
&lt;td&gt;1.8GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ours (v2)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;95.8%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;2.3x&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1.2GB&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Key Finding:&lt;/strong&gt; 8.5% improvement over baseline with 40% memory reduction&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Note:
Tables are perfect for comparative results. Markdown tables are simple and version-control friendly.&lt;/p&gt;
&lt;hr&gt;
&lt;section data-noprocess data-shortcode-slide
data-background-color="#1e3a8a"
&gt;
&lt;h2 id="custom-backgrounds"&gt;Custom Backgrounds&lt;/h2&gt;
&lt;p&gt;This slide has a &lt;strong&gt;blue background&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;You can customize:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Background colors&lt;/li&gt;
&lt;li&gt;Background images&lt;/li&gt;
&lt;li&gt;Gradients&lt;/li&gt;
&lt;li&gt;Videos (yes, really!)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Use &lt;code&gt;{{&amp;lt; slide background-color=&amp;quot;#hex&amp;quot; &amp;gt;}}&lt;/code&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="vertical-navigation"&gt;Vertical Navigation&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;There&amp;rsquo;s more content below! ⬇️&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Press the &lt;strong&gt;Down Arrow&lt;/strong&gt; to see substeps.&lt;/p&gt;
&lt;p&gt;Note:
This demonstrates Reveal.js&amp;rsquo;s vertical slide feature. Great for optional details or deep dives.&lt;/p&gt;
&lt;hr&gt;
&lt;section data-noprocess data-shortcode-slide
id="substep-1"
&gt;
&lt;h3 id="substep-1-details"&gt;Substep 1: Details&lt;/h3&gt;
&lt;p&gt;This is additional content in a vertical stack.&lt;/p&gt;
&lt;p&gt;Navigate down for more, or right to skip to next topic →&lt;/p&gt;
&lt;hr&gt;
&lt;section data-noprocess data-shortcode-slide
id="substep-2"
&gt;
&lt;h3 id="substep-2-more-details"&gt;Substep 2: More Details&lt;/h3&gt;
&lt;p&gt;Even more detailed information.&lt;/p&gt;
&lt;p&gt;Press &lt;strong&gt;Up Arrow&lt;/strong&gt; to go back, or &lt;strong&gt;Right Arrow&lt;/strong&gt; to continue.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="citations--quotes"&gt;Citations &amp;amp; Quotes&lt;/h2&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&amp;ldquo;The best way to predict the future is to invent it.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;— Alan Kay&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Or reference research:&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Recent work by Smith et al. (2024) demonstrates that Markdown-based slides improve reproducibility by 78% compared to proprietary formats&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="media-youtube-videos"&gt;Media: YouTube Videos&lt;/h2&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/dQw4w9WgXcQ?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;Note:
Embed YouTube videos with just the video ID. Perfect for demos, tutorials, or interviews.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="media-all-options"&gt;Media: All Options&lt;/h2&gt;
&lt;p&gt;Embed various media types with simple shortcodes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;YouTube&lt;/strong&gt;: &lt;code&gt;{{&amp;lt; youtube VIDEO_ID &amp;gt;}}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bilibili&lt;/strong&gt;: &lt;code&gt;{{&amp;lt; bilibili id=&amp;quot;BV1...&amp;quot; &amp;gt;}}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Local videos&lt;/strong&gt;: &lt;code&gt;{{&amp;lt; video src=&amp;quot;file.mp4&amp;quot; controls=&amp;quot;yes&amp;quot; &amp;gt;}}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Audio&lt;/strong&gt;: &lt;code&gt;{{&amp;lt; audio src=&amp;quot;file.mp3&amp;quot; &amp;gt;}}&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Perfect for demos, interviews, tutorials, or podcasts!&lt;/p&gt;
&lt;p&gt;Note:
All media types work seamlessly in slides. Just use the appropriate shortcode.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="interactive-elements"&gt;Interactive Elements&lt;/h2&gt;
&lt;p&gt;Try these keyboard shortcuts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;→&lt;/code&gt; &lt;code&gt;←&lt;/code&gt; : Navigate slides&lt;/li&gt;
&lt;li&gt;&lt;code&gt;↓&lt;/code&gt; &lt;code&gt;↑&lt;/code&gt; : Vertical navigation&lt;/li&gt;
&lt;li&gt;&lt;code&gt;S&lt;/code&gt; : Speaker notes&lt;/li&gt;
&lt;li&gt;&lt;code&gt;F&lt;/code&gt; : Fullscreen&lt;/li&gt;
&lt;li&gt;&lt;code&gt;O&lt;/code&gt; : Overview mode&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/&lt;/code&gt; : Search&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ESC&lt;/code&gt; : Exit modes&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;!-- hide --&gt;
&lt;h2 id="hidden-slide-demo-inline-comment"&gt;Hidden Slide Demo (Inline Comment)&lt;/h2&gt;
&lt;p&gt;This slide is hidden using the &lt;code&gt;&amp;lt;!-- hide --&amp;gt;&lt;/code&gt; comment method.&lt;/p&gt;
&lt;p&gt;Perfect for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Speaker-only content&lt;/li&gt;
&lt;li&gt;Backup slides&lt;/li&gt;
&lt;li&gt;Work-in-progress content&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note:
This slide won&amp;rsquo;t appear in the presentation but remains in source for reference.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="thanks"&gt;Thanks&lt;/h2&gt;
&lt;h3 id="questions"&gt;Questions?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;🌐 Website:
&lt;/li&gt;
&lt;li&gt;🐦 X/Twitter:
&lt;/li&gt;
&lt;li&gt;💬 Discord:
&lt;/li&gt;
&lt;li&gt;⭐ GitHub:
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;All slides created with Markdown&lt;/strong&gt; • No vendor lock-in • Edit anywhere&lt;/p&gt;
&lt;p&gt;Note:
Thank you for your attention! Feel free to reach out with questions or contributions.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-branding-your-slides"&gt;🎨 Branding Your Slides&lt;/h2&gt;
&lt;p&gt;Add your identity to every slide with simple configuration!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What you can add:&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Element&lt;/th&gt;
&lt;th&gt;Position Options&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Logo&lt;/td&gt;
&lt;td&gt;top-left, top-right, bottom-left, bottom-right&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Title&lt;/td&gt;
&lt;td&gt;Same as above&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Author&lt;/td&gt;
&lt;td&gt;Same as above&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Footer Text&lt;/td&gt;
&lt;td&gt;Same + bottom-center&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Edit the &lt;code&gt;branding:&lt;/code&gt; section in your slide&amp;rsquo;s front matter (top of file).&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-adding-your-logo"&gt;📁 Adding Your Logo&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Place your logo in &lt;code&gt;assets/media/&lt;/code&gt; folder&lt;/li&gt;
&lt;li&gt;Use SVG format for best results (auto-adapts to any theme!)&lt;/li&gt;
&lt;li&gt;Add to front matter:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;branding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;logo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;filename&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;your-logo.svg&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# Must be in assets/media/&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;top-right&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;60px&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; SVGs with &lt;code&gt;fill=&amp;quot;currentColor&amp;quot;&lt;/code&gt; automatically match theme colors!&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-title--author-overlays"&gt;📝 Title &amp;amp; Author Overlays&lt;/h2&gt;
&lt;p&gt;Show presentation title and/or author on every slide:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;branding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;show&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;bottom-left&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Short Title&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# Optional: override long page title&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;author&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;show&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;bottom-right&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Author is auto-detected from page front matter (&lt;code&gt;author:&lt;/code&gt; or &lt;code&gt;authors:&lt;/code&gt;).&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-footer-text"&gt;📄 Footer Text&lt;/h2&gt;
&lt;p&gt;Add copyright, conference name, or any persistent text:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;branding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;footer&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;© 2024 Your Name · ICML 2024&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;bottom-center&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; Supports Markdown! Use &lt;code&gt;[Link](url)&lt;/code&gt; for clickable links.&lt;/p&gt;
&lt;hr&gt;
&lt;!-- no-branding --&gt;
&lt;h2 id="-hiding-branding-per-slide"&gt;🔇 Hiding Branding Per-Slide&lt;/h2&gt;
&lt;p&gt;Sometimes you want a clean slide (title slides, full-screen images).&lt;/p&gt;
&lt;p&gt;Add this comment at the &lt;strong&gt;start&lt;/strong&gt; of your slide content:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;!-- no-branding --&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## My Clean Slide
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Content here...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;☝️ &lt;strong&gt;This slide uses &lt;code&gt;&amp;lt;!-- no-branding --&amp;gt;&lt;/code&gt;&lt;/strong&gt; — notice no logo or overlays!&lt;/p&gt;
&lt;hr&gt;
&lt;!-- no-header --&gt;
&lt;h2 id="-selective-hiding"&gt;🔇 Selective Hiding&lt;/h2&gt;
&lt;p&gt;Hide just the header (logo + title):&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;!-- no-header --&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Or just the footer (author + footer text):&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;!-- no-footer --&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;☝️ &lt;strong&gt;This slide uses &lt;code&gt;&amp;lt;!-- no-header --&amp;gt;&lt;/code&gt;&lt;/strong&gt; — footer still visible below!&lt;/p&gt;
&lt;hr&gt;
&lt;!-- no-footer --&gt;
&lt;h2 id="-quick-reference"&gt;✅ Quick Reference&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Comment&lt;/th&gt;
&lt;th&gt;Hides&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;&amp;lt;!-- no-branding --&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Everything (logo, title, author, footer)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;&amp;lt;!-- no-header --&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Logo + Title overlay&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;&amp;lt;!-- no-footer --&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Author + Footer text&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;☝️ &lt;strong&gt;This slide uses &lt;code&gt;&amp;lt;!-- no-footer --&amp;gt;&lt;/code&gt;&lt;/strong&gt; — logo still visible above!&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-get-started"&gt;🚀 Get Started&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Copy this example&amp;rsquo;s front matter as a starting point&lt;/li&gt;
&lt;li&gt;Replace logo with yours in &lt;code&gt;assets/media/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Customize positions and text&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;&amp;lt;!-- no-branding --&amp;gt;&lt;/code&gt; for special slides&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Pro tip:&lt;/strong&gt; Set site-wide defaults in &lt;code&gt;config/_default/params.yaml&lt;/code&gt; under &lt;code&gt;slides.branding&lt;/code&gt;!&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;Smith, J. et al. (2024). &lt;em&gt;Open Science Presentations&lt;/em&gt;. Nature Methods.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>Toward Decision Support System for Lower Limb Endovascular Revascularization</title><link>https://celine-fouard.fr/publication/2024-roux-embc/</link><pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/publication/2024-roux-embc/</guid><description/></item><item><title>Segmentation of cardiac infarction in delayed-enhancement MRI using probability map and transformers-based neural networks</title><link>https://celine-fouard.fr/publication/2023-lecesne-cmpb/</link><pubDate>Fri, 01 Dec 2023 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/publication/2023-lecesne-cmpb/</guid><description/></item><item><title>🎉 Easily create your own simple yet highly customizable blog</title><link>https://celine-fouard.fr/old-blog/get-started/</link><pubDate>Fri, 27 Oct 2023 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/old-blog/get-started/</guid><description>&lt;p&gt;Welcome 👋&lt;/p&gt;
&lt;details class="print:hidden xl:hidden" open&gt;
&lt;summary&gt;Table of Contents&lt;/summary&gt;
&lt;div class="text-sm"&gt;
&lt;nav id="TableOfContents"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#overview"&gt;Overview&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#get-started"&gt;Get Started&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#crowd-funded-open-source-software"&gt;Crowd-funded open-source software&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#-click-here-to-become-a-sponsor-and-help-support-hugo-blox"&gt;❤️ Click here to become a sponsor and help support Hugo Blox’s future ❤️&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#ecosystem"&gt;Ecosystem&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#inspiration"&gt;Inspiration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#features"&gt;Features&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#themes"&gt;Themes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#license"&gt;License&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/nav&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;The Hugo Blox website builder for Hugo, along with its starter templates, is designed for professional creators, educators, and teams/organizations - although it can be used to create any kind of site&lt;/li&gt;
&lt;li&gt;The template can be modified and customised to suit your needs. It&amp;rsquo;s a good platform for anyone looking to take control of their data and online identity whilst having the convenience to start off with a &lt;strong&gt;no-code solution (write in Markdown and customize with YAML parameters)&lt;/strong&gt; and having &lt;strong&gt;flexibility to later add even deeper personalization with HTML and CSS&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;You can work with all your favourite tools and apps with hundreds of plugins and integrations to speed up your workflows, interact with your readers, and much more&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="get-started"&gt;Get Started&lt;/h3&gt;
&lt;div class="callout flex px-4 py-3 mb-6 rounded-md border-l-4 bg-emerald-100 dark:bg-emerald-900 border-emerald-500"
data-callout="tip"
data-callout-metadata=""&gt;
&lt;span class="callout-icon pr-3 pt-1 text-emerald-600 dark:text-emerald-300"&gt;
&lt;svg height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M12 18v-5.25m0 0a6 6 0 0 0 1.5-.189m-1.5.189a6 6 0 0 1-1.5-.189m3.75 7.478a12.1 12.1 0 0 1-4.5 0m3.75 2.383a14.4 14.4 0 0 1-3 0M14.25 18v-.192c0-.983.658-1.823 1.508-2.316a7.5 7.5 0 1 0-7.517 0c.85.493 1.509 1.333 1.509 2.316V18"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;div class="callout-content dark:text-neutral-300"&gt;
&lt;div class="callout-title font-semibold mb-1"&gt;Quick Start Guide&lt;/div&gt;
&lt;div class="callout-body"&gt;&lt;p&gt;New to Hugo Blox? Follow these steps to get your site up and running in minutes!&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;👉
&lt;/li&gt;
&lt;li&gt;📚
&lt;/li&gt;
&lt;li&gt;💬
or
&lt;/li&gt;
&lt;li&gt;🐦 Twitter:
#MadeWithHugoBlox&lt;/li&gt;
&lt;li&gt;💡
&lt;/li&gt;
&lt;li&gt;⬆️ &lt;strong&gt;Updating Hugo Blox?&lt;/strong&gt; View the
and
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="callout flex px-4 py-3 mb-6 rounded-md border-l-4 bg-purple-100 dark:bg-purple-900 border-purple-500"
data-callout="important"
data-callout-metadata=""&gt;
&lt;span class="callout-icon pr-3 pt-1 text-purple-600 dark:text-purple-300"&gt;
&lt;svg height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M12 9v3.75m9-.75a9 9 0 1 1-18 0a9 9 0 0 1 18 0m-9 3.75h.008v.008H12z"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;div class="callout-content dark:text-neutral-300"&gt;
&lt;div class="callout-title font-semibold mb-1"&gt;Important&lt;/div&gt;
&lt;div class="callout-body"&gt;&lt;p&gt;Remember to backup your site before making major updates!&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="crowd-funded-open-source-software"&gt;Crowd-funded open-source software&lt;/h2&gt;
&lt;p&gt;To help us develop this template and software sustainably under the MIT license, we ask all individuals and businesses that use it to help support its ongoing maintenance and development via sponsorship.&lt;/p&gt;
&lt;h3 id="-click-here-to-become-a-sponsor-and-help-support-hugo-blox"&gt;
&lt;/h3&gt;
&lt;p&gt;As a token of appreciation for sponsoring, you can &lt;strong&gt;unlock
awesome rewards and extra features 🦄✨&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="ecosystem"&gt;Ecosystem&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;
:&lt;/strong&gt; Automatically import publications from BibTeX&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="inspiration"&gt;Inspiration&lt;/h2&gt;
&lt;p&gt;
are building with this template.&lt;/p&gt;
&lt;h2 id="features"&gt;Features&lt;/h2&gt;
&lt;div class="callout flex px-4 py-3 mb-6 rounded-md border-l-4 bg-blue-100 dark:bg-blue-900 border-blue-500"
data-callout="note"
data-callout-metadata=""&gt;
&lt;span class="callout-icon pr-3 pt-1 text-blue-600 dark:text-blue-300"&gt;
&lt;svg height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="m16.862 4.487l1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8l.8-2.685a4.5 4.5 0 0 1 1.13-1.897zm0 0L19.5 7.125"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;div class="callout-content dark:text-neutral-300"&gt;
&lt;div class="callout-title font-semibold mb-1"&gt;Enhanced Markdown Support&lt;br&gt;&lt;/div&gt;
&lt;div class="callout-body"&gt;&lt;p&gt;Hugo Blox now supports GitHub and Obsidian-style callouts! Use standard Markdown alert syntax like &lt;code&gt;&amp;gt; [!NOTE]&lt;/code&gt; for better portability.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Page builder&lt;/strong&gt; - Create &lt;em&gt;anything&lt;/em&gt; with no-code
and
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Edit any type of content&lt;/strong&gt; - Blog posts, publications, talks, slides, projects, and more!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Create content&lt;/strong&gt; in
,
, or
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plugin System&lt;/strong&gt; - Fully customizable
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Display Code and Math&lt;/strong&gt; - Code syntax highlighting and LaTeX math supported&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Integrations&lt;/strong&gt; -
,
, Maps, Contact Forms, and more!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Beautiful Site&lt;/strong&gt; - Simple and refreshing one-page design&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Industry-Leading SEO&lt;/strong&gt; - Help get your website found on search engines and social media&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Media Galleries&lt;/strong&gt; - Display your images and videos with captions in a customizable gallery&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mobile Friendly&lt;/strong&gt; - Look amazing on every screen with a mobile friendly version of your site&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multi-language&lt;/strong&gt; - 35+ language packs including English, 中文, and Português&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multi-user&lt;/strong&gt; - Each author gets their own profile page&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Privacy Pack&lt;/strong&gt; - Assists with GDPR&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stand Out&lt;/strong&gt; - Bring your site to life with animation, parallax backgrounds, and scroll effects&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;One-Click Deployment&lt;/strong&gt; - No servers. No databases. Only files.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="callout flex px-4 py-3 mb-6 rounded-md border-l-4 bg-orange-100 dark:bg-orange-900 border-orange-500"
data-callout="warning"
data-callout-metadata=""&gt;
&lt;span class="callout-icon pr-3 pt-1 text-orange-600 dark:text-orange-300"&gt;
&lt;svg height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0zM12 15.75h.007v.008H12z"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;div class="callout-content dark:text-neutral-300"&gt;
&lt;div class="callout-title font-semibold mb-1"&gt;Version Requirements&lt;br&gt;&lt;/div&gt;
&lt;div class="callout-body"&gt;&lt;p&gt;The new Markdown alert syntax requires Hugo v0.132.0 or later. Make sure you&amp;rsquo;re using a compatible version!&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="themes"&gt;Themes&lt;/h2&gt;
&lt;p&gt;Hugo Blox and its templates come with &lt;strong&gt;automatic day (light) and night (dark) mode&lt;/strong&gt; built-in. Visitors can choose their preferred mode by clicking the sun/moon icon in the header.&lt;/p&gt;
&lt;p&gt;
for your site. Themes are fully customizable.&lt;/p&gt;
&lt;h2 id="license"&gt;License&lt;/h2&gt;
&lt;p&gt;Copyright 2016-present
.&lt;/p&gt;
&lt;p&gt;Released under the
license.&lt;/p&gt;</description></item><item><title>🧠 Sharpen your thinking with a second brain</title><link>https://celine-fouard.fr/old-blog/second-brain/</link><pubDate>Thu, 26 Oct 2023 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/old-blog/second-brain/</guid><description>&lt;p&gt;Create a personal knowledge base and share your knowledge with your peers.&lt;/p&gt;
&lt;p&gt;Hugo Blox web framework empowers you with one of the most flexible note-taking capabilities out there.&lt;/p&gt;
&lt;p&gt;Create a powerful knowledge base that works on top of a local folder of plain text Markdown files.&lt;/p&gt;
&lt;p&gt;Use it as your second brain, either publicly sharing your knowledge with your peers via your website, or via a private GitHub repository and password-protected site just for yourself.&lt;/p&gt;
&lt;h2 id="mindmaps"&gt;Mindmaps&lt;/h2&gt;
&lt;p&gt;Hugo Blox supports a Markdown extension for mindmaps.&lt;/p&gt;
&lt;p&gt;With this open format, can even edit your mindmaps in other popular tools such as Obsidian.&lt;/p&gt;
&lt;p&gt;Simply insert a Markdown code block labelled as &lt;code&gt;markmap&lt;/code&gt; and optionally set the height of the mindmap as shown in the example below.&lt;/p&gt;
&lt;p&gt;Mindmaps can be created by simply writing the items as a Markdown list within the &lt;code&gt;markmap&lt;/code&gt; code block, indenting each item to create as many sub-levels as you need:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;pre class="chroma"&gt;
&lt;code&gt;
```markmap {height="200px"}
- Hugo Modules
- Hugo Blox
- netlify
- netlify-cms
- slides
```
&lt;/code&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;renders as&lt;/p&gt;
&lt;div class="markmap" style="height: 200px;"&gt;
&lt;pre&gt;- Hugo Modules
- Hugo Blox
- netlify
- netlify-cms
- slides&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Anh here&amp;rsquo;s a more advanced mindmap with formatting, code blocks, and math:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;pre class="chroma"&gt;
&lt;code&gt;
```markmap
- Mindmaps
- Links
- [Hugo Blox Docs](https://docs.hugoblox.com/)
- [Discord Community](https://discord.gg/z8wNYzb)
- [GitHub](https://github.com/HugoBlox/kit)
- Features
- Markdown formatting
- **inline** ~~text~~ *styles*
- multiline
text
- `inline code`
- Math: $x = {-b \pm \sqrt{b^2-4ac} \over 2a}$
```
&lt;/code&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;renders as&lt;/p&gt;
&lt;div class="markmap" style="height: 500px;"&gt;
&lt;pre&gt;- Mindmaps
- Links
- [Hugo Blox Docs](https://docs.hugoblox.com/)
- [Discord Community](https://discord.gg/z8wNYzb)
- [GitHub](https://github.com/HugoBlox/kit)
- Features
- Markdown formatting
- **inline** ~~text~~ *styles*
- multiline
text
- `inline code`
- Math: $x = {-b \pm \sqrt{b^2-4ac} \over 2a}$&lt;/pre&gt;
&lt;/div&gt;
&lt;h2 id="highlighting"&gt;Highlighting&lt;/h2&gt;
&lt;p&gt;&lt;mark&gt;Highlight&lt;/mark&gt; important text with &lt;code&gt;mark&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;mark&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Highlighted text&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;mark&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="callouts"&gt;Callouts&lt;/h2&gt;
&lt;p&gt;Use
(aka &lt;em&gt;asides&lt;/em&gt;, &lt;em&gt;hints&lt;/em&gt;, or &lt;em&gt;alerts&lt;/em&gt;) to draw attention to notes, tips, and warnings.&lt;/p&gt;
&lt;p&gt;Use the &lt;code&gt;&amp;gt; [!NOTE]&lt;/code&gt; syntax to create a callout.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;&amp;gt; &lt;/span&gt;&lt;span class="ge"&gt;[!NOTE]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;&amp;gt; &lt;/span&gt;&lt;span class="ge"&gt;A Markdown aside is useful for displaying notices, hints, or definitions to your readers.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;renders as&lt;/p&gt;
&lt;div class="callout flex px-4 py-3 mb-6 rounded-md border-l-4 bg-blue-100 dark:bg-blue-900 border-blue-500"
data-callout="note"
data-callout-metadata=""&gt;
&lt;span class="callout-icon pr-3 pt-1 text-blue-600 dark:text-blue-300"&gt;
&lt;svg height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="m16.862 4.487l1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8l.8-2.685a4.5 4.5 0 0 1 1.13-1.897zm0 0L19.5 7.125"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;div class="callout-content dark:text-neutral-300"&gt;
&lt;div class="callout-title font-semibold mb-1"&gt;Note&lt;/div&gt;
&lt;div class="callout-body"&gt;&lt;p&gt;A Markdown aside is useful for displaying notices, hints, or definitions to your readers.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Or use the &lt;code&gt;warning&lt;/code&gt; callout type so your readers don&amp;rsquo;t miss critical details:&lt;/p&gt;
&lt;div class="callout flex px-4 py-3 mb-6 rounded-md border-l-4 bg-orange-100 dark:bg-orange-900 border-orange-500"
data-callout="warning"
data-callout-metadata=""&gt;
&lt;span class="callout-icon pr-3 pt-1 text-orange-600 dark:text-orange-300"&gt;
&lt;svg height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0zM12 15.75h.007v.008H12z"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;div class="callout-content dark:text-neutral-300"&gt;
&lt;div class="callout-title font-semibold mb-1"&gt;Warning&lt;/div&gt;
&lt;div class="callout-body"&gt;&lt;p&gt;A Markdown aside is useful for displaying notices, hints, or definitions to your readers.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="did-you-find-this-page-helpful-consider-sharing-it-"&gt;Did you find this page helpful? Consider sharing it 🙌&lt;/h2&gt;</description></item><item><title>📈 Communicate your results effectively with the best data visualizations</title><link>https://celine-fouard.fr/old-blog/data-visualization/</link><pubDate>Wed, 25 Oct 2023 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/old-blog/data-visualization/</guid><description>&lt;p&gt;Hugo Blox is designed to give technical content creators a seamless experience. You can focus on the content and Hugo Blox handles the rest.&lt;/p&gt;
&lt;p&gt;Use popular tools such as Plotly, Mermaid, and data frames.&lt;/p&gt;
&lt;h2 id="embed-rich-content"&gt;Embed Rich Content&lt;/h2&gt;
&lt;p&gt;HuggingFace Model&lt;/p&gt;
&lt;div class="group bg-white/90 dark:bg-zinc-900/90 backdrop-blur-sm rounded-2xl ring-1 ring-zinc-900/5 dark:ring-white/10 shadow-lg overflow-hidden transition-all duration-300 ease-out hover:shadow-xl hover:shadow-primary-500/10 hover:-translate-y-1 focus-within:ring-2 focus-within:ring-primary-500/50 my-6" role="article" aria-labelledby="hb-embed-title-hb-embed-63f321aed1c5ddd60af1b99579a7ca33"&gt;
&lt;div class="flex items-center gap-3 p-6 border-b border-zinc-100 dark:border-zinc-800"&gt;
&lt;div class="flex-shrink-0"&gt;
&lt;div class="w-10 h-10 rounded-full bg-gradient-to-br from-yellow-400 to-orange-500 flex items-center justify-center"&gt;
&lt;svg class="w-6 h-6 text-white" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="currentColor" d="M12.025 1.13c-5.77 0-10.449 4.647-10.449 10.378c0 1.112.178 2.181.503 3.185c.064-.222.203-.444.416-.577a.96.96 0 0 1 .524-.15c.293 0 .584.124.84.284c.278.173.48.408.71.694c.226.282.458.611.684.951v-.014c.017-.324.106-.622.264-.874s.403-.487.762-.543c.3-.047.596.06.787.203s.31.313.4.467c.15.257.212.468.233.542c.01.026.653 1.552 1.657 2.54c.616.605 1.01 1.223 1.082 1.912c.055.537-.096 1.059-.38 1.572c.637.121 1.294.187 1.967.187c.657 0 1.298-.063 1.921-.178c-.287-.517-.44-1.041-.384-1.581c.07-.69.465-1.307 1.081-1.913c1.004-.987 1.647-2.513 1.657-2.539c.021-.074.083-.285.233-.542c.09-.154.208-.323.4-.467a1.08 1.08 0 0 1 .787-.203c.359.056.604.29.762.543s.247.55.265.874v.015c.225-.34.457-.67.683-.952c.23-.286.432-.52.71-.694c.257-.16.547-.284.84-.285a.97.97 0 0 1 .524.151c.228.143.373.388.43.625l.006.04a10.3 10.3 0 0 0 .534-3.273c0-5.731-4.678-10.378-10.449-10.378M8.327 6.583a1.5 1.5 0 0 1 .713.174a1.487 1.487 0 0 1 .617 2.013c-.183.343-.762-.214-1.102-.094c-.38.134-.532.914-.917.71a1.487 1.487 0 0 1 .69-2.803m7.486 0a1.487 1.487 0 0 1 .689 2.803c-.385.204-.536-.576-.916-.71c-.34-.12-.92.437-1.103.094a1.487 1.487 0 0 1 .617-2.013a1.5 1.5 0 0 1 .713-.174m-10.68 1.55a.96.96 0 1 1 0 1.921a.96.96 0 0 1 0-1.92m13.838 0a.96.96 0 1 1 0 1.92a.96.96 0 0 1 0-1.92M8.489 11.458c.588.01 1.965 1.157 3.572 1.164c1.607-.007 2.984-1.155 3.572-1.164c.196-.003.305.12.305.454c0 .886-.424 2.328-1.563 3.202c-.22-.756-1.396-1.366-1.63-1.32q-.011.001-.02.006l-.044.026l-.01.008l-.03.024q-.018.017-.035.036l-.032.04a1 1 0 0 0-.058.09l-.014.025q-.049.088-.11.19a1 1 0 0 1-.083.116a1.2 1.2 0 0 1-.173.18q-.035.029-.075.058a1.3 1.3 0 0 1-.251-.243a1 1 0 0 1-.076-.107c-.124-.193-.177-.363-.337-.444c-.034-.016-.104-.008-.2.022q-.094.03-.216.087q-.06.028-.125.063l-.13.074q-.067.04-.136.086a3 3 0 0 0-.135.096a3 3 0 0 0-.26.219a2 2 0 0 0-.12.121a2 2 0 0 0-.106.128l-.002.002a2 2 0 0 0-.09.132l-.001.001a1.2 1.2 0 0 0-.105.212q-.013.036-.024.073c-1.139-.875-1.563-2.317-1.563-3.203c0-.334.109-.457.305-.454m.836 10.354c.824-1.19.766-2.082-.365-3.194c-1.13-1.112-1.789-2.738-1.789-2.738s-.246-.945-.806-.858s-.97 1.499.202 2.362c1.173.864-.233 1.45-.685.64c-.45-.812-1.683-2.896-2.322-3.295s-1.089-.175-.938.647s2.822 2.813 2.562 3.244s-1.176-.506-1.176-.506s-2.866-2.567-3.49-1.898s.473 1.23 2.037 2.16c1.564.932 1.686 1.178 1.464 1.53s-3.675-2.511-4-1.297c-.323 1.214 3.524 1.567 3.287 2.405c-.238.839-2.71-1.587-3.216-.642c-.506.946 3.49 2.056 3.522 2.064c1.29.33 4.568 1.028 5.713-.624m5.349 0c-.824-1.19-.766-2.082.365-3.194c1.13-1.112 1.789-2.738 1.789-2.738s.246-.945.806-.858s.97 1.499-.202 2.362c-1.173.864.233 1.45.685.64c.451-.812 1.683-2.896 2.322-3.295s1.089-.175.938.647s-2.822 2.813-2.562 3.244s1.176-.506 1.176-.506s2.866-2.567 3.49-1.898s-.473 1.23-2.037 2.16c-1.564.932-1.686 1.178-1.464 1.53s3.675-2.511 4-1.297c.323 1.214-3.524 1.567-3.287 2.405c.238.839 2.71-1.587 3.216-.642c.506.946-3.49 2.056-3.522 2.064c-1.29.33-4.568 1.028-5.713-.624"/&gt;&lt;/svg&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="flex-1 min-w-0"&gt;
&lt;h3 id="hb-embed-title-hb-embed-63f321aed1c5ddd60af1b99579a7ca33" class="text-xl font-bold tracking-tight leading-tight truncate"&gt;
&lt;a href="https://huggingface.co/google/embeddinggemma-300m" target="_blank" rel="noopener" class="text-zinc-900 dark:text-zinc-100 hover:text-primary-600 dark:hover:text-primary-400 hover:underline transition-colors duration-200"&gt;google/embeddinggemma-300m&lt;/a&gt;
&lt;/h3&gt;
&lt;div class="flex items-center gap-2 mt-1"&gt;
&lt;span class="inline-block w-2 h-2 rounded-full bg-secondary-500"&gt;&lt;/span&gt;
&lt;span class="text-sm text-zinc-600 dark:text-zinc-400 capitalize"&gt;
sentence-similarity
&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="flex-shrink-0"&gt;
&lt;a href="https://huggingface.co/google/embeddinggemma-300m" target="_blank" rel="noopener" class="text-zinc-400 hover:text-primary-500 transition-colors duration-200"&gt;
&lt;svg class="w-5 h-5 hb-embed-link" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.5 6H5.25A2.25 2.25 0 0 0 3 8.25v10.5A2.25 2.25 0 0 0 5.25 21h10.5A2.25 2.25 0 0 0 18 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25"/&gt;&lt;/svg&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="p-6 space-y-4"&gt;
&lt;div class="flex items-center gap-6 pt-2"&gt;&lt;div class="flex items-center gap-1.5 text-sm text-zinc-600 dark:text-zinc-400"&gt;
&lt;svg class="w-4 h-4 text-primary-500" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5M16.5 12L12 16.5m0 0L7.5 12m4.5 4.5V3"/&gt;&lt;/svg&gt;&lt;span id="hb-hb-embed-63f321aed1c5ddd60af1b99579a7ca33-downloads"&gt;1.948437M&lt;/span&gt;&lt;/div&gt;&lt;div class="flex items-center gap-1.5 text-sm text-zinc-600 dark:text-zinc-400"&gt;
&lt;svg class="w-4 h-4 text-secondary-500" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M21 8.25c0-2.485-2.099-4.5-4.687-4.5c-1.936 0-3.598 1.126-4.313 2.733c-.715-1.607-2.377-2.733-4.312-2.733C5.098 3.75 3 5.765 3 8.25c0 7.22 9 12 9 12s9-4.78 9-12"/&gt;&lt;/svg&gt;&lt;span id="hb-hb-embed-63f321aed1c5ddd60af1b99579a7ca33-likes"&gt;1.521k&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="absolute inset-0 pointer-events-none bg-gradient-to-r from-primary-500/0 via-primary-500/5 to-secondary-500/0 opacity-0 group-hover:opacity-100 transition-opacity duration-300"&gt;&lt;/div&gt;
&lt;div class="sr-only" data-hb-component="embed" data-hb-version="1.0" data-hb-license="MIT"&gt;
Powered by Hugo Blox Kit - https://github.com/HugoBlox/kit
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;HuggingFace Dataset&lt;/p&gt;
&lt;div class="group bg-white/90 dark:bg-zinc-900/90 backdrop-blur-sm rounded-2xl ring-1 ring-zinc-900/5 dark:ring-white/10 shadow-lg overflow-hidden transition-all duration-300 ease-out hover:shadow-xl hover:shadow-primary-500/10 hover:-translate-y-1 focus-within:ring-2 focus-within:ring-primary-500/50 my-6" role="article" aria-labelledby="hb-embed-title-hb-embed-3c57fb8a3817424fde1a8fe0ab8eb3d4"&gt;
&lt;div class="flex items-center gap-3 p-6 border-b border-zinc-100 dark:border-zinc-800"&gt;
&lt;div class="flex-shrink-0"&gt;
&lt;div class="w-10 h-10 rounded-full bg-gradient-to-br from-yellow-400 to-orange-500 flex items-center justify-center"&gt;
&lt;svg class="w-6 h-6 text-white" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="currentColor" d="M12.025 1.13c-5.77 0-10.449 4.647-10.449 10.378c0 1.112.178 2.181.503 3.185c.064-.222.203-.444.416-.577a.96.96 0 0 1 .524-.15c.293 0 .584.124.84.284c.278.173.48.408.71.694c.226.282.458.611.684.951v-.014c.017-.324.106-.622.264-.874s.403-.487.762-.543c.3-.047.596.06.787.203s.31.313.4.467c.15.257.212.468.233.542c.01.026.653 1.552 1.657 2.54c.616.605 1.01 1.223 1.082 1.912c.055.537-.096 1.059-.38 1.572c.637.121 1.294.187 1.967.187c.657 0 1.298-.063 1.921-.178c-.287-.517-.44-1.041-.384-1.581c.07-.69.465-1.307 1.081-1.913c1.004-.987 1.647-2.513 1.657-2.539c.021-.074.083-.285.233-.542c.09-.154.208-.323.4-.467a1.08 1.08 0 0 1 .787-.203c.359.056.604.29.762.543s.247.55.265.874v.015c.225-.34.457-.67.683-.952c.23-.286.432-.52.71-.694c.257-.16.547-.284.84-.285a.97.97 0 0 1 .524.151c.228.143.373.388.43.625l.006.04a10.3 10.3 0 0 0 .534-3.273c0-5.731-4.678-10.378-10.449-10.378M8.327 6.583a1.5 1.5 0 0 1 .713.174a1.487 1.487 0 0 1 .617 2.013c-.183.343-.762-.214-1.102-.094c-.38.134-.532.914-.917.71a1.487 1.487 0 0 1 .69-2.803m7.486 0a1.487 1.487 0 0 1 .689 2.803c-.385.204-.536-.576-.916-.71c-.34-.12-.92.437-1.103.094a1.487 1.487 0 0 1 .617-2.013a1.5 1.5 0 0 1 .713-.174m-10.68 1.55a.96.96 0 1 1 0 1.921a.96.96 0 0 1 0-1.92m13.838 0a.96.96 0 1 1 0 1.92a.96.96 0 0 1 0-1.92M8.489 11.458c.588.01 1.965 1.157 3.572 1.164c1.607-.007 2.984-1.155 3.572-1.164c.196-.003.305.12.305.454c0 .886-.424 2.328-1.563 3.202c-.22-.756-1.396-1.366-1.63-1.32q-.011.001-.02.006l-.044.026l-.01.008l-.03.024q-.018.017-.035.036l-.032.04a1 1 0 0 0-.058.09l-.014.025q-.049.088-.11.19a1 1 0 0 1-.083.116a1.2 1.2 0 0 1-.173.18q-.035.029-.075.058a1.3 1.3 0 0 1-.251-.243a1 1 0 0 1-.076-.107c-.124-.193-.177-.363-.337-.444c-.034-.016-.104-.008-.2.022q-.094.03-.216.087q-.06.028-.125.063l-.13.074q-.067.04-.136.086a3 3 0 0 0-.135.096a3 3 0 0 0-.26.219a2 2 0 0 0-.12.121a2 2 0 0 0-.106.128l-.002.002a2 2 0 0 0-.09.132l-.001.001a1.2 1.2 0 0 0-.105.212q-.013.036-.024.073c-1.139-.875-1.563-2.317-1.563-3.203c0-.334.109-.457.305-.454m.836 10.354c.824-1.19.766-2.082-.365-3.194c-1.13-1.112-1.789-2.738-1.789-2.738s-.246-.945-.806-.858s-.97 1.499.202 2.362c1.173.864-.233 1.45-.685.64c-.45-.812-1.683-2.896-2.322-3.295s-1.089-.175-.938.647s2.822 2.813 2.562 3.244s-1.176-.506-1.176-.506s-2.866-2.567-3.49-1.898s.473 1.23 2.037 2.16c1.564.932 1.686 1.178 1.464 1.53s-3.675-2.511-4-1.297c-.323 1.214 3.524 1.567 3.287 2.405c-.238.839-2.71-1.587-3.216-.642c-.506.946 3.49 2.056 3.522 2.064c1.29.33 4.568 1.028 5.713-.624m5.349 0c-.824-1.19-.766-2.082.365-3.194c1.13-1.112 1.789-2.738 1.789-2.738s.246-.945.806-.858s.97 1.499-.202 2.362c-1.173.864.233 1.45.685.64c.451-.812 1.683-2.896 2.322-3.295s1.089-.175.938.647s-2.822 2.813-2.562 3.244s1.176-.506 1.176-.506s2.866-2.567 3.49-1.898s-.473 1.23-2.037 2.16c-1.564.932-1.686 1.178-1.464 1.53s3.675-2.511 4-1.297c.323 1.214-3.524 1.567-3.287 2.405c.238.839 2.71-1.587 3.216-.642c.506.946-3.49 2.056-3.522 2.064c-1.29.33-4.568 1.028-5.713-.624"/&gt;&lt;/svg&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="flex-1 min-w-0"&gt;
&lt;h3 id="hb-embed-title-hb-embed-3c57fb8a3817424fde1a8fe0ab8eb3d4" class="text-xl font-bold tracking-tight leading-tight truncate"&gt;
&lt;a href="https://huggingface.co/datasets/fka/awesome-chatgpt-prompts" target="_blank" rel="noopener" class="text-zinc-900 dark:text-zinc-100 hover:text-primary-600 dark:hover:text-primary-400 hover:underline transition-colors duration-200"&gt;fka/prompts.chat&lt;/a&gt;
&lt;/h3&gt;
&lt;div class="flex items-center gap-2 mt-1"&gt;
&lt;span class="inline-block w-2 h-2 rounded-full bg-primary-500"&gt;&lt;/span&gt;
&lt;span class="text-sm text-zinc-600 dark:text-zinc-400 capitalize"&gt;
dataset
&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="flex-shrink-0"&gt;
&lt;a href="https://huggingface.co/datasets/fka/awesome-chatgpt-prompts" target="_blank" rel="noopener" class="text-zinc-400 hover:text-primary-500 transition-colors duration-200"&gt;
&lt;svg class="w-5 h-5 hb-embed-link" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.5 6H5.25A2.25 2.25 0 0 0 3 8.25v10.5A2.25 2.25 0 0 0 5.25 21h10.5A2.25 2.25 0 0 0 18 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25"/&gt;&lt;/svg&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="p-6 space-y-4"&gt;
&lt;p class="text-zinc-600 dark:text-zinc-400 text-base leading-relaxed line-clamp-3"&gt;
a.k.a. Awesome ChatGPT Prompts
This is a Dataset Repository mirror of prompts.chat — a social platform for AI prompts.
📢 Notice
This Hugging Face dataset is a mirror. For the …
&lt;/p&gt;&lt;div class="flex items-center gap-6 pt-2"&gt;&lt;div class="flex items-center gap-1.5 text-sm text-zinc-600 dark:text-zinc-400"&gt;
&lt;svg class="w-4 h-4 text-primary-500" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5M16.5 12L12 16.5m0 0L7.5 12m4.5 4.5V3"/&gt;&lt;/svg&gt;&lt;span id="hb-hb-embed-3c57fb8a3817424fde1a8fe0ab8eb3d4-downloads"&gt;23.229k&lt;/span&gt;&lt;/div&gt;&lt;div class="flex items-center gap-1.5 text-sm text-zinc-600 dark:text-zinc-400"&gt;
&lt;svg class="w-4 h-4 text-secondary-500" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M21 8.25c0-2.485-2.099-4.5-4.687-4.5c-1.936 0-3.598 1.126-4.313 2.733c-.715-1.607-2.377-2.733-4.312-2.733C5.098 3.75 3 5.765 3 8.25c0 7.22 9 12 9 12s9-4.78 9-12"/&gt;&lt;/svg&gt;&lt;span id="hb-hb-embed-3c57fb8a3817424fde1a8fe0ab8eb3d4-likes"&gt;9.614k&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="absolute inset-0 pointer-events-none bg-gradient-to-r from-primary-500/0 via-primary-500/5 to-secondary-500/0 opacity-0 group-hover:opacity-100 transition-opacity duration-300"&gt;&lt;/div&gt;
&lt;div class="sr-only" data-hb-component="embed" data-hb-version="1.0" data-hb-license="MIT"&gt;
Powered by Hugo Blox Kit - https://github.com/HugoBlox/kit
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;GitHub Repository&lt;/p&gt;
&lt;div class="group bg-white/90 dark:bg-zinc-900/90 backdrop-blur-sm rounded-2xl ring-1 ring-zinc-900/5 dark:ring-white/10 shadow-lg overflow-hidden transition-all duration-300 ease-out hover:shadow-xl hover:shadow-primary-500/10 hover:-translate-y-1 focus-within:ring-2 focus-within:ring-primary-500/50 my-6" role="article" aria-labelledby="hb-embed-title-hb-embed-ba2f2ffd29da7fd7c05189b3ee01ae82"&gt;
&lt;div class="flex items-center gap-3 p-6 border-b border-zinc-100 dark:border-zinc-800"&gt;
&lt;div class="flex-shrink-0"&gt;
&lt;div class="w-10 h-10 rounded-full bg-gradient-to-br from-slate-800 to-slate-900 flex items-center justify-center"&gt;
&lt;svg class="w-6 h-6 text-white" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="currentColor" d="M12 .297c-6.63 0-12 5.373-12 12c0 5.303 3.438 9.8 8.205 11.385c.6.113.82-.258.82-.577c0-.285-.01-1.04-.015-2.04c-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729c1.205.084 1.838 1.236 1.838 1.236c1.07 1.835 2.809 1.305 3.495.998c.108-.776.417-1.305.76-1.605c-2.665-.3-5.466-1.332-5.466-5.93c0-1.31.465-2.38 1.235-3.22c-.135-.303-.54-1.523.105-3.176c0 0 1.005-.322 3.3 1.23c.96-.267 1.98-.399 3-.405c1.02.006 2.04.138 3 .405c2.28-1.552 3.285-1.23 3.285-1.23c.645 1.653.24 2.873.12 3.176c.765.84 1.23 1.91 1.23 3.22c0 4.61-2.805 5.625-5.475 5.92c.42.36.81 1.096.81 2.22c0 1.606-.015 2.896-.015 3.286c0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/&gt;&lt;/svg&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="flex-1 min-w-0"&gt;
&lt;h3 id="hb-embed-title-hb-embed-ba2f2ffd29da7fd7c05189b3ee01ae82" class="text-xl font-bold tracking-tight leading-tight truncate"&gt;
&lt;a href="https://github.com/HugoBlox/kit" target="_blank" rel="noopener" class="text-zinc-900 dark:text-zinc-100 hover:text-primary-600 dark:hover:text-primary-400 hover:underline transition-colors duration-200"&gt;kit&lt;/a&gt;
&lt;/h3&gt;
&lt;div class="flex items-center gap-2 mt-1"&gt;
&lt;span class="text-sm text-zinc-600 dark:text-zinc-400"&gt;by
&lt;a href="https://github.com/HugoBlox" target="_blank" rel="noopener" class="font-medium hover:text-primary-600 dark:hover:text-primary-400 hover:underline transition-colors duration-200"&gt;HugoBlox&lt;/a&gt;
&lt;/span&gt;&lt;span class="text-sm text-zinc-500 dark:text-zinc-500"&gt;•&lt;/span&gt;
&lt;span class="inline-block w-2 h-2 rounded-full bg-primary-500"&gt;&lt;/span&gt;
&lt;span class="text-sm text-zinc-500 dark:text-zinc-500 capitalize"&gt;HTML&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="flex-shrink-0"&gt;
&lt;a href="https://github.com/HugoBlox/kit" target="_blank" rel="noopener" class="text-zinc-400 hover:text-primary-500 transition-colors duration-200"&gt;
&lt;svg class="w-5 h-5 hb-embed-link" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.5 6H5.25A2.25 2.25 0 0 0 3 8.25v10.5A2.25 2.25 0 0 0 5.25 21h10.5A2.25 2.25 0 0 0 18 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25"/&gt;&lt;/svg&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="p-6 space-y-4"&gt;
&lt;p class="text-zinc-600 dark:text-zinc-400 text-base leading-relaxed line-clamp-3"&gt;
⚡ The Open Research Copilot. Build high-perf Portfolios, Lab Sites &amp;amp; Docs in Markdown + Jupyter. 100% Data Control. 🦫 数据科学家的开源 Copilot。一键部署 👇
&lt;/p&gt;&lt;div class="flex items-center gap-6 pt-2"&gt;&lt;div class="flex items-center gap-1.5 text-sm text-zinc-600 dark:text-zinc-400"&gt;
&lt;svg class="w-4 h-4 text-primary-500" xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 24 24"&gt;&lt;path d="M6 2C4.89543 2 4 2.89543 4 4C4 4.74028 4.4022 5.38663 5 5.73244V7C5 8.65685 6.34315 10 8 10H10V11.2676C9.4022 11.6134 9 12.2597 9 13C9 14.1046 9.89543 15 11 15C12.1046 15 13 14.1046 13 13C13 12.2597 12.5978 11.6134 12 11.2676V10H14C15.6569 10 17 8.65685 17 7V5.73244C17.5978 5.38663 18 4.74028 18 4C18 2.89543 17.1046 2 16 2C14.8954 2 14 2.89543 14 4C14 4.74028 14.4022 5.38663 15 5.73244V7C15 7.55228 14.5523 8 14 8H8C7.44772 8 7 7.55228 7 7V5.73244C7.5978 5.38663 8 4.74028 8 4C8 2.89543 7.10457 2 6 2ZM6 4C6 3.44772 6.44772 3 7 3C7.55228 3 8 3.44772 8 4C8 4.55228 7.55228 5 7 5C6.44772 5 6 4.55228 6 4ZM11 13C11 12.4477 11.4477 12 12 12C12.5523 12 13 12.4477 13 13C13 13.5523 12.5523 14 12 14C11.4477 14 11 13.5523 11 13ZM16 3C15.4477 3 15 3.44772 15 4C15 4.55228 15.4477 5 16 5C16.5523 5 17 4.55228 17 4C17 3.44772 16.5523 3 16 3Z"/&gt;&lt;/svg&gt;&lt;span id="hb-hb-embed-ba2f2ffd29da7fd7c05189b3ee01ae82-forks"&gt;2.947k&lt;/span&gt;&lt;/div&gt;&lt;div class="flex items-center gap-1.5 text-sm text-zinc-600 dark:text-zinc-400"&gt;
&lt;svg class="w-4 h-4 text-red-500" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M12 9v3.75m9-.75a9 9 0 1 1-18 0a9 9 0 0 1 18 0m-9 3.75h.008v.008H12z"/&gt;&lt;/svg&gt;
&lt;a href="https://github.com/HugoBlox/kit/issues" target="_blank" rel="noopener" class="font-medium hover:text-primary-600 dark:hover:text-primary-400 hover:underline transition-colors duration-200" id="hb-hb-embed-ba2f2ffd29da7fd7c05189b3ee01ae82-issues"&gt;2&lt;/a&gt;&lt;/div&gt;&lt;div class="flex items-center gap-1.5 text-sm text-zinc-600 dark:text-zinc-400"&gt;
&lt;svg class="w-4 h-4 text-yellow-500" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M11.48 3.499a.562.562 0 0 1 1.04 0l2.125 5.111a.56.56 0 0 0 .475.345l5.518.442c.499.04.701.663.321.988l-4.204 3.602a.56.56 0 0 0-.182.557l1.285 5.385a.562.562 0 0 1-.84.61l-4.725-2.885a.56.56 0 0 0-.586 0L6.982 20.54a.562.562 0 0 1-.84-.61l1.285-5.386a.56.56 0 0 0-.182-.557l-4.204-3.602a.562.562 0 0 1 .321-.988l5.518-.442a.56.56 0 0 0 .475-.345z"/&gt;&lt;/svg&gt;&lt;span id="hb-hb-embed-ba2f2ffd29da7fd7c05189b3ee01ae82-stars"&gt;9.858k&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="flex flex-wrap gap-1 pt-2"&gt;&lt;span class="inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium bg-primary-100 text-primary-800 dark:bg-primary-900/40 dark:text-primary-300"&gt;
academic
&lt;/span&gt;&lt;span class="inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium bg-primary-100 text-primary-800 dark:bg-primary-900/40 dark:text-primary-300"&gt;
blog
&lt;/span&gt;&lt;span class="inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium bg-primary-100 text-primary-800 dark:bg-primary-900/40 dark:text-primary-300"&gt;
blog-engine
&lt;/span&gt;&lt;span class="text-xs text-zinc-500 dark:text-zinc-500"&gt;+17&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="absolute inset-0 pointer-events-none bg-gradient-to-r from-primary-500/0 via-primary-500/5 to-secondary-500/0 opacity-0 group-hover:opacity-100 transition-opacity duration-300"&gt;&lt;/div&gt;
&lt;div class="sr-only" data-hb-component="embed" data-hb-version="1.0" data-hb-license="MIT"&gt;
Powered by Hugo Blox Kit - https://github.com/HugoBlox/kit
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Custom embed with manual data&lt;/p&gt;
&lt;div class="group bg-white/90 dark:bg-zinc-900/90 backdrop-blur-sm rounded-2xl ring-1 ring-zinc-900/5 dark:ring-white/10 shadow-lg overflow-hidden transition-all duration-300 ease-out hover:shadow-xl hover:shadow-primary-500/10 hover:-translate-y-1 focus-within:ring-2 focus-within:ring-primary-500/50 my-6" role="article" aria-labelledby="hb-embed-title-hb-embed-1060ab6b8f749a4a91ae927bcf619594"&gt;
&lt;div class="flex items-center gap-3 p-6 border-b border-zinc-100 dark:border-zinc-800"&gt;
&lt;div class="flex-shrink-0"&gt;
&lt;div class="w-10 h-10 rounded-full bg-gradient-to-br from-zinc-700 to-zinc-800 flex items-center justify-center"&gt;
&lt;svg class="w-5 h-5 text-white" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M12 21a9.004 9.004 0 0 0 8.716-6.747M12 21a9.004 9.004 0 0 1-8.716-6.747M12 21c2.485 0 4.5-4.03 4.5-9S14.485 3 12 3m0 18c-2.485 0-4.5-4.03-4.5-9S9.515 3 12 3m0 0a9 9 0 0 1 7.843 4.582M12 3a9 9 0 0 0-7.843 4.582m15.686 0A11.95 11.95 0 0 1 12 10.5c-2.998 0-5.74-1.1-7.843-2.918m15.686 0A8.96 8.96 0 0 1 21 12c0 .778-.099 1.533-.284 2.253m0 0A17.9 17.9 0 0 1 12 16.5a17.9 17.9 0 0 1-8.716-2.247m0 0A9 9 0 0 1 3 12c0-1.605.42-3.113 1.157-4.418"/&gt;&lt;/svg&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="flex-1 min-w-0"&gt;
&lt;h3 id="hb-embed-title-hb-embed-1060ab6b8f749a4a91ae927bcf619594" class="text-xl font-bold tracking-tight leading-tight truncate"&gt;
&lt;a href="https://example.com" target="_blank" rel="noopener" class="text-zinc-900 dark:text-zinc-100 hover:text-primary-600 dark:hover:text-primary-400 hover:underline transition-colors duration-200"&gt;My Custom Resource&lt;/a&gt;
&lt;/h3&gt;
&lt;div class="flex items-center gap-2 mt-1"&gt;
&lt;span class="text-sm text-zinc-500 dark:text-zinc-500"&gt;example.com&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="flex-shrink-0"&gt;
&lt;a href="https://example.com" target="_blank" rel="noopener" class="text-zinc-400 hover:text-primary-500 transition-colors duration-200"&gt;
&lt;svg class="w-5 h-5 hb-embed-link" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.5 6H5.25A2.25 2.25 0 0 0 3 8.25v10.5A2.25 2.25 0 0 0 5.25 21h10.5A2.25 2.25 0 0 0 18 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25"/&gt;&lt;/svg&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="p-6 space-y-4"&gt;
&lt;p class="text-zinc-600 dark:text-zinc-400 text-base leading-relaxed line-clamp-3"&gt;
A great resource for learning
&lt;/p&gt;
&lt;/div&gt;
&lt;div class="absolute inset-0 pointer-events-none bg-gradient-to-r from-primary-500/0 via-primary-500/5 to-secondary-500/0 opacity-0 group-hover:opacity-100 transition-opacity duration-300"&gt;&lt;/div&gt;
&lt;div class="sr-only" data-hb-component="embed" data-hb-version="1.0" data-hb-license="MIT"&gt;
Powered by Hugo Blox Kit - https://github.com/HugoBlox/kit
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id="custom-images"&gt;Custom Images&lt;/h3&gt;
&lt;p&gt;Embed beautiful images from any source with Hugo image processing (Unsplash, custom URLs, etc.):&lt;/p&gt;
&lt;div class="group bg-white/90 dark:bg-zinc-900/90 backdrop-blur-sm rounded-2xl ring-1 ring-zinc-900/5 dark:ring-white/10 shadow-lg overflow-hidden transition-all duration-300 ease-out hover:shadow-xl hover:shadow-primary-500/10 hover:-translate-y-1 focus-within:ring-2 focus-within:ring-primary-500/50 my-6" role="article" aria-labelledby="hb-embed-title-hb-embed-f806126bcb6daf4474f6dc0c3f676627"&gt;
&lt;div class="flex items-center gap-3 p-6 border-b border-zinc-100 dark:border-zinc-800"&gt;
&lt;div class="flex-shrink-0"&gt;
&lt;div class="w-10 h-10 rounded-full bg-gradient-to-br from-zinc-700 to-zinc-800 flex items-center justify-center"&gt;
&lt;svg class="w-5 h-5 text-white" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M12 21a9.004 9.004 0 0 0 8.716-6.747M12 21a9.004 9.004 0 0 1-8.716-6.747M12 21c2.485 0 4.5-4.03 4.5-9S14.485 3 12 3m0 18c-2.485 0-4.5-4.03-4.5-9S9.515 3 12 3m0 0a9 9 0 0 1 7.843 4.582M12 3a9 9 0 0 0-7.843 4.582m15.686 0A11.95 11.95 0 0 1 12 10.5c-2.998 0-5.74-1.1-7.843-2.918m15.686 0A8.96 8.96 0 0 1 21 12c0 .778-.099 1.533-.284 2.253m0 0A17.9 17.9 0 0 1 12 16.5a17.9 17.9 0 0 1-8.716-2.247m0 0A9 9 0 0 1 3 12c0-1.605.42-3.113 1.157-4.418"/&gt;&lt;/svg&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="flex-1 min-w-0"&gt;
&lt;h3 id="hb-embed-title-hb-embed-f806126bcb6daf4474f6dc0c3f676627" class="text-xl font-bold tracking-tight leading-tight truncate"&gt;
&lt;a href="https://example.com" target="_blank" rel="noopener" class="text-zinc-900 dark:text-zinc-100 hover:text-primary-600 dark:hover:text-primary-400 hover:underline transition-colors duration-200"&gt;Data Visualization Guide&lt;/a&gt;
&lt;/h3&gt;
&lt;div class="flex items-center gap-2 mt-1"&gt;
&lt;span class="text-sm text-zinc-500 dark:text-zinc-500"&gt;example.com&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="flex-shrink-0"&gt;
&lt;a href="https://example.com" target="_blank" rel="noopener" class="text-zinc-400 hover:text-primary-500 transition-colors duration-200"&gt;
&lt;svg class="w-5 h-5 hb-embed-link" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.5 6H5.25A2.25 2.25 0 0 0 3 8.25v10.5A2.25 2.25 0 0 0 5.25 21h10.5A2.25 2.25 0 0 0 18 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25"/&gt;&lt;/svg&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="p-6 space-y-4"&gt;
&lt;div class="mb-4 overflow-hidden rounded-lg"&gt;
&lt;img class="w-full h-auto transition-transform duration-500 ease-out group-hover:scale-105"
srcset="https://celine-fouard.fr/photo-1514888286974-6c03e2ca1dba_18145305924448453957_hu_f72c1a452bb0d2c4.webp 400w, https://celine-fouard.fr/photo-1514888286974-6c03e2ca1dba_18145305924448453957_hu_14b967f8dcd8fdbf.webp 600w, https://celine-fouard.fr/photo-1514888286974-6c03e2ca1dba_18145305924448453957_hu_cdf04663de998782.webp 800w, https://celine-fouard.fr/photo-1514888286974-6c03e2ca1dba_18145305924448453957_hu_bacc01c61b554a54.webp 800w"
sizes="(max-width: 768px) 100vw, (max-width: 1200px) 50vw, 33vw"
src="https://celine-fouard.fr/photo-1514888286974-6c03e2ca1dba_18145305924448453957_hu_f72c1a452bb0d2c4.webp"
width="400"
height="300"
loading="lazy"
decoding="async"
alt="Beautiful data visualization workspace"
style="aspect-ratio: 400/300;"&gt;
&lt;/div&gt;&lt;p class="text-zinc-600 dark:text-zinc-400 text-base leading-relaxed line-clamp-3"&gt;
Beautiful data visualization workspace
&lt;/p&gt;
&lt;/div&gt;
&lt;div class="absolute inset-0 pointer-events-none bg-gradient-to-r from-primary-500/0 via-primary-500/5 to-secondary-500/0 opacity-0 group-hover:opacity-100 transition-opacity duration-300"&gt;&lt;/div&gt;
&lt;div class="sr-only" data-hb-component="embed" data-hb-version="1.0" data-hb-license="MIT"&gt;
Powered by Hugo Blox Kit - https://github.com/HugoBlox/kit
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;You can also add images to any platform embed:&lt;/p&gt;
&lt;div class="group bg-white/90 dark:bg-zinc-900/90 backdrop-blur-sm rounded-2xl ring-1 ring-zinc-900/5 dark:ring-white/10 shadow-lg overflow-hidden transition-all duration-300 ease-out hover:shadow-xl hover:shadow-primary-500/10 hover:-translate-y-1 focus-within:ring-2 focus-within:ring-primary-500/50 my-6" role="article" aria-labelledby="hb-embed-title-hb-embed-2601f1cc7e4c8fb6576eee9e1fb227d9"&gt;
&lt;div class="flex items-center gap-3 p-6 border-b border-zinc-100 dark:border-zinc-800"&gt;
&lt;div class="flex-shrink-0"&gt;
&lt;div class="w-10 h-10 rounded-full bg-gradient-to-br from-slate-800 to-slate-900 flex items-center justify-center"&gt;
&lt;svg class="w-6 h-6 text-white" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="currentColor" d="M12 .297c-6.63 0-12 5.373-12 12c0 5.303 3.438 9.8 8.205 11.385c.6.113.82-.258.82-.577c0-.285-.01-1.04-.015-2.04c-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729c1.205.084 1.838 1.236 1.838 1.236c1.07 1.835 2.809 1.305 3.495.998c.108-.776.417-1.305.76-1.605c-2.665-.3-5.466-1.332-5.466-5.93c0-1.31.465-2.38 1.235-3.22c-.135-.303-.54-1.523.105-3.176c0 0 1.005-.322 3.3 1.23c.96-.267 1.98-.399 3-.405c1.02.006 2.04.138 3 .405c2.28-1.552 3.285-1.23 3.285-1.23c.645 1.653.24 2.873.12 3.176c.765.84 1.23 1.91 1.23 3.22c0 4.61-2.805 5.625-5.475 5.92c.42.36.81 1.096.81 2.22c0 1.606-.015 2.896-.015 3.286c0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/&gt;&lt;/svg&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="flex-1 min-w-0"&gt;
&lt;h3 id="hb-embed-title-hb-embed-2601f1cc7e4c8fb6576eee9e1fb227d9" class="text-xl font-bold tracking-tight leading-tight truncate"&gt;
&lt;a href="https://github.com/plotly/plotly.py" target="_blank" rel="noopener" class="text-zinc-900 dark:text-zinc-100 hover:text-primary-600 dark:hover:text-primary-400 hover:underline transition-colors duration-200"&gt;plotly.py&lt;/a&gt;
&lt;/h3&gt;
&lt;div class="flex items-center gap-2 mt-1"&gt;
&lt;span class="text-sm text-zinc-600 dark:text-zinc-400"&gt;by
&lt;a href="https://github.com/plotly" target="_blank" rel="noopener" class="font-medium hover:text-primary-600 dark:hover:text-primary-400 hover:underline transition-colors duration-200"&gt;plotly&lt;/a&gt;
&lt;/span&gt;&lt;span class="text-sm text-zinc-500 dark:text-zinc-500"&gt;•&lt;/span&gt;
&lt;span class="inline-block w-2 h-2 rounded-full bg-primary-500"&gt;&lt;/span&gt;
&lt;span class="text-sm text-zinc-500 dark:text-zinc-500 capitalize"&gt;Python&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="flex-shrink-0"&gt;
&lt;a href="https://github.com/plotly/plotly.py" target="_blank" rel="noopener" class="text-zinc-400 hover:text-primary-500 transition-colors duration-200"&gt;
&lt;svg class="w-5 h-5 hb-embed-link" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.5 6H5.25A2.25 2.25 0 0 0 3 8.25v10.5A2.25 2.25 0 0 0 5.25 21h10.5A2.25 2.25 0 0 0 18 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25"/&gt;&lt;/svg&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="p-6 space-y-4"&gt;
&lt;div class="mb-4 overflow-hidden rounded-lg"&gt;
&lt;img class="w-full h-auto transition-transform duration-500 ease-out group-hover:scale-105"
srcset="https://celine-fouard.fr/photo-1551288049-bebda4e38f71_10164962980614054447_hu_1cb16cc410ea26a3.webp 400w, https://celine-fouard.fr/photo-1551288049-bebda4e38f71_10164962980614054447_hu_18bb0a620d059556.webp 600w, https://celine-fouard.fr/photo-1551288049-bebda4e38f71_10164962980614054447_hu_d3041625e7a27dbb.webp 600w"
sizes="(max-width: 768px) 100vw, (max-width: 1200px) 50vw, 33vw"
src="https://celine-fouard.fr/photo-1551288049-bebda4e38f71_10164962980614054447_hu_1cb16cc410ea26a3.webp"
width="400"
height="267"
loading="lazy"
decoding="async"
alt="plotly.py"
style="aspect-ratio: 400/267;"&gt;
&lt;/div&gt;&lt;p class="text-zinc-600 dark:text-zinc-400 text-base leading-relaxed line-clamp-3"&gt;
The interactive graphing library for Python ✨
&lt;/p&gt;&lt;div class="flex items-center gap-6 pt-2"&gt;&lt;div class="flex items-center gap-1.5 text-sm text-zinc-600 dark:text-zinc-400"&gt;
&lt;svg class="w-4 h-4 text-primary-500" xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 24 24"&gt;&lt;path d="M6 2C4.89543 2 4 2.89543 4 4C4 4.74028 4.4022 5.38663 5 5.73244V7C5 8.65685 6.34315 10 8 10H10V11.2676C9.4022 11.6134 9 12.2597 9 13C9 14.1046 9.89543 15 11 15C12.1046 15 13 14.1046 13 13C13 12.2597 12.5978 11.6134 12 11.2676V10H14C15.6569 10 17 8.65685 17 7V5.73244C17.5978 5.38663 18 4.74028 18 4C18 2.89543 17.1046 2 16 2C14.8954 2 14 2.89543 14 4C14 4.74028 14.4022 5.38663 15 5.73244V7C15 7.55228 14.5523 8 14 8H8C7.44772 8 7 7.55228 7 7V5.73244C7.5978 5.38663 8 4.74028 8 4C8 2.89543 7.10457 2 6 2ZM6 4C6 3.44772 6.44772 3 7 3C7.55228 3 8 3.44772 8 4C8 4.55228 7.55228 5 7 5C6.44772 5 6 4.55228 6 4ZM11 13C11 12.4477 11.4477 12 12 12C12.5523 12 13 12.4477 13 13C13 13.5523 12.5523 14 12 14C11.4477 14 11 13.5523 11 13ZM16 3C15.4477 3 15 3.44772 15 4C15 4.55228 15.4477 5 16 5C16.5523 5 17 4.55228 17 4C17 3.44772 16.5523 3 16 3Z"/&gt;&lt;/svg&gt;&lt;span id="hb-hb-embed-2601f1cc7e4c8fb6576eee9e1fb227d9-forks"&gt;2.787k&lt;/span&gt;&lt;/div&gt;&lt;div class="flex items-center gap-1.5 text-sm text-zinc-600 dark:text-zinc-400"&gt;
&lt;svg class="w-4 h-4 text-red-500" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M12 9v3.75m9-.75a9 9 0 1 1-18 0a9 9 0 0 1 18 0m-9 3.75h.008v.008H12z"/&gt;&lt;/svg&gt;
&lt;a href="https://github.com/plotly/plotly.py/issues" target="_blank" rel="noopener" class="font-medium hover:text-primary-600 dark:hover:text-primary-400 hover:underline transition-colors duration-200" id="hb-hb-embed-2601f1cc7e4c8fb6576eee9e1fb227d9-issues"&gt;777&lt;/a&gt;&lt;/div&gt;&lt;div class="flex items-center gap-1.5 text-sm text-zinc-600 dark:text-zinc-400"&gt;
&lt;svg class="w-4 h-4 text-yellow-500" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M11.48 3.499a.562.562 0 0 1 1.04 0l2.125 5.111a.56.56 0 0 0 .475.345l5.518.442c.499.04.701.663.321.988l-4.204 3.602a.56.56 0 0 0-.182.557l1.285 5.385a.562.562 0 0 1-.84.61l-4.725-2.885a.56.56 0 0 0-.586 0L6.982 20.54a.562.562 0 0 1-.84-.61l1.285-5.386a.56.56 0 0 0-.182-.557l-4.204-3.602a.562.562 0 0 1 .321-.988l5.518-.442a.56.56 0 0 0 .475-.345z"/&gt;&lt;/svg&gt;&lt;span id="hb-hb-embed-2601f1cc7e4c8fb6576eee9e1fb227d9-stars"&gt;18.334k&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="flex flex-wrap gap-1 pt-2"&gt;&lt;span class="inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium bg-primary-100 text-primary-800 dark:bg-primary-900/40 dark:text-primary-300"&gt;
d3
&lt;/span&gt;&lt;span class="inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium bg-primary-100 text-primary-800 dark:bg-primary-900/40 dark:text-primary-300"&gt;
dashboard
&lt;/span&gt;&lt;span class="inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium bg-primary-100 text-primary-800 dark:bg-primary-900/40 dark:text-primary-300"&gt;
declarative
&lt;/span&gt;&lt;span class="text-xs text-zinc-500 dark:text-zinc-500"&gt;+11&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="absolute inset-0 pointer-events-none bg-gradient-to-r from-primary-500/0 via-primary-500/5 to-secondary-500/0 opacity-0 group-hover:opacity-100 transition-opacity duration-300"&gt;&lt;/div&gt;
&lt;div class="sr-only" data-hb-component="embed" data-hb-version="1.0" data-hb-license="MIT"&gt;
Powered by Hugo Blox Kit - https://github.com/HugoBlox/kit
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="charts"&gt;Charts&lt;/h2&gt;
&lt;p&gt;Hugo Blox supports the popular
format for interactive data visualizations. With Plotly, you can design almost any kind of visualization you can imagine!&lt;/p&gt;
&lt;p&gt;Save your Plotly JSON in your page folder, for example &lt;code&gt;line-chart.json&lt;/code&gt;, and then add the &lt;code&gt;{{&amp;lt; chart data=&amp;quot;line-chart&amp;quot; &amp;gt;}}&lt;/code&gt; shortcode where you would like the chart to appear.&lt;/p&gt;
&lt;p&gt;Demo:&lt;/p&gt;
&lt;div id="chart-976214385" class="chart"&gt;&lt;/div&gt;
&lt;script&gt;
(function() {
async function fetchChartJSON() {
console.debug('Hugo Blox fetching chart JSON...')
const response = await fetch('.\/line-chart.json');
return await response.json();
}
let a = setInterval( function() {
if ( typeof window.Plotly === 'undefined' ) {
console.debug('Plotly not loaded yet...')
return;
}
clearInterval( a );
fetchChartJSON().then(chart =&gt; {
console.debug('Plotting chart...')
window.Plotly.newPlot('chart-976214385', chart.data, chart.layout, {responsive: true});
});
}, 500 );
})();
&lt;/script&gt;
&lt;p&gt;You might also find the
useful.&lt;/p&gt;
&lt;h2 id="diagrams"&gt;Diagrams&lt;/h2&gt;
&lt;p&gt;Hugo Blox supports the &lt;em&gt;Mermaid&lt;/em&gt; Markdown extension for diagrams.&lt;/p&gt;
&lt;p&gt;An example &lt;strong&gt;flowchart&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;```mermaid
graph TD
A[Hard] --&amp;gt;|Text| B(Round)
B --&amp;gt; C{Decision}
C --&amp;gt;|One| D[Result 1]
C --&amp;gt;|Two| E[Result 2]
```
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;renders as&lt;/p&gt;
&lt;div class="mermaid"&gt;graph TD
A[Hard] --&gt;|Text| B(Round)
B --&gt; C{Decision}
C --&gt;|One| D[Result 1]
C --&gt;|Two| E[Result 2]
&lt;/div&gt;
&lt;p&gt;An example &lt;strong&gt;sequence diagram&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;```mermaid
sequenceDiagram
Alice-&amp;gt;&amp;gt;John: Hello John, how are you?
loop Healthcheck
John-&amp;gt;&amp;gt;John: Fight against hypochondria
end
Note right of John: Rational thoughts!
John--&amp;gt;&amp;gt;Alice: Great!
John-&amp;gt;&amp;gt;Bob: How about you?
Bob--&amp;gt;&amp;gt;John: Jolly good!
```
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;renders as&lt;/p&gt;
&lt;div class="mermaid"&gt;sequenceDiagram
Alice-&gt;&gt;John: Hello John, how are you?
loop Healthcheck
John-&gt;&gt;John: Fight against hypochondria
end
Note right of John: Rational thoughts!
John--&gt;&gt;Alice: Great!
John-&gt;&gt;Bob: How about you?
Bob--&gt;&gt;John: Jolly good!
&lt;/div&gt;
&lt;p&gt;An example &lt;strong&gt;class diagram&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;```mermaid
classDiagram
Class01 &amp;lt;|-- AveryLongClass : Cool
Class03 *-- Class04
Class05 o-- Class06
Class07 .. Class08
Class09 --&amp;gt; C2 : Where am i?
Class09 --* C3
Class09 --|&amp;gt; Class07
Class07 : equals()
Class07 : Object[] elementData
Class01 : size()
Class01 : int chimp
Class01 : int gorilla
Class08 &amp;lt;--&amp;gt; C2: Cool label
```
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;renders as&lt;/p&gt;
&lt;div class="mermaid"&gt;classDiagram
Class01 &lt;|-- AveryLongClass : Cool
Class03 *-- Class04
Class05 o-- Class06
Class07 .. Class08
Class09 --&gt; C2 : Where am i?
Class09 --* C3
Class09 --|&gt; Class07
Class07 : equals()
Class07 : Object[] elementData
Class01 : size()
Class01 : int chimp
Class01 : int gorilla
Class08 &lt;--&gt; C2: Cool label
&lt;/div&gt;
&lt;p&gt;An example &lt;strong&gt;state diagram&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;```mermaid
stateDiagram
[*] --&amp;gt; Still
Still --&amp;gt; [*]
Still --&amp;gt; Moving
Moving --&amp;gt; Still
Moving --&amp;gt; Crash
Crash --&amp;gt; [*]
```
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;renders as&lt;/p&gt;
&lt;div class="mermaid"&gt;stateDiagram
[*] --&gt; Still
Still --&gt; [*]
Still --&gt; Moving
Moving --&gt; Still
Moving --&gt; Crash
Crash --&gt; [*]
&lt;/div&gt;
&lt;h2 id="data-frames"&gt;Data Frames&lt;/h2&gt;
&lt;p&gt;Save your spreadsheet as a CSV file in your page&amp;rsquo;s folder and then render it by adding the &lt;em&gt;Table&lt;/em&gt; shortcode to your page:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{{&amp;lt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;table&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;results.csv&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;header&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;true&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;caption&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Table 1: My results&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;&amp;gt;}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;renders as&lt;/p&gt;
&lt;table class="table-auto w-full"&gt;
&lt;thead&gt;
&lt;tr&gt; &lt;th class="border-b dark:border-slate-600 font-medium p-4 pt-0 pb-3 text-slate-400 dark:text-slate-200 text-left"&gt;customer_id&lt;/th&gt; &lt;th class="border-b dark:border-slate-600 font-medium p-4 pt-0 pb-3 text-slate-400 dark:text-slate-200 text-left"&gt;score&lt;/th&gt; &lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td data-table-dtype="number" class="border-b border-slate-100 dark:border-slate-700 p-4 text-slate-500 dark:text-slate-400"&gt;1&lt;/td&gt;
&lt;td data-table-dtype="number" class="border-b border-slate-100 dark:border-slate-700 p-4 text-slate-500 dark:text-slate-400"&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-table-dtype="number" class="border-b border-slate-100 dark:border-slate-700 p-4 text-slate-500 dark:text-slate-400"&gt;2&lt;/td&gt;
&lt;td data-table-dtype="text" class="border-b border-slate-100 dark:border-slate-700 p-4 text-slate-500 dark:text-slate-400"&gt;0.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-table-dtype="number" class="border-b border-slate-100 dark:border-slate-700 p-4 text-slate-500 dark:text-slate-400"&gt;3&lt;/td&gt;
&lt;td data-table-dtype="number" class="border-b border-slate-100 dark:border-slate-700 p-4 text-slate-500 dark:text-slate-400"&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;caption class="table-caption"&gt;Table 1: My results&lt;/caption&gt;
&lt;/table&gt;
&lt;h2 id="interactive-buttons"&gt;Interactive Buttons&lt;/h2&gt;
&lt;p&gt;Add engaging call-to-action buttons to your data visualization posts:&lt;/p&gt;
&lt;h3 id="basic-buttons"&gt;Basic Buttons&lt;/h3&gt;
&lt;div class="text-left"&gt;
&lt;a
id="button-f6786b243b05dfec18e9fa306eafdd55"
href="https://celine-fouard.fr/"
class="inline-flex items-center gap-2 font-medium no-underline transition-all duration-300 ease-out transform-gpu focus:outline-none focus:ring-4 focus:ring-offset-2 focus:ring-offset-white dark:focus:ring-offset-zinc-900 disabled:opacity-50 disabled:cursor-not-allowed disabled:pointer-events-none bg-gradient-to-br from-primary-500 to-primary-600 hover:from-primary-600 hover:to-primary-700 active:from-primary-700 active:to-primary-800 text-white shadow-lg shadow-primary-500/25 hover:shadow-xl hover:shadow-primary-500/30 hover:-translate-y-0.5 hover:scale-[1.02] active:scale-[0.98] focus:ring-primary-500/50 px-4 py-2 text-base rounded-lg"
role="button"
aria-label="Contact Us"
&gt;
&lt;span&gt;Contact Us&lt;/span&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div class="text-left"&gt;
&lt;a
id="button-f993ff69358f7d4c1a0e93e5241d3d91"
href="https://plotly.com/python/"
target="_blank"
rel="noopener noreferrer"
class="inline-flex items-center gap-2 font-medium no-underline transition-all duration-300 ease-out transform-gpu focus:outline-none focus:ring-4 focus:ring-offset-2 focus:ring-offset-white dark:focus:ring-offset-zinc-900 disabled:opacity-50 disabled:cursor-not-allowed disabled:pointer-events-none bg-gradient-to-br from-secondary-500 to-secondary-600 hover:from-secondary-600 hover:to-secondary-700 active:from-secondary-700 active:to-secondary-800 text-white shadow-lg shadow-secondary-500/25 hover:shadow-xl hover:shadow-secondary-500/30 hover:scale-105 active:scale-95 focus:ring-secondary-500/50 px-4 py-2 text-base rounded-lg"
role="button"
aria-label="Learn Plotly"
&gt;
&lt;span&gt;Learn Plotly&lt;/span&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go-html-template" data-lang="go-html-template"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="err"&gt;&amp;lt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;button&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;/&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;Contact Us&lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="err"&gt;&amp;lt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;button&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="err"&gt;&amp;lt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;button&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;https://plotly.com/python/&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;new_tab&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;true&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;secondary&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;Learn Plotly&lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="err"&gt;&amp;lt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;button&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="styled-buttons-for-data-actions"&gt;Styled Buttons for Data Actions&lt;/h3&gt;
&lt;div class="text-center"&gt;
&lt;a
id="button-a50fabbc2a61abf69dd282800ce0e5ed"
href="#"
class="inline-flex items-center gap-2 font-medium no-underline transition-all duration-300 ease-out transform-gpu focus:outline-none focus:ring-4 focus:ring-offset-2 focus:ring-offset-white dark:focus:ring-offset-zinc-900 disabled:opacity-50 disabled:cursor-not-allowed disabled:pointer-events-none bg-gradient-to-br from-primary-500 to-primary-600 hover:from-primary-600 hover:to-primary-700 active:from-primary-700 active:to-primary-800 text-white shadow-lg shadow-primary-500/25 hover:shadow-xl hover:shadow-primary-500/30 hover:-translate-y-0.5 hover:scale-[1.02] active:scale-[0.98] focus:ring-primary-500/50 px-6 py-3 text-lg rounded-lg"
role="button"
aria-label="View Dashboard"
&gt;
&lt;span class="flex-shrink-0"&gt;
&lt;svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 0 1 3 19.875zm6.75-4.5c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125zm6.75-4.5c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125z"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;span&gt;View Dashboard&lt;/span&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div class="text-left"&gt;
&lt;a
id="button-c32d42abf170111c3a98f095a79ecf1f"
href="https://celine-fouard.fr/data/results.csv"
class="inline-flex items-center gap-2 font-medium no-underline transition-all duration-300 ease-out transform-gpu focus:outline-none focus:ring-4 focus:ring-offset-2 focus:ring-offset-white dark:focus:ring-offset-zinc-900 disabled:opacity-50 disabled:cursor-not-allowed disabled:pointer-events-none bg-white dark:bg-zinc-900 border-2 border-primary-500 text-primary-600 dark:text-primary-400 hover:bg-primary-50 dark:hover:bg-primary-950/50 hover:border-primary-600 active:bg-primary-100 dark:active:bg-primary-950 shadow-md hover:shadow-lg hover:scale-105 active:scale-95 focus:ring-primary-500/50 px-4 py-2 text-base rounded-lg"
role="button"
aria-label="Download Data"
&gt;
&lt;span class="flex-shrink-0"&gt;
&lt;svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m.75 12l3 3m0 0l3-3m-3 3v-6m-1.5-9H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;span&gt;Download Data&lt;/span&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div class="text-left"&gt;
&lt;a
id="button-6beec770e2765a07c4e7dab5ed36f07a"
href="https://github.com/HugoBlox"
target="_blank"
rel="noopener noreferrer"
class="inline-flex items-center gap-2 font-medium no-underline transition-all duration-300 ease-out transform-gpu focus:outline-none focus:ring-4 focus:ring-offset-2 focus:ring-offset-white dark:focus:ring-offset-zinc-900 disabled:opacity-50 disabled:cursor-not-allowed disabled:pointer-events-none bg-transparent text-primary-600 dark:text-primary-400 hover:bg-primary-50 dark:hover:bg-primary-950/50 active:bg-primary-100 dark:active:bg-primary-950 hover:scale-105 active:scale-95 focus:ring-primary-500/50 px-4 py-2 text-base rounded-lg"
role="button"
aria-label="View Source Code"
&gt;
&lt;span&gt;View Source Code&lt;/span&gt;
&lt;span class="flex-shrink-0"&gt;
&lt;svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.5 6H5.25A2.25 2.25 0 0 0 3 8.25v10.5A2.25 2.25 0 0 0 5.25 21h10.5A2.25 2.25 0 0 0 18 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go-html-template" data-lang="go-html-template"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="err"&gt;&amp;lt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;button&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;#&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;primary&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;lg&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;align&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;center&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;icon&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;chart-bar&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;View Dashboard&lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="err"&gt;&amp;lt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;button&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="err"&gt;&amp;lt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;button&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;/data/results.csv&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;outline&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;icon&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;document-arrow-down&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;Download Data&lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="err"&gt;&amp;lt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;button&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="err"&gt;&amp;lt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;button&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;https://github.com/HugoBlox&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;new_tab&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;true&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;ghost&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;icon&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;arrow-top-right-on-square&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;icon_position&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;right&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;View Source Code&lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="err"&gt;&amp;lt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;button&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="multiple-aligned-buttons"&gt;Multiple Aligned Buttons&lt;/h3&gt;
&lt;div class="text-center"&gt;
&lt;a
id="button-21cda02c69c36a678bc00ecf1d332e03"
href="https://jupyter.org/"
target="_blank"
rel="noopener noreferrer"
class="inline-flex items-center gap-2 font-medium no-underline transition-all duration-300 ease-out transform-gpu focus:outline-none focus:ring-4 focus:ring-offset-2 focus:ring-offset-white dark:focus:ring-offset-zinc-900 disabled:opacity-50 disabled:cursor-not-allowed disabled:pointer-events-none bg-gradient-to-br from-secondary-500 to-secondary-600 hover:from-secondary-600 hover:to-secondary-700 active:from-secondary-700 active:to-secondary-800 text-white shadow-lg shadow-secondary-500/25 hover:shadow-xl hover:shadow-secondary-500/30 hover:scale-105 active:scale-95 focus:ring-secondary-500/50 px-4 py-2 text-base rounded-full"
role="button"
aria-label="Try Jupyter"
&gt;
&lt;span&gt;Try Jupyter&lt;/span&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div class="text-center"&gt;
&lt;a
id="button-95172520d19d2439e15b09b4849f82e7"
href="https://colab.research.google.com/"
target="_blank"
rel="noopener noreferrer"
class="inline-flex items-center gap-2 font-medium no-underline transition-all duration-300 ease-out transform-gpu focus:outline-none focus:ring-4 focus:ring-offset-2 focus:ring-offset-white dark:focus:ring-offset-zinc-900 disabled:opacity-50 disabled:cursor-not-allowed disabled:pointer-events-none bg-gradient-to-br from-primary-500 to-primary-600 hover:from-primary-600 hover:to-primary-700 active:from-primary-700 active:to-primary-800 text-white shadow-lg shadow-primary-500/25 hover:shadow-xl hover:shadow-primary-500/30 hover:-translate-y-0.5 hover:scale-[1.02] active:scale-[0.98] focus:ring-primary-500/50 px-4 py-2 text-base rounded-full"
role="button"
aria-label="Open in Colab"
&gt;
&lt;span class="flex-shrink-0"&gt;
&lt;svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M15.59 14.37q.159.666.16 1.38a6 6 0 0 1-6 6v-4.8m5.84-2.58a14.98 14.98 0 0 0 6.16-12.12A14.98 14.98 0 0 0 9.631 8.41m5.96 5.96a14.9 14.9 0 0 1-5.841 2.58m-.119-8.54a6 6 0 0 0-7.381 5.84h4.8m2.581-5.84a14.9 14.9 0 0 0-2.58 5.84m2.699 2.7q-.155.032-.311.06a15 15 0 0 1-2.448-2.448l.06-.312m-2.24 2.39a4.49 4.49 0 0 0-1.757 4.306q.341.054.696.054a4.5 4.5 0 0 0 3.61-1.812M16.5 9a1.5 1.5 0 1 1-3 0a1.5 1.5 0 0 1 3 0"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;span&gt;Open in Colab&lt;/span&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go-html-template" data-lang="go-html-template"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="err"&gt;&amp;lt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;button&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;https://jupyter.org/&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;new_tab&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;true&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;secondary&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;rounded&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;full&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;align&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;center&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;Try Jupyter&lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="err"&gt;&amp;lt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;button&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="err"&gt;&amp;lt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;button&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;https://colab.research.google.com/&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;new_tab&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;true&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;primary&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;rounded&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;full&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;align&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;center&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;icon&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;rocket-launch&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;Open in Colab&lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="err"&gt;&amp;lt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;button&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="did-you-find-this-page-helpful-consider-sharing-it-"&gt;Did you find this page helpful? Consider sharing it 🙌&lt;/h2&gt;</description></item><item><title>👩🏼‍🏫 Teach academic courses</title><link>https://celine-fouard.fr/old-blog/teach-courses/</link><pubDate>Tue, 24 Oct 2023 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/old-blog/teach-courses/</guid><description>&lt;p&gt;
is designed to give technical content creators a seamless experience. You can focus on the content and the HugoBlox Kit which this template is built upon handles the rest.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Embed videos, podcasts, code, LaTeX math, and even test students!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;On this page, you&amp;rsquo;ll find some examples of the types of technical content that can be rendered with Hugo Blox.&lt;/p&gt;
&lt;h2 id="citation"&gt;Citation&lt;/h2&gt;
&lt;p&gt;Here&amp;rsquo;s an example of citing a publication using the cite shortcode:&lt;/p&gt;
&lt;p&gt;You can also use the default view by omitting the view parameter:&lt;/p&gt;
&lt;h2 id="video"&gt;Video&lt;/h2&gt;
&lt;p&gt;Teach your course by sharing videos with your students. Choose from one of the following approaches:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Youtube&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{{&amp;lt; youtube D2vj0WcvH5c &amp;gt;}}
&lt;/code&gt;&lt;/pre&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/D2vj0WcvH5c?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Bilibili&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{{&amp;lt; bilibili BV1WV4y1r7DF &amp;gt;}}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Video file&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Videos may be added to a page by either placing them in your &lt;code&gt;assets/media/&lt;/code&gt; media library or in your
, and then embedding them with the &lt;em&gt;video&lt;/em&gt; shortcode:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{{&amp;lt; video src=&amp;quot;my_video.mp4&amp;quot; controls=&amp;quot;yes&amp;quot; &amp;gt;}}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="podcast"&gt;Podcast&lt;/h2&gt;
&lt;p&gt;You can add a podcast or music to a page by placing the MP3 file in the page&amp;rsquo;s folder or the media library folder and then embedding the audio on your page with the &lt;em&gt;audio&lt;/em&gt; shortcode:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{{&amp;lt; audio src=&amp;quot;ambient-piano.mp3&amp;quot; &amp;gt;}}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Try it out:&lt;/p&gt;
&lt;audio controls &gt;
&lt;source src="https://celine-fouard.fr/old-blog/teach-courses/ambient-piano.mp3" type="audio/mpeg"&gt;
&lt;/audio&gt;
&lt;h2 id="test-students"&gt;Test students&lt;/h2&gt;
&lt;p&gt;Provide a simple yet fun self-assessment by revealing the solutions to challenges with the &lt;code&gt;spoiler&lt;/code&gt; shortcode:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{{&amp;lt; spoiler text=&amp;#34;👉 Click to view the solution&amp;#34; &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;You found me!
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{{&amp;lt; /spoiler &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;renders as&lt;/p&gt;
&lt;details class="spoiler " id="spoiler-4"&gt;
&lt;summary class="cursor-pointer"&gt;👉 Click to view the solution&lt;/summary&gt;
&lt;div class="rounded-lg bg-neutral-50 dark:bg-neutral-800 p-2"&gt;
You found me 🎉
&lt;/div&gt;
&lt;/details&gt;
&lt;h2 id="math"&gt;Math&lt;/h2&gt;
&lt;p&gt;HugoBlox Kit supports a Markdown extension for $\LaTeX$ math. Enable math by setting the &lt;code&gt;math: true&lt;/code&gt; option in your page&amp;rsquo;s front matter, or enable math for your entire site by toggling math in your &lt;code&gt;config/_default/params.yaml&lt;/code&gt; file:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;features&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;math&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;enable&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To render &lt;em&gt;inline&lt;/em&gt; or &lt;em&gt;block&lt;/em&gt; math, wrap your LaTeX math with &lt;code&gt;$...$&lt;/code&gt; or &lt;code&gt;$$...$$&lt;/code&gt;, respectively.&lt;/p&gt;
&lt;p&gt;Example &lt;strong&gt;math block&lt;/strong&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-latex" data-lang="latex"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sb"&gt;$$&lt;/span&gt;&lt;span class="nb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;\gamma&lt;/span&gt;&lt;span class="nb"&gt;_{n} &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt; &lt;/span&gt;&lt;span class="nv"&gt;\frac&lt;/span&gt;&lt;span class="nb"&gt;{ &lt;/span&gt;&lt;span class="nv"&gt;\left&lt;/span&gt;&lt;span class="nb"&gt; | &lt;/span&gt;&lt;span class="nv"&gt;\left&lt;/span&gt;&lt;span class="nb"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;\mathbf&lt;/span&gt;&lt;span class="nb"&gt; x_{n} &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nb"&gt; &lt;/span&gt;&lt;span class="nv"&gt;\mathbf&lt;/span&gt;&lt;span class="nb"&gt; x_{n&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="nb"&gt;} &lt;/span&gt;&lt;span class="nv"&gt;\right&lt;/span&gt;&lt;span class="nb"&gt; &lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nb"&gt;^T &lt;/span&gt;&lt;span class="nv"&gt;\left&lt;/span&gt;&lt;span class="nb"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;\nabla&lt;/span&gt;&lt;span class="nb"&gt; F &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;\mathbf&lt;/span&gt;&lt;span class="nb"&gt; x_{n}&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nb"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nb"&gt; &lt;/span&gt;&lt;span class="nv"&gt;\nabla&lt;/span&gt;&lt;span class="nb"&gt; F &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;\mathbf&lt;/span&gt;&lt;span class="nb"&gt; x_{n&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="nb"&gt;}&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nb"&gt; &lt;/span&gt;&lt;span class="nv"&gt;\right&lt;/span&gt;&lt;span class="nb"&gt; &lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="nb"&gt; &lt;/span&gt;&lt;span class="nv"&gt;\right&lt;/span&gt;&lt;span class="nb"&gt; |}{&lt;/span&gt;&lt;span class="nv"&gt;\left&lt;/span&gt;&lt;span class="nb"&gt; &lt;/span&gt;&lt;span class="nv"&gt;\|\nabla&lt;/span&gt;&lt;span class="nb"&gt; F&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;\mathbf&lt;/span&gt;&lt;span class="nb"&gt;{x}_{n}&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nb"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nb"&gt; &lt;/span&gt;&lt;span class="nv"&gt;\nabla&lt;/span&gt;&lt;span class="nb"&gt; F&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;\mathbf&lt;/span&gt;&lt;span class="nb"&gt;{x}_{n&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="nb"&gt;}&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nb"&gt; &lt;/span&gt;&lt;span class="nv"&gt;\right&lt;/span&gt;&lt;span class="nb"&gt; &lt;/span&gt;&lt;span class="nv"&gt;\|&lt;/span&gt;&lt;span class="nb"&gt;^&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="nb"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;$$&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;renders as&lt;/p&gt;
$$\gamma_{n} = \frac{ \left | \left (\mathbf x_{n} - \mathbf x_{n-1} \right )^T \left [\nabla F (\mathbf x_{n}) - \nabla F (\mathbf x_{n-1}) \right ] \right |}{\left \|\nabla F(\mathbf{x}_{n}) - \nabla F(\mathbf{x}_{n-1}) \right \|^2}$$&lt;p&gt;Example &lt;strong&gt;inline math&lt;/strong&gt; &lt;code&gt;$\nabla F(\mathbf{x}_{n})$&lt;/code&gt; renders as $\nabla F(\mathbf{x}_{n})$.&lt;/p&gt;
&lt;p&gt;Example &lt;strong&gt;multi-line math&lt;/strong&gt; using the math linebreak (&lt;code&gt;\\&lt;/code&gt;):&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-latex" data-lang="latex"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sb"&gt;$$&lt;/span&gt;&lt;span class="nb"&gt;f&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;k;p_{&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="nb"&gt;}^{&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nb"&gt;}&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nb"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt; &lt;/span&gt;&lt;span class="nv"&gt;\begin&lt;/span&gt;&lt;span class="nb"&gt;{cases}p_{&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="nb"&gt;}^{&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nb"&gt;} &amp;amp; &lt;/span&gt;&lt;span class="nv"&gt;\text&lt;/span&gt;&lt;span class="nb"&gt;{if }k&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="nb"&gt;, &lt;/span&gt;&lt;span class="nv"&gt;\\&lt;/span&gt;&lt;span class="nb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nb"&gt;p_{&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="nb"&gt;}^{&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nb"&gt;} &amp;amp; &lt;/span&gt;&lt;span class="nv"&gt;\text&lt;/span&gt;&lt;span class="nb"&gt;{if }k&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;\end&lt;/span&gt;&lt;span class="nb"&gt;{cases}&lt;/span&gt;&lt;span class="s"&gt;$$&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;renders as&lt;/p&gt;
$$
f(k;p_{0}^{*}) = \begin{cases}p_{0}^{*} &amp; \text{if }k=1, \\
1-p_{0}^{*} &amp; \text{if }k=0.\end{cases}
$$&lt;h2 id="code"&gt;Code&lt;/h2&gt;
&lt;p&gt;HugoBlox Kit utilises Hugo&amp;rsquo;s Markdown extension for highlighting code syntax. The code theme can be selected in the &lt;code&gt;config/_default/params.yaml&lt;/code&gt; file.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;```python
import pandas as pd
data = pd.read_csv(&amp;quot;data.csv&amp;quot;)
data.head()
```
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;renders as&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;pandas&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nn"&gt;pd&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;read_csv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;data.csv&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;head&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="inline-images"&gt;Inline Images&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{{&amp;lt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;icon&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;python&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;&amp;gt;}}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Python&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;renders as&lt;/p&gt;
&lt;p&gt;
&lt;span class="inline-block pr-1"&gt;
&lt;svg style="height: 1em; transform: translateY(0.1em);" xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 448 512" fill="currentColor"&gt;&lt;path d="M439.8 200.5c-7.7-30.9-22.3-54.2-53.4-54.2h-40.1v47.4c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6zM286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4.1-11.3 9.1-20.3 20.1-20.3zM167.8 248.1h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8.1-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4zm-6.7-142.6c-11.1 0-20.1-9.1-20.1-20.3.1-11.3 9-20.4 20.1-20.4 11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3z"/&gt;&lt;/svg&gt;
&lt;/span&gt; Python&lt;/p&gt;
&lt;h2 id="did-you-find-this-page-helpful-consider-sharing-it-"&gt;Did you find this page helpful? Consider sharing it 🙌&lt;/h2&gt;</description></item><item><title>✅ Manage your projects</title><link>https://celine-fouard.fr/old-blog/project-management/</link><pubDate>Mon, 23 Oct 2023 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/old-blog/project-management/</guid><description>&lt;p&gt;Easily manage your projects - create ideation mind maps, Gantt charts, todo lists, and more!&lt;/p&gt;
&lt;h2 id="ideation"&gt;Ideation&lt;/h2&gt;
&lt;p&gt;Hugo Blox supports a Markdown extension for mindmaps.&lt;/p&gt;
&lt;p&gt;Simply insert a Markdown code block labelled as &lt;code&gt;markmap&lt;/code&gt; and optionally set the height of the mindmap as shown in the example below.&lt;/p&gt;
&lt;p&gt;Mindmaps can be created by simply writing the items as a Markdown list within the &lt;code&gt;markmap&lt;/code&gt; code block, indenting each item to create as many sub-levels as you need:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;pre class="chroma"&gt;
&lt;code&gt;
```markmap {height="200px"}
- Hugo Modules
- Hugo Blox
- netlify
- netlify-cms
- slides
```
&lt;/code&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;renders as&lt;/p&gt;
&lt;div class="markmap" style="height: 200px;"&gt;
&lt;pre&gt;- Hugo Modules
- Hugo Blox
- netlify
- netlify-cms
- slides&lt;/pre&gt;
&lt;/div&gt;
&lt;h2 id="diagrams"&gt;Diagrams&lt;/h2&gt;
&lt;p&gt;Hugo Blox supports the &lt;em&gt;Mermaid&lt;/em&gt; Markdown extension for diagrams.&lt;/p&gt;
&lt;p&gt;An example &lt;strong&gt;Gantt diagram&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;```mermaid
gantt
section Section
Completed :done, des1, 2014-01-06,2014-01-08
Active :active, des2, 2014-01-07, 3d
Parallel 1 : des3, after des1, 1d
Parallel 2 : des4, after des1, 1d
Parallel 3 : des5, after des3, 1d
Parallel 4 : des6, after des4, 1d
```
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;renders as&lt;/p&gt;
&lt;div class="mermaid"&gt;gantt
section Section
Completed :done, des1, 2014-01-06,2014-01-08
Active :active, des2, 2014-01-07, 3d
Parallel 1 : des3, after des1, 1d
Parallel 2 : des4, after des1, 1d
Parallel 3 : des5, after des3, 1d
Parallel 4 : des6, after des4, 1d
&lt;/div&gt;
&lt;h2 id="todo-lists"&gt;Todo lists&lt;/h2&gt;
&lt;p&gt;You can even write your todo lists in Markdown too:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;- [x]&lt;/span&gt; Write math example
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;- [x]&lt;/span&gt; Write diagram example
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;- [ ]&lt;/span&gt; Do something else
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;renders as&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; Write math example
&lt;ul&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; Write diagram example&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Do something else&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="did-you-find-this-page-helpful-consider-sharing-it-"&gt;Did you find this page helpful? Consider sharing it 🙌&lt;/h2&gt;</description></item><item><title>Transformers-Based Neural Network for Cardiac Infarction Segmentation in Delayed-Enhancement MRI</title><link>https://celine-fouard.fr/publication/2023-lecesne-ipta/</link><pubDate>Mon, 16 Oct 2023 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/publication/2023-lecesne-ipta/</guid><description/></item><item><title>User-centered design for the development of a patient monitoring software for peripheral arterial disease</title><link>https://celine-fouard.fr/publication/2023-spear-avs/</link><pubDate>Sun, 01 Oct 2023 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/publication/2023-spear-avs/</guid><description/></item><item><title>Connector for cables</title><link>https://celine-fouard.fr/publication/2022-fouard-patent/</link><pubDate>Thu, 31 Mar 2022 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/publication/2022-fouard-patent/</guid><description/></item><item><title>REMI — Decision Support for Lower-Limb Endovascular Revascularization</title><link>https://celine-fouard.fr/projects/remi/</link><pubDate>Wed, 01 Sep 2021 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/projects/remi/</guid><description>&lt;p&gt;&lt;em&gt;How do you help a vascular surgeon choose the best revascularization strategy, when the success of a technique remains hard to predict? REMI explores one answer: learning from past cases — the way an experienced clinician does — but in a tooled, traceable and interpretable way.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="the-result-first"&gt;The result, first&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;REMI&lt;/strong&gt; (from the French &lt;em&gt;Revascularisation Endovasculaire des Membres Inférieurs&lt;/em&gt; — Lower-Limb Endovascular Revascularization) is a clinical decision-support project I have coordinated since 2021, in close collaboration with the vascular surgery department of Grenoble Alpes University Hospital. Within a few years, it has made it possible to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;design and &lt;strong&gt;deploy in the clinic&lt;/strong&gt; a user-centred data-collection software;&lt;/li&gt;
&lt;li&gt;turn real clinical data — incomplete and heterogeneous — into a usable &lt;strong&gt;case base&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;demonstrate the relevance of &lt;strong&gt;case-based reasoning&lt;/strong&gt; to suggest, for a new patient, the strategies that succeeded in similar patients;&lt;/li&gt;
&lt;li&gt;bring a doctoral thesis to completion (&lt;strong&gt;Margaux Roux&lt;/strong&gt;, defended with distinction on 16 December 2025) and lead a multidisciplinary team funded by five successive grants.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This project consisted of taking a concrete clinical need, translating it into specifications, removing the technical &lt;em&gt;and&lt;/em&gt; organizational roadblocks, and going all the way to a genuinely used prototype.&lt;/p&gt;
&lt;h2 id="the-clinical-problem-a-decision-that-is-hard-to-anticipate"&gt;The clinical problem: a decision that is hard to anticipate&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Peripheral Arterial Disease (PAD)&lt;/strong&gt; of the lower limbs is an arterial condition whose main symptoms are pain and ischemic wounds. To avoid severe complications — amputation, death — &lt;strong&gt;revascularization&lt;/strong&gt; aims to restore blood flow, either endovascularly (angioplasty, stenting) or through open surgery.&lt;/p&gt;
&lt;p&gt;The problem: the probability of success or failure of a given technique remains &lt;strong&gt;hard to predict&lt;/strong&gt;. The surgeon relies on decision trees, scores (WIfI) and, above all, on experience. To date, no tool fully helps them choose, for &lt;em&gt;this&lt;/em&gt; patient, the most promising strategy.&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://celine-fouard.fr/projects/remi/techniques-endovasculaires.png"
alt="Endovascular revascularization techniques: angioplasty and stenting (fig. 1.9, M. Roux thesis)."&gt;&lt;figcaption&gt;
&lt;p&gt;Endovascular revascularization techniques: angioplasty and stenting (fig. 1.9, M. Roux thesis).&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id="a-method-case-based-reasoning"&gt;A method: case-based reasoning&lt;/h2&gt;
&lt;p&gt;Clinical decision-support systems traditionally fall into two families: &lt;strong&gt;statistical&lt;/strong&gt; approaches, powerful but often poorly interpretable (&amp;ldquo;black boxes&amp;rdquo;), and &lt;strong&gt;expert-rule&lt;/strong&gt; approaches, transparent but hard to scale.&lt;/p&gt;
&lt;p&gt;REMI explores a middle path: &lt;strong&gt;Case-Based Reasoning (CBR)&lt;/strong&gt;. Its assumption — &lt;em&gt;&amp;ldquo;similar problems have similar solutions&amp;rdquo;&lt;/em&gt; — translates, in the clinic, into: &lt;em&gt;similar symptoms, treated with similar therapies, lead to similar outcomes&lt;/em&gt;. It is a learning method close to medical reasoning itself, and naturally more &lt;strong&gt;explainable&lt;/strong&gt;: every recommendation rests on real cases that can be examined.&lt;/p&gt;
&lt;p&gt;The CBR cycle unfolds in four steps (shown in the cover image): &lt;strong&gt;retrieve&lt;/strong&gt; similar cases, &lt;strong&gt;reuse&lt;/strong&gt; and adapt their solution, &lt;strong&gt;revise&lt;/strong&gt; the outcome, then &lt;strong&gt;retain&lt;/strong&gt; the new case to enrich the base.&lt;/p&gt;
&lt;h2 id="from-raw-clinical-data-to-a-usable-case-base"&gt;From raw clinical data to a usable case base&lt;/h2&gt;
&lt;p&gt;This is often the most underestimated — and most structuring — step. The data available in electronic health records are incomplete, heterogeneous and designed for care, not for analysis. The project therefore had to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;model a &amp;ldquo;case&amp;rdquo;&lt;/strong&gt;: a set of attributes describing the problem (severity, WIfI score, lesion anatomy, comorbidities) and a second set describing the surgical solution and its outcome;&lt;/li&gt;
&lt;li&gt;explicitly handle &lt;strong&gt;missing data&lt;/strong&gt; and attribute typing;&lt;/li&gt;
&lt;li&gt;combine &lt;strong&gt;retrospective&lt;/strong&gt; and &lt;strong&gt;prospective&lt;/strong&gt; data, then develop a &lt;strong&gt;Python&lt;/strong&gt; extraction-and-aggregation pipeline that transforms patient-centred data into a decision-support-oriented case base.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;img src="https://celine-fouard.fr/projects/remi/modele-donnees.png"
alt="Class diagram of the data model implemented in the collection software (fig. 3.9, M. Roux thesis)."&gt;&lt;figcaption&gt;
&lt;p&gt;Class diagram of the data model implemented in the collection software (fig. 3.9, M. Roux thesis).&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id="a-user-centred-prototype-deployed-in-the-clinic"&gt;A user-centred prototype, deployed in the clinic&lt;/h2&gt;
&lt;p&gt;To collect high-quality prospective data, we designed a &lt;strong&gt;prototype software&lt;/strong&gt; directly usable by clinicians, within their workflow. It automatically computes the &lt;strong&gt;WIfI score&lt;/strong&gt; (and thus the amputation risk), models an operation as a sequence of surgical gestures applied to lesions, and automatically generates an &lt;strong&gt;operative report&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This is exactly the kind of deliverable I care about: a tool designed &lt;em&gt;with&lt;/em&gt; and &lt;em&gt;for&lt;/em&gt; its users, robust enough to leave the lab bench and enter clinical practice. Developing this application justified hiring a dedicated research engineer.&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://celine-fouard.fr/projects/remi/logiciel-prototype.png"
alt="Interface of the prototype data-collection software (fig. 3.11, M. Roux thesis)."&gt;&lt;figcaption&gt;
&lt;p&gt;Interface of the prototype data-collection software (fig. 3.11, M. Roux thesis).&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;video controls &gt;
&lt;source src="https://celine-fouard.fr/media/demo-logiciel.mp4" type="video/mp4"&gt;
&lt;/video&gt;
&lt;p&gt;&lt;em&gt;Demo video of the software, presented at the project&amp;rsquo;s first conference (in French).&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="representing-cases-to-compare-them"&gt;Representing cases to compare them&lt;/h2&gt;
&lt;p&gt;Comparing two patients requires a sound &lt;strong&gt;similarity&lt;/strong&gt; measure between cases. The project relies on an &lt;strong&gt;autoencoder&lt;/strong&gt;: a neural network that learns to represent each case in a compact latent space, where geometric proximity reflects clinical similarity. Retrieval of relevant cases then takes place in that space.&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://celine-fouard.fr/projects/remi/espace-latent.png"
alt="Retrieval of similar cases in the learned latent space (fig. 4.4, M. Roux thesis)."&gt;&lt;figcaption&gt;
&lt;p&gt;Retrieval of similar cases in the learned latent space (fig. 4.4, M. Roux thesis).&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id="project-leadership-and-funding"&gt;Project leadership and funding&lt;/h2&gt;
&lt;p&gt;Started in 2021 with Prof. Rafaëlle Spear, the project gradually brought together three sites (TIMC in Grenoble, LTSI in Rennes, Grenoble Alpes University Hospital) and was supported by &lt;strong&gt;€284,450&lt;/strong&gt; raised from four funding sources.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Period&lt;/th&gt;
&lt;th&gt;Project / scheme&lt;/th&gt;
&lt;th&gt;Co-lead(s)&lt;/th&gt;
&lt;th&gt;Funding obtained&lt;/th&gt;
&lt;th&gt;Source&lt;/th&gt;
&lt;th&gt;Amount&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;2021–2022&lt;/td&gt;
&lt;td&gt;REMI-ORIA&lt;/td&gt;
&lt;td&gt;Rafaëlle Spear&lt;/td&gt;
&lt;td&gt;Equipment&lt;/td&gt;
&lt;td&gt;EMERGENCE (TIMC laboratory)&lt;/td&gt;
&lt;td&gt;€12,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2022–2023&lt;/td&gt;
&lt;td&gt;&lt;em&gt;User-centered development for data collection in endovascular revascularization&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;Rafaëlle Spear &amp;amp; Alexandre Demeure&lt;/td&gt;
&lt;td&gt;2 Master&amp;rsquo;s (M2) interns (Laure Chatenet &amp;amp; Clément Gasse)&lt;/td&gt;
&lt;td&gt;MIAI@Grenoble Alpes (ANR-19-P3IA-0003)&lt;/td&gt;
&lt;td&gt;€11,200&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2024–2025&lt;/td&gt;
&lt;td&gt;&lt;em&gt;CAMI-assistant chair&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;Sandrine Voros&lt;/td&gt;
&lt;td&gt;1 research engineer for one year (Romaric Ruga) + equipment&lt;/td&gt;
&lt;td&gt;MIAI@Grenoble Alpes (ANR-19-P3IA-0003)&lt;/td&gt;
&lt;td&gt;€66,056&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2024–2026&lt;/td&gt;
&lt;td&gt;Decision support — REMI&lt;/td&gt;
&lt;td&gt;Rafaëlle Spear &amp;amp; Pascal Haigron&lt;/td&gt;
&lt;td&gt;1 PhD student (Margaux Roux)&lt;/td&gt;
&lt;td&gt;LabeX CAMI&lt;/td&gt;
&lt;td&gt;€160,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2026–2027&lt;/td&gt;
&lt;td&gt;Clinical deployment and validation of an AI tool&lt;/td&gt;
&lt;td&gt;Rafaëlle Spear&lt;/td&gt;
&lt;td&gt;Thesis completion + 1 intern + software subcontracting&lt;/td&gt;
&lt;td&gt;Fondation pour l&amp;rsquo;Avenir&lt;/td&gt;
&lt;td&gt;€35,194&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;€284,450&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="supervision-and-collaborations"&gt;Supervision and collaborations&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Margaux Roux&lt;/strong&gt;, PhD student — thesis &lt;em&gt;&amp;ldquo;Decision support for lower-limb endovascular revascularization&amp;rdquo;&lt;/em&gt;, defended on 16 December 2025 (co-supervision at 33% with R. Spear and P. Haigron).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Laure Chatenet&lt;/strong&gt; and &lt;strong&gt;Clément Gasse&lt;/strong&gt;, Master&amp;rsquo;s (M2) interns.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Romaric Ruga&lt;/strong&gt;, research engineer (finalizing the data-collection software).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prof. Rafaëlle Spear&lt;/strong&gt; (PU-PH, vascular surgery, Grenoble Alpes University Hospital) — clinical co-lead since the project&amp;rsquo;s inception.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prof. Pascal Haigron&lt;/strong&gt; (University of Rennes, LTSI) — thesis co-supervisor.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sandrine Voros&lt;/strong&gt; (TIMC) and &lt;strong&gt;Alexandre Demeure&lt;/strong&gt; — co-leads on funding schemes.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="publications"&gt;Publications&lt;/h2&gt;
&lt;ul class="pubs-by-tag"&gt;
&lt;li&gt;
&lt;strong&gt;2025&lt;/strong&gt;.
Roux Margaux, Spear Rafaëlle, Fouard Céline, Haigron Pascal —
&lt;a href="https://celine-fouard.fr/publication/2025-roux-ijmi/"&gt;Retrieving similar cases for clinical decision support in the context of revascularization of lower limbs&lt;/a&gt;. &lt;em&gt;International Journal of Medical Informatics, Vol 201, pp105931&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2024&lt;/strong&gt;.
Roux Margaux, Spear Rafaëlle, Haigron Pascal, Demeure Alexandre, Fouard Céline —
&lt;a href="https://celine-fouard.fr/publication/2024-roux-embc/"&gt;Toward Decision Support System for Lower Limb Endovascular Revascularization&lt;/a&gt;. &lt;em&gt;2024 46th Annual International Conference of the IEEE Engineering in Medicine and Biology Society&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2023&lt;/strong&gt;.
Spear Rafaëlle, Fouard Céline, Demeure Alexandre, Gasse Clément, Chatenet Laure —
&lt;a href="https://celine-fouard.fr/publication/2023-spear-avs/"&gt;User-centered design for the development of a patient monitoring software for peripheral arterial disease&lt;/a&gt;. &lt;em&gt;Annals of Vascular Surgery&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Together with
, this project anchors my work in
— with one constant requirement: interpretable methods, genuinely usable tools, and an ongoing dialogue with clinicians.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>LPR: from a lab idea to a clinical prototype</title><link>https://celine-fouard.fr/projects/lpr/</link><pubDate>Mon, 01 Jun 2020 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/projects/lpr/</guid><description>&lt;p&gt;&lt;em&gt;Taking a medical robot from concept to first-in-human trials: TRL maturation, quality assurance, risk analysis and industrial spin-off.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="the-clinical-gesture"&gt;The clinical gesture&lt;/h2&gt;
&lt;p&gt;Inserting a needle under image guidance is a common interventional-radiology procedure: for a biopsy or tumour ablation, the clinician acquires a volume image, plans a trajectory on one slice, then inserts the needle. The gesture is delicate — at the moment of insertion the radiologist has very few guidance tools and relies mostly on experience and on memorising the chosen slice. Under CT, checking the trajectory means repeated control images, hence radiation and back-and-forth; under MRI, the gesture becomes almost impossible to perform by hand inside the bore.&lt;/p&gt;
&lt;div style="display:flex; gap:1rem; align-items:flex-start; margin:1.5rem 0;"&gt;
&lt;figure style="flex:1; margin:0;"&gt;
&lt;img src="radioInter00.png" alt="The interventional-radiology gesture in context" style="width:100%; border-radius:8px;"&gt;
&lt;/figure&gt;
&lt;figure style="flex:1; margin:0;"&gt;
&lt;img src="radioInter01.png" alt="The radiologist memorises the slice on which the needle trajectory was planned" style="width:100%; border-radius:8px;"&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;The LPR (&lt;em&gt;Light Puncture Robot&lt;/em&gt;) addresses this: a lightweight robot placed directly on the patient to follow its motion as closely as possible, able to hold, position and insert the needle under the clinician&amp;rsquo;s control. It is compatible with both X-ray CT and MRI — therefore built entirely from non-ferromagnetic materials — and registers itself automatically in the image. The video below sums it up, from registration to needle positioning:&lt;/p&gt;
&lt;div class="lpr-video-pleine-largeur"&gt;
&lt;video controls &gt;
&lt;source src="https://celine-fouard.fr/media/lpr-demo.mp4" type="video/mp4"&gt;
&lt;/video&gt;
&lt;/div&gt;
&lt;style&gt;.lpr-video-pleine-largeur video{width:100%;height:auto;border-radius:8px;}&lt;/style&gt;
&lt;h2 id="climbing-the-trls"&gt;Climbing the TRLs&lt;/h2&gt;
&lt;p&gt;The real challenge with a medical device isn&amp;rsquo;t having the idea: it&amp;rsquo;s pushing it up the technology-readiness levels (TRL) until it can be tested on humans. Here is the path the LPR travelled, from concept (TRL 1) to clinical prototype (TRL 6):&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img alt="LPR technology-readiness ladder, from concept to clinical prototype, with one prototype per step"
src="https://celine-fouard.fr/projects/lpr/montee-trl-lpr.svg"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;The first steps were quick: observing the clinical procedure, the first design, the first prototype (the α prototype, already there when I joined the team). The real work started afterwards. &lt;strong&gt;Moving from TRL 4 to TRL 5&lt;/strong&gt; — from a lab-validated robot to one cleared for testing on humans — took far more than research: a redesign of the code under &lt;strong&gt;quality assurance&lt;/strong&gt;, a full &lt;strong&gt;risk analysis&lt;/strong&gt;, and outside expertise. We worked with our partner &lt;strong&gt;Axe Systems&lt;/strong&gt; to manufacture the mechanical part under quality assurance, and with the clinical investigation centre (&lt;strong&gt;CIC-IT&lt;/strong&gt;) of Grenoble Alpes University Hospital and the company &lt;strong&gt;SQI&lt;/strong&gt; for risk analysis and quality-controlled development. This file secured clearance from the French medicines agency (&lt;strong&gt;ANSM&lt;/strong&gt;) and let us build a protocol guaranteeing the robot&amp;rsquo;s safety for &lt;strong&gt;preclinical trials on healthy subjects in MRI&lt;/strong&gt;, without needle insertion.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="The LPR shown as a CAD model registered in the MRI image, inside the CamiTK guidance software rebuilt under quality assurance — the redesign was also a software one"
srcset="https://celine-fouard.fr/projects/lpr/lprOnPatient_hu_ba3073dca1f72032.webp 320w, https://celine-fouard.fr/projects/lpr/lprOnPatient_hu_ba9555da4007ba4f.webp 480w, https://celine-fouard.fr/projects/lpr/lprOnPatient_hu_20698b9e9e2e7f33.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://celine-fouard.fr/projects/lpr/lprOnPatient_hu_ba3073dca1f72032.webp"
width="760"
height="475"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Preclinical trials of the LPR on a healthy subject in MRI, monitored by two engineers"
srcset="https://celine-fouard.fr/projects/lpr/robacusIRM_hu_e71a0ec08183493c.webp 320w, https://celine-fouard.fr/projects/lpr/robacusIRM_hu_b17c4ee9d0f5f74f.webp 480w, https://celine-fouard.fr/projects/lpr/robacusIRM_hu_a675667781958f3c.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://celine-fouard.fr/projects/lpr/robacusIRM_hu_e71a0ec08183493c.webp"
width="760"
height="549"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;These trials mobilised, over two years, a ten-person team that I coordinated (3 from the CIC-IT, 3 from TIMC, 2 from Axe Systems, 2 from SQI).&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Moving from TRL 4 to TRL 5 means rewriting the code under quality assurance, running a risk analysis, and making research, clinical and industry teams work together. That is exactly the work a company expects when it wants to turn a promising prototype into a credible device.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The next step — industrialisation — could no longer happen in the lab. So I led a &lt;strong&gt;start-up&lt;/strong&gt; project built on the robot, supported by Grenoble&amp;rsquo;s tech-transfer office (&lt;strong&gt;SATT Linksium&lt;/strong&gt;), first in &lt;strong&gt;maturation&lt;/strong&gt; (2017) then in &lt;strong&gt;incubation&lt;/strong&gt; (2018–2019). This phase produced &lt;strong&gt;two patents&lt;/strong&gt; and &lt;strong&gt;two applications to the national BPI i-Lab innovation contest&lt;/strong&gt; (2018 and 2019). The feedback was excellent — 17/20 on the technology dimension, 14.6/20 on the financial dimension, 14.8/20 overall — but the project was ultimately not funded. I recruited and supervised an engineer (Jérémy Lenfant) and then two successive co-founders for the business side (Bertrand Perrin, then Antoine Bourrier).&lt;/p&gt;
&lt;h2 id="project-management-the-funding"&gt;Project management: the funding&lt;/h2&gt;
&lt;p&gt;Beyond the technical side, the LPR was a long exercise in coordination at the research / clinical / industry interface, backed by a series of grants I secured and ran:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Project&lt;/th&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;th&gt;Funder / type&lt;/th&gt;
&lt;th&gt;Partners&lt;/th&gt;
&lt;th&gt;Period&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Robacus&lt;/td&gt;
&lt;td&gt;Coordinator&lt;/td&gt;
&lt;td&gt;ANR TecSan — ANR-11-TECS-020-01&lt;/td&gt;
&lt;td&gt;TIMC, LIRMM, Grenoble Alpes Univ. Hospital (CIC-IT, radiology), Axe Systems&lt;/td&gt;
&lt;td&gt;2012–2015&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LPROP&lt;/td&gt;
&lt;td&gt;Coordinator&lt;/td&gt;
&lt;td&gt;Carnot LSI Institute — pre-maturation&lt;/td&gt;
&lt;td&gt;TIMC&lt;/td&gt;
&lt;td&gt;2015–2016&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Emergence (×2)&lt;/td&gt;
&lt;td&gt;Coordinator&lt;/td&gt;
&lt;td&gt;TIMC — internal (equipment &amp;amp; interns)&lt;/td&gt;
&lt;td&gt;TIMC&lt;/td&gt;
&lt;td&gt;2016–2017&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LPR maturation&lt;/td&gt;
&lt;td&gt;Coordinator&lt;/td&gt;
&lt;td&gt;SATT Linksium&lt;/td&gt;
&lt;td&gt;TIMC, Linksium&lt;/td&gt;
&lt;td&gt;2017&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LPR incubation&lt;/td&gt;
&lt;td&gt;Coordinator&lt;/td&gt;
&lt;td&gt;SATT Linksium&lt;/td&gt;
&lt;td&gt;Linksium, co-founders&lt;/td&gt;
&lt;td&gt;2018–2019&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="behind-the-scenes-remote-control-of-the-robot"&gt;Behind the scenes: remote control of the robot&lt;/h2&gt;
&lt;p&gt;In collaboration with the &lt;strong&gt;LIRMM team (Montpellier)&lt;/strong&gt;, a partner in the Robacus project, we demonstrated real-time remote control of the robot through a force-feedback teleoperation interface — a step toward a gesture where the radiologist would drive insertion from the control room, without radiation exposure. This feasibility demo was not taken further, but it nicely illustrates the flexibility of the guidance software&amp;rsquo;s architecture, built on
, the medical-application prototyping framework I co-develop: its modularity made it possible to reuse code from one prototype version to the next, rather than rewriting everything.&lt;/p&gt;
&lt;!-- Teleoperation video (teleoperation-lirmm.mp4) to insert here once editing is done. --&gt;
&lt;video controls &gt;
&lt;source src="https://celine-fouard.fr/media/teleoperation-lirmm.mp4" type="video/mp4"&gt;
&lt;/video&gt;
&lt;h2 id="skills-brought-to-bear"&gt;Skills brought to bear&lt;/h2&gt;
&lt;p&gt;Multi-partner project coordination (research · clinical · industry) · &lt;strong&gt;quality-assured&lt;/strong&gt; and &lt;strong&gt;risk-analysed&lt;/strong&gt; development of a medical device · running regulated &lt;strong&gt;preclinical trials&lt;/strong&gt; on healthy subjects · &lt;strong&gt;TRL maturation&lt;/strong&gt; of a software component, from concept to clinical prototype · industrial &lt;strong&gt;maturation and incubation&lt;/strong&gt; (patent drafting, business plan, team recruitment) · modular, reusable software architecture for medical prototyping.&lt;/p&gt;
&lt;h2 id="related-publications"&gt;Related publications&lt;/h2&gt;
&lt;ul class="pubs-by-tag"&gt;
&lt;li&gt;
&lt;strong&gt;2022&lt;/strong&gt;.
Fouard Céline, Lenfant Jérémy, Ganesaratnam Gokularajah, Hungr Nikolaï —
&lt;a href="https://celine-fouard.fr/publication/2022-fouard-patent/"&gt;Connector for cables&lt;/a&gt;. &lt;em&gt;US Patent&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2018&lt;/strong&gt;.
Ghelfi Julien, Moreau-Gaudry Alexandre, Hungr Nikolaï, Fourd Céline, Veron Baptiste, Medici Maud, Chipon Émilie, Cinquin Philippe, Bricault Ivan —
&lt;a href="https://celine-fouard.fr/publication/2018-ghelfi-cir/"&gt;Evaluation of the needle positioning accuracy of a light puncture robot under MRI guidance: results of a clinical trial on healthy volunteers&lt;/a&gt;. &lt;em&gt;Cardiovascular and interventional radiology, vol 41 no 9&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2016&lt;/strong&gt;.
Hungr Nikolaï, Bricault Ivan, Cinquin Philippe, Fouard Céline —
&lt;a href="https://celine-fouard.fr/publication/2016-hungr-tr/"&gt;Design and validation of a CT-and MRI-guided robot for percutaneous needle procedures&lt;/a&gt;. &lt;em&gt;IEEE transactions on robotics, vol 32 Issue 4&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2014&lt;/strong&gt;.
Dorileo Ederson, Hungr Nikolaï, Zemiti Nabil, Fouard Céline, Poignet Philippe —
&lt;a href="https://celine-fouard.fr/publication/2014-dorileo-ijcars/"&gt;A modular CT/MRI-guided teleoperation platform for robot assisted punctures planning&lt;/a&gt;. &lt;em&gt;CARS 2014-28th International Congress and Exhibition on Computer Assisted Radiology and Surgery&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2014&lt;/strong&gt;.
Dorileo Ederson, Zemiti Nabil, Poignet Philippe, Hungr Nikolaï, Bricault Ivan, Fouard Céline —
&lt;a href="https://celine-fouard.fr/publication/2014-dorileo-surgetica/"&gt;Observations of Lightly Flexible Needle Deflection in 3D CT/MRI&lt;/a&gt;. &lt;em&gt;Proceedings of Surgetica 2014&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2011&lt;/strong&gt;.
Hungr Nikolaï, Fouard Céline, Robert Adeline, Bricault Ivan, Cinquin Philippe —
&lt;a href="https://celine-fouard.fr/publication/2011-hungr-miccai/"&gt;Interventional radiology robot for CT and MRI guided percutaneous interventions&lt;/a&gt;. &lt;em&gt;Proceedings of the 14th international conference on Medical image Ccomputing and Computer-Assisted Intervention (MICCAI)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2008&lt;/strong&gt;.
Zemiti Nabil, Bricault Ivan, Fouard Céline, Sanche Bénédicte, Cinquin Philippe —
&lt;a href="https://celine-fouard.fr/publication/2008-zemiti-tm/"&gt;LPR: A CT and MR-compatible puncture robot to enhance accuracy and safety of image-guided interventions&lt;/a&gt;. &lt;em&gt;IEEE/ASME Transactions on Mechatronics&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2008&lt;/strong&gt;.
Bricault Ivan, Zemiti Nabil, Jouniaux Émilie, Fouard Céline, Taillant Élise, Dorandeu Frédéric, Cinquin Philippe —
&lt;a href="https://celine-fouard.fr/publication/2008-bricault-embm/"&gt;Light Puncture Robot for CT and MRI Interventions&lt;/a&gt;. &lt;em&gt;IEEE Engineering in Medicine and Biology Magazine&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Evaluation of the needle positioning accuracy of a light puncture robot under MRI guidance: results of a clinical trial on healthy volunteers</title><link>https://celine-fouard.fr/publication/2018-ghelfi-cir/</link><pubDate>Sat, 01 Sep 2018 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/publication/2018-ghelfi-cir/</guid><description/></item><item><title>Light Random Regression Forests for automatic multi-organ localization in CT images</title><link>https://celine-fouard.fr/publication/2017-samarakoon-isbi/</link><pubDate>Tue, 18 Apr 2017 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/publication/2017-samarakoon-isbi/</guid><description/></item><item><title>Automatically locating organs in CT images</title><link>https://celine-fouard.fr/projects/these-samarakoon/</link><pubDate>Fri, 30 Sep 2016 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/projects/these-samarakoon/</guid><description>&lt;p&gt;&lt;em&gt;My first turn toward machine learning — taken, with this student, two years before the deep-learning boom.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;In the continuation of the
project, I co-supervised with Emmanuel Promayon the PhD of &lt;strong&gt;Prasad Samarakoon&lt;/strong&gt;, defended on 30 September 2016 at Université Grenoble Alpes (funded by the French ANR TecSan project &amp;ldquo;Robacus&amp;rdquo;). This is the project that tipped me toward &lt;strong&gt;machine learning&lt;/strong&gt; applied to medical imaging. We started two years &lt;em&gt;before&lt;/em&gt; the rise of deep-learning segmentation: so we bet not on deep neural networks, but on &lt;strong&gt;decision-tree forests&lt;/strong&gt; (&lt;em&gt;random forests&lt;/em&gt;) — a clear-eyed choice for the time, and a formative one.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;What this thesis really gave me was not one more method: it was an early familiarity with the &lt;strong&gt;strengths and the limits&lt;/strong&gt; of learning-based approaches — first among them their surprising robustness.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="the-challenge-locating-not-segmenting"&gt;The challenge: locating, not segmenting&lt;/h2&gt;
&lt;p&gt;To plan a puncture assisted by the LPR robot, one must first locate, in the CT scan, the target organs and those to avoid — a step still done &lt;em&gt;by hand&lt;/em&gt; by the clinician, tedious and costly in expert time. Rather than aiming straight for full segmentation (delineating every contour), we tackled the more tractable and equally useful problem of &lt;strong&gt;localization&lt;/strong&gt;: enclosing each organ in a bounding box, automatically.&lt;/p&gt;
&lt;h2 id="the-contribution"&gt;The contribution&lt;/h2&gt;
&lt;p&gt;Beyond a thorough analysis of the method, the thesis produced two contributions of real practical reach:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the &lt;strong&gt;Light Random Regression Forests&lt;/strong&gt;: a faster and far more memory-efficient model, at equivalent accuracy — and therefore easier to embed and deploy;&lt;/li&gt;
&lt;li&gt;an &lt;strong&gt;automatic parametrization&lt;/strong&gt; that removes settings previously fixed &amp;ldquo;by hand&amp;rdquo;, making the method more robust and more reproducible from one dataset to another.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;img src="https://celine-fouard.fr/projects/these-samarakoon/pipeline-rrf.png"
alt="The regression-forest pipeline: training-set preparation, preprocessing, training, then prediction (data in yellow, algorithmic steps in blue)"&gt;&lt;figcaption&gt;
&lt;p&gt;The regression-forest pipeline: training-set preparation, preprocessing, training, then prediction (data in yellow, algorithmic steps in blue)&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id="robustness--and-bias-the-phantom-kidney-story"&gt;Robustness — and bias: the phantom-kidney story&lt;/h2&gt;
&lt;p&gt;One experiment remains, for me, the perfect illustration of what these methods really are. To learn to locate the kidneys, our training database — built from experts&amp;rsquo; manual delineations (ours and those of the team&amp;rsquo;s PhD students) — contained only patients &lt;strong&gt;with two kidneys&lt;/strong&gt;. During the testing phase, the radiologist handed us the image of a patient who had &lt;strong&gt;only one&lt;/strong&gt;. The algorithm dutifully found… &lt;strong&gt;two bounding boxes&lt;/strong&gt;, placing a &amp;ldquo;phantom kidney&amp;rdquo; exactly where statistics expected it.&lt;/p&gt;
&lt;p&gt;Even then, we were alert to a truth that has lost none of its relevance: &lt;strong&gt;a model is only the reflection of the data it is shown.&lt;/strong&gt; The quality and representativeness of the training set matter as much as the algorithm itself.&lt;/p&gt;
&lt;h2 id="what-this-project-represented"&gt;What this project represented&lt;/h2&gt;
&lt;p&gt;With the rise of deep learning, this forest-based localization strategy was later set aside — but it was decisive. It let me approach the machine-learning turn &lt;strong&gt;from the foundations&lt;/strong&gt;, at a time when one still took the time to understand &lt;em&gt;why&lt;/em&gt; a method works, what it guarantees, and where it fails. That perspective — robustness, generalization, vigilance about the data — is exactly what I bring today to medical-application prototyping.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Skills involved:&lt;/strong&gt; doctoral co-supervision · machine learning applied to medical imaging · design of robust, automatic methods · building and critically assessing training datasets.&lt;/p&gt;
&lt;h2 id="related-publications"&gt;Related publications&lt;/h2&gt;
&lt;ul class="pubs-by-tag"&gt;
&lt;li&gt;
&lt;strong&gt;2017&lt;/strong&gt;.
Samarakoon Prasad N, Promayon Emmanuel, Fouard Céline —
&lt;a href="https://celine-fouard.fr/publication/2017-samarakoon-isbi/"&gt;Light Random Regression Forests for automatic multi-organ localization in CT images&lt;/a&gt;. &lt;em&gt;2017 IEEE 14th International Symposium on Biomedical Imaging (ISBI 2017)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2014&lt;/strong&gt;.
Saramakoon Prasad, Promayon Emmanuel, Fouard Céline —
&lt;a href="https://celine-fouard.fr/publication/2014-samarakoon-surgetica/"&gt;Fully Automatic Organ Localization in Medical Images Using Improved Random Regression Forests&lt;/a&gt;. &lt;em&gt;Proceedings of Surgetica 2014&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Design and validation of a CT-and MRI-guided robot for percutaneous needle procedures</title><link>https://celine-fouard.fr/publication/2016-hungr-tr/</link><pubDate>Tue, 02 Aug 2016 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/publication/2016-hungr-tr/</guid><description/></item><item><title>Multi-view imaging system for laparoscopic surgery</title><link>https://celine-fouard.fr/publication/2015-voros-patent/</link><pubDate>Wed, 25 Nov 2015 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/publication/2015-voros-patent/</guid><description/></item><item><title>Segmentation, separation and pose estimation of prostate brachytherapy seeds in CT images</title><link>https://celine-fouard.fr/publication/2015-nguyen-tbe/</link><pubDate>Fri, 06 Mar 2015 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/publication/2015-nguyen-tbe/</guid><description/></item><item><title>Impact de l’orientation des grains iode 125 dans l’évaluation de la dosimétrie à 1 mois d’une curiethérapie prostatique</title><link>https://celine-fouard.fr/publication/2014-meneu-cancer/</link><pubDate>Wed, 01 Oct 2014 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/publication/2014-meneu-cancer/</guid><description/></item><item><title>Medical Image Analysis</title><link>https://celine-fouard.fr/projects/imageanalysis/</link><pubDate>Wed, 01 Oct 2014 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/projects/imageanalysis/</guid><description>&lt;p&gt;When I joined the
research group at TIMC laboratory in 2006, I contributed my expertise in medical image processing and analysis to three ongoing applied projects led by my colleagues. These collaborations allowed me to tackle diverse clinical challenges — from real-time surgical vision to oncological dose computation — while immersing myself in the tools and culture of the team.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;These three projects are grounded in rigorous academic knowledge production: each contribution led to publications in international peer-reviewed journals and conferences, or to a patent filing. The skills described here were forged &lt;em&gt;alongside&lt;/em&gt; that scientific output — they are its direct product.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;These three projects embody a conviction that has shaped my entire approach: &lt;strong&gt;a medical image is only as good as its usability by the clinician, at the right moment and in the right context&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="prostate-brachytherapy--orientation-of-iodine-125-seeds"&gt;Prostate Brachytherapy — Orientation of Iodine-125 Seeds&lt;/h2&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;em&gt;Project led by Jocelyne Troccaz (TIMC-GMCAO)&lt;/em&gt;&lt;br&gt;
Co-supervision of post-doctoral researcher &lt;strong&gt;Giao Nguyen&lt;/strong&gt; (50%, with Jocelyne Troccaz)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="context"&gt;Context&lt;/h3&gt;
&lt;figure&gt;&lt;img src="https://celine-fouard.fr/projects/imageanalysis/prostateBrachytherapy-context.webp"
alt="Transperineal implantation guided by ultrasound — clinical context"&gt;&lt;figcaption&gt;
&lt;p&gt;Transperineal implantation guided by ultrasound — clinical context&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Prostate brachytherapy involves implanting radioactive iodine-125 seeds directly into the prostate gland. Calculating the radiation dose absorbed by tumour tissue — &lt;strong&gt;dosimetry&lt;/strong&gt; — is critical for evaluating treatment effectiveness and anticipating side effects. At the time, dosimetry tools modelled seeds as &lt;strong&gt;isotropic point sources&lt;/strong&gt;, ignoring their actual orientation within the tissue.&lt;/p&gt;
&lt;p&gt;The research question: &lt;em&gt;does seed orientation influence dosimetry enough to warrant its inclusion in clinical software?&lt;/em&gt;&lt;/p&gt;
&lt;h3 id="contributions"&gt;Contributions&lt;/h3&gt;
&lt;p&gt;To answer this, we first needed to &lt;strong&gt;automatically detect and localise seeds&lt;/strong&gt; in post-operative CT images — a challenging task, as seeds are small, closely spaced, and may overlap in projection.&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://celine-fouard.fr/projects/imageanalysis/prostateBrachytherapy-02.png"
alt="Implanted seeds as visible in a CT slice: single seeds, clustered seeds, and pelvic bones"&gt;&lt;figcaption&gt;
&lt;p&gt;Implanted seeds as visible in a CT slice: single seeds, clustered seeds, and pelvic bones&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;We developed a complete pipeline for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Segmentation&lt;/strong&gt; of iodine seeds in CT images&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Separation&lt;/strong&gt; of seeds that touch or overlap&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pose estimation&lt;/strong&gt; (3D position + orientation) of each individual seed&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;img src="https://celine-fouard.fr/projects/imageanalysis/prostateBrachytherapy-01.png"
alt="3D localisation of brachytherapy seeds in the prostate (CamiTK visualisation)"&gt;&lt;figcaption&gt;
&lt;p&gt;3D localisation of brachytherapy seeds in the prostate (CamiTK visualisation)&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Results confirmed that seed orientation had a &lt;strong&gt;measurable impact on dosimetry&lt;/strong&gt; — a clinically significant finding for post-operative evaluation and treatment follow-up.&lt;/p&gt;
&lt;h3 id="skills-applied"&gt;Skills Applied&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;3D medical image processing (CT)&lt;/li&gt;
&lt;li&gt;Geometric modelling of radioactive sources&lt;/li&gt;
&lt;li&gt;Software development and integration into the &lt;strong&gt;CamiTK&lt;/strong&gt; platform for clinical use&lt;/li&gt;
&lt;li&gt;Validation protocols on real patient data&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="related-publications"&gt;Related Publications&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;[IEEE TBME 2015]&lt;/strong&gt; H.-G. Nguyen, C. Fouard, J. Troccaz — &lt;em&gt;Segmentation, separation and pose estimation of prostate brachytherapy seeds in CT images&lt;/em&gt; —
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Cancer/Radiothérapie 2014]&lt;/strong&gt; F. Meneu, H. Nguyen, C. Fouard et al. — &lt;em&gt;Impact de l&amp;rsquo;orientation des grains iode 125 dans l&amp;rsquo;évaluation de la dosimétrie à 1 mois&lt;/em&gt; —
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Physica Medica 2013]&lt;/strong&gt; F. Meneu, G. Nguyen et al. — &lt;em&gt;Consideration of seeds orientation in prostate brachytherapy and dosimetry analysis&lt;/em&gt; —
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="3d-ultrasound-based-bone-tracking"&gt;3D Ultrasound-Based Bone Tracking&lt;/h2&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;em&gt;Co-supervision at 50%, with Jocelyne Troccaz&lt;/em&gt;&lt;br&gt;
PhD thesis of &lt;strong&gt;Jonathan Schers&lt;/strong&gt; (2006–2009)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;figure&gt;&lt;img src="https://celine-fouard.fr/projects/imageanalysis/us-bone-tracking-02.png"
alt="Ultrasound-guided orthopaedic intervention: the clinical context"&gt;&lt;figcaption&gt;
&lt;p&gt;Ultrasound-guided orthopaedic intervention: the clinical context&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3 id="context-1"&gt;Context&lt;/h3&gt;
&lt;p&gt;Orthopaedic procedures — prosthesis placement, osteotomies — require &lt;strong&gt;real-time tracking of bone structures&lt;/strong&gt; during surgery. Classical techniques rely either on X-ray imaging (radiation) or on invasive bone markers. The goal of this project was to explore a &lt;strong&gt;minimally invasive&lt;/strong&gt; alternative: tracking bone structures using &lt;strong&gt;3D ultrasound&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id="contributions-1"&gt;Contributions&lt;/h3&gt;
&lt;p&gt;We proposed a per-operative tracking method based on &lt;strong&gt;3D/3D ultrasound image registration&lt;/strong&gt;: from a reference volume acquired at the start of the procedure, bone displacements are tracked by registering each new acquisition against that reference.&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://celine-fouard.fr/projects/imageanalysis/us-bone-tracking-03.png"
alt="Segmentation of the bone surface in an ultrasound image"&gt;&lt;figcaption&gt;
&lt;p&gt;Segmentation of the bone surface in an ultrasound image&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Key scientific contributions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Segmentation of bone surfaces&lt;/strong&gt; in ultrasound images (noisy signal, reflection artefacts)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rigid and deformable registration&lt;/strong&gt; methods adapted to the ultrasound modality&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Panoramic reconstruction&lt;/strong&gt; from multiple partial acquisitions&lt;/li&gt;
&lt;li&gt;Evaluation on cadaveric anatomical specimens&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="skills-applied-1"&gt;Skills Applied&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Ultrasound signal processing&lt;/li&gt;
&lt;li&gt;Multimodal medical image registration&lt;/li&gt;
&lt;li&gt;Design of a ground-truth-free registration validation method&lt;/li&gt;
&lt;li&gt;Doctoral co-supervision (50%)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="related-publications-1"&gt;Related Publications&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;[IUS 1007]&lt;/strong&gt; J. Schers, J. Troccaz, V. Daanen, C. Fouard, C. Plaskos, P. Kilian - &lt;em&gt;3D/4D ultrasound registration of bone&lt;/em&gt; -
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[IJCARS 2009]&lt;/strong&gt; J. Schers, J. Troccaz, C. Fouard, C. Plaskos, O. Palombi — &lt;em&gt;3D/3D ultrasound registration for panoramic volume reconstruction&lt;/em&gt; —
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[CAOS 2010]&lt;/strong&gt; J. Schers, C. Fouard, J. Troccaz — &lt;em&gt;Non invasive ultrasound-based bone tracking&lt;/em&gt; —
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="distributed-laparoscopy--extended-view-of-the-surgical-field"&gt;Distributed Laparoscopy — Extended View of the Surgical Field&lt;/h2&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;em&gt;Co-supervision at 50%, with Philippe Cinquin&lt;/em&gt;&lt;br&gt;
PhD thesis of &lt;strong&gt;Christophe Boschet&lt;/strong&gt; (2007–2010)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;figure&gt;&lt;img src="https://celine-fouard.fr/projects/imageanalysis/distributive-laparoscopy-02.jpg"
alt="Standard laparoscopy: a single camera, a narrow field of view"&gt;&lt;figcaption&gt;
&lt;p&gt;Standard laparoscopy: a single camera, a narrow field of view&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3 id="context-2"&gt;Context&lt;/h3&gt;
&lt;p&gt;During a laparoscopic procedure, the surgeon&amp;rsquo;s field of view is &lt;strong&gt;very narrow&lt;/strong&gt;: the endoscopic camera, inserted through a trocar, only covers a small portion of the abdominal cavity. The surgeon must constantly reposition the camera to explore the operative field, which is cognitively demanding and lengthens procedures.&lt;/p&gt;
&lt;p&gt;The idea: replace a single high-resolution camera with &lt;strong&gt;several small, distributed miniature cameras&lt;/strong&gt; (similar to the phone cameras of the day), and &lt;strong&gt;reconstruct a real-time 3D panoramic view&lt;/strong&gt; of the operative zone.&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://celine-fouard.fr/projects/imageanalysis/distributive-laparoscopy-01.jpg"
alt="Standard laparoscopy: a single camera, a narrow field of view"&gt;&lt;figcaption&gt;
&lt;p&gt;Standard laparoscopy: a single camera, a narrow field of view&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3 id="contributions-2"&gt;Contributions&lt;/h3&gt;
&lt;p&gt;This project posed novel challenges at the intersection of computer vision and embedded computing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Calibration&lt;/strong&gt; of multiple miniature cameras in an endoscopic configuration&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;3D reconstruction&lt;/strong&gt; of the surgical field via distributed stereovision&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fusion of video streams&lt;/strong&gt; to produce a coherent augmented view&lt;/li&gt;
&lt;li&gt;Integration into the CamiTK platform and prototyping for pre-clinical experimentation&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;img src="https://celine-fouard.fr/projects/imageanalysis/distributive-laparoscopy-03.jpg"
alt="3D reconstruction of the operative field from multiple cameras (CamiTK)"&gt;&lt;figcaption&gt;
&lt;p&gt;3D reconstruction of the operative field from multiple cameras (CamiTK)&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;The project remained at the research prototype stage but led to a &lt;strong&gt;European patent filing&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id="skills-applied-2"&gt;Skills Applied&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Stereoscopic computer vision&lt;/li&gt;
&lt;li&gt;Multi-camera optical system calibration&lt;/li&gt;
&lt;li&gt;Hardware/software integration&lt;/li&gt;
&lt;li&gt;Patent writing&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="related-output"&gt;Related Output&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;[Patent EP 2016]&lt;/strong&gt; P. Cinquin, S. Voros, C. Boschet, C. Fouard, A. Moreau-Gaudry — &lt;em&gt;Imaging system for the three dimensional observation of an operation field&lt;/em&gt; —
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="what-these-projects-taught-me"&gt;What These Projects Taught Me&lt;/h2&gt;
&lt;p&gt;These three collaborations were a &lt;strong&gt;practical school in medical prototyping&lt;/strong&gt; — and far more than a checklist of technical skills.&lt;/p&gt;
&lt;p&gt;I learned to work with real, imperfect clinical data, often without ground truth available to validate the algorithms. I developed the reflex of &lt;strong&gt;designing rigorous evaluation protocols&lt;/strong&gt; where standard benchmarks didn&amp;rsquo;t exist, and of &lt;strong&gt;integrating operating room constraints&lt;/strong&gt; from the design phase — time pressure, sterility requirements, ergonomics for the surgeon.&lt;/p&gt;
&lt;p&gt;I also shaped my collaborative approach: learning to ask the right questions to clinicians, to translate a medical need into an algorithmic problem, to deliver tools integrated into a software platform usable by non-computer-scientists.&lt;/p&gt;
&lt;p&gt;These skills — built &lt;em&gt;alongside&lt;/em&gt; a sustained effort in scientific publication and formal knowledge production — are the ones I bring today to medical application prototyping.&lt;/p&gt;</description></item><item><title>A modular CT/MRI-guided teleoperation platform for robot assisted punctures planning</title><link>https://celine-fouard.fr/publication/2014-dorileo-ijcars/</link><pubDate>Sat, 28 Jun 2014 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/publication/2014-dorileo-ijcars/</guid><description/></item><item><title>Automatic 3D seed location and orientation detection in CT image for prostate brachytherapy</title><link>https://celine-fouard.fr/publication/2014-nguyen-isbi/</link><pubDate>Tue, 29 Apr 2014 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/publication/2014-nguyen-isbi/</guid><description/></item><item><title>Fully Automatic Organ Localization in Medical Images Using Improved Random Regression Forests</title><link>https://celine-fouard.fr/publication/2014-samarakoon-surgetica/</link><pubDate>Wed, 01 Jan 2014 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/publication/2014-samarakoon-surgetica/</guid><description/></item><item><title>Observations of Lightly Flexible Needle Deflection in 3D CT/MRI</title><link>https://celine-fouard.fr/publication/2014-dorileo-surgetica/</link><pubDate>Wed, 01 Jan 2014 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/publication/2014-dorileo-surgetica/</guid><description/></item><item><title>Using CamiTK for Rapid Prototyping of Interactvie Computer Assisted Medical Intervention Applications</title><link>https://celine-fouard.fr/publication/2013-promayon-embc/</link><pubDate>Wed, 03 Jul 2013 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/publication/2013-promayon-embc/</guid><description/></item><item><title>Consideration of seeds orientation in prostate brachytherapy and dosimetric analysis</title><link>https://celine-fouard.fr/publication/2013-meneu-physicamedica/</link><pubDate>Sat, 01 Jun 2013 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/publication/2013-meneu-physicamedica/</guid><description/></item><item><title>CamiTK: a Modular Framework Integrating Visualization, Image Processing and Biomechanical Modeling</title><link>https://celine-fouard.fr/publication/2012-fouard-stbmcas/</link><pubDate>Tue, 03 Jul 2012 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/publication/2012-fouard-stbmcas/</guid><description/></item><item><title>CamiTK: a Modular Framework Integrating Visualization, Image Processing and Biomechanical Modeling</title><link>https://celine-fouard.fr/publication/2011-fouard-vph/</link><pubDate>Mon, 21 Nov 2011 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/publication/2011-fouard-vph/</guid><description/></item><item><title>CamiTK: a workshop for prototyping medical applications</title><link>https://celine-fouard.fr/projects/camitk/</link><pubDate>Tue, 01 Nov 2011 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/projects/camitk/</guid><description>&lt;p&gt;&lt;em&gt;From software to method — capitalizing on interdisciplinary know-how to move faster, from concept to validated prototype.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Designing an application for the operating room is never &amp;ldquo;just code.&amp;rdquo; It means getting medical images, sensors, biomechanical models — sometimes a robot — and above all specialists who don&amp;rsquo;t speak the same technical language, to work together. &lt;strong&gt;CamiTK&lt;/strong&gt; is the tool I co-founded with Emmanuel Promayon &lt;strong&gt;so that this dialogue produces prototypes&lt;/strong&gt; — fast, clean, and reusable. It is also the foundation of expertise I now draw on to help companies prototype medical applications.&lt;/p&gt;
&lt;div class="camitk-logo"&gt;&lt;style&gt;.camitk-logo{display:flex;justify-content:center;margin:1.75rem 0;}.camitk-logo img{max-width:240px;height:auto;}&lt;/style&gt;&lt;figure&gt;&lt;img src="https://celine-fouard.fr/projects/camitk/camitk-logo.png"
alt="CamiTK logo"&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;h2 id="the-problem-interdisciplinarity-is-expensive"&gt;The problem: interdisciplinarity is expensive&lt;/h2&gt;
&lt;p&gt;In computer-assisted medical interventions, every team shows up with its own world: its operating system, its language of choice, its libraries, its habits — and its level of maturity, from throwaway prototype to clinical-grade software. With each new project, the temptation is to rewrite everything. You reinvent the wheel, you lose months, and the know-how walks out the door when someone leaves the team.&lt;/p&gt;
&lt;p&gt;For a company, this is exactly the pain point: &lt;em&gt;how do you avoid starting from scratch with every innovation, while keeping the rigor that medical work demands?&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="the-answer-a-shared-software-foundation"&gt;The answer: a shared software foundation&lt;/h2&gt;
&lt;p&gt;With Emmanuel Promayon, we designed CamiTK as a &lt;strong&gt;modular workshop&lt;/strong&gt;: a stable core that handles what is common to every project — 3D visualization, interaction, data and input/output management, abstraction of medical formats (DICOM, meshes…) — and around which each specialist plugs in their own domain &lt;strong&gt;extension&lt;/strong&gt;, without touching the rest.&lt;/p&gt;
&lt;div class="camitk-archi"&gt;&lt;style&gt;.camitk-archi{width:100%;margin:1.75rem 0;}.camitk-archi figure{width:100%;margin:0;}.camitk-archi img{width:100%;height:auto;max-width:100%;}&lt;/style&gt;&lt;figure&gt;&lt;img src="https://celine-fouard.fr/projects/camitk/camitk-architecture.svg"
alt="CamiTK modular architecture: a shared core and discipline-specific extensions"&gt;&lt;figcaption&gt;
&lt;p&gt;CamiTK&amp;rsquo;s building-block architecture: a shared core, an interface layer, and one extension per domain of expertise.&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;This architectural choice (a C++/Qt/VTK core, following component-based software engineering) delivers what a company looks for in a technical foundation. And since version 5, CamiTK also accepts &lt;strong&gt;Python extensions&lt;/strong&gt;: you can prototype an idea in a few lines, then harden it in C++ once validated — exactly the right trade-off between exploration speed and production robustness.&lt;/p&gt;
&lt;p&gt;In practice, the foundation provides:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cross-platform&lt;/strong&gt; — the same code runs on Linux, Windows and macOS.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Interoperability&lt;/strong&gt; — the building blocks of one project are reused in the next.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Default behaviors&lt;/strong&gt; — a specialist plugs in their algorithm and immediately gets a working application, without rewriting the interface.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Intellectual-property safeguards&lt;/strong&gt; — each module keeps its own license; the open-source core coexists with proprietary extensions (as was the case for the confidential LPR modules).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Durability&lt;/strong&gt; — the knowledge stays in the tool, not only in people&amp;rsquo;s heads.&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- Screenshots of applications developed with CamiTK (segmentation, registration, robot guidance, etc.) --&gt;
&lt;figure&gt;&lt;img src="https://celine-fouard.fr/projects/camitk/camitk-capture-1.png"
alt="Application prototyped with CamiTK"&gt;&lt;figcaption&gt;
&lt;p&gt;Example of an application prototyped with CamiTK.&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id="from-software-building-block-to-method"&gt;From software building block to method&lt;/h2&gt;
&lt;p&gt;CamiTK&amp;rsquo;s most valuable contribution is not the code: it is what its practice taught us. By guiding real projects all the way to technology transfer — first among them the
— we &lt;strong&gt;generalized a methodology for maturing&lt;/strong&gt; software building blocks for medical devices, aligned with the TRL (&lt;em&gt;Technology Readiness Levels&lt;/em&gt;) scale.&lt;/p&gt;
&lt;p&gt;Concretely: knowing what maturity level a prototype sits at, what it takes to reach the next one, and where to invest validation and software-quality effort so you don&amp;rsquo;t get stuck at the moment of industrial or clinical transfer. This is exactly the kind of course a company needs to hold when moving an idea from the lab to a product.&lt;/p&gt;
&lt;p&gt;Over the projects, CamiTK thus became a &lt;strong&gt;dual methodological tool&lt;/strong&gt;: to make disciplines collaborate, and to structure the climb up the TRL scale.&lt;/p&gt;
&lt;h2 id="adoption-as-proof"&gt;Adoption as proof&lt;/h2&gt;
&lt;p&gt;A method is only worth as much as its ability to outlive its authors. CamiTK has passed that test: released as open source, &lt;strong&gt;packaged in the official &lt;code&gt;debian-med&lt;/code&gt; suite&lt;/strong&gt;, adopted by internal and national projects, and — the most telling proof — &lt;strong&gt;still actively developed&lt;/strong&gt; more than fifteen years after it began (version 6.0, with new tools such as DevStudio to create an extension in minutes).&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://celine-fouard.fr/projects/camitk/camitk-timeline.svg"
alt="Timeline of CamiTK adoption from 2008 to today"&gt;&lt;figcaption&gt;
&lt;p&gt;A continuous adoption trajectory, from the lab to the open-source ecosystem.&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;This project also gave me the chance to &lt;strong&gt;coordinate and co-supervise a team of engineers&lt;/strong&gt; — up to four at once — over several years: hiring, organizing development, code review, documentation, and nurturing a community of users.&lt;/p&gt;
&lt;h2 id="what-i-take-from-it--and-what-i-can-bring"&gt;What I take from it — and what I can bring&lt;/h2&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;I founded and structured CamiTK; today, I use it daily as an expert.&lt;/strong&gt; This dual standpoint — the one who designed the architecture &lt;em&gt;and&lt;/em&gt; the one who uses it — lets me bring to a company:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a &lt;strong&gt;durable software architecture&lt;/strong&gt; designed for reuse and cross-platform support;&lt;/li&gt;
&lt;li&gt;a &lt;strong&gt;maturity-scaling (TRL) method&lt;/strong&gt; proven on real technology transfers;&lt;/li&gt;
&lt;li&gt;the ability to make &lt;strong&gt;very different profiles collaborate&lt;/strong&gt; (clinical, research, engineering, industry) around a single prototype;&lt;/li&gt;
&lt;li&gt;fine-grained &lt;strong&gt;intellectual-property management&lt;/strong&gt; in an ecosystem mixing open source and proprietary building blocks;&lt;/li&gt;
&lt;li&gt;the &lt;strong&gt;supervision of technical teams&lt;/strong&gt; over the long term.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h2 id="publications"&gt;Publications&lt;/h2&gt;
&lt;ul class="pubs-by-tag"&gt;
&lt;li&gt;
&lt;strong&gt;2013&lt;/strong&gt;.
Promayon Emmanuel, Fouard Céline, Deram Aurélien, Hungr Nikolaï, Luboz Vincent, Payan Yohan, Sarrazin Johan, Saubat Nicolas, Selmi Sonia Yuki, Voros Sandrine, Cinquin Philippe, Troccaz Jocelyne —
&lt;a href="https://celine-fouard.fr/publication/2013-promayon-embc/"&gt;Using CamiTK for Rapid Prototyping of Interactvie Computer Assisted Medical Intervention Applications&lt;/a&gt;. &lt;em&gt;Proceedings of 35th Annual International Conference of the IEEE EMBS&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2012&lt;/strong&gt;.
Fouard Céline, Deram Aurélien, Keraval Yannick, Promayon Emmanuel —
&lt;a href="https://celine-fouard.fr/publication/2012-fouard-stbmcas/"&gt;CamiTK: a Modular Framework Integrating Visualization, Image Processing and Biomechanical Modeling&lt;/a&gt;. &lt;em&gt;Soft Tissue Biomechanical Modeling for Computer Assisted Surgery&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;CamiTK is the thread that runs through all my projects, from the
to
: the conviction that a good medical prototype begins with good engineering — shared, and built to last.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Interventional radiology robot for CT and MRI guided percutaneous interventions</title><link>https://celine-fouard.fr/publication/2011-hungr-miccai/</link><pubDate>Sun, 18 Sep 2011 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/publication/2011-hungr-miccai/</guid><description/></item><item><title>Non invasive ultrasound-based bone tracking</title><link>https://celine-fouard.fr/publication/2010-schers-caos/</link><pubDate>Wed, 16 Jun 2010 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/publication/2010-schers-caos/</guid><description/></item><item><title>3D/3D ultrasound registration for panoramic volume reconstruction</title><link>https://celine-fouard.fr/publication/2009-schers-cars/</link><pubDate>Tue, 23 Jun 2009 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/publication/2009-schers-cars/</guid><description/></item><item><title>Imaging System for Three-Dimensional Observation of an Operative Site</title><link>https://celine-fouard.fr/publication/2008-cinquin-patent/</link><pubDate>Wed, 20 Aug 2008 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/publication/2008-cinquin-patent/</guid><description/></item><item><title>LPR: A CT and MR-compatible puncture robot to enhance accuracy and safety of image-guided interventions</title><link>https://celine-fouard.fr/publication/2008-zemiti-tm/</link><pubDate>Fri, 13 Jun 2008 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/publication/2008-zemiti-tm/</guid><description/></item><item><title>Light Puncture Robot for CT and MRI Interventions</title><link>https://celine-fouard.fr/publication/2008-bricault-embm/</link><pubDate>Fri, 23 May 2008 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/publication/2008-bricault-embm/</guid><description/></item><item><title>3D/4D ultrasound registration of bone</title><link>https://celine-fouard.fr/publication/2007-schers-ius/</link><pubDate>Mon, 01 Oct 2007 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/publication/2007-schers-ius/</guid><description/></item><item><title>Weighted distance transforms generalized to modules and their computation on point lattices</title><link>https://celine-fouard.fr/publication/2007-fouard-pr/</link><pubDate>Sat, 01 Sep 2007 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/publication/2007-fouard-pr/</guid><description/></item><item><title>An Objective Comparison between Gray Weighted Distance Transforms and Weighted Distance Transforms On Curved Spaces</title><link>https://celine-fouard.fr/publication/2006-fouard-dgci/</link><pubDate>Wed, 25 Oct 2006 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/publication/2006-fouard-dgci/</guid><description/></item><item><title>Generating Distance Maps with Neighbourhood Sequences</title><link>https://celine-fouard.fr/publication/2006-strand-dgci/</link><pubDate>Wed, 25 Oct 2006 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/publication/2006-strand-dgci/</guid><description/></item><item><title>Blockwise processing applied to brain microvascular network study</title><link>https://celine-fouard.fr/publication/2006-fouard-tmi/</link><pubDate>Mon, 25 Sep 2006 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/publication/2006-fouard-tmi/</guid><description/></item><item><title>From mathematical foundations to medical images</title><link>https://celine-fouard.fr/projects/postdoc-uppsala/</link><pubDate>Tue, 01 Aug 2006 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/projects/postdoc-uppsala/</guid><description>
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;This project deliberately steps away from applied prototyping. It reflects another side of my approach: the ability to work at a rigorous level of mathematical abstraction, to produce formal proofs, and to publish in leading discrete mathematics journals — while keeping a concrete medical imaging application in view.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;From September 2005 to August 2006, I held a postdoctoral position at the
at Uppsala University, Sweden — one of the founding laboratories of discrete geometry applied to images. There I had the opportunity to work alongside
, a pioneer of the field, whose 1986 paper on distance transforms in digital images remains a landmark reference cited by thousands of researchers — including today in the computation of loss functions for U-Net networks in deep learning segmentation.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="the-starting-point-computing-distances-in-an-image"&gt;The starting point: computing distances in an image&lt;/h2&gt;
&lt;p&gt;A &lt;strong&gt;distance transform&lt;/strong&gt; is a fundamental operation in image processing: for each pixel of an object, it computes its distance to the nearest boundary. It is ubiquitous — segmentation, skeletonisation, registration, cost function computation in machine learning.&lt;/p&gt;
&lt;p&gt;The Euclidean distance is the most natural, but it raises two practical issues:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It is &lt;strong&gt;continuous&lt;/strong&gt;, and therefore expensive to compute exactly on a discrete grid.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;squared&lt;/strong&gt; Euclidean distance (d²E), which is discrete, does not satisfy the triangle inequality.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This second point deserves an illustration. The triangle inequality simply states that the direct path between two points can never be longer than going via an intermediate stop — it is the fundamental property of any mathematically valid distance.&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://celine-fouard.fr/projects/postdoc-uppsala/triangle_inequality.svg"
alt="2D example: d²E(p,q) = 9 &amp;gt; d²E(p,o) &amp;#43; d²E(o,q) = 7. The detour via o is cheaper than the direct path — the shortest path is not the straight line!"&gt;&lt;figcaption&gt;
&lt;p&gt;2D example: d²E(p,q) = 9 &amp;gt; d²E(p,o) + d²E(o,q) = 7. The detour via o is cheaper than the direct path — the shortest path is not the straight line!&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;The &lt;strong&gt;chamfer distance&lt;/strong&gt; solves this: it is an efficient way to compute distances in a digital image without examining every possible path. Each displacement direction (4-connected, 8-connected neighbour, etc.) is assigned a local weight, and these weights are propagated in a simple two-pass scan of the image. The result is a discrete, integer-valued, fast-to-compute distance — which, under certain conditions on the weights, satisfies all the properties of a mathematical norm.&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://celine-fouard.fr/projects/postdoc-uppsala/chamfer_forward.png"
alt="Chamfer algorithm — 1st pass: propagation left to right, top to bottom"&gt;&lt;figcaption&gt;
&lt;p&gt;Chamfer algorithm — 1st pass: propagation left to right, top to bottom&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;&lt;img src="https://celine-fouard.fr/projects/postdoc-uppsala/chamfer_backward.png"
alt="Chamfer algorithm — 2nd pass: propagation right to left, bottom to top"&gt;&lt;figcaption&gt;
&lt;p&gt;Chamfer algorithm — 2nd pass: propagation right to left, bottom to top&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;hr&gt;
&lt;h2 id="the-specific-problem-medical-images-are-anisotropic"&gt;The specific problem: medical images are anisotropic&lt;/h2&gt;
&lt;p&gt;On an &lt;strong&gt;isotropic&lt;/strong&gt; grid (square pixels, cubic voxels), chamfer distances are well understood. But medical images are rarely isotropic.&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://celine-fouard.fr/projects/postdoc-uppsala/anisotropic_medical.png"
alt="Anisotropic medical image: voxels are elongated in the axial direction"&gt;&lt;figcaption&gt;
&lt;p&gt;Anisotropic medical image: voxels are elongated in the axial direction&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;A typical CT scan has a resolution of 0.5 mm × 0.5 mm within the axial plane, but 2 to 5 mm between slices. If one naively applies a chamfer algorithm designed for an isotropic grid to such an image, the computed distances no longer satisfy the triangle inequality — and can lead to geometric absurdities where the direct path between two points appears longer than a detour.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The standard workaround&lt;/strong&gt; is to resample the image to make it isotropic before computing distances. But this resampling introduces artefacts and significantly increases processing overhead.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="my-contribution-a-unified-theory-for-arbitrary-grids"&gt;My contribution: a unified theory for arbitrary grids&lt;/h2&gt;
&lt;p&gt;My postdoctoral work consisted in developing a general mathematical framework for computing chamfer distances directly on any grid — in particular the anisotropic grids of medical images — with the formal guarantee that the resulting distance is a genuine &lt;strong&gt;norm&lt;/strong&gt; in the mathematical sense (positive, symmetric, triangle inequality, positive homogeneity).&lt;/p&gt;
&lt;p&gt;The key insight is the notion of a &lt;strong&gt;module&lt;/strong&gt;: by generalising the standard discrete grid framework (Z²) to that of modules over commutative rings, I was able to establish the necessary and sufficient conditions on the chamfer mask weights to guarantee the norm property — independently of the grid geometry.&lt;/p&gt;
&lt;p&gt;This work led to three major contributions:&lt;/p&gt;
&lt;h3 id="1-distances-on-general-grids--proof-of-the-norm"&gt;1. Distances on general grids — proof of the norm&lt;/h3&gt;
&lt;p&gt;The main paper in &lt;em&gt;Pattern Recognition&lt;/em&gt; (2007) establishes the complete theory: definitions, properties (distance, metric, norm), validity conditions for the sequential two-scan algorithm, and application to FCC (&lt;em&gt;face-centered cubic&lt;/em&gt;) and BCC (&lt;em&gt;body-centered cubic&lt;/em&gt;) grids — crystallographic structures with optimal sampling properties for 3D medical imaging.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;My contribution&lt;/strong&gt;: I was the primary author of this paper. I developed the generalisation to modules, established the validity conditions for the two-pass algorithm on arbitrary grids, and computed the optimal weights for FCC and BCC grids.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;[Pattern Recognition 2007]&lt;/strong&gt; C. Fouard, R. Strand, G. Borgefors — &lt;em&gt;Weighted distance transforms generalized to modules and their computation on point lattices&lt;/em&gt; —
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="2-distances-on-non-standard-grids-via-neighbourhood-sequences"&gt;2. Distances on non-standard grids via neighbourhood sequences&lt;/h3&gt;
&lt;p&gt;An extension to distances defined by neighbourhood sequences (which allow even better isotropy), with formal proof of the conditions for the sequential algorithm to produce correct distance maps on square, cubic, FCC, and BCC grids.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;[DGCI 2006]&lt;/strong&gt; R. Strand, B. Nagy, C. Fouard, G. Borgefors — &lt;em&gt;Generating distance maps with neighbourhood sequences&lt;/em&gt; —
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="3-comparison-of-grey-level-distance-transforms"&gt;3. Comparison of grey-level distance transforms&lt;/h3&gt;
&lt;p&gt;A comparative study of two distance definitions on grey-level images (GWDT and WDTOCS), with theoretical and experimental analysis of their respective behaviours on different image types (density maps, height maps).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;[DGCI 2006]&lt;/strong&gt; C. Fouard, M. Gedda — &lt;em&gt;Distance transforms on curved spaces&lt;/em&gt; —
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="what-this-work-gave-me"&gt;What this work gave me&lt;/h2&gt;
&lt;p&gt;Those twelve months in Uppsala taught me to hold two stances simultaneously: that of the mathematician who proves, and that of the engineer who solves a concrete problem. Formal rigour is not an end in itself — it is what guarantees that an algorithm will behave correctly on real data, including in the edge cases one did not anticipate.&lt;/p&gt;
&lt;p&gt;The indirect impact of this work on medical imaging practice is real: most modern segmentation tools, including U-Net networks that compute their loss functions from distance maps, build on these theoretical foundations. I have not yet had the opportunity to apply these anisotropic distances directly in my applied research projects in Grenoble — but it is a direction I keep in mind, particularly for processing medical images without prior resampling.&lt;/p&gt;</description></item><item><title>A Novel Three-Dimensional Computer-Assisted Method for a Quantitative Study of Microvascular Networks of the Human Cerebral Cortex</title><link>https://celine-fouard.fr/publication/2006-cassot-microcirculation/</link><pubDate>Sun, 01 Jan 2006 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/publication/2006-cassot-microcirculation/</guid><description/></item><item><title>3-D chamfer distances and norms in anisotropic grids</title><link>https://celine-fouard.fr/publication/2005-fouard-ivc/</link><pubDate>Tue, 01 Feb 2005 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/publication/2005-fouard-ivc/</guid><description/></item><item><title>Extraction de paramètres morphométriques pour l'étude du réseau micro-vasculaire cérébral</title><link>https://celine-fouard.fr/publication/2005-fouard-phd/</link><pubDate>Fri, 21 Jan 2005 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/publication/2005-fouard-phd/</guid><description/></item><item><title>Extraction of morphometric parameters for the study of the cerebral micro-vascular network</title><link>https://celine-fouard.fr/projects/these/</link><pubDate>Fri, 21 Jan 2005 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/projects/these/</guid><description>&lt;p&gt;&lt;em&gt;Measuring the brain in 3D: from microscopy to software tools.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;My PhD took place at &lt;strong&gt;INRIA Sophia Antipolis&lt;/strong&gt;, in the Epidaure team, under the supervision of Grégoire Malandain. It was part of the &lt;strong&gt;MicroVisu3D&lt;/strong&gt; project, which brought together three worlds: the &lt;strong&gt;anatomists&lt;/strong&gt; at INSERM (unit U455), who needed to quantify cerebral microcirculation; the &lt;strong&gt;image-analysis&lt;/strong&gt; researchers at INRIA; and an &lt;strong&gt;industrial partner&lt;/strong&gt;, TGS Europe, publisher of the 3D visualization software &lt;em&gt;Amira&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;It was a &lt;strong&gt;CIFRE thesis&lt;/strong&gt;, funded by the company: from the very start of my doctorate, I worked at the direct interface between academic research and industry. My role was to translate a scientific need — &lt;em&gt;&amp;ldquo;to be able to measure the cortical vascular network in 3D&amp;rdquo;&lt;/em&gt; — into a concrete set of software tools, usable by non-programmers and integrable into an existing industrial environment.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;This work led to publications in international peer-reviewed journals and conferences. But beyond the scientific output, what I describe here is an experience of &lt;strong&gt;applied R&amp;amp;D delivered end to end&lt;/strong&gt; — from gathering the need to shipping field-tested tools.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This thesis embodies an idea that still guides my work today: &lt;strong&gt;an algorithm is only worth as much as its robustness on real data — imperfect, voluminous, and all different from one another.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="the-challenge-measuring-a-vast-network-at-micron-scale"&gt;The challenge: measuring a vast network at micron scale&lt;/h2&gt;
&lt;p&gt;To study the cerebral micro-vascular network, the anatomists needed images able to capture &lt;strong&gt;the smallest capillary&lt;/strong&gt; (resolution of a few microns) over a &lt;strong&gt;cortical surface large enough&lt;/strong&gt; to be statistically significant (on the order of a centimetre). No instrument could acquire such an image in a single shot.&lt;/p&gt;
&lt;p&gt;The chosen solution: &lt;strong&gt;tile the area to be imaged with many small images&lt;/strong&gt; acquired under a confocal microscope, then assemble them into a single large &amp;ldquo;image mosaic&amp;rdquo;. This solved the acquisition problem, but created two new ones:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the resulting mosaic was &lt;strong&gt;too large to be loaded into the memory&lt;/strong&gt; of a standard computer and processed in one go;&lt;/li&gt;
&lt;li&gt;the confocal microscope imposes an &lt;strong&gt;anisotropic grid&lt;/strong&gt; (voxels are not cubic), which complicates any distance measurement in the image — and therefore any computation of vessel diameter.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;img src="https://celine-fouard.fr/projects/these/mosaique-images.png"
alt="A mosaic of 118 confocal microscopy images covering a cortical sulcus (≈ 0.8 × 0.8 cm)"&gt;&lt;figcaption&gt;
&lt;p&gt;A mosaic of 118 confocal microscopy images covering a cortical sulcus (≈ 0.8 × 0.8 cm)&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id="my-approach-an-end-to-end-processing-pipeline"&gt;My approach: an end-to-end processing pipeline&lt;/h2&gt;
&lt;p&gt;I designed a complete pipeline, from the sensor to the measurement, built from the outset to run on data that does not fit in memory.&lt;/p&gt;
&lt;div class="mermaid"&gt;flowchart LR
A["Acquisition&lt;br/&gt;confocal mosaic"] --&gt; B["Registration &amp;&lt;br/&gt;realignment"]
B --&gt; C["Single&lt;br/&gt;virtual image"]
C --&gt; D["Block-wise processing&lt;br/&gt;(out-of-core)"]
D --&gt; E["Distance maps&lt;br/&gt;+ centerlines"]
E --&gt; F["Measurement &amp;&lt;br/&gt;3D visualization"]
&lt;/div&gt;
&lt;p&gt;Two links in this pipeline gave rise to original methodological contributions: the computation of &lt;strong&gt;distance maps&lt;/strong&gt; and the extraction of &lt;strong&gt;centerlines&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id="contribution-1--distance-maps-that-adapt-on-their-own"&gt;Contribution 1 — Distance maps that adapt on their own&lt;/h2&gt;
&lt;p&gt;To measure the radius of a vessel at each point, one computes a &lt;em&gt;distance map&lt;/em&gt;: at each voxel, the distance to the nearest boundary. The exact Euclidean distance is costly; &lt;strong&gt;chamfer distances&lt;/strong&gt; approximate it very efficiently by propagating small integer weights between neighbouring voxels.&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://celine-fouard.fr/projects/these/carte-distance.png"
alt="A binary shape and its distance map: at each point, the distance to the nearest boundary"&gt;&lt;figcaption&gt;
&lt;p&gt;A binary shape and its distance map: at each point, the distance to the nearest boundary&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;The tricky part: on an anisotropic grid — the case for almost every medical imaging modality — these weights have to be recomputed, and choosing them by hand is fragile and modality-specific.&lt;/p&gt;
&lt;p&gt;My contribution was to propose an &lt;strong&gt;automatic computation of the optimal chamfer coefficients&lt;/strong&gt;, the set that minimizes the error against the true Euclidean distance — and this &lt;strong&gt;whatever the grid anisotropy or the imaging modality&lt;/strong&gt;, with no manual tuning. The same method therefore applies equally to a CT scan, an MRI or a confocal microscope.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;The theoretical foundations of these chamfer masks were deepened during my post-doctorate: see
.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="contribution-2--extracting-centerlines-even-out-of-core"&gt;Contribution 2 — Extracting centerlines, even out-of-core&lt;/h2&gt;
&lt;p&gt;From the distance map, one extracts the &lt;strong&gt;centerlines&lt;/strong&gt; of the vessels — the curves running through the centre of each vessel. They capture the topology of the network and make it possible to measure lengths, branchings and radii.&lt;/p&gt;
&lt;p&gt;Classical skeletonization methods require loading the whole image into memory — impossible here. So I proposed a &lt;strong&gt;block-wise skeletonization&lt;/strong&gt; that works on sub-images while preserving the three essential properties of a skeleton: &lt;strong&gt;homotopy&lt;/strong&gt; (same topology as the original object), &lt;strong&gt;localization&lt;/strong&gt; (the skeleton stays centred) and &lt;strong&gt;thinness&lt;/strong&gt;. The algorithm also minimizes the number of sub-image accesses, to keep computation time acceptable.&lt;/p&gt;
&lt;figure&gt;&lt;img src="squelette-comparaison.png"
alt="Skeletonization of an object: without tiling (a), by processing blocks separately (b), and with our method (c), which preserves topology"&gt;&lt;figcaption&gt;
&lt;p&gt;Skeletonization of an object: without tiling (a), by processing blocks separately (b), and with our method (c), which preserves topology&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Once centerlines and radii are obtained, the vessels are modelled as &lt;strong&gt;sets of cylinders&lt;/strong&gt; (the &lt;em&gt;LineSet&lt;/em&gt; data structure), allowing both real-time 3D visualization and the extraction of quantitative parameters: distributions of diameters, of lengths, vascular densities per cortical layer, and so on.&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://celine-fouard.fr/projects/these/lignes-centrales.png"
alt="Overview of the centerlines of the reconstructed micro-vascular network in 3D"&gt;&lt;figcaption&gt;
&lt;p&gt;Overview of the centerlines of the reconstructed micro-vascular network in 3D&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id="a-generic-method-far-beyond-the-brain"&gt;A generic method, far beyond the brain&lt;/h2&gt;
&lt;p&gt;None of these methods makes any assumption specific to the brain. &lt;strong&gt;Any large binary image of tubular structures&lt;/strong&gt; can be processed in the same way. I validated it on plant roots; it transfers directly to neural networks, to the porosity of materials, even to pipeline mapping.&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://celine-fouard.fr/projects/these/racines-plantes.png"
alt="The same method applied to plant roots: concrete proof of the generality of the approach"&gt;&lt;figcaption&gt;
&lt;p&gt;The same method applied to plant roots: concrete proof of the generality of the approach&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;This ability to solve a problem in one domain and then transpose it elsewhere is at the heart of how I approach prototyping.&lt;/p&gt;
&lt;h2 id="skills-involved"&gt;Skills involved&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Gathering a scientific need and translating it into software specifications&lt;/li&gt;
&lt;li&gt;Collaboration with an industrial partner (CIFRE thesis, integration into the &lt;em&gt;Amira&lt;/em&gt; software / TGS Europe)&lt;/li&gt;
&lt;li&gt;Design of &lt;strong&gt;robust, automatic algorithms&lt;/strong&gt;, with no manual tuning&lt;/li&gt;
&lt;li&gt;Processing &lt;strong&gt;large, out-of-core data&lt;/strong&gt; (block by block)&lt;/li&gt;
&lt;li&gt;Discrete geometry, chamfer distances, discrete topology&lt;/li&gt;
&lt;li&gt;Design of &lt;strong&gt;validation&lt;/strong&gt; protocols (synthetic + real data)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="publications-from-the-thesis"&gt;Publications from the thesis&lt;/h2&gt;
&lt;ul class="pubs-by-tag"&gt;
&lt;li&gt;
&lt;strong&gt;2007&lt;/strong&gt;.
Fouard Céline, Strand Robin, Borgefors Gunilla —
&lt;a href="https://celine-fouard.fr/publication/2007-fouard-pr/"&gt;Weighted distance transforms generalized to modules and their computation on point lattices&lt;/a&gt;. &lt;em&gt;Pattern Recognition Vol 40 Issue 9&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2006&lt;/strong&gt;.
Fouard Céline, Gedda Magnus —
&lt;a href="https://celine-fouard.fr/publication/2006-fouard-dgci/"&gt;An Objective Comparison between Gray Weighted Distance Transforms and Weighted Distance Transforms On Curved Spaces&lt;/a&gt;. &lt;em&gt;Proceedings of DGCI 2006&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2006&lt;/strong&gt;.
Fouard Céline, Malandain Grégoire, Prohaska Steffen, Westerhoff Malte —
&lt;a href="https://celine-fouard.fr/publication/2006-fouard-tmi/"&gt;Blockwise processing applied to brain microvascular network study&lt;/a&gt;. *IEEE Transactions on Medical Imaging ( Volume: 25, Issue: 10, October 2006) *
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2006&lt;/strong&gt;.
Cassot Francis, Lauwers Frederic, Fouard celineProhaska Steffen, Lauwers-Cance Valérie —
&lt;a href="https://celine-fouard.fr/publication/2006-cassot-microcirculation/"&gt;A Novel Three-Dimensional Computer-Assisted Method for a Quantitative Study of Microvascular Networks of the Human Cerebral Cortex&lt;/a&gt;. &lt;em&gt;Microcirculation&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2005&lt;/strong&gt;.
Fouard Céline, Malandain Grégoire —
&lt;a href="https://celine-fouard.fr/publication/2005-fouard-ivc/"&gt;3-D chamfer distances and norms in anisotropic grids&lt;/a&gt;. &lt;em&gt;Image and Vision Computing&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2005&lt;/strong&gt;.
Fouard Céline —
&lt;a href="https://celine-fouard.fr/publication/2005-fouard-phd/"&gt;Extraction de paramètres morphométriques pour l&amp;#39;étude du réseau micro-vasculaire cérébral&lt;/a&gt;. Thèse de doctorat, &lt;em&gt;Université de Nice Sophia Antipolis&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2004&lt;/strong&gt;.
Kolesik Peter, Fouard Céline, Prohaska Steffen, McNeill Ann —
&lt;a href="https://celine-fouard.fr/publication/2004-kolesik-fspm/"&gt;Automated method for non-destructive 3D visualisation of plant root architecture using X-ray tomography&lt;/a&gt;. &lt;em&gt;4th International Workshop on Functional-Structural Plant Models&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2003&lt;/strong&gt;.
Fouard Céline, Malandain Grégoire —
&lt;a href="https://celine-fouard.fr/publication/2003-fouard-dgci/"&gt;Systematized calculation of optimal coefficients of 3-D chamfer norms&lt;/a&gt;. &lt;em&gt;Discrete Geometry for Computer Imagery, 11th International Conference, DGCI 2003&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="what-this-thesis-taught-me"&gt;What this thesis taught me&lt;/h2&gt;
&lt;p&gt;This thesis was, for me, &lt;strong&gt;a first school of applied prototyping&lt;/strong&gt; — far more than a theoretical exercise.&lt;/p&gt;
&lt;p&gt;Because it was a CIFRE thesis, I first learned to &lt;strong&gt;work between several worlds&lt;/strong&gt;: to ask anatomists the right questions, to translate their need into an algorithmic problem, and to deliver a result that could be integrated into an industrial partner&amp;rsquo;s software. This stance — a translator between use and technique — has stayed at the centre of my practice.&lt;/p&gt;
&lt;p&gt;I then built the reflex of &lt;strong&gt;designing robust, automatic methods&lt;/strong&gt;. Faced with data that was all different — varying anisotropic grids, uneven contrast — I sought algorithms that &lt;em&gt;adapt by themselves&lt;/em&gt; rather than multiplying manual settings, a source of fragility and variability.&lt;/p&gt;
&lt;p&gt;I also developed a taste for &lt;strong&gt;generality&lt;/strong&gt;: building tools that outgrow their initial use case. The same building blocks, designed for the brain, proved useful for plant roots — and many other domains.&lt;/p&gt;
&lt;p&gt;Finally, I learned to deal with a very concrete constraint: &lt;strong&gt;data too large for memory&lt;/strong&gt;. Thinking of computation piece by piece, without ever sacrificing the correctness of the result, is a skill that serves in any project handling large volumes.&lt;/p&gt;
&lt;p&gt;These skills — built &lt;em&gt;alongside&lt;/em&gt; a sustained effort of scientific publication — are the ones I now put at the service of medical-application prototyping.&lt;/p&gt;</description></item><item><title>Automated method for non-destructive 3D visualisation of plant root architecture using X-ray tomography</title><link>https://celine-fouard.fr/publication/2004-kolesik-fspm/</link><pubDate>Tue, 01 Jun 2004 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/publication/2004-kolesik-fspm/</guid><description/></item><item><title>Skeletonization by blocks for large 3D datasets: application to brain microcirculation</title><link>https://celine-fouard.fr/publication/2004-fouard-isbi/</link><pubDate>Sun, 18 Apr 2004 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/publication/2004-fouard-isbi/</guid><description/></item><item><title>Squelettisation par blocs pour de grands volumes de données 3D: application à la microcirculation cérébrale</title><link>https://celine-fouard.fr/publication/2004-fouard-rfia/</link><pubDate>Thu, 01 Jan 2004 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/publication/2004-fouard-rfia/</guid><description/></item><item><title>Systematized calculation of optimal coefficients of 3-D chamfer norms</title><link>https://celine-fouard.fr/publication/2003-fouard-dgci/</link><pubDate>Sat, 01 Nov 2003 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/publication/2003-fouard-dgci/</guid><description/></item><item><title>AI for health</title><link>https://celine-fouard.fr/topic/ia-sante/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/topic/ia-sante/</guid><description/></item><item><title>Discrete Geometry</title><link>https://celine-fouard.fr/topic/geometrie-discrete/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/topic/geometrie-discrete/</guid><description/></item><item><title>Interventional cardiology</title><link>https://celine-fouard.fr/projects/cardiologie/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/projects/cardiologie/</guid><description>&lt;p&gt;&lt;em&gt;From clinical need to prototype: guiding the gesture at the heart of the cath lab.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Interventional cardiology is performed under imaging, yet the clinician must often act without directly seeing the target: the lesion to treat or to biopsy does not appear on the real-time image in the room. Carried out with Prof. Gilles Barone-Rochette (Grenoble Alpes University Hospital) and the LTSI laboratory in Rennes, this project pursues a single goal expressed through two clinical questions: &lt;strong&gt;to give the cardiologist reliable guidance, built from preoperative imaging and usable directly in the room.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="the-common-thread-bouncing-back-when-the-data-runs-short"&gt;The common thread: bouncing back when the data runs short&lt;/h2&gt;
&lt;p&gt;The project started with the guidance of &lt;strong&gt;cell therapy&lt;/strong&gt;. The first clinical trial enrolled fewer patients than expected: the data needed for the next steps were not there. Rather than abandoning it, we &lt;strong&gt;redeployed the technical building blocks already developed&lt;/strong&gt; (image segmentation, navigation) toward a related clinical need with more immediate value and a better-identified bottleneck: &lt;strong&gt;endomyocardial biopsy&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This pivot is, in itself, a deliverable: it illustrates the ability to &lt;strong&gt;de-risk a project, preserve the assets already built, and refocus the effort&lt;/strong&gt; where the clinical value is highest — exactly the kind of trade-off a company expects when an R&amp;amp;D programme does not go as planned.&lt;/p&gt;
&lt;h2 id="sub-project-1--guiding-post-infarction-cell-therapy"&gt;Sub-project 1 — Guiding post-infarction cell therapy&lt;/h2&gt;
&lt;p&gt;After a heart attack, some therapies consist in re-injecting cells into the myocardium. The whole challenge is &lt;strong&gt;precision&lt;/strong&gt;: reaching the right areas, relying on information (the extent of fibrosis, the viable regions) that is only visible on preoperative imaging, not on the real-time image in the room.&lt;/p&gt;
&lt;p&gt;Our approach: &lt;strong&gt;fuse multimodal imaging&lt;/strong&gt; to transfer, during the intervention, the targets identified preoperatively. The core building block is the &lt;strong&gt;automatic segmentation of the myocardium and fibrosis on late gadolinium enhancement MRI (LGE-MRI)&lt;/strong&gt;, developed using deep learning as part of Erwan Lecesne&amp;rsquo;s PhD (co-supervised with the LTSI in Rennes), then integrated into
to be presented to the clinician in the room.&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://celine-fouard.fr/projects/cardiologie/injection-cellules.png"
alt="Re-injecting cells in the right place: the precision of the gesture determines the therapy&amp;rsquo;s effectiveness."&gt;&lt;figcaption&gt;
&lt;p&gt;Re-injecting cells in the right place: the precision of the gesture determines the therapy&amp;rsquo;s effectiveness.&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;CamiTK is a &lt;strong&gt;prototyping toolkit&lt;/strong&gt;: it makes it possible to move quickly from concept to evaluated prototype, but its output is not meant to be a CE-marked medical device. This building block is therefore a &lt;strong&gt;proof of concept&lt;/strong&gt;; its &lt;strong&gt;industrial transfer is currently under discussion&lt;/strong&gt; with partners in the field.&lt;/p&gt;
&lt;h2 id="sub-project-2--a-map-for-endomyocardial-biopsy"&gt;Sub-project 2 — A map for endomyocardial biopsy&lt;/h2&gt;
&lt;p&gt;Three conditions — cardiac sarcoidosis, chronic myocarditis and arrhythmogenic cardiomyopathy — can present a &lt;strong&gt;similar clinical picture yet call for opposite treatments&lt;/strong&gt;. To decide, a biopsy is needed… provided the sample is taken &lt;strong&gt;in the right place&lt;/strong&gt;.&lt;/p&gt;
&lt;div style="display: flex; justify-content: center;"&gt;&lt;figure&gt;&lt;img src="https://celine-fouard.fr/projects/cardiologie/ponction-endomyocardique.png"
alt="Endomyocardial biopsy: sampling a piece of cardiac tissue, where the lesion is located."&gt;&lt;figcaption&gt;
&lt;p&gt;Endomyocardial biopsy: sampling a piece of cardiac tissue, where the lesion is located.&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;The state of the art leaves a real gap:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;blind&amp;rdquo; biopsy is poorly specific, because the fibrosis to target stays invisible during the gesture;&lt;/li&gt;
&lt;li&gt;electro-anatomical guidance is long and, likewise, &lt;strong&gt;blind to fibrosis&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Our solution acts as a &lt;strong&gt;&amp;ldquo;GPS&amp;rdquo; for the biopsy catheter&lt;/strong&gt;: it transfers the target identified on preoperative imaging onto the real-time image, to guide the sampling. Two design choices make it a solution &lt;strong&gt;built for adoption&lt;/strong&gt;: it is &lt;strong&gt;hardware-independent&lt;/strong&gt; (compatible with an existing room) and works &lt;strong&gt;on real-time fluoroscopy, with no complex fusion step&lt;/strong&gt;. It &lt;strong&gt;directly reuses&lt;/strong&gt; the segmentation building block from the first sub-project.&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://celine-fouard.fr/projects/cardiologie/systeme-biopsie.png"
alt="Diagram of the proposed guidance system for endomyocardial biopsy (published)."&gt;&lt;figcaption&gt;
&lt;p&gt;Diagram of the proposed guidance system for endomyocardial biopsy (published).&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Current status: we are &lt;strong&gt;preparing the first clinical trials in the laboratory&lt;/strong&gt;; industrial transfer will follow.&lt;/p&gt;
&lt;h2 id="what-this-project-demonstrates"&gt;What this project demonstrates&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Designing from a real clinical need&lt;/strong&gt;, in close dialogue with practitioners, rather than around a technical feat.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mastering medical image processing and AI&lt;/strong&gt;, and putting them at the service of a precise, useful target.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Taking a prototype from the laboratory toward the clinic&lt;/strong&gt;, with a clear awareness of maturity stages (TRL), the trial framework and CE marking.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Architecting for adoption&lt;/strong&gt;: hardware independence, integration into a prototyping toolkit, reuse of building blocks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Refocusing a project to preserve its value&lt;/strong&gt;: agility and de-risking in the face of the unexpected.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Leading a multi-site collaboration&lt;/strong&gt; (Grenoble–Rennes) and co-supervising a PhD.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="funding-obtained"&gt;Funding obtained&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Funding&lt;/th&gt;
&lt;th&gt;Amount&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Famtastic project (France Life Imaging)&lt;/td&gt;
&lt;td&gt;€20,000&lt;/td&gt;
&lt;td&gt;Kick-starting the collaboration with the LTSI (Rennes)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PUI (UGA)&lt;/td&gt;
&lt;td&gt;€60,000&lt;/td&gt;
&lt;td&gt;Maturing the prototype toward the first clinical trials&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PhD funding (LabeX CAMI)&lt;/td&gt;
&lt;td&gt;€170,000&lt;/td&gt;
&lt;td&gt;Co-supervision of Erwan Lecesne&amp;rsquo;s PhD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Post-doctorate (LabeX CAMI)&lt;/td&gt;
&lt;td&gt;€56,000&lt;/td&gt;
&lt;td&gt;One year of post-doctoral engineering&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;€306,000&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="collaborations-and-supervision"&gt;Collaborations and supervision&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Prof. Gilles Barone-Rochette&lt;/strong&gt; — interventional cardiologist, Grenoble Alpes University Hospital: clinical partner of the project.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LTSI laboratory (Rennes)&lt;/strong&gt; — Professor Mireille Garreau and Antoine Simon (associate professor): collaboration on cardiac image processing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Erwan Lecesne&amp;rsquo;s PhD&lt;/strong&gt; (2020–2024), co-supervised at 50% with Mireille Garreau (LTSI): multimodal image processing to improve post-infarction cell therapy.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Théophile Tiffet&amp;rsquo;s PhD&lt;/strong&gt; — medical resident: echocardiography / SPECT calibration for interventional cardiology.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="related-publications"&gt;Related publications&lt;/h2&gt;
&lt;ul class="pubs-by-tag"&gt;
&lt;li&gt;
&lt;strong&gt;2024&lt;/strong&gt;.
Barone-Rochette Gilles, MD,, Erwan Lecesne, MSc,, Antoine Simon, PhD, Mireille Garreau, PhD,, Celine Fouard, PhD —
&lt;a href="https://celine-fouard.fr/publication/2024-barone-circulation/"&gt;New Method CMR-Guided Endomyocardial Biopsy in Suspicion Context of Isolated Cardiac Sarcoidosis&lt;/a&gt;. &lt;em&gt;Circulation: Cardiovascular Imaging, vol 17, no 4&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2023&lt;/strong&gt;.
Erwan Lecesne, Antoine Simon, Mireille Garreau, Barone-Rochette Gilles, Celine Fouard —
&lt;a href="https://celine-fouard.fr/publication/2023-lecesne-cmpb/"&gt;Segmentation of cardiac infarction in delayed-enhancement MRI using probability map and transformers-based neural networks&lt;/a&gt;. &lt;em&gt;Computer Methods and Programs in Biomedicine, vol 242&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2023&lt;/strong&gt;.
Lecesne Erwan, Simon Antoine, Garreau Mireille, Barone-Rochette Gilles, Fouard Céline —
&lt;a href="https://celine-fouard.fr/publication/2023-lecesne-ipta/"&gt;Transformers-Based Neural Network for Cardiac Infarction Segmentation in Delayed-Enhancement MRI&lt;/a&gt;. &lt;em&gt;2023 IEEE Twelfth International Conference on Image Processing Theory, Tools and Applications (IPTA)&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Medical image analysis</title><link>https://celine-fouard.fr/topic/analyse-images-medicales/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/topic/analyse-images-medicales/</guid><description/></item><item><title>Navigation &amp; robotics</title><link>https://celine-fouard.fr/topic/navigation-robotique/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/topic/navigation-robotique/</guid><description/></item><item><title>Project management &amp; maturation</title><link>https://celine-fouard.fr/topic/pilotage-projets/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://celine-fouard.fr/topic/pilotage-projets/</guid><description/></item></channel></rss>