Compare commits

...

2 Commits

Author SHA1 Message Date
iGor milhit bd50d2780a
wip site: réécrit la page d'accueil
- Déplace tout ce qui concerne le thème dans... le thème. Pourquoi
  s'évertuer à avoir un thème générique alors que je suis le seul à
  l'utiliser ?

Co-Authored-by: iGor milhit <igor@milhit.ch>
2026-06-15 20:58:57 +02:00
iGor milhit 264ab0ab1c
traces: un bilan de la semaine qui se termine
Co-Authored-by: iGor milhit <igor@milhit.ch>
2026-06-14 18:14:56 +02:00
17 changed files with 91 additions and 432 deletions

View File

@ -1,43 +0,0 @@
// The following rules are styling the stream player
// that I'm using on top of live section pages.
// It doesn't belong to the theme, but to my website
// so it is here.
@use "@picocss/pico/scss/colors/index" as *;
.stream {
.status-player {
display: flex;
audio {
border-radius: 0 var(--pico-border-radius) var(--pico-border-radius) 0;
}
}
}
// Rules used by the off and on classes below
@mixin status {
display: flex;
border-radius: var(--pico-border-radius) 0 0 var(--pico-border-radius);
flex-grow: 1;
flex-direction: column;
justify-content: space-around;
text-transform: uppercase;
font-weight: bold;
text-align: center;
padding: 0 calc(var(--pico-spacing)/2);
margin: 0;
color: $grey-50;
}
.off {
@include status;
background-color: $red-500;
}
.on {
@include status;
background-color: $green-500;
}
// End of the stream section

View File

@ -1,20 +0,0 @@
////////////////////
// //
// Includes //
// //
////////////////////
// Overwrite the main SCSS theme file
// to add the stream rules that doesn't belong
// to the theme.
@use "picocss"; /* The pico css framework, customized */
@use "fonts"; /* The font face and fonts settings */
@use "variables"; /* Overrides the pico css variables and sets others */
@use "layout"; /* Main structure display */
@use "header";
@use "footer";
@use "lists"; /* Lists, post-infos, posts-lists */
@use "medias"; /* Audio, streams, figures, post-images */
@use "stream"; /* Specific to the stream player */
@use "texts";

View File

