<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Tutorial on Quentin's blog</title><link>https://blog.qligier.ch/tags/tutorial/</link><description>Recent content in Tutorial on Quentin's blog</description><generator>Hugo</generator><language>en-us</language><copyright>© 2025 Quentin Ligier</copyright><lastBuildDate>Sat, 03 Jan 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.qligier.ch/tags/tutorial/index.xml" rel="self" type="application/rss+xml"/><item><title>How to enable JSON or YAML validation with JSON Schemas in IntelliJ</title><link>https://blog.qligier.ch/posts/2026-intellij-jsonschema-for-yaml/</link><pubDate>Sat, 03 Jan 2026 00:00:00 +0000</pubDate><guid>https://blog.qligier.ch/posts/2026-intellij-jsonschema-for-yaml/</guid><description>&lt;p&gt;
 This is another article about plugin development for IntelliJ-based IDEs.
 In this article, I am describing how to implement some support for JSON or YAML files using a JSON Schema.
 While the JSON support is expected, the YAML support is a bit more surprising.
 It is possible because JSON and YAML are very similar formats, YAML 1.2 even being a superset of JSON.
&lt;/p&gt;

&lt;p&gt;
 I recently implemented that trick in my plugin
 &lt;a href="https://github.com/qligier/jetbrains-plugin-fss" target="_blank" rel="external noopener noreferrer nofollow" title="FHIR® and SUSHI Support"&gt;FHIR® and SUSHI Support&lt;/a&gt; to provide a better
 experience while working with a specific YAML file (the &lt;code&gt;sushi-config.yaml&lt;/code&gt; file).
 I discovered that neat feature in the
 &lt;a href="https://www.jetbrains.com/help/idea/yaml.html#json_schema" target="_blank" rel="external noopener noreferrer nofollow" title="YAML documentation"&gt;YAML documentation&lt;/a&gt;, but I had to use the
 &lt;a href="https://plugins.jetbrains.com/intellij-platform-explorer/extensions?extensions=JavaScript.JsonSchema.ProviderFactory" target="_blank" rel="external noopener noreferrer nofollow" title="IntelliJ Platform Explorer"&gt;IntelliJ Platform Explorer&lt;/a&gt;
 to discover how a plugin could register a new JSON Schema in the IDE.
 That topic isn't covered by the
 &lt;a href="https://plugins.jetbrains.com/docs/intellij/welcome.html" target="_blank" rel="external noopener noreferrer nofollow" title="IntelliJ Platform SDK Documentation"&gt;IntelliJ Platform SDK Documentation&lt;/a&gt;
 documentation, so I am sharing my findings here.
