Vue lecture

Ackify CE : preuve de lecture cryptographique en Go + Vue3

Ackify CE est une plateforme open-source (AGPL v3) permettant de générer des preuves de lecture cryptographiquement vérifiables pour des documents internes.

Le problème

Les organisations doivent souvent prouver qu'un collaborateur a lu un document (politique RGPD, charte de sécurité, formation obligatoire). Les solutions existantes sont soit trop lourdes (signature électronique qualifiée comme DocuSign à 10-30€/utilisateur/mois), soit non sécurisées (simple email).

La solution

Ackify génère des preuves de lecture cryptographiques avec :

  • Signatures Ed25519 (même algo que SSH)
  • Horodatage immutable (PostgreSQL triggers)
  • Hash chain blockchain-like
  • Vérification offline possible

Cas d'usage

  • Validation de politiques internes (sécurité, RGPD)
  • Attestations de formation obligatoire
  • Prise de connaissance de procédures
  • Accusés de réception contractuels

Différence avec DocuSign

Ackify n'est pas une alternative à DocuSign pour des contrats juridiques. C'est une solution simple pour des besoins internes où la signature qualifiée est overkill.

N'hésitez pas si vous avez des questions techniques !

Installation

curl -fsSL https://raw.githubusercontent.com/btouchard/ackify-ce/main/install/install.sh | bash
cd ackify-ce
nano .env  # Configurer OAuth2
docker compose up -d

Installation complète en ~5 minutes.

Stack technique

Backend

  • Go 1.24 (Clean Architecture / DDD)
  • PostgreSQL 16
  • Chi Router
  • OAuth2 (Google, GitHub, GitLab, custom) ou Magic Link (passwordless)

Frontend

  • Vue 3 + TypeScript
  • Tailwind CSS
  • i18n (FR, EN, ES, DE, IT)

DevOps

  • Docker distroless < 30 MB
  • CI/CD GitHub Actions
  • Tests : 72,6% couverture (180 tests unitaires + 33 intégration)

Commentaires : voir le flux Atom ouvrir dans le navigateur

  •  

Ackify - Pour confirmer la lecture d'un document

Benjamin, lecteur de korben.info, m’a envoyé un email pour me parler d’ Ackify , son nouveau projet open-source. L’idée avec Ackify c’est de pouvoir confirmer qu’un document a bien été lu !

Je parle pas de signature électronique, hein. Pour ça y’a déjà DocuSign, Adobe Sign, HelloSign…etc. Non, je vous parle des cas où vous avez juste besoin de prouver que Thérèse de la compta a bien reçu, ouvert et lu le PDF de la nouvelle procédure RGPD. Et pour ça, les solutions du marché sont soit surdimensionnées, soit inexistantes, du coup, les boîtes bidouillent avec des Google Forms pourris ou des macros Excel qui traînent dans le coin depuis 2003.

Ackify tourne en Docker distroless, s’installe en 5 minutes avec un script, et fonctionne sur PostgreSQL 16. L’authentification se fait via Magic Link sans mot de passe, ou OAuth 2 si vous préférez Google, GitHub ou GitLab. Ensuite, une fois connecté, vous lisez le document, vous cliquez sur “J’ai lu”, et c’est terminé. Une signature cryptographique Ed25519 est générée, le checksum SHA-256 du document est vérifié, et tout part dans un audit trail immuable.

Le principe est donc super solide et chaque utilisateur ne peut signer qu’une seule fois par document. Ensuite, vous en tant qu’admin, vous avez un dashboard pour tracker qui a lu quoi. Il y a également des rappels automatiques par email pour ceux qui traînent et des widgets que vous pouvez intégrer dans votre intranet si ça vous amuse !

Sans oublier que c’est multi-lingue !

Bref, que ce soit pour obtenir des attestations de lecture de politiques de sécurité, des formations internes avec validation, la prise en compte de directive RGPD, des procédures de conformité…etc, Ackify pourra vous aider sans avoir à sortir l’artillerie lourde de la signature électronique traditionnelle.

Voilà, c’est gratuit, open source et vous pouvez avoir tous les détails sur le site officiel du projet : ackify.eu .

  •  

Upgrader une instance PostgreSQL docker

Cela fait quelques que temps que je n'utilise plus Nginx Proxy Manager comme reverse proxy, mais uniquement pour le renouvellement automatique de quelques certificats Let's Encrypt isolés. Malgré tout, il y a quelques temps j'ai dû réaliser un upgrade de la base PostgreSQL17 vers PostgreSQL18 reliée à cette instance via docker. Voila comment je m'y suis pris (la méthode est applicable potentiellement à toutes vos petites instances PostgreSQL mono container que ce soit sur docker ou sur kube).
  •  

