{
  "version": "https://jsonfeed.org/version/1",
  "title": "Articles | Romain Clement",
  "home_page_url": "https://romain-clement.net/articles/",
  "feed_url": "https://romain-clement.net/feed/articles/feed.json",
  "description": "Freelance Data / Machine Learning Engineer &amp; Trainer",
  "items": [
    {
      "id": "https://romain-clement.net/articles/python-pathlib-glob-patterns/",
      "content_html": "Combining multiple glob patterns using Python Pathlib, with functional programming style",
      "url": "https://romain-clement.net/articles/python-pathlib-glob-patterns/",
      "title": "Python Pathlib complex glob patterns",
      "summary": "Combining multiple glob patterns using Python Pathlib, with functional programming style",
      "date_modified": "2023-09-18T00:00:00+00:00",
      "date_published": "2023-09-18T00:00:00+00:00",
      "authors": [
        {
          "name": "Romain Clement",
          "url": "https://romain-clement.net"
        }
      ]
    },
    {
      "id": "https://romain-clement.net/articles/vanilla-html-templates/",
      "content_html": "Native HTML templates allow to easily perform dynamic rendering without a Javascript framework.",
      "url": "https://romain-clement.net/articles/vanilla-html-templates/",
      "title": "Vanilla HTML templates",
      "summary": "Native HTML templates allow to easily perform dynamic rendering without a Javascript framework.",
      "date_modified": "2022-11-24T00:00:00+00:00",
      "date_published": "2022-11-24T00:00:00+00:00",
      "authors": [
        {
          "name": "Romain Clement",
          "url": "https://romain-clement.net"
        }
      ]
    },
    {
      "id": "https://romain-clement.net/articles/diataxis/",
      "content_html": "Diataxis is a framework to write documentation by using a 4 layers approach.",
      "url": "https://romain-clement.net/articles/diataxis/",
      "title": "Diataxis documentation framework",
      "summary": "Diataxis is a framework to write documentation by using a 4 layers approach.",
      "date_modified": "2022-11-23T00:00:00+00:00",
      "date_published": "2022-11-23T00:00:00+00:00",
      "authors": [
        {
          "name": "Romain Clement",
          "url": "https://romain-clement.net"
        }
      ]
    },
    {
      "id": "https://romain-clement.net/articles/python-packages-development-pipenv/",
      "content_html": "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.",
      "url": "https://romain-clement.net/articles/python-packages-development-pipenv/",
      "title": "Python packages development using Pipenv",
      "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.",
      "date_modified": "2021-05-05T00:00:00+00:00",
      "date_published": "2021-05-05T00:00:00+00:00",
      "authors": [
        {
          "name": "Romain Clement",
          "url": "https://romain-clement.net"
        }
      ]
    },
    {
      "id": "https://romain-clement.net/articles/static-data-warehouse-sqlite-metabase/",
      "content_html": "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.",
      "url": "https://romain-clement.net/articles/static-data-warehouse-sqlite-metabase/",
      "title": "Static Data Warehouse using SQLite and Metabase",
      "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.",
      "date_modified": "2021-05-04T00:00:00+00:00",
      "date_published": "2021-05-04T00:00:00+00:00",
      "authors": [
        {
          "name": "Romain Clement",
          "url": "https://romain-clement.net"
        }
      ]
    },
    {
      "id": "https://romain-clement.net/articles/cloudflare-setup-cdn-paas/",
      "content_html": "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.",
      "url": "https://romain-clement.net/articles/cloudflare-setup-cdn-paas/",
      "title": "Cloudflare setup for CDN and PaaS platforms",
      "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.",
      "date_modified": "2020-06-08T00:00:00+00:00",
      "date_published": "2020-06-08T00:00:00+00:00",
      "authors": [
        {
          "name": "Romain Clement",
          "url": "https://romain-clement.net"
        }
      ]
    },
    {
      "id": "https://romain-clement.net/articles/sentry-url-fragments/",
      "content_html": "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.",
      "url": "https://romain-clement.net/articles/sentry-url-fragments/",
      "title": "Scrubbing URL fragments from Sentry crash reports",
      "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.",
      "date_modified": "2020-05-01T00:00:00+00:00",
      "date_published": "2020-05-01T00:00:00+00:00",
      "authors": [
        {
          "name": "Romain Clement",
          "url": "https://romain-clement.net"
        }
      ]
    },
    {
      "id": "https://romain-clement.net/articles/github-actions-cicd-workflows/",
      "content_html": "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.",
      "url": "https://romain-clement.net/articles/github-actions-cicd-workflows/",
      "title": "GitOps CI/CD workflows with GitHub Actions",
      "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.",
      "date_modified": "2020-04-18T00:00:00+00:00",
      "date_published": "2020-04-18T00:00:00+00:00",
      "authors": [
        {
          "name": "Romain Clement",
          "url": "https://romain-clement.net"
        }
      ]
    }
  ]
}