Update blog theme once again

This commit is contained in:
Alexis Métaireau 2024-09-23 23:42:25 +02:00
parent dfe249e998
commit 1af83e3dc5
No known key found for this signature in database
GPG key ID: 1C21B876828E5FF2
14 changed files with 311 additions and 50 deletions

View file

@ -0,0 +1,42 @@
---
title: Debian packaging for python
tags: debian, packaging, python, stden, pyproject
status: draft
---
Recently, for [Dangerzone](https://github.com/freedomofpress/dangerzone), we [switched from stdeb to pybuild](https://github.com/freedomofpress/dangerzone/pull/901).
Stdeb wasn't working for us on Debian trixie (at the time at least), and after some tinkering, we figured it could be better to use the pybuild tools instead. I was pretty happy to find an excuse to learn about Debian packaging, as I really like the Debian project [and the culture behind it](https://www.debian.org/social_contract).
I have to say that at a first glance, this seemed overly complicated. There is *a lot* of documentation about how to do debian packaging, almost to the point where I didn't know where to start. Hopefully, [Kunal](https://legoktm.com) pointed me to the right direction.
And, it turns out I was completly wrong about the complexity. Sure there is a lot of moving pieces, but in the end, doing the packaging work was pretty straightforward. This is partially due to the fact we are packaging a client-side application, meaning we avoid some complexity about WSGI to HTTP "bridges".
In the end, most of the work is to write the proper files in the `debian` folder, and call `dpkg-buildpackage`.
## The `debian` folder
Here is the file structure:
```
debian/
├── changelog
├── compat
├── control
├── copyright
├── rules
└── source
├── format
└── options
```
Let get to each of the interesting files one by one:
- `debian/changelog` contains the changelog. The format actually means something and is documented here ;
- `debian/control` contains the actual project description and dependencies, we'll get back to this in a bit ;
- `debian/rules` is a Makefile containing the targets to build the actual package ;
- `debian/compat` contains some metadata information about the version of the packaging standard this uses ;
- `debian/source/*` contains some information on how to get the source. Depending
- I leave `debian/copyright` out of the picture, it's just
## Pybuild

View file

@ -1,7 +1,18 @@
---
save_as: about.html
save_as: about/index.html
slug: about
---
# About me
👋 **Welcome here**, I'm Alexis, a software developer interested by collectives,
digital freedom and conflict resolution.
I mostly publish here in French, but some articles are in English. You can
find here [weekly notes](/weeknotes) (fr), some journal entries (sometimes in english, sometimes in french),
[reading notes](/lectures), [bits of code](/code) and [some writing](/ecriture)
---
# À propos
👋 **Bienvenue par ici**, je suis Alexis, un développeur intéressé par les

View file

@ -8,6 +8,7 @@ template: worklog-en
- Some discussion with the securedrop team about how to integrate with DZ in order to print images.
- Fixed the wrong container runtime detection on Linux, displaying the error log inside dangerzone, see https://github.com/freedomofpress/dangerzone/pull/906
## Jeudi 29 Août 2024 (6h, 5/5)
- Research and discussions about java CVEs

47
content/weeknotes/35.md Normal file
View file

@ -0,0 +1,47 @@
---
date: 2024-09-02
headline: notes hebdo #35
projects: dangerzone
status: draft
---
# Notes hebdo #35
C'est la reprise après les grandes vacances d'été.
**[Danger Zone](https://dangerzone.rocks/)**
*DangerZone transforme des documents potentiellement dangereux en documents sûrs.*
- Une semaine de travail en solo
- J'ai appris à faire du packaging pour Debian et des applications en python côté client.
- Relectures d'un article à paraître sur comment DZ à fait l'utilisation de gVisor
- Des discussions autour de comment estimer s'il faut s'intéresser à des alertes de sécurité (CVE) ou non
## Des joies 🤗
- Les vacances, c'était super :-)
- Faire du packaging pour Debian est plus simple que ce pensais (au moins dans ce contexte).
- Travailler depuis des endroits en pleine nature, pour essayer de prolonger un peu les vacances.
- J'écoute mes limites et j'en fais des discussions. Je suis content de la manière dont les choses sont reçues.
- Content de retourner dans mon espace de coworking pour la fin de semaine.
- Retrouver mes claviers [et l'envie de faire de la musique avec](https://tutut.delire.party/@almet/113052885449948979)
## Des peines 😬
- Je serais bien resté en vacances...
- En étant seul une partie de la semaine, j'ai manqué de rythme et j'ai passé trop de temps derrière des écrans. Gros décallage et mal de crane.
- Je ne vois pas de « solution magique » pour mettre fin à cette situation où je cumule deux missions (dangerzone + umap). J'aimerai trouver un moyen d'aller au bout de l'histoire sans que ça me fasse des semaines à ralonge.
## Vu, Lu, etc
- 🏓 Pling Klang, un spectacle qui parle de masculinités en montant un meuble Ikea, avec de l'humour décalé et du ping-pong quand on ne s'y attends pas. Super.
- 🎧 Quelques épisodes de « Dingue », sur RTS (sur le burn out, les troubles du spectre autistique, le TDAH). C'est chouette d'avoir un panorama rapide mais malheureusement je reste sur ma faim en terme de contenus, surement le format qui est un peu court.
- 🎧 Un épisode de Culture 2000 [sur le New Age](https://podcloud.fr/podcast/culture-2000/episode/le-new-age). Chouette d'avoir une vision un peu globale du phénomène, et toujours dans une ambiance détente.
- 📖 J'ai commencé la lecture du livre [« Faire Justice »](https://lafabrique.fr/faire-justice/) de Elsa Deck Marsault.
- 📖 J'ai commencé la lecture du livre [« Vivant·es et dignes »](https://www.horsdatteinte.org/livre/vivant%C2%B7es-et-dignes/) de Victoria Berni-André, le témoignage d'une journaliste et militante qui rencontre différents collectifs politiques, plus ou moins radicaux.
- 📖 J'ai publié les notes de lectures sur [« La volonté de changer »](https://blog.notmyidea.org/la-volonte-de-changer.html), de bell hooks.
- ▶︎ Vu Le problème à trois corps
- 🎬 Vu [Papicha](https://fr.wikipedia.org/wiki/Papicha), de Mounia Meddour avec Lyna Khoudri. Un drame qui se déroule en Algérie durant la guerre civile. On suit un groupe de femmes étudiantes qui voient leurs libertés se restreindre de jour en jour; et leur lutte. C'était dur mais j'ai trouvé le film très réussi.
- 🎬 Vu [Blue Valentine](https://fr.wikipedia.org/wiki/Blue_Valentine_(film)) de Derek Cianfrance avec Ryan Gosling et Michele Wiliams. On y voit bien les mécaniques de la masculinité toxique, le contrôle qui se mets en place au fur et à mesure. C'est vendu comme un film léger mais ce n'est pas du tout le cas...
- 🎬 Vu [Nos frangins](https://fr.wikipedia.org/wiki/Nos_frangins) sur la mort de Malik Oussekine et d'Abdel Benhyahia en 1986.

33
content/weeknotes/36.md Normal file
View file

@ -0,0 +1,33 @@
---
date: 2024-09-06
headline: notes hebdo #36
projects: dangerzone
status: draft
---
# Notes hebdo #36
Deuxième semaine de reprise !
**[Danger Zone](https://dangerzone.rocks/)**
- J'ai continué de bosser pour améliorer ma compréhension du packaging sur Debian ;
- On à commencé un travail pour se faciliter la vie pour les prochaines mises à jour, améliorer la sécurité générale du projet, et clarifier comment on gère l'annonce de nouvelles vulnérabilités (CVEs);
## Des joies 🤗
- Je me sens plein d'énergie. Je ne sais pas si c'est ~~le printemps~~la rentrée ou si c'est le fait de commencer à être plus à l'aise dans le contexte du boulot, mais c'est chouette !
- Improviser le temps d'une soirée, d'abord avec les copaines puis en amoureux.
- Mon environnement de vie est plus calme, et je commence à moins craindre le bruit autour de moi de manière générale
- Je vous ai déjà dit que la musique c'était génial ? 📎
- Prendre le temps de faire de la transformation de fruits.
## Des peines 😬
- 🤦🏼‍♂️ L'annonce de la nomination de notre nouveau premier ministre, que dire...
## Vu, Lu, etc
- 🎬 Vu Emilia Perrez de Jacques Audiard. J'y suis allé les yeux fermés, et j'ai été assez surpris du format. Pas mal de choses chouettes et quelques questionnements en sortant.
- 🎬 Vu Borderlands, completement au hasard. Je partais pour être déçu et j'ai été plutôt positivement surpris, pour passer un bon moment divertissant.
- 🎬 Vu le premier épisode de la série « Mum », sur Arte. De l'humour anglais décalé. Chouette !

37
content/weeknotes/37.md Normal file
View file

@ -0,0 +1,37 @@
---
date: 2024-09-13
headline: notes hebdo #37
projects: dangerzone
status: draft
---
# Notes hebdo #37
Une semaine bien remplie, première session de théatre d'improvisation,
**[Dangerzone](https://dangerzone.rocks/)**
- Le changement de la manière de faire du packaging pour Debian, la préparation d'un article sur gVisor et Dangerzone ;
- Migration en cours de l'integration continue vers les actions Github, c'est l'occasion de revoir la manière dont le cache est géré ;
- Une belle session de debug à deux avec Alex pour se rendre compte que le souci dans lequel on est aurait pu être évité en mettant à jour nos "runners".
## Des joies 🤗
- Prendre le temps de présenter des excuses, et de commencer à dénouer une situation tendue, tout en explicitant la cause de notre désaccord.
- M'accorder des moments de relâche par rapport au travail, pour pouvoir être présent à d'autres endroits.
- M'organiser pour rendre possible la fin du travail sur uMap sans me mettre trop de travail dans les pattes. Content d'avoir amorcé la discussion.
- Oser commencer le théatre d'improvisation alors que je n'en ai jamais fait
- J'ai nommé des soucis que je mettais sous le tapis depuis plusieurs mois, pour me rendre compte que les constats étaient partagés avec d'autres.
## Des peines 😬
- C'était un peu trop rempli, et j'ai manqué de temps pour chiller / me relaxer. J'aurai pu raccourcir les soirées pour avoir plus de temps de repos.
- Décaller mes matinées, et devoir enchainer la journée pour pouvoir avancer.
- J'ai du recadrer un peu lors d'une réunion où ça partait un peu trop en vrille pour moi, sans trop savoir si le recadrage à été bien vu.
## Vu, Lu, etc
- Commencé la série Kaos sur Netflix, c'est assez marrant de voir les dieux grecs dans notre modernité.
- Écouté Sam et la reprise des Contes de mon vieux grimoire.
- Écouté le code à changé « l'éloge du bug »
- J'ai commencé à suivre une formation autour de la sécurité informatique, entre autres pour mieux comprendre comment fonctionnent les différents types d'attaques, d'un peu plus près.

35
content/weeknotes/38.md Normal file
View file

@ -0,0 +1,35 @@
---
date: 2024-09-22
headline: notes hebdo #38
projects: dangerzone
status: draft
---
# Notes hebdo #38
**[Dangerzone](https://dangerzone.rocks/)**
- Préparation de la prochaine release `0.8.0`
- La recherche d'alternatives à l'utilisation de Docker Desktop sous OSX (une license est demandée pour les grosses organisations)
- La fin de la migration aux Actions Github, ça ne paraissait pas grand chose, mais c'est chouette d'avoir une CI qui réponds rapidement.
## Des joies 🤗
- Je récupère mes vendredi, et ça me rends beaucoup d'énergie. Très content d'avoir trouvé une solution pour la situation uMap + Dangerzone. Ça faisait trop et je sens le niveau d'anxiété qui diminue.
- Me coucher tôt et lire
- Décaller ma journée pour me faire une grasse mat'
- Être là pour des proches
- La musique c'est la vie, épisode 237. Les répétitions de la fanfare me donnent toujours autant d'énergie.
## Des peines 😬
- Je me suis mis la pression lors d'un concert, et j'ai perdu mes moyens. J'aurais préféré m'entrainer avant, et y mettre moins d'enjeu.
- Ne pas savoir mettre fin à une discussion stérile, parce que les enjeux sont (perçus comme) forts. J'aurais aimé gagner quelques heures de sommeil.
## Vu, Lu, etc
- Predestination (film)
- Le chat du rabin tome 1 et 2. J'aime vraiment bien cet humour :-)
- Rejoué un peu à Hadès 1 sur Switch. J'y suis presque :p

View file

@ -348,27 +348,43 @@ header {
h1 {
min-height: 2em;
font-size: clamp(5rem, 5rem, 5rem);
margin-bottom: 0px;
text-shadow: 10px 1px 3px var(--general-heading-color);
font-size: clamp(3rem, 5vw, 5rem);
margin-bottom: 20px;
font-weight: bold;
padding: 0.5em;
color: var(--headers-color);
border: 1px var(--border-color) solid;
margin-bottom: 0px;
text-align: center;
}
position: relative;
background: linear-gradient(
135deg,
var(--color-lectures) 20%,
var(--color-code) 20% 40%,
var(--color-ecriture) 40% 60%,
var(--color-journal) 60% 80%,
var(--color-weeknotes) 80%
);
background-clip: text;
-webkit-background-clip: text;
color: transparent;
text-shadow:
2px 2px 0 rgba(0,0,0,0.1),
-2px -2px 0 rgba(255,255,255,0.1);
del {
text-decoration: line-through;
color: #555;
}
}
}
figcaption {
top: -4rem;
right: 1rem;
top: -6rem;
right: 3em;
position: relative;
background: white;
float: right;
font-size: 1.3em;
padding: 3px;
color: grey;
}
@media screen and (max-width: 600px) {
@ -453,7 +469,7 @@ section.index h1 {
}
}
article,
article :not(.weeknotes),
.index {
h1,
h2,
@ -484,6 +500,7 @@ article,
}
}
.more {
color: var(--reverse-text-color);
background-color: var(--reverse-bg-color);
@ -719,3 +736,14 @@ nav {
transparent 0
);
}
.weeknotes ul {
display: flex;
flex-wrap: wrap;
list-style-type: none;
li {
padding: 2px
}
}

View file

@ -12,7 +12,11 @@
{% if lectures %}
Lu en {{ article.date | strftime("%B %Y") }}
{% else %}
{% if article.lang == "fr" %}
{{ article.locale_date }}
{% else %}
{{ article.date | strftime("%Y-%m-%d")}}
{% endif %}
{% endif %}
</figcaption>
</figure>
@ -21,16 +25,20 @@
{% if article.prev_article_in_category %}
<li>
<a href="{{ SITEURL }}/{{ article.prev_article_in_category.url }}"
title="{{ article.prev_article_in_category.title | striptags }}">← Précédent</a>
title="{{ article.prev_article_in_category.title | striptags }}">←
{% if article.lang == "fr" %}Précédent{% else %}Previous{% endif %}</a>
</li>
{% endif %}
<li>
<a href="{{ SITEURL }}">Accueil</a>
<a href="{{ SITEURL }}">
{% if article.lang == "fr" %}Accueil{% else %}Home{% endif %}</a>
</a>
</li>
{% if article.next_article_in_category %}
<li>
<a href="{{ SITEURL }}/{{ article.next_article_in_category.url }}"
title="{{ article.next_article_in_category.title | striptags }}">Suivant →</a>
title="{{ article.next_article_in_category.title | striptags }}">
{% if article.lang == "fr" %}Suivant{% else %}Next{% endif %}</a></a>
</li>
{% endif %}
</ul>
@ -69,7 +77,7 @@
<a href="{{ SITEURL }}/{{ tag.url }}">#{{ tag }}</a>
{% if not loop.last %},{% endif %}
{% endfor %}
- Posté dans la catégorie
- {% if article.lang == "fr" %}Posté dans la catégorie{% else %}In{% endif %}
<a href="{{ SITEURL }}/{{ article.category.url }}">{{ article.category }}</a>
</p>
{% endif %}

View file

@ -31,7 +31,14 @@
<body>
<div id="content">
{% if page_name != "index" and not article %}
<a href="/">Aller à l'accueil</a>
{% if category and category in CATEGORIES_DESCRIPTION.keys() %}
{% set cat = CATEGORIES_DESCRIPTION[category] %}
{% if cat[3] == "fr" %}
<a href="/">Aller à l'accueil</a>
{% else %}
<a href="/">Go back home</a>
{% endif %}
{% endif %}
{% endif %} {% block content %}{% endblock %}
<hr />
<footer>

View file

@ -2,13 +2,15 @@
<header class="{{ category }}">
<figure>
{% if category in CATEGORIES_DESCRIPTION.keys() %}
<h1 class="post-title">{{ CATEGORIES_DESCRIPTION[category][0] }}</h1>
{% set cat = CATEGORIES_DESCRIPTION[category] %}
<h1 class="post-title">{{ cat[0] }}</h1>
<figcaption>
<a id="feed" href="{{ SITEURL }}/feeds/{{ category.slug }}.atom.xml">
Flux RSS <img src="{{ SITEURL }}/theme/rss.svg" />
{% if cat[3] == "fr" %}Flux RSS{% else %}Feed{% endif %}
<img src="{{ SITEURL }}/theme/rss.svg" />
</a>
</figcaption>
<p>{{ CATEGORIES_DESCRIPTION[category][1] }}</p>
<p>{{ cat[2] }} {{ cat[1] }}</p>
{% else %}
<h1>{{ category }}</h1>
{% endif %}
@ -21,7 +23,7 @@
{% for article in year_articles %}
<li>
<a href="{{ SITEURL }}/{{ article.url }}" id="page-title"
>{{ article.title }}</a
>{{ article.title | replace('Notes hebdo', '')}}</a
>
{% if article.category == "Lectures" %}de {{article.author}}{% endif %} {%
for tag in article.tags %}

View file

@ -2,44 +2,32 @@
{% block content %}
<header>
<figure>
<h1 class="post-title">{{ SITENAME }}</h1>
<h1 class="post-title"><del>not</del> my ideas</h1>
<figcaption>Carnets web d'Alexis M</figcaption>
</figure>
</header>
<article>
<p>👋 Bienvenue dans ce petit bout de Web.</p>
<p>Vous pouvez y trouver :
</p>
<p>👋 Hey, I'm <a href="/about">Alexis</a>. Here you can find:</p>
<ul>
<li>
<a class="link-ecriture" href="/ecriture">Des écrits</a>, poésie et fiction, souvent au format
<a class="link-code" href="/code">Bits of code</a> (en), tips and learnings around software.
</li>
<li>
<a class="link-ecriture" href="/ecriture">Des écrits</a> (fr), poésie et fiction, souvent au format
court.
</li>
<li>
<a class="link-lectures" href="/lectures">Des notes de lecture</a>, sur differents bouquins.
<a class="link-lectures" href="/lectures">Des notes de lecture</a> (fr), sur differents bouquins.
</li>
<li>
<a class="link-code" href="/code">Des bouts de code</a>, astuces et autres découvertes
autour du logiciel.
</li>
<li>
<a class="link-weeknotes" href="/weeknotes">Mes notes hebdo</a>, une sorte de journal pro, pour
une prise de recul sur les semaines passées.
<a class="link-weeknotes" href="/weeknotes">Mes notes hebdo</a> (fr).
</li>
</ul>
<p>
Aussi, voici <a href="/projets">une courte présentation</a> si on ne se connaît pas déjà.
</p>
<p>
Si vous voulez me contacter, envoyez-moi un email sur
<code>alexis@</code> ce domaine (en enlevant <code>blog.</code>).
</p>
</article>
{% if articles %}
<hr />
<div id="articles">
<h2>Les derniers articles</h2>
<h2>Les derniers articles / Last articles</h2>
<ul class="items">
{% set articles_in_categories = articles | rejectattr('category', 'in', HOMEPAGE_EXCLUDED_CATEGORIES) | list %}
{% set limited_articles = articles_in_categories[:20] %}
@ -51,7 +39,7 @@
</li>
{% endfor %}
</ul>
Voir <a href="archives.html">toutes les archives</a>
<a href="archives.html">Archives</a>
</div>
{% endif %}
{% endblock content %}

View file

@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
PATH = "content"
SITENAME = "(not my) ideas"
SITENAME = "(not) my ideas"
AUTHOR = ""
THEME = "mnmlist"
STATIC_PATHS = ["images", "audio", "extra", "docs"]
@ -42,9 +42,16 @@ CACHE_DOMAIN = "/cache/"
TYPOGRIFY = True
INDEX_SAVE_AS = "index.html"
# URL configuration
CATEGORY_SAVE_AS = "{slug}/index.html"
CATEGORY_URL = "{slug}/"
ARTICLE_URL = '{slug}.html'
ARTICLE_LANG_URL = '{slug}.html'
ARTICLE_LANG_SAVE_AS = '{slug}.html'
MENU = [
# ("Journal", "/journal/index.html", "journal"),
# ("Code", "/code/", "code"),
@ -63,28 +70,33 @@ CATEGORIES_DESCRIPTION = {
"Notes hebdo",
"Chaque semaine, je fais un petit résumé de ce qui s'est passé. Cela m'aide à garder le fil de mes idées et de mes différents projets. Un bon moyen de faire une pause et d'observer la semaine sous un autre angle.",
"📝",
"fr",
),
"lectures": (
"Notes de lecture",
"Quelques notes prises au détour d'une lecture, plutôt pour ne pas les oublier et me remémorer le livre quand j'en ai besoin.",
"📖",
"fr",
),
"code": (
"Code",
"Des bouts de trucs liés au code, que je trouve utiles de stocker quelque part (en anglais)",
"Code-related stuff I learned, which I believe are worth sharing",
"🧑‍💻",
"en",
),
"journal": (
"Journal",
"Quelques réfléxions, bien souvent autour du monde du travail ou de la technologie.",
"📘",
"fr",
),
"notes": (
"Notes",
"Prises bien souvent en regardant une vidéo ou un article en ligne. Je les mets ici pour pouvoir les retrouver quand le besoin se fait sentir.",
"",
"fr",
),
"ecriture": ("Écriture", "Textes rédigés lors d'ateliers d'écriture", "✍️"),
"ecriture": ("Écriture", "Textes rédigés lors d'ateliers d'écriture", "✍️", "fr"),
}
HOMEPAGE_EXCLUDED_CATEGORIES = [

View file

@ -65,7 +65,8 @@ class WorklogPreprocessor(Preprocessor):
happiness,
) = match.groups()
volunteer_hours = int(volunteer_hours) if volunteer_hours else 0
volunteer_hours = int(
volunteer_hours) if volunteer_hours else 0
payed_hours = int(payed_hours)
happiness = int(happiness)
date = datetime.strptime(f"{day} {month} {year}", "%d %B %Y")
@ -92,7 +93,8 @@ class WorklogPreprocessor(Preprocessor):
This is run once, after everything has been parsed
"""
payed_hours = sum([item["payed_hours"] for item in self.data.values()])
volunteer_hours = sum([item["volunteer_hours"] for item in self.data.values()])
volunteer_hours = sum([item["volunteer_hours"]
for item in self.data.values()])
data = dict(
data=self.data,
@ -120,7 +122,8 @@ class SimpleReader(MarkdownReader):
def __init__(self, *args, **kwargs):
super(SimpleReader, self).__init__(*args, **kwargs)
self.settings["MARKDOWN"]["extensions"].append("markdown.extensions.toc")
self.settings["MARKDOWN"]["extensions"].append(
"markdown.extensions.toc")
self.settings["MARKDOWN"]["extensions"].append(
MarkdownInclude({"base_path": self.settings["PATH"]})
)
@ -170,7 +173,8 @@ class SimpleReader(MarkdownReader):
if "slug" not in metadata:
metadata["slug"] = slugify(
metadata["title"], self.settings.get("SLUG_REGEX_SUBSTITUTIONS", [])
metadata["title"], self.settings.get(
"SLUG_REGEX_SUBSTITUTIONS", [])
)
category = os.path.basename(
@ -178,6 +182,12 @@ class SimpleReader(MarkdownReader):
)
metadata["category"] = self.process_metadata("category", category)
try:
lang = self.settings["CATEGORIES_DESCRIPTION"].get(category)[3]
except Exception:
lang = "en"
metadata["lang"] = lang
return content, metadata