@ -1,80 +0,0 @@
---
title: "Accueil"
date: 2019-03-14T06:32:39+01:00
draft: false
---
## À la ville…
Vieux comme la [crise du pétrole][cp], je suis né entre des livres, des taches
dencre et quelques [vinyles][vinyl]. Les noyaux des centrales nucléaires se
sont [mis à fusionner][wpfusion], les empires qui suivirent la fin des empires
[sécroulèrent][wpurss], sécroulent encore, et à la croissance des montagnes
de papiers sajoute la croissance des montagnes de déchets électroniques. Au
milieu de cette dématérialisation joyeuse, jobserve les [traces
éphémères][blog] de mon cheminement chaotique.
## Comme au bureau?
### Aujourd'hui
Depuis <span itemprop="startDate">avril 2022</span>, je travaille comme
<span itemprop="hasOccupation">bibliothécaire spécialiste</span> pour la
discipline [*médecine clinique*][mc] à la
<span itemprop="workFor">bibliothèque de l'Université de Genève</span>, sur le
site du *Centre médical universitaire*. Et c'est avec un grand plaisir que je
retrouve des activités plus proches des personnes utilisant les services d'une
bibliothèque, que ce soit à l'accueil, pour la gestion des collection et dans
le cadre de formations.
### Jusqu'ici
De métier, je suis <span itemprop="jobTitle">*Spécialiste
{{< smallcaps "hes" >}}
en information documentaire*</span>, ce que je traduirais volontiers par
*artisan en sciences de linformation*, afin de souligner que les travailleurs
et travailleuses *incarnent* des savoir-faire construits patiemment. Plus
précisément, la filière que jai suivie formait des archivistes,
bibliothécaires et documentalistes. Une formation polyvalente donc, enrichie
par des méthodes et des outils numériques, que ce soit pour fabriquer des
documents, structurer de linformation ou essayer de travailler à plusieurs, ce
qui nest guère nouveau dans lhistoire des [espèces humaines][homo], mais qui
est à la fois facilité et rendu complexe par la numérisation du monde, ou plus
modestement dune partie de celui-ci.
Une [fameuse vidéo][minitel2.0] et un intérêt marqué pour l[informatique
libre][libre] ont orienté ma curiosité vers des champs particuliers, mais en
réalité centraux dans notre paysage passablement webocentré: le web, les
serveurs, lauto-hébergement (au moins partiel), les {{< smallcaps "sigb" >}} ,
les {{< smallcaps "cms" >}}, les [fabriques de publication][fabriques], le
format de balisage léger markdown, LaTeX, pandoc, etc.
Ces orientations mont amené à rejoindre
de <span itemprop="startDate">2016</span> à <span itemprop="endDate">2021</span>
léquipe <span itemprop="workFor">[{{< smallcaps "rero+" >}}][rero+]</span>,
afin de participer aux projets [rero21][rero21], à savoir
[{{< smallcaps "rero ils" >}}][reroils], un système de gestion de bibliothèques
et de réseaux de bibliothèques et [{{< smallcaps "sonar" >}}][sonar], un
service darchives ouvertes, les deux sous licence AGPL. Jy ai participé
essentiellement comme *<span itemprop="hasOccupation">scrum master</span>*,
mais également pour lélaboration des spécifications du point de vue métier,
ainsi quà la coordination avec les bibliothécaires des clients et partenaires
de {{< smallcaps "rero+" >}}.
[cp]: https://fr.wikipedia.org/wiki/Premier_choc_pétrolier "Article Wikipedia sur le Premier choc pétrolier"
[vinyl]: https://www.discogs.com/fr/user/ignami/collection?sort=artist&sort_order=asc "Mon compte Discogs"
[wpfusion]: https://fr.wikipedia.org/wiki/Fusion_du_c%C5%93ur_d'un_r%C3%A9acteur_nucl%C3%A9aire#Cas_r.C3.A9els "Section Cas réels de l'article Wikipedia sur la Fusion du coœur d'un réacteur nucléaire"
[wpurss]: https://fr.wikipedia.org/wiki/Union_des_r%C3%A9publiques_socialistes_sovi%C3%A9tiques#Derni.C3.A8res_ann.C3.A9es_de_l.27URSS_.281985-1991.29 "Section Dernières années de l'URSS de l'article Wikipedia sur l'URSS"
[blog]: /blog
[pandoc]: https://pandoc.org/ "site du logiciel Pandoc"
[libre]: https://fr.wikipedia.org/wiki/Logiciel_libre
[rero+]: https://rero.ch
[fondation-rero+]: https://www.rero.ch/a-propos/la-fondation
[homo]: https://fr.wikipedia.org/wiki/Homo
[minitel2.0]:
https://video.lqdn.fr/videos/watch/edd2b881-f3dd-42e5-b367-42c87c385c07 "Minitel 2.0 par Benjamin Bayart"
[fabriques]: https://www.quaternum.net/2020/04/29/les-fabriques-de-publication/
[rero21]: https://rero21.ch
[reroils]: https://github.com/rero/rero-ils
[sonar]: https://github.com/rero/sonar
[mc]: https://www.unige.ch/biblio/fr/disciplines/medecine-clinique

View File

