<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" 
        xmlns:xhtml="http://www.w3.org/1999/xhtml"
        xmlns:image="https://www.google.com/schemas/sitemap-image/1.1">

  <url>
    <loc>https://phicygni.com/posts/javascript-for-python-developers/</loc>
    <lastmod>2022-12-16</lastmod>

    <image:image>
      <image:loc>https://phicygni.com/assets/blog/javascript-for-python-developers/michael-dziedzic-nc11Hg2ja-s-unsplash-1024.webp</image:loc>
      <image:caption>JavaScript for Python developers</image:caption>
      <image:title>JavaScript for Python developers</image:title>
    </image:image>

  </url>

  <url>
    <loc>https://phicygni.com/posts/how-to-set-up-a-test-smtp-server/</loc>
    <lastmod>2022-02-03</lastmod>

    <image:image>
      <image:loc>https://phicygni.com/assets/blog/how-to-set-up-a-test-smtp-server/Screenshot%20from%202021-11-26%2017-09-29.png</image:loc>
      <image:caption>The Web UI of Mailhog.</image:caption>
      <image:title>The Web UI of Mailhog.</image:title>
    </image:image>

    <image:image>
      <image:loc>https://phicygni.com/assets/blog/how-to-set-up-a-test-smtp-server/Screenshot%20from%202021-11-26%2017-09-16.png</image:loc>
      <image:caption>The Mailhog Web UI showing one plain text email received.</image:caption>
      <image:title>The Mailhog Web UI showing one plain text email received.</image:title>
    </image:image>

    <image:image>
      <image:loc>https://phicygni.com/assets/blog/how-to-set-up-a-test-smtp-server/Screenshot%20from%202021-11-26%2017-09-23.png</image:loc>
      <image:caption>Mailhog has a tab to see the plain text of an email.</image:caption>
      <image:title>Mailhog has a tab to see the plain text of an email.</image:title>
    </image:image>

    <image:image>
      <image:loc>https://phicygni.com/assets/blog/how-to-set-up-a-test-smtp-server/Screenshot%20from%202021-11-26%2017-06-43.png</image:loc>
      <image:caption>Mailhog shows the email with embedded HMTL we just received.</image:caption>
      <image:title>Mailhog shows the email with embedded HMTL we just received.</image:title>
    </image:image>

    <image:image>
      <image:loc>https://phicygni.com/assets/blog/how-to-set-up-a-test-smtp-server/Screenshot%20from%202021-11-26%2017-08-29.png</image:loc>
      <image:caption>Mailhog will render the HTML and CSS like an email client would.</image:caption>
      <image:title>Mailhog will render the HTML and CSS like an email client would.</image:title>
    </image:image>

    <image:image>
      <image:loc>https://phicygni.com/assets/blog/how-to-set-up-a-test-smtp-server/Screenshot%20from%202021-11-26%2017-08-46.png</image:loc>
      <image:caption>In addition to rendering the HMTL, Mailhog also shows the email source.</image:caption>
      <image:title>In addition to rendering the HMTL, Mailhog also shows the email source.</image:title>
    </image:image>


  </url>
  <url>
    <loc>https://phicygni.com/posts/why-is-multi-threaded-python-so-slow/</loc>
    <lastmod>2022-02-03</lastmod>

    <image:image>
      <image:loc>https://phicygni.com/assets/blog/why-is-multi-threaded-python-so-slow/david-clode-vb-3qEe3rg8-unsplash_art_2_1024.jpg</image:loc>
      <image:caption>Why is multi-threaded Python so slow?</image:caption>
      <image:title>Why is multi-threaded Python so slow?</image:title>
    </image:image>

    <image:image>
      <image:loc>https://phicygni.com/assets/blog/why-is-multi-threaded-python-so-slow/why-is-multi-threaded-python-so-slow-01.png</image:loc>
      <image:caption>The task manager showing a Python process with its threads.</image:caption>
      <image:title>The task manager showing a Python process with its threads.</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://phicygni.com/posts/a-complete-prometheus-based-email-monitoring-system/</loc>
    <lastmod>2022-02-03</lastmod>

    <image:image>
      <image:loc>https://phicygni.com/assets/blog/a-complete-prometheus-based-email-monitoring-system/christian-paul-stobbe---ZRdZ6z3Ok-unsplash_1024.jpg</image:loc>
      <image:caption>A complete Prometheus based email monitoring system using docker compose</image:caption>
      <image:title>A complete Prometheus based email monitoring system using docker compose</image:title>
    </image:image>

    <image:image>
      <image:loc>https://phicygni.com/assets/blog/a-complete-prometheus-based-email-monitoring-system/network_components.png</image:loc>
      <image:caption>These are the containers of the docker compose script connected to a bridge network.</image:caption>
      <image:title>These are the containers of the docker compose script connected to a bridge network.</image:title>
    </image:image>

    <image:image>
      <image:loc>https://phicygni.com/assets/blog/a-complete-prometheus-based-email-monitoring-system/prometheus_ui_alerts_firing_uncollapsed.png</image:loc>
      <image:caption>The Prometheus UI shows the target service as being down.</image:caption>
      <image:title>The Prometheus UI shows the target service as being down.</image:title>
    </image:image>

    <image:image>
      <image:loc>https://phicygni.com/assets/blog/a-complete-prometheus-based-email-monitoring-system/alert_container_flow.png</image:loc>
      <image:caption>The flow between containers when an email is generated.</image:caption>
      <image:title>The flow between containers when an email is generated.</image:title>
    </image:image>

    <image:image>
      <image:loc>https://phicygni.com/assets/blog/a-complete-prometheus-based-email-monitoring-system/prometheus_am_ui_alerts.png</image:loc>
      <image:caption>The Alertmanager UI shows the service as being down.</image:caption>
      <image:title>The Alertmanager UI shows the service as being down.</image:title>
    </image:image>

    <image:image>
      <image:loc>https://phicygni.com/assets/blog/a-complete-prometheus-based-email-monitoring-system/mailhog_ui_alert_received_002.png</image:loc>
      <image:caption>An instance down email alert as received on Mailhog.</image:caption>
      <image:title>An instance down email alert as received on Mailhog.</image:title>
    </image:image>

    <image:image>
      <image:loc>https://phicygni.com/assets/blog/a-complete-prometheus-based-email-monitoring-system/prometheus_ui_graph_periodic_metric_psutil_coretemp_005.png</image:loc>
      <image:caption>Prometheus displays the CPU temperature information as a graph.</image:caption>
      <image:title>Prometheus displays the CPU temperature information as a graph.</image:title>
    </image:image>

    <image:image>
      <image:loc>https://phicygni.com/assets/blog/a-complete-prometheus-based-email-monitoring-system/prometheus_ui_graph_periodic_metric_periodic_sine_005.png</image:loc>
      <image:caption>A graph of an arbitrary custom metric generated by the Python target service.</image:caption>
      <image:title>A graph of an arbitrary custom metric generated by the Python target service.</image:title>
    </image:image>


  </url>
  <url>
    <loc>https://phicygni.com/posts/self-host-gitlab-for-free/</loc>
    <lastmod>2022-03-06</lastmod>

    <image:image>
      <image:loc>https://phicygni.com/assets/blog/self-host-gitlab-for-free/phi-cygni-gitlab-self-host-1024.png</image:loc>
      <image:caption>Self-host GitLab for free using Docker Compose.</image:caption>
      <image:title>Self-host GitLab for free using Docker Compose.</image:title>
    </image:image>

    <image:image>
      <image:loc>https://phicygni.com/assets/blog/self-host-gitlab-for-free/gitlab-ui-root-sign-in.png</image:loc>
      <image:caption>Log in as the root user.</image:caption>
      <image:title>Log in as the root user.</image:title>
    </image:image>

    <image:image>
      <image:loc>https://phicygni.com/assets/blog/self-host-gitlab-for-free/gitlab-ui-getting-to-admin-menu.png</image:loc>
      <image:caption>Go to the Admin page.</image:caption>
      <image:title>Go to the Admin page.</image:title>
    </image:image>

    <image:image>
      <image:loc>https://phicygni.com/assets/blog/self-host-gitlab-for-free/gitlab-ui-new-user-button.png</image:loc>
      <image:caption>Click the “New User” button.</image:caption>
      <image:title>Click the “New User” button.</image:title>
    </image:image>

    <image:image>
      <image:loc>https://phicygni.com/assets/blog/self-host-gitlab-for-free/gitlab-ui-new-admin-user01.png</image:loc>
      <image:caption>Fill in the details of the new user.</image:caption>
      <image:title>Fill in the details of the new user.</image:title>
    </image:image>

    <image:image>
      <image:loc>https://phicygni.com/assets/blog/self-host-gitlab-for-free/gitlab-ui-new-admin-user02.png</image:loc>
      <image:caption>We set the access level for this user to Administrator.</image:caption>
      <image:title>We set the access level for this user to Administrator.</image:title>
    </image:image>

    <image:image>
      <image:loc>https://phicygni.com/assets/blog/self-host-gitlab-for-free/gitlab-ui-user-jim-edit01.png</image:loc>
      <image:caption>We need to set the initial password of the user so edit it after being created.</image:caption>
      <image:title>We need to set the initial password of the user so edit it after being created.</image:title>
    </image:image>

    <image:image>
      <image:loc>https://phicygni.com/assets/blog/self-host-gitlab-for-free/gitlab-ui-user-jim-edit02.png</image:loc>
      <image:caption>Set a temporary password for the new user.</image:caption>
      <image:title>Set a temporary password for the new user.</image:title>
    </image:image>

    <image:image>
      <image:loc>https://phicygni.com/assets/blog/self-host-gitlab-for-free/gitlab-ui-user-jim-edit04.png</image:loc>
      <image:caption>Log into GitLab as the new user.</image:caption>
      <image:title>Log into GitLab as the new user.</image:title>
    </image:image>

    <image:image>
      <image:loc>https://phicygni.com/assets/blog/self-host-gitlab-for-free/gitlab-ui-user-jim-edit05.png</image:loc>
      <image:caption>Users must set their password the first time they log in.</image:caption>
      <image:title>Users must set their password the first time they log in.</image:title>
    </image:image>

    <image:image>
      <image:loc>https://phicygni.com/assets/blog/self-host-gitlab-for-free/gitlab-ui-user-jim-edit06.png</image:loc>
      <image:caption>The top banner indicates the password change was successful.</image:caption>
      <image:title>The top banner indicates the password change was successful.</image:title>
    </image:image>

    <image:image>
      <image:loc>https://phicygni.com/assets/blog/self-host-gitlab-for-free/gitlab-ui-jim-new-repo02.png</image:loc>
      <image:caption>Click the “New project/repository” list item in the drop-down menu.</image:caption>
      <image:title>Click the “New project/repository” list item in the drop-down menu.</image:title>
    </image:image>

    <image:image>
      <image:loc>https://phicygni.com/assets/blog/self-host-gitlab-for-free/gitlab-ui-jim-new-repo03.png</image:loc>
      <image:caption>Set the name of the new repo.</image:caption>
      <image:title>Set the name of the new repo.</image:title>
    </image:image>

    <image:image>
      <image:loc>https://phicygni.com/assets/blog/self-host-gitlab-for-free/gitlab-ui-jim-new-repo05.png</image:loc>
      <image:caption>Copy the HTTP URL of the repo after creating it.</image:caption>
      <image:title>Copy the HTTP URL of the repo after creating it.</image:title>
    </image:image>

    <image:image>
      <image:loc>https://phicygni.com/assets/blog/self-host-gitlab-for-free/gitlab-check-out-repo01.png</image:loc>
      <image:caption>This is the Git clone command for the repo we just made.</image:caption>
      <image:title>This is the Git clone command for the repo we just made.</image:title>
    </image:image>

    <image:image>
      <image:loc>https://phicygni.com/assets/blog/self-host-gitlab-for-free/gitlab-check-out-repo02.png</image:loc>
      <image:caption>Supply the username when prompted.</image:caption>
      <image:title>Supply the username when prompted.</image:title>
    </image:image>

    <image:image>
      <image:loc>https://phicygni.com/assets/blog/self-host-gitlab-for-free/gitlab-check-out-repo03.png</image:loc>
      <image:caption>Provide the password when prompted.</image:caption>
      <image:title>Provide the password when prompted.</image:title>
    </image:image>

    <image:image>
      <image:loc>https://phicygni.com/assets/blog/self-host-gitlab-for-free/gitlab-check-out-repo04.png</image:loc>
      <image:caption>The Git repo was successfully checked out.</image:caption>
      <image:title>The Git repo was successfully checked out.</image:title>
    </image:image>


  </url>

</urlset>