<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <id>https://romain-clement.net/articles/</id>
  <title>Articles | Romain Clement</title>
  <updated>2026-04-09T00:00:00+00:00</updated>
  <generator>MkDocs 1.6.1</generator>
  <link rel="alternate" href="https://romain-clement.net/articles/"/>
  <link rel="self" href="https://romain-clement.net/feed/articles/atom.xml"/>
  <subtitle>Freelance Data / Machine Learning Engineer &amp; Trainer</subtitle>
  <entry>
    <title>Python Pathlib complex glob patterns</title>
    <id>https://romain-clement.net/articles/python-pathlib-glob-patterns/</id>
    <link href="https://romain-clement.net/articles/python-pathlib-glob-patterns/?utm_source=website&amp;utm_medium=atom&amp;utm_campaign=feed-syndication"/>
    <updated>2023-09-18T00:00:00+00:00</updated>
    <summary>Combining multiple glob patterns using Python Pathlib, with functional programming style</summary>
    <content>Combining multiple glob patterns using Python Pathlib, with functional programming style</content>
    <author>
      <name>Romain Clement</name>
      <email>contact@romain-clement.net</email>
      <uri>https://romain-clement.net</uri>
    </author>
    <published>2023-09-18T00:00:00+00:00</published>
  </entry>
  <entry>
    <title>Vanilla HTML templates</title>
    <id>https://romain-clement.net/articles/vanilla-html-templates/</id>
    <link href="https://romain-clement.net/articles/vanilla-html-templates/?utm_source=website&amp;utm_medium=atom&amp;utm_campaign=feed-syndication"/>
    <updated>2022-11-24T00:00:00+00:00</updated>
    <summary>Native HTML templates allow to easily perform dynamic rendering without a Javascript framework.</summary>
    <content>Native HTML templates allow to easily perform dynamic rendering without a Javascript framework.</content>
    <author>
      <name>Romain Clement</name>
      <email>contact@romain-clement.net</email>
      <uri>https://romain-clement.net</uri>
    </author>
    <published>2022-11-24T00:00:00+00:00</published>
  </entry>
  <entry>
    <title>Diataxis documentation framework</title>
    <id>https://romain-clement.net/articles/diataxis/</id>
    <link href="https://romain-clement.net/articles/diataxis/?utm_source=website&amp;utm_medium=atom&amp;utm_campaign=feed-syndication"/>
    <updated>2022-11-23T00:00:00+00:00</updated>
    <summary>Diataxis is a framework to write documentation by using a 4 layers approach.</summary>
    <content>Diataxis is a framework to write documentation by using a 4 layers approach.</content>
    <author>
      <name>Romain Clement</name>
      <email>contact@romain-clement.net</email>
      <uri>https://romain-clement.net</uri>
    </author>
    <published>2022-11-23T00:00:00+00:00</published>
  </entry>
  <entry>
    <title>Python packages development using Pipenv</title>
    <id>https://romain-clement.net/articles/python-packages-development-pipenv/</id>
    <link href="https://romain-clement.net/articles/python-packages-development-pipenv/?utm_source=website&amp;utm_medium=atom&amp;utm_campaign=feed-syndication"/>
    <updated>2021-05-05T00:00:00+00:00</updated>
    <summary>I have been using Pipenv for Python applications since 2018 quite successfully. However, when developing Python packages, things can get trickier. This is a quick note on how I resolve this situation.</summary>
    <content>I have been using Pipenv for Python applications since 2018 quite successfully. However, when developing Python packages, things can get trickier. This is a quick note on how I resolve this situation.</content>
    <author>
      <name>Romain Clement</name>
      <email>contact@romain-clement.net</email>
      <uri>https://romain-clement.net</uri>
    </author>
    <published>2021-05-05T00:00:00+00:00</published>
  </entry>
  <entry>
    <title>Static Data Warehouse using SQLite and Metabase</title>
    <id>https://romain-clement.net/articles/static-data-warehouse-sqlite-metabase/</id>
    <link href="https://romain-clement.net/articles/static-data-warehouse-sqlite-metabase/?utm_source=website&amp;utm_medium=atom&amp;utm_campaign=feed-syndication"/>
    <updated>2021-05-04T00:00:00+00:00</updated>
    <summary>Does a data warehouse need to be costly? Maybe not. A quick note on using SQLite combined with Metabase to host and exploit a static SQL database easily and cheaply. This use-case is especially true for small data applications.</summary>
    <content>Does a data warehouse need to be costly? Maybe not. A quick note on using SQLite combined with Metabase to host and exploit a static SQL database easily and cheaply. This use-case is especially true for small data applications.</content>
    <author>
      <name>Romain Clement</name>
      <email>contact@romain-clement.net</email>
      <uri>https://romain-clement.net</uri>
    </author>
    <published>2021-05-04T00:00:00+00:00</published>
  </entry>
  <entry>
    <title>Cloudflare setup for CDN and PaaS platforms</title>
    <id>https://romain-clement.net/articles/cloudflare-setup-cdn-paas/</id>
    <link href="https://romain-clement.net/articles/cloudflare-setup-cdn-paas/?utm_source=website&amp;utm_medium=atom&amp;utm_campaign=feed-syndication"/>
    <updated>2020-06-08T00:00:00+00:00</updated>
    <summary>When hosting applications using modern CDNs and PaaS platforms such as Vercel and Heroku, configuring Cloudflare as the protecting proxy in front of those services can be challenging. After some research, I managed to find a permanent solution.</summary>
    <content>When hosting applications using modern CDNs and PaaS platforms such as Vercel and Heroku, configuring Cloudflare as the protecting proxy in front of those services can be challenging. After some research, I managed to find a permanent solution.</content>
    <author>
      <name>Romain Clement</name>
      <email>contact@romain-clement.net</email>
      <uri>https://romain-clement.net</uri>
    </author>
    <published>2020-06-08T00:00:00+00:00</published>
  </entry>
  <entry>
    <title>Scrubbing URL fragments from Sentry crash reports</title>
    <id>https://romain-clement.net/articles/sentry-url-fragments/</id>
    <link href="https://romain-clement.net/articles/sentry-url-fragments/?utm_source=website&amp;utm_medium=atom&amp;utm_campaign=feed-syndication"/>
    <updated>2020-05-01T00:00:00+00:00</updated>
    <summary>When activating Sentry crash reporting in JavaScript client-side code, the default mechanism captures and sends the current URL, including any URL fragments. This can pose a privacy issue when dealing with client-side end-to-end encrypted applications.</summary>
    <content>When activating Sentry crash reporting in JavaScript client-side code, the default mechanism captures and sends the current URL, including any URL fragments. This can pose a privacy issue when dealing with client-side end-to-end encrypted applications.</content>
    <author>
      <name>Romain Clement</name>
      <email>contact@romain-clement.net</email>
      <uri>https://romain-clement.net</uri>
    </author>
    <published>2020-05-01T00:00:00+00:00</published>
  </entry>
  <entry>
    <title>GitOps CI/CD workflows with GitHub Actions</title>
    <id>https://romain-clement.net/articles/github-actions-cicd-workflows/</id>
    <link href="https://romain-clement.net/articles/github-actions-cicd-workflows/?utm_source=website&amp;utm_medium=atom&amp;utm_campaign=feed-syndication"/>
    <updated>2020-04-18T00:00:00+00:00</updated>
    <summary>The current state of GitHub Actions is promising but still has some rough edges, when it comes to configuring complete GitOps CI/CD workflows. But I&#39;ve managed to find some tricks to get the job done.</summary>
    <content>The current state of GitHub Actions is promising but still has some rough edges, when it comes to configuring complete GitOps CI/CD workflows. But I&#39;ve managed to find some tricks to get the job done.</content>
    <author>
      <name>Romain Clement</name>
      <email>contact@romain-clement.net</email>
      <uri>https://romain-clement.net</uri>
    </author>
    <published>2020-04-18T00:00:00+00:00</published>
  </entry>
</feed>