@ -0,0 +1,74 @@
---
title: "La semaine qui se termine"
date: 2026-06-14T17:14:35+02:00
draft: false
categories: ["traces"]
tags: ["semaine", "maintenant", "lecture", "fruits et légumes", "musique"]
slug: la-semaine-qui-se-termine
---
Cette semaine, j'ai écouté:
- Janelle Monàe, à peu près tout ses albums. C'est une redécouverte, et
j'apprécie encore plus qu'à la découverte précédente!
- Le Jeff Parker ETA IVtet à l'occasion de la sortie du dernier disque, *Happy
today* qui est vraiment bien, mais ça serait dommage de ne pas (ré)écouter le
précédent, *The Easy Way Out* qui pourrait bien être encore meilleur. Une
transe jazz qui se construit à mesure, rarement le mot improvisation aura été
mieux incarné.
- L'album [*Mana*][2] de l'artiste Kalia Vandever, qui joue du trombone et
s'accompagne à la voix et au piano.
- [Jaubi][3], un groupe de jazz qui fusionne orient et occident, l'orient étant ici
représenté par l'Inde et le Pakistan. Mais ils le font d'une façon assez
nouvelle et bien exécutée.
- Et je redécouvre beaucoup de choses en ce moment, parce que je ressors des
cartons de CD de la cave pour les (re)convertir en fichiers avant de les
donner, comme par exemple cette compilation de morceaux électroniques locaux
sous le terme générique [d'*Hosomaki:mix*][1] qui contient quelques pépites.
Ce qui m'a fait réécouter DJ Goo aka The Gooster, et quand même, c'est
chouette.
Sur ma table de chevet, depuis un bon moment il y a *Empire of AI* de Karen
Hao, et ça en vaut la lecture. La journaliste écrit l'histoire d'OpenAI sur
plus de 10 ans, et ce doit être un bon condensé de l'histoire du
*machine-learning* contemporain. J'y ai compris un peu mieux ce que signifie le
travail humain pour l'apprentissage renforcé, à quel point ces modèles sont du
début à la fin de la numérisation de compétences humaines. Des métiers à tisser
aux LLM, en passant par tous les machinAO avec lesquels on a joué ces derniers
20 ans, ça se résume à ça: numériser les savoir-faire humain, pour le profits
de quelques-uns. \
Faudra que j'en fasse un bref compte-rendu de lecture,
peut-être, une fois.
Et samedi chez les maraîchers qui ont bravé la propagande autoritaire des
autorités illégitimes (oui, c'est une sorte de pléonasme, mais qui mérite
d'être déplié) pour venir au marché, dans la catégorie bio et locale, il y
avait:
- Des choux nouveaux, ou pointus, c'est trop bon.
- Des laitues romaines pour les manger en salade ou sautées à la poêle.
- Des courgettes.
- Des traces de brocolis, mais je suis arrivé trop tard pour participer au
festin.
- Des ognons frais.
- Des bouquets de basilic, de menthe marocaine.
- Des bouquets de carottes, aussi.
- Des myrtilles, des framboises, des fraises, des cerises.
- Quelques pommes rescapées.
- De la farine de Rouge de Bordeaux et de la farine de sarrasin.
Voilà un billet qui ne ressemble pas vraiment à ce que j'avais imaginé (une
sorte de YAML), ce que je peux être verbeux.
Sinon, en douce et en lenteur, je retravaille l'apparence et la structure de ce
site (*simplifier, simplifier, simplifier*), je me demande bien pourquoi vu que
le seul web qui vaille de nos jours, ce sont les flux de syndication. Aller, je
t'embrasse (comme ça, je sais pas d'où ça m'est venu).
<!-- références -->
[1]: https://mentalgroove.bandcamp.com/album/hosomaki-mix-3 "Le disque sur
Bandcamp"
[2]: https://intlanthem.bandcamp.com/album/mana "Le disque sur Bandcamp"
[3]: https://jaubi.bandcamp.com/album/a-sound-heart "La page du groupe sur
Bandcamp"

View File

@ -40,6 +40,10 @@ des contenus que je partage et dont je ne suis pas lauteur, tout le site peut
être copié, modifié, repris, à condition de me mentionner comme auteur de la être copié, modifié, repris, à condition de me mentionner comme auteur de la
première version, comme le prévoit la licence [{{< smallcaps "cc-by" >}}][6]. première version, comme le prévoit la licence [{{< smallcaps "cc-by" >}}][6].
## Contact
{{< contact-email >}}
Si tu as des questions ou des remarques nhésite pas à me contacter [par le Si tu as des questions ou des remarques nhésite pas à me contacter [par le
moyen qui te convient le plus][10]. moyen qui te convient le plus][10].

View File

@ -1,6 +1,6 @@
baseURL: https://igor.milhit.ch/ baseURL: https://igor.milhit.ch/
DefaultContentLanguage: fr DefaultContentLanguage: fr
title: iGor milhit title: igor.milhit
theme: portfoliGor theme: portfoliGor
enableGitInfo: true enableGitInfo: true
paginate: 0 paginate: 0
@ -43,26 +43,6 @@ menu:
title: À propos de ce site web title: À propos de ce site web
url: /à-propos/ url: /à-propos/
weight: -2 weight: -2
footer:
- identifier: credits
name: Crédits
url: /à-propos/#crédits
weight: -2
- identifier: contacts
name: Contacts
title: Me contacter
url: /#contacts-priv
weight: -1
- identifier: sources
name: Sources
title: Sources du site
url: https://git.milhit.ch/igor/igor.milhit
weight: 2
- identifier: licence
name: cc-by
title: Licence Creative Commons By 4.0
url: http://creativecommons.org/licenses/by/4.0/
weight: 1
permalinks: permalinks:
posts: :slug posts: :slug
blog: :slug blog: :slug
@ -84,29 +64,22 @@ params:
ImageDescription: Portrait de mouton aux couleurs sepia. ImageDescription: Portrait de mouton aux couleurs sepia.
author: author:
name: iGor milhit name: iGor milhit
email: igor@milhit.ch email: im@ignami.aleeas.com
siteSources: # siteSources:
# Git repository of the website # Git repository of the website
url: https://git.milhit.ch/igor/igor.milhit # url: https://git.milhit.ch/igor/igor.milhit
# Which kind of git forge is it? GitHub, a Gitlab instance, # Which kind of git forge is it? GitHub, a Gitlab instance,
# a Gitea or Forgejo intance? One of github, gitlab, gitea # a Gitea or Forgejo intance? One of github, gitlab, gitea
type: gitea # type: gitea
# Professional contact data # Professional contact data
contactsPro: # contactsPro:
address: Rue Michel-Servet 1, 1211 Genève 4 # address: Rue Michel-Servet 1, 1211 Genève 4
phone: +41 22 379 59 30 # phone: +41 22 379 59 30
email: igor.milhit@unige.ch # email: igor.milhit@unige.ch
# Personal contact data # Personal contact data
contactsPriv: # contact:
address: Ch. des Clochettes 16, 1206 Genève # email: im@ignami.aleeas.com
mobile: +41 76 552 80 59
email: igor@milhit.ch
publickey: igor-milhit-pub.asc
fingerprint: 843D 0CB6 A576 D7BE 4BF6 A63B 692D 97C3 D022 8A99
xmpp: igor@milhit.ch
cv: cv-igor-milhit.pdf
online:
git: https://git.milhit.ch/igor
local_include: local_include:
# Sets the script for the on/off button of the live player.
js: on_fiber.js js: on_fiber.js
home_post_list: true home_post_list: true

View File

@ -1,2 +0,0 @@
announcedLive = "Announce of the next live!"
announce = "Announce!"

View File

@ -1,2 +0,0 @@
announcedLive = "Annonce du prochain live!"
announce = "Annonce!"

View File

@ -1,15 +0,0 @@
<!DOCTYPE html>
<html lang="{{ .Language.Lang }}" prefix="og: http://ogp.me/ns#">
{{ partial "head.html" . }}
<body>
{{- partial "header.html" . -}}
<main aria-role="main" class="container"
itemscope itemtype="https://schema.org/Person">
{{- block "main" . }}{{- end }}
</main>
{{- partial "footer.html" . -}}
</body>
{{ if .Params.local_include }}
<script src="/js/on_fiber.js"></script>
{{ end }}
</html>

View File

@ -1,34 +0,0 @@
{{ define "main" }}
<header>
<h2>{{.Title}}</h2>
</header>
<!-- "{{.Content}}" pulls from the markdown content of the corresponding
_index.md -->
<main>
<header>
{{.Content }}
</header>
<section class="posts-list">
<!--
Ranges pages by the publish date, in reverse order, to display the
post titles of the section from most recent to older. If the pages
has the parameter announce, then it displays a marked warning.
-->
{{ range .Pages.ByPublishDate.Reverse }}
<article>
{{ if .Params.Announce }}
<a href="{{ .Permalink }}"
title="{{ i18n "announcedLive" }}">
{{- .Title -}}
</a> <mark>{{ i18n "announce" }}</mark>
{{ else }}
<a href="{{ .Permalink }}">
{{- .Title -}}
</a>
{{ end }}
{{ partial "lists-footer.html" . }}
</article>
{{ end }}
</section>
</main>
{{ end }}

View File

@ -1,57 +0,0 @@
<header class="container main-header">
<nav class="no-print" role="navigation" aria-label="Primary">
<ul>
<li>
<!-- Insert the logo in SVG xml -->
<a href="{{ .Site.BaseURL }}"
title="{{ .Site.Title }}">
{{ partial "logo.html" }}
</a>
</li>
<li>
<a href="{{ .Site.BaseURL }}"
class="title no-reformat"
title="{{ .Site.Title }}" >
<h1>{{ .Site.Title }}</h1>
</a>
</li>
</ul>
<ul class="header-navigation">
{{ $currentPage := . -}}
{{ range sort .Site.Menus.main -}}
<li class="nav-item secondary">
<a class="nav-item-link{{if or (
$currentPage.IsMenuCurrent "main" .
) (
$currentPage.HasMenuCurrent "main" .
) }} active{{end}}"
href="{{ .URL }}" title="{{ .Title }}">{{ .Name }}</a>
</li>
{{ end -}}
<li class="nav-item secondary">
{{ if .IsPage -}}
<a class="nav-item-link"
href="{{ .Site.BaseURL }}index.xml"
title="{{ i18n "subscribeToPublications" }} {{ i18n "toWebsite" }}">
{{ i18n "subscribe" }}
</a>
{{ else if .IsHome -}}
<a class="nav-item-link"
href="{{ .Site.BaseURL }}index.xml"
title="{{ i18n "subscribeToPublications" }} {{ i18n "toWebsite" }}">
{{ i18n "subscribe" }}
</a>
{{ else if .IsNode -}}
<a class="nav-item-link"
href="{{ .Permalink }}index.xml"
title="{{ i18n "subscribeToPublications" }} {{ i18n "toSection" }}">
{{ i18n "subscribe" }}
</a>
{{ end -}}
</li>
</ul>
</nav>
{{ if .Params.local_include }}
{{ partial "stream.html" }}
{{ end }}
</header>