Kafka is fast -- I'll use Postgres

Cet article suggère que PostgreSQL peut à peu près tout faire et représente donc une solution idéale pour la majorité des boîtes dont les besoins en scalabilité (évolution de la charge) ne seront jamais suffisants pour justifier une infra plus complexe.

C'est l'idée de MVI : minimum viable infrastructure.

J'aime bien le côté pragmatique, même si ça implique, de fait, une très grande maîtrise de PostgreSQL.


Permalink
  •  

Kafka is fast -- I'll use Postgres

Cet article suggère que PostgreSQL peut à peu près tout faire et représente donc une solution idéale pour la majorité des boîtes dont les besoins en scalabilité (évolution de la charge) ne seront jamais suffisants pour justifier une infra plus complexe.

C'est l'idée de MVI : minimum viable infrastructure.

J'aime bien le côté pragmatique, même si ça implique, de fait, une très grande maîtrise de PostgreSQL.


Permalink
  •  

Neura Hustle Tracker - Surveiller sa productivité en respectant sa vie privée

Quand je bossais comme consultant y’a genre 10 000 ans, je devais tracker le temps que je passais pour chaque client dans un fichier Excel. Et ça mes amis, c’était super chiant mais nécessaire. Après peut-être que vous de votre côté, vous n’êtes pas tropfliqué mais vous vous imposez l’envoi de messages Slack stratégiques juste avant de vous déconnecter, ou vous faites partir des emails à 23h pour montrer que vous êtes un esclave acharné du capitalisme ?

Bienvenue dans l’ère du grand théâtre de la productivité.

Après quand on est freelance ou qu’on essayer de bien équilibrer son temps de travail, c’est sympa aussi de pouvoir tracker ce qu’on fait en temps réel, pour nous-même, sans forcement que personne d’autre ne regarde.

Hé bien c’est exactement ce que propose Neura Hustle Tracker qui est un tracker de temps open-source, écrit en Rust, qui tourne dans votre terminal et stocke TOUT en local sur votre machine dans un PostgreSQL. Comme ça, aucune donnée ne quitte votre ordinateur.

L’idée, c’est donc de reprendre le pouvoir sur vos propres données de productivité en enregistrant automatiquement les applications que vous utilisez, le temps passé sur chacune, et afficher ça sous la forme de graphiques directement dans votre terminal.

Comme ça vous verrez le temps pharamineux que vous passez sur Korben.info ou Slack au lieu de vraiment bosser. Pour l’installer, ça marche sous Windows, macOS et Linux et ça peut tourner dans un Docker. La doc est ici.

Vous pouvez même le lancer au démarrage de l’ordi, comme ça, le tracking démarre instantanément dès que vous commencez à bosser. Par contre, n’oubliez pas de le couper quand vous voulez faire un truc en dehors des radars hein ^^.

Le projet est encore jeune, mais il évolue rapidement. Adolfo, le développeur principal, a d’ailleurs récemment ajouté des commandes pour naviguer dans l’historique complet (touches h pour history et b pour breakdown) et améliore régulièrement la qualité des visualisations.

Voilà, donc si vous en avez marre que votre productivité soit transformée en KPI pour votre manager, et que vous voulez juste comprendre comment vous passez vraiment votre temps sans avoir à rendre de comptes à personne, Neura Hustle Tracker mérite le coup d’oeil. C’est gratuit, et c’est open-source !

Un grand merci à Lorenper pour le partage !

  •  

Listing top Pypi keywords | BigQuery Datasets - PyPI Docs

Using Google bq CLI, the following command allows to get the top Pypi keywords from the bigquery-public-data.pypi.distribution_metadata table:

bq query --use_legacy_sql=false 'SELECT keyword, COUNT(*) as keyword_count FROM `bigquery-public-data.pypi.distribution_metadata`, UNNEST(SPLIT(keywords, ", ")) as keyword GROUP BY keyword ORDER BY keyword_count DESC LIMIT 100'

Result for the top-15 keywords:

  • python : 128555 appearances
  • DuckDB Database SQL OLAP : 70739 appearances
  • ai : 64997 appearances
  • tensorflow tensor machine learning : 51144 appearances
  • pulumi : 50076 appearances
  • api : 47986 appearances
  • probabilities probabilistic-graphical-models inference diagnosis : 46552 appearances
  • rust : 45607 appearances
  • cli : 39512 appearances
  • OpenAPI : 38814 appearances
  • sdk : 38060 appearances
  • llm : 37487 appearances
  • OpenAPI-Generator : 36734 appearances
  • database : 35578 appearances
  • automation : 34393 appearances