&lt;/p&gt;</description></item><item><title>How I migrated my emails from Infomaniak to Fastmail</title><link>https://blog.qligier.ch/posts/2025-migrating-mails-infomaniak-fastmail/</link><pubDate>Sun, 28 Dec 2025 00:00:00 +0000</pubDate><guid>https://blog.qligier.ch/posts/2025-migrating-mails-infomaniak-fastmail/</guid><description>&lt;p&gt;The reason for migrating is that I&amp;rsquo;ve been a bit disappointed by Infomaniak&amp;rsquo;s email service lately.
While parts of the service have improved, like the Android app that used to have really frequent updates, which would
log you out of your account on each update at the time.
But the webmail interface is still quite clunky, with some unnecessary nagging to set it as the default mailbox in
the browser (I haven&amp;rsquo;t seen such nagging in Gmail, for example).&lt;/p&gt;</description></item><item><title>Beginner's guide to Apache Camel and IPF for the Swiss EPR</title><link>https://blog.qligier.ch/posts/2024-how-to-send-requests-swiss-epr-camel-ipf/</link><pubDate>Sun, 29 Sep 2024 00:00:00 +0000</pubDate><guid>https://blog.qligier.ch/posts/2024-how-to-send-requests-swiss-epr-camel-ipf/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;a href="#introduction"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;In this article, I will focus on using these libraries with the Spring Boot integration.
While it is not mandatory to use Spring Boot, it is a good choice, as it makes configuring the application much easier.
IPF provides &lt;em&gt;starters&lt;/em&gt; dependencies that will automatically configure the Camel context and the IPF components for you.
I will present the manual configuration of the Camel context and the IPF components, as it is useful to understand how
everything works.&lt;/p&gt;</description></item><item><title>How to implement highlighted inline code blocks in Hugo</title><link>https://blog.qligier.ch/posts/2024-add-shortcode-hugo/</link><pubDate>Thu, 05 Sep 2024 00:00:00 +0000</pubDate><guid>https://blog.qligier.ch/posts/2024-add-shortcode-hugo/</guid><description>&lt;p&gt;I have written multiple documentation websites using &lt;a href="https://squidfunk.github.io/mkdocs-material/" title="Material for MkDocs" target="_blank" rel="external noopener noreferrer nofollow"&gt;Material for MkDocs&lt;/a&gt;,
and got used to the highlighted inline code blocks.
It allows adding code snippets inlined with the text, while keeping the syntax highlighted (for known languages).
The syntax chosen by the plugin that introduced this feature,
&lt;a href="https://facelessuser.github.io/pymdown-extensions/extensions/inlinehilite/" title="InlineHilite" target="_blank" rel="external noopener noreferrer nofollow"&gt;InlineHilite&lt;/a&gt;, uses a shebang to specify
the language: &lt;code&gt;#​!python print(&amp;ldquo;Hello, World!&amp;rdquo;)&lt;/code&gt; (surrounded with backticks) would be rendered as
&lt;code&gt;#!python print(&amp;quot;Hello, World!&amp;quot;)&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Implement syntax highlighting of a new language in JetBrains IDEs</title><link>https://blog.qligier.ch/posts/2024-jetbrains-add-syntax-highlighting/</link><pubDate>Mon, 18 Mar 2024 00:00:00 +0000</pubDate><guid>https://blog.qligier.ch/posts/2024-jetbrains-add-syntax-highlighting/</guid><description>&lt;p&gt;I regularly spend time working on FHIR ImplementationGuides, and I use the
&lt;a href="https://code.visualstudio.com/" title="Visual Studio Code" target="_blank" rel="external noopener noreferrer nofollow"&gt;Visual Studio Code&lt;/a&gt; IDE to develop them. It is an IDE I used to
work with, but as of lately, my preference goes to the &lt;a href="https://www.jetbrains.com/" title="Jetbrains" target="_blank" rel="external noopener noreferrer nofollow"&gt;Jetbrains&lt;/a&gt; IDEs.&lt;/p&gt;
&lt;p&gt;The FHIR ImplementationGuides are written in a mix of Markdown, HTML, XML, JSON, INI and a specific language called
&lt;a href="https://build.fhir.org/ig/HL7/fhir-shorthand/index.html" title="FHIR Shorthand" target="_blank" rel="external noopener noreferrer nofollow"&gt;FHIR Shorthand&lt;/a&gt; (FSH). While the former
languages are properly supported in many IDEs, the latest is only supported in Visual Studio Code through a
&lt;a href="https://marketplace.visualstudio.com/items?itemName=MITRE-Health.vscode-language-fsh" title="dedicated extension" target="_blank" rel="external noopener noreferrer nofollow"&gt;dedicated extension&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Improving performance of the IG Publisher: I/O operations</title><link>https://blog.qligier.ch/posts/2024-improving-perf-ig-publisher-io/</link><pubDate>Thu, 11 Jan 2024 00:00:00 +0000</pubDate><guid>https://blog.qligier.ch/posts/2024-improving-perf-ig-publisher-io/</guid><description>&lt;p&gt;The &lt;a href="https://github.com/HL7/fhir-ig-publisher" title="IG Publisher" target="_blank" rel="external noopener noreferrer nofollow"&gt;IG Publisher&lt;/a&gt; is the reference tool to build FHIR
implementation guides. It is a Java application built upon the FHIR Core library, that reads the implementation
guide sources and generates a FHIR package and a web documentation. It is a quite complex application, and new
versions are released quite regularly.&lt;/p&gt;
&lt;p&gt;I recently had to build a large implementation guide, and it took the IG Publisher around 3 hours to complete. The
memory usage was quite high (around 20 













&lt;abbr title="Gibibyte"&gt;GiB&lt;/abbr&gt;




























 at peak) and the result was a 2.57 













&lt;abbr title="Gibibyte"&gt;GiB&lt;/abbr&gt;





























directory. While waiting for the completion, I was wondering if there was a way to reduce the completion time.&lt;/p&gt;</description></item></channel></rss>