View File

@ -1,21 +0,0 @@
<section class="home-posts-list">
<h2>{{ i18n "lastPosts" }}</h2>
<!--
Ranges regular pages by the publish date, in reverse order, to display the
post titles of the section from most recent to older, and the category.
-->
{{ range first 5 .Site.RegularPages.ByPublishDate.Reverse }}
<article>
{{ if .Params.Announce }}
<a href="{{ .Permalink }}"
title="{{ i18n "announcedLive" }}">
{{- .Title -}}
</a> <mark>{{ i18n "announce" }}</mark>
{{ else }}
<a href="{{ .Permalink }}">
{{- .Title -}}
</a>
{{ end }}
</article>
{{ end }}
</section>

View File

@ -1,18 +0,0 @@
<figure class="stream">
<div class="status-player">
<p id="on"></p>
<audio controls>
<source src="https://id-libre.org/live/stream.ogg" type="audio/ogg">
<source src="https://id-libre.org/live/stream.mp3" type="audio/mp3">
<p>Your browser does not support the <code>audio</code> element.</p>
</audio>
</div>
<figcaption>
<p>
Écouter le flux (s'il est «on»).
Pour utiliser ton propre client:
<a href="https://id-libre.org/live/stream.ogg">OGG</a>
<a href="https://id-libre.org/live/stream.mp3">MP3</a>
</p>
</figcaption>
</figure>

View File

@ -1,4 +0,0 @@
<!-- Author: Parsia Hakimian https://github.com/parsiya/Hugo-Shortcodes -->
<!-- abbr HTML tag -->
<abbr title="{{ .Get "title" }}">{{ .Get "text" }}</abbr>

View File

@ -1,80 +0,0 @@
<!-- Author: Parsia Hakimian https://github.com/parsiya/Hugo-Shortcodes -->
<!-- port of Octopress blockquote plugin http://octopress.org/docs/plugins/blockquote/ to Hugo
see readme for usage -->
<!-- Adapted by iGor milhit for his own purpose -->
<!-- reset scratch variables at the start -->
{{ $.Scratch.Set "bl_lang" false }}
{{ $.Scratch.Set "bl_author" false }}
{{ $.Scratch.Set "bl_source" false }}
{{ $.Scratch.Set "bl_link" false }}
{{ $.Scratch.Set "bl_title" false }}
{{ if .IsNamedParams }}
{{ $.Scratch.Set "bl_lang" (.Get "lang") }}
{{ $.Scratch.Set "bl_author" (.Get "author") }}
{{ $.Scratch.Set "bl_source" (.Get "source") }}
{{ $.Scratch.Set "bl_link" (.Get "link") }}
{{ $.Scratch.Set "bl_title" (.Get "title") }}
{{ else }}
<!-- for the positional version if any -->
{{ end }}
<!-- if title is not set explicitly then we need to beautify the link
if length of link is more than 32 chars, we will cut it off by 32 and
then drop everything after the last / if any and put it in into title -->
{{ with $.Scratch.Get "bl_title" }}
<!-- do nothing -->
{{ else }}
{{ with $.Scratch.Get "bl_link" }} <!-- if link is given -->
{{ range last 1 (split ($.Scratch.Get "bl_link" ) "://") }} <!-- split by :// and then only take the items after it to remove protocol:// -->
{{ $.Scratch.Set "title_without_protocol" . }}
{{ end }}
{{ range last 1 (split ($.Scratch.Get "title_without_protocol" ) "www.") }} <!-- also remove the www. at the start if any. we are using a second split because all URLS may not start with it -->
{{ $.Scratch.Set "title_without_protocol" . }}
{{ end }}
{{ $.Scratch.Set "bl_title" ($.Scratch.Get "title_without_protocol") }}
<!-- if link is longer than 32 bytes we should trim it -->
{{ if (gt (len ($.Scratch.Get "title_without_protocol") ) 32) }}
{{ $title := (slicestr ($.Scratch.Get "title_without_protocol") 0 32) }} <!-- get the first 32 characters of title_without_protocol -->
{{ $split_by_fw_slash := split $title "/" }} <!-- now split on / because we want to stop after the last forward slash -->
{{ $count := (sub (len $split_by_fw_slash) 1) }} <!-- we want everything but the last part so we adjust the count accordingly -->
{{ $.Scratch.Set "tempstring" "" }} <!-- temp variable to hold the concatinated string -->
{{ range first $count $split_by_fw_slash }} <!-- loop through all parts except last and concat them (add / between halves) -->
{{ $.Scratch.Set "tempstring" ( . | printf "%s%s/" ($.Scratch.Get "tempstring") | printf "%s" ) }}
{{ end }}
{{ $.Scratch.Set "bl_title" ( printf "%s..." ($.Scratch.Get "tempstring") | printf "%s" ) }}
{{ end }}
{{ end }}
{{ end }}
<figure class="citation">
<blockquote
{{- with $.Scratch.Get "bl_lang" }} lang="{{ . }}"{{ end -}}
{{- with $.Scratch.Get "bl_link" }} cite="{{ . }}"{{ end -}}>
{{ .Inner | markdownify | safeHTML -}}
{{ with $.Scratch.Get "bl_author" -}}
<figcaption>
{{ with $.Scratch.Get "bl_author" -}}{{ . }}{{ end }}
{{ with $.Scratch.Get "bl_source" }}
&mdash; <cite>{{ . }}</cite>
{{ else }}
{{ with $.Scratch.Get "bl_link" }}
&mdash; <cite>
<a href="{{ . }}" title="{{ . }}" rel="noopener noreferrer">{{ $.Scratch.Get "bl_title" }}</a> <!-- can't have new lines here -->
</cite>
{{ else }}
{{ with $.Scratch.Get "bl_title" }}
&mdash; <cite>
{{ $.Scratch.Get "bl_title" }}</a>
</cite>
{{ end }}
{{ end }}
{{ end }}
</figcaption>
{{- end -}}
</blockquote>
</figure>

View File

@ -1,16 +0,0 @@
const url = 'https://id-libre.org/live/status-json.xsl';
const statusElement = document.getElementById('on');
async function status() {
const response = await fetch(url);
const data = await response.json();
const status = data.icestats.source ? 'on' : 'off'
statusElement.innerHTML = status;
statusElement.classList.remove("on", "off");
statusElement.classList.add(status);
}
status();
setInterval(() => status(), 2000);

@ -1 +1 @@
Subproject commit 5074b69b605efddb7598bf9f935070ef9006c166 Subproject commit c65f80c72ee7d5853088521067eae1970c8262a3