Note that this is a very basic query, that does take into account that some packages have a lot more versions published on Pypi than others.


Permalien
  •  

Introduction conceptuelle à la mécanique quantique #3, par Alice van Helden - YouTube

Franchement merci beaucoup pour ces vidéos. J'ai maintenant fini de suivre tout le cours et c'est vraiment ce genre de cours que je cherchais depuis longtemps. C'est une explications simple mais très complète de la physique quantique. Il y a 'tout ce qu'il faut, sans être obligé d'apprendre le (ou les) formalisme mathématique qui décrit la mécanique quantique.Trop souvent je vois de la vulgarisation trop simpliste, ou alors il faut carrément fait un cours universitaires complet pour aller plus loin. Là il y a le juste milieu.
J'ai appris beaucoup, notamment des points que je n'avais jamais entendu auparavant, comme le fait que l'énergie n'existe pas vraiment au niveau quantique ! C'est une représentation émergente, avec des conditions de transformation. Wouah. Ça me questionne sur le formalisme mathématique que l'on utilise. On devrait aller au delà des équations et décrire la physique quantique avec du code informatique, comme pour les transformations avec la conservation de l'énergie, on place les conditions pour garantir la conservation de l'énergie.
Puis j'ai découvert avec votre magnifique explication de l'expérience d'Alain Aspect que la non localité n'est pas la seule conclusion que l'on peut faire, mais que la rétro-causalité est aussi envisageable ! Très intéressant. C'est là que l'on voit que la vidéo date d'il y a 5 ans déjà et que depuis Aspect a reçu le prix Nobel.
Depuis j'ai aussi eu l'occasion de creuser la théorie de l'espace temps flexible de Philippe Guillemant, et je dois dire que j'aime bien l'idée du fonctionnement du temps un peu comme la métaphore du GPS avec un futur déjà conçu pour nous mener à une destination, mais modifiable hors de l'espace temps pour changer la destination et bifurquer sur un autre futur possible. On a ici une rétrocausalité qui me semble pas du tout problématique. Je ne vois pas d'obstacle majeur à voir ainsi l'expérience d'Aspect nous ouvrir la voie à la rétrocausalité plutôt qu'à la non localité. (voir les deux !!)
C'est aussi grâce à votre explication que j'ai compris le principe de fonctionnement d'une chambre à brouillard ! merci.
Dans votre cours, j'ai aussi beaucoup aimé la fin avec les différentes explications des interprétations de la mécanique quantique. Ce point n'est jamais abordé dans les vulgarisations ! C'est dommage. On voit ici que LA physique quantique n'existe pas. Mais que l'on a une série d'expériences qui nous montrent des faits. Que l'on a des principes de base comme la quantification. (qui a donné son nom à la "quantique") mais que le sens que l'on donne à tout ces faits ne fait pas consensus. Il y a l'interprétation de Copenhague qui est certes majoritaire. Mais là on comprend le flou autour de la physique quantique, quand la plupart des physiciens ne sont pas d'accord entre eux sur le sens de tout ça !!
Perso, j'ai un faible pour l'interprétation relationnelle de la mécanique quantique. Comme vous jusqu'à la préparation de ce cours, si j'ai bien compris. Vous dites que c'est à cause du "flou" du pourquoi du choix d'une particule ou d'une autre dans ce modèle que finalement cette interprétation ne vous convient plus tant que ça.
Là je rebondis sur l'idée de la rétrocausalité, c'est peut être une cause du futur qui nous influence dans le choix !? A méditer.
En tout cas c'est peut être une déformation professionnelle liées à mes connaissance sur les bases de données relationnelles, mais j'ai l'impression qu'on a ici un fonctionnement relationnel similaire.
Dans une base de données relationnelle on pratique la superposition d'état. Le temps n'existe pas. On a toute les données potentielles en même temps et ce n'est que lorsque l'utilisateur (l'observateur) paramètre et lance une requête SQL que l'on crée des jointures entre les tables qui représentes les objets et qu'on créer un ordre de représentation des données et une contextualisation des donnée en fonction de critères passé en paramètre. On linéarise les données pour les lire, d'une certaine manière on crée le temps. On manifeste une seule réalité à partir d'un énorme ensemble de potentialité. L'ordre dans lequel on fait les jointures entre les tables a aussi son importance comme en physique quantique.
Donc contrairement à ce qui est souvent avancé en vulgarisation, perso avec ce genre d'analogie, la physique quantique me semble intuitive. Ce qui est dur c'est le formalisme mathématique !
A cogiter... merci


Permalien
  •