Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
Livre où il est question d'amitié, de ce qu'elle signifie dans un monde où le devenir-parent, les sociabilités familiales et le volontaire désintérêt dans les relations est la norme.
-
-
-
-
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
+ Step by step follow-up on how I've deployed it and added custom templates on top.
+
@@ -108,18 +114,8 @@
Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j’aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant ImageMagick. Merci à ce gist
diff --git a/drafts/deploying-and-customizing-datasette.html b/deploying-and-customizing-datasette.html
similarity index 69%
rename from drafts/deploying-and-customizing-datasette.html
rename to deploying-and-customizing-datasette.html
index 83c6613..025a9fb 100644
--- a/drafts/deploying-and-customizing-datasette.html
+++ b/deploying-and-customizing-datasette.html
@@ -73,8 +73,24 @@ du-shvenv
If that’s useful to you, here is the git repository I’m deploying to my server.
Using templates
-
Okay, I now want to be able to send my clients an URL on which they can see what I’ve been doing, and what I’ve been using my time on.
-
The documentation
+
Okay, I now want to be able to send an URL to the people I’m working with, on which they can see what I’ve been doing, and what I’ve been using my time on.
+
It was pretty simple to do, and kind of weird to basically do what I’ve been doing back in the days for my first PHP applications : put SQL statements in the templates ! heh.
+
I’ve added a template with what I want to do. It has the side-effect of being able to propose a read-only view to a private database.
+
<h1>{{project}}
+ {% for row in sql("SELECT SUM(CAST(duration AS REAL)) as total_hours FROM journal WHERE project = '" + project + "';", database="db") %}
+({{ row["total_hours"] }} heures)
+{% endfor %}
+</h1>
+<dl>
+ {% for row in sql("select date, CAST(duration AS REAL) as duration, content from journal where project = '" + project + "' order by date DESC", database="db") %}
+ <dt>{{ row["date"] }} ({{ row["duration"] }} heures)</dt>
+ <dd>{{ render_markdown(row["content"]) }}</dd>
+ {% endfor %}
+</dl>
+
diff --git a/feeds/.atom.xml b/feeds/.atom.xml
index 9bb1705..22b6319 100644
--- a/feeds/.atom.xml
+++ b/feeds/.atom.xml
@@ -1,5 +1,72 @@
-Alexis Métaireauhttps://blog.notmyidea.org/2023-11-11T00:00:00+01:002023, Semaine 452023-11-11T00:00:00+01:002023-11-11T00:00:00+01:00tag:blog.notmyidea.org,2023-11-11:/2023-semaine-45.html
+Alexis Métaireauhttps://blog.notmyidea.org/2023-11-12T00:00:00+01:00Deploying and customizing datasette2023-11-12T00:00:00+01:002023-11-12T00:00:00+01:00tag:blog.notmyidea.org,2023-11-12:/deploying-and-customizing-datasette.html<p>First, create the venv and install everything</p>
+<div class="highlight"><pre><span></span><code><span class="c1"># Create and activate venv</span>
+python3<span class="w"> </span>-m<span class="w"> </span>venv<span class="w"> </span>venv
+<span class="nb">source</span><span class="w"> </span>venv/bin/activate
+
+<span class="c1"># Install datasette…</span>
+pip<span class="w"> </span>install<span class="w"> </span>datasette
+
+<span class="c1"># … and the plugins</span>
+datasette<span class="w"> </span>install<span class="w"> </span>datasette-render-markdown<span class="w"> </span>datasette-dashboards<span class="w"> </span>datasette-dateutil
+</code></pre></div>
+
+<p>I was curious how much all of this was weighting. <span class="caps">30MB</span> seems pretty reasonable to me.</p>
+<div class="highlight"><pre><span></span><code><span class="c1"># All of …</span></code></pre></div><p>First, create the venv and install everything</p>
+<div class="highlight"><pre><span></span><code><span class="c1"># Create and activate venv</span>
+python3<span class="w"> </span>-m<span class="w"> </span>venv<span class="w"> </span>venv
+<span class="nb">source</span><span class="w"> </span>venv/bin/activate
+
+<span class="c1"># Install datasette…</span>
+pip<span class="w"> </span>install<span class="w"> </span>datasette
+
+<span class="c1"># … and the plugins</span>
+datasette<span class="w"> </span>install<span class="w"> </span>datasette-render-markdown<span class="w"> </span>datasette-dashboards<span class="w"> </span>datasette-dateutil
+</code></pre></div>
+
+<p>I was curious how much all of this was weighting. <span class="caps">30MB</span> seems pretty reasonable to me.</p>
+<div class="highlight"><pre><span></span><code><span class="c1"># All of this weights 30Mb</span>
+du<span class="w"> </span>-sh<span class="w"> </span>venv
+30M<span class="w"> </span>venv
+</code></pre></div>
+
+<h2 id="adding-authentication">Adding authentication</h2>
+<p>Datasette doesn’t provide authentication by default, so <a href="https://docs.datasette.io/en/stable/authentication.html">you have to use a plugin for this</a>. I’ll be using <a href="https://github.com/simonw/datasette-auth-github">Github authentication</a> for now as it seems simple to add:</p>
+<div class="highlight"><pre><span></span><code>pip install datasette-auth-github
+</code></pre></div>
+
+<p>I’ve had to create a new github application and export the variables to my server, and add some configuration to my <code>metadata.yaml</code> file:</p>
+<div class="highlight"><pre><span></span><code><span class="nt">allow</span><span class="p">:</span>
+<span class="w"> </span><span class="nt">gh_login</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">almet</span>
+
+<span class="nt">plugins</span><span class="p">:</span>
+<span class="w"> </span><span class="nt">datasette-auth-github</span><span class="p">:</span>
+<span class="w"> </span><span class="nt">client_id</span><span class="p">:</span>
+<span class="w"> </span><span class="s">"$env"</span><span class="p p-Indicator">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">GITHUB_CLIENT_ID</span>
+<span class="w"> </span><span class="nt">client_secret</span><span class="p">:</span>
+<span class="w"> </span><span class="s">"$env"</span><span class="p p-Indicator">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">GITHUB_CLIENT_SECRET</span>
+</code></pre></div>
+
+<p>If that’s useful to you, here is <a href="https://gitlab.com/almet/timetracker-datasette-deploy">the git repository</a> I’m deploying to my server.</p>
+<h2 id="using-templates">Using templates</h2>
+<p>Okay, I now want to be able to send an <span class="caps">URL</span> to the people I’m working with, on which they can see what I’ve been doing, and what I’ve been using my time on.</p>
+<p>It was pretty simple to do, and kind of weird to basically do what I’ve been doing back in the days for my first <span class="caps">PHP</span> applications : put <span class="caps">SQL</span> statements in the templates ! heh.</p>
+<p>I’ve added a template with what I want to do. It has the side-effect of being able to propose a read-only view to a private database.</p>
+<div class="highlight"><pre><span></span><code><span class="p"><</span><span class="nt">h1</span><span class="p">></span>{{project}}
+ {% for row in sql("SELECT SUM(CAST(duration AS REAL)) as total_hours FROM journal WHERE project = '" + project + "';", database="db") %}
+({{ row["total_hours"] }} heures)
+{% endfor %}
+<span class="p"></</span><span class="nt">h1</span><span class="p">></span>
+<span class="p"><</span><span class="nt">dl</span><span class="p">></span>
+ {% for row in sql("select date, CAST(duration AS REAL) as duration, content from journal where project = '" + project + "' order by date DESC", database="db") %}
+ <span class="p"><</span><span class="nt">dt</span><span class="p">></span>{{ row["date"] }} ({{ row["duration"] }} heures)<span class="p"></</span><span class="nt">dt</span><span class="p">></span>
+ <span class="p"><</span><span class="nt">dd</span><span class="p">></span>{{ render_markdown(row["content"]) }}<span class="p"></</span><span class="nt">dd</span><span class="p">></span>
+ {% endfor %}
+<span class="p"></</span><span class="nt">dl</span><span class="p">></span>
+</code></pre></div>
+
+<p>Which looks like this :</p>
+<p><img alt="Alt text" src="/images/datasette/custom-template.png"></p>2023, Semaine 452023-11-11T00:00:00+01:002023-11-11T00:00:00+01:00tag:blog.notmyidea.org,2023-11-11:/2023-semaine-45.html
<p>Une reprise après deux semaines de pause. Première semaine sur uMap, et beaucoup d’à-côtés.</p>
<h2 id="ce-qui-sest-passe">Ce qui s’est passé</h2>
<dl>
diff --git a/feeds/.rss.xml b/feeds/.rss.xml
index 7ef1e3b..7940837 100644
--- a/feeds/.rss.xml
+++ b/feeds/.rss.xml
@@ -1,5 +1,18 @@
-Alexis Métaireauhttps://blog.notmyidea.org/Sat, 11 Nov 2023 00:00:00 +01002023, Semaine 45https://blog.notmyidea.org/2023-semaine-45.html
+Alexis Métaireauhttps://blog.notmyidea.org/Sun, 12 Nov 2023 00:00:00 +0100Deploying and customizing datasettehttps://blog.notmyidea.org/deploying-and-customizing-datasette.html<p>First, create the venv and install everything</p>
+<div class="highlight"><pre><span></span><code><span class="c1"># Create and activate venv</span>
+python3<span class="w"> </span>-m<span class="w"> </span>venv<span class="w"> </span>venv
+<span class="nb">source</span><span class="w"> </span>venv/bin/activate
+
+<span class="c1"># Install datasette…</span>
+pip<span class="w"> </span>install<span class="w"> </span>datasette
+
+<span class="c1"># … and the plugins</span>
+datasette<span class="w"> </span>install<span class="w"> </span>datasette-render-markdown<span class="w"> </span>datasette-dashboards<span class="w"> </span>datasette-dateutil
+</code></pre></div>
+
+<p>I was curious how much all of this was weighting. <span class="caps">30MB</span> seems pretty reasonable to me.</p>
+<div class="highlight"><pre><span></span><code><span class="c1"># All of …</span></code></pre></div>Sun, 12 Nov 2023 00:00:00 +0100tag:blog.notmyidea.org,2023-11-12:/deploying-and-customizing-datasette.htmlcodeDatasetteDeployment2023, Semaine 45https://blog.notmyidea.org/2023-semaine-45.html
<p>Une reprise après deux semaines de pause. Première semaine sur uMap, et beaucoup d’à-côtés.</p>
<h2 id="ce-qui-sest-passe">Ce qui s’est passé</h2>
<dl>
diff --git a/feeds/all-en.atom.xml b/feeds/all-en.atom.xml
index 8db7320..35b9145 100644
--- a/feeds/all-en.atom.xml
+++ b/feeds/all-en.atom.xml
@@ -1,5 +1,72 @@
-Alexis Métaireauhttps://blog.notmyidea.org/2023-11-11T00:00:00+01:002023, Semaine 452023-11-11T00:00:00+01:002023-11-11T00:00:00+01:00tag:blog.notmyidea.org,2023-11-11:/2023-semaine-45.html
+Alexis Métaireauhttps://blog.notmyidea.org/2023-11-12T00:00:00+01:00Deploying and customizing datasette2023-11-12T00:00:00+01:002023-11-12T00:00:00+01:00tag:blog.notmyidea.org,2023-11-12:/deploying-and-customizing-datasette.html<p>First, create the venv and install everything</p>
+<div class="highlight"><pre><span></span><code><span class="c1"># Create and activate venv</span>
+python3<span class="w"> </span>-m<span class="w"> </span>venv<span class="w"> </span>venv
+<span class="nb">source</span><span class="w"> </span>venv/bin/activate
+
+<span class="c1"># Install datasette…</span>
+pip<span class="w"> </span>install<span class="w"> </span>datasette
+
+<span class="c1"># … and the plugins</span>
+datasette<span class="w"> </span>install<span class="w"> </span>datasette-render-markdown<span class="w"> </span>datasette-dashboards<span class="w"> </span>datasette-dateutil
+</code></pre></div>
+
+<p>I was curious how much all of this was weighting. <span class="caps">30MB</span> seems pretty reasonable to me.</p>
+<div class="highlight"><pre><span></span><code><span class="c1"># All of …</span></code></pre></div><p>First, create the venv and install everything</p>
+<div class="highlight"><pre><span></span><code><span class="c1"># Create and activate venv</span>
+python3<span class="w"> </span>-m<span class="w"> </span>venv<span class="w"> </span>venv
+<span class="nb">source</span><span class="w"> </span>venv/bin/activate
+
+<span class="c1"># Install datasette…</span>
+pip<span class="w"> </span>install<span class="w"> </span>datasette
+
+<span class="c1"># … and the plugins</span>
+datasette<span class="w"> </span>install<span class="w"> </span>datasette-render-markdown<span class="w"> </span>datasette-dashboards<span class="w"> </span>datasette-dateutil
+</code></pre></div>
+
+<p>I was curious how much all of this was weighting. <span class="caps">30MB</span> seems pretty reasonable to me.</p>
+<div class="highlight"><pre><span></span><code><span class="c1"># All of this weights 30Mb</span>
+du<span class="w"> </span>-sh<span class="w"> </span>venv
+30M<span class="w"> </span>venv
+</code></pre></div>
+
+<h2 id="adding-authentication">Adding authentication</h2>
+<p>Datasette doesn’t provide authentication by default, so <a href="https://docs.datasette.io/en/stable/authentication.html">you have to use a plugin for this</a>. I’ll be using <a href="https://github.com/simonw/datasette-auth-github">Github authentication</a> for now as it seems simple to add:</p>
+<div class="highlight"><pre><span></span><code>pip install datasette-auth-github
+</code></pre></div>
+
+<p>I’ve had to create a new github application and export the variables to my server, and add some configuration to my <code>metadata.yaml</code> file:</p>
+<div class="highlight"><pre><span></span><code><span class="nt">allow</span><span class="p">:</span>
+<span class="w"> </span><span class="nt">gh_login</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">almet</span>
+
+<span class="nt">plugins</span><span class="p">:</span>
+<span class="w"> </span><span class="nt">datasette-auth-github</span><span class="p">:</span>
+<span class="w"> </span><span class="nt">client_id</span><span class="p">:</span>
+<span class="w"> </span><span class="s">"$env"</span><span class="p p-Indicator">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">GITHUB_CLIENT_ID</span>
+<span class="w"> </span><span class="nt">client_secret</span><span class="p">:</span>
+<span class="w"> </span><span class="s">"$env"</span><span class="p p-Indicator">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">GITHUB_CLIENT_SECRET</span>
+</code></pre></div>
+
+<p>If that’s useful to you, here is <a href="https://gitlab.com/almet/timetracker-datasette-deploy">the git repository</a> I’m deploying to my server.</p>
+<h2 id="using-templates">Using templates</h2>
+<p>Okay, I now want to be able to send an <span class="caps">URL</span> to the people I’m working with, on which they can see what I’ve been doing, and what I’ve been using my time on.</p>
+<p>It was pretty simple to do, and kind of weird to basically do what I’ve been doing back in the days for my first <span class="caps">PHP</span> applications : put <span class="caps">SQL</span> statements in the templates ! heh.</p>
+<p>I’ve added a template with what I want to do. It has the side-effect of being able to propose a read-only view to a private database.</p>
+<div class="highlight"><pre><span></span><code><span class="p"><</span><span class="nt">h1</span><span class="p">></span>{{project}}
+ {% for row in sql("SELECT SUM(CAST(duration AS REAL)) as total_hours FROM journal WHERE project = '" + project + "';", database="db") %}
+({{ row["total_hours"] }} heures)
+{% endfor %}
+<span class="p"></</span><span class="nt">h1</span><span class="p">></span>
+<span class="p"><</span><span class="nt">dl</span><span class="p">></span>
+ {% for row in sql("select date, CAST(duration AS REAL) as duration, content from journal where project = '" + project + "' order by date DESC", database="db") %}
+ <span class="p"><</span><span class="nt">dt</span><span class="p">></span>{{ row["date"] }} ({{ row["duration"] }} heures)<span class="p"></</span><span class="nt">dt</span><span class="p">></span>
+ <span class="p"><</span><span class="nt">dd</span><span class="p">></span>{{ render_markdown(row["content"]) }}<span class="p"></</span><span class="nt">dd</span><span class="p">></span>
+ {% endfor %}
+<span class="p"></</span><span class="nt">dl</span><span class="p">></span>
+</code></pre></div>
+
+<p>Which looks like this :</p>
+<p><img alt="Alt text" src="/images/datasette/custom-template.png"></p>2023, Semaine 452023-11-11T00:00:00+01:002023-11-11T00:00:00+01:00tag:blog.notmyidea.org,2023-11-11:/2023-semaine-45.html
<p>Une reprise après deux semaines de pause. Première semaine sur uMap, et beaucoup d’à-côtés.</p>
<h2 id="ce-qui-sest-passe">Ce qui s’est passé</h2>
<dl>
diff --git a/feeds/all.atom.xml b/feeds/all.atom.xml
index fedf300..614e69f 100644
--- a/feeds/all.atom.xml
+++ b/feeds/all.atom.xml
@@ -1,5 +1,72 @@
-Alexis Métaireauhttps://blog.notmyidea.org/2023-11-11T00:00:00+01:002023, Semaine 452023-11-11T00:00:00+01:002023-11-11T00:00:00+01:00tag:blog.notmyidea.org,2023-11-11:/2023-semaine-45.html
+Alexis Métaireauhttps://blog.notmyidea.org/2023-11-12T00:00:00+01:00Deploying and customizing datasette2023-11-12T00:00:00+01:002023-11-12T00:00:00+01:00tag:blog.notmyidea.org,2023-11-12:/deploying-and-customizing-datasette.html<p>First, create the venv and install everything</p>
+<div class="highlight"><pre><span></span><code><span class="c1"># Create and activate venv</span>
+python3<span class="w"> </span>-m<span class="w"> </span>venv<span class="w"> </span>venv
+<span class="nb">source</span><span class="w"> </span>venv/bin/activate
+
+<span class="c1"># Install datasette…</span>
+pip<span class="w"> </span>install<span class="w"> </span>datasette
+
+<span class="c1"># … and the plugins</span>
+datasette<span class="w"> </span>install<span class="w"> </span>datasette-render-markdown<span class="w"> </span>datasette-dashboards<span class="w"> </span>datasette-dateutil
+</code></pre></div>
+
+<p>I was curious how much all of this was weighting. <span class="caps">30MB</span> seems pretty reasonable to me.</p>
+<div class="highlight"><pre><span></span><code><span class="c1"># All of …</span></code></pre></div><p>First, create the venv and install everything</p>
+<div class="highlight"><pre><span></span><code><span class="c1"># Create and activate venv</span>
+python3<span class="w"> </span>-m<span class="w"> </span>venv<span class="w"> </span>venv
+<span class="nb">source</span><span class="w"> </span>venv/bin/activate
+
+<span class="c1"># Install datasette…</span>
+pip<span class="w"> </span>install<span class="w"> </span>datasette
+
+<span class="c1"># … and the plugins</span>
+datasette<span class="w"> </span>install<span class="w"> </span>datasette-render-markdown<span class="w"> </span>datasette-dashboards<span class="w"> </span>datasette-dateutil
+</code></pre></div>
+
+<p>I was curious how much all of this was weighting. <span class="caps">30MB</span> seems pretty reasonable to me.</p>
+<div class="highlight"><pre><span></span><code><span class="c1"># All of this weights 30Mb</span>
+du<span class="w"> </span>-sh<span class="w"> </span>venv
+30M<span class="w"> </span>venv
+</code></pre></div>
+
+<h2 id="adding-authentication">Adding authentication</h2>
+<p>Datasette doesn’t provide authentication by default, so <a href="https://docs.datasette.io/en/stable/authentication.html">you have to use a plugin for this</a>. I’ll be using <a href="https://github.com/simonw/datasette-auth-github">Github authentication</a> for now as it seems simple to add:</p>
+<div class="highlight"><pre><span></span><code>pip install datasette-auth-github
+</code></pre></div>
+
+<p>I’ve had to create a new github application and export the variables to my server, and add some configuration to my <code>metadata.yaml</code> file:</p>
+<div class="highlight"><pre><span></span><code><span class="nt">allow</span><span class="p">:</span>
+<span class="w"> </span><span class="nt">gh_login</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">almet</span>
+
+<span class="nt">plugins</span><span class="p">:</span>
+<span class="w"> </span><span class="nt">datasette-auth-github</span><span class="p">:</span>
+<span class="w"> </span><span class="nt">client_id</span><span class="p">:</span>
+<span class="w"> </span><span class="s">"$env"</span><span class="p p-Indicator">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">GITHUB_CLIENT_ID</span>
+<span class="w"> </span><span class="nt">client_secret</span><span class="p">:</span>
+<span class="w"> </span><span class="s">"$env"</span><span class="p p-Indicator">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">GITHUB_CLIENT_SECRET</span>
+</code></pre></div>
+
+<p>If that’s useful to you, here is <a href="https://gitlab.com/almet/timetracker-datasette-deploy">the git repository</a> I’m deploying to my server.</p>
+<h2 id="using-templates">Using templates</h2>
+<p>Okay, I now want to be able to send an <span class="caps">URL</span> to the people I’m working with, on which they can see what I’ve been doing, and what I’ve been using my time on.</p>
+<p>It was pretty simple to do, and kind of weird to basically do what I’ve been doing back in the days for my first <span class="caps">PHP</span> applications : put <span class="caps">SQL</span> statements in the templates ! heh.</p>
+<p>I’ve added a template with what I want to do. It has the side-effect of being able to propose a read-only view to a private database.</p>
+<div class="highlight"><pre><span></span><code><span class="p"><</span><span class="nt">h1</span><span class="p">></span>{{project}}
+ {% for row in sql("SELECT SUM(CAST(duration AS REAL)) as total_hours FROM journal WHERE project = '" + project + "';", database="db") %}
+({{ row["total_hours"] }} heures)
+{% endfor %}
+<span class="p"></</span><span class="nt">h1</span><span class="p">></span>
+<span class="p"><</span><span class="nt">dl</span><span class="p">></span>
+ {% for row in sql("select date, CAST(duration AS REAL) as duration, content from journal where project = '" + project + "' order by date DESC", database="db") %}
+ <span class="p"><</span><span class="nt">dt</span><span class="p">></span>{{ row["date"] }} ({{ row["duration"] }} heures)<span class="p"></</span><span class="nt">dt</span><span class="p">></span>
+ <span class="p"><</span><span class="nt">dd</span><span class="p">></span>{{ render_markdown(row["content"]) }}<span class="p"></</span><span class="nt">dd</span><span class="p">></span>
+ {% endfor %}
+<span class="p"></</span><span class="nt">dl</span><span class="p">></span>
+</code></pre></div>
+
+<p>Which looks like this :</p>
+<p><img alt="Alt text" src="/images/datasette/custom-template.png"></p>2023, Semaine 452023-11-11T00:00:00+01:002023-11-11T00:00:00+01:00tag:blog.notmyidea.org,2023-11-11:/2023-semaine-45.html
<p>Une reprise après deux semaines de pause. Première semaine sur uMap, et beaucoup d’à-côtés.</p>
<h2 id="ce-qui-sest-passe">Ce qui s’est passé</h2>
<dl>
diff --git a/feeds/code.atom.xml b/feeds/code.atom.xml
index 80d7e92..26ae1ef 100644
--- a/feeds/code.atom.xml
+++ b/feeds/code.atom.xml
@@ -1,5 +1,72 @@
-Alexis Métaireau - codehttps://blog.notmyidea.org/2023-11-11T00:00:00+01:00Using Datasette for tracking my professional activity2023-11-11T00:00:00+01:002023-11-11T00:00:00+01:00tag:blog.notmyidea.org,2023-11-11:/using-datasette-for-tracking-my-professional-activity.html<p>I’ve been following Simon Willison since quite some time, but I’ve actually never played with his main project <a href="https://datasette.io">Datasette</a> before.</p>
+Alexis Métaireau - codehttps://blog.notmyidea.org/2023-11-12T00:00:00+01:00Deploying and customizing datasette2023-11-12T00:00:00+01:002023-11-12T00:00:00+01:00tag:blog.notmyidea.org,2023-11-12:/deploying-and-customizing-datasette.html<p>First, create the venv and install everything</p>
+<div class="highlight"><pre><span></span><code><span class="c1"># Create and activate venv</span>
+python3<span class="w"> </span>-m<span class="w"> </span>venv<span class="w"> </span>venv
+<span class="nb">source</span><span class="w"> </span>venv/bin/activate
+
+<span class="c1"># Install datasette…</span>
+pip<span class="w"> </span>install<span class="w"> </span>datasette
+
+<span class="c1"># … and the plugins</span>
+datasette<span class="w"> </span>install<span class="w"> </span>datasette-render-markdown<span class="w"> </span>datasette-dashboards<span class="w"> </span>datasette-dateutil
+</code></pre></div>
+
+<p>I was curious how much all of this was weighting. <span class="caps">30MB</span> seems pretty reasonable to me.</p>
+<div class="highlight"><pre><span></span><code><span class="c1"># All of …</span></code></pre></div><p>First, create the venv and install everything</p>
+<div class="highlight"><pre><span></span><code><span class="c1"># Create and activate venv</span>
+python3<span class="w"> </span>-m<span class="w"> </span>venv<span class="w"> </span>venv
+<span class="nb">source</span><span class="w"> </span>venv/bin/activate
+
+<span class="c1"># Install datasette…</span>
+pip<span class="w"> </span>install<span class="w"> </span>datasette
+
+<span class="c1"># … and the plugins</span>
+datasette<span class="w"> </span>install<span class="w"> </span>datasette-render-markdown<span class="w"> </span>datasette-dashboards<span class="w"> </span>datasette-dateutil
+</code></pre></div>
+
+<p>I was curious how much all of this was weighting. <span class="caps">30MB</span> seems pretty reasonable to me.</p>
+<div class="highlight"><pre><span></span><code><span class="c1"># All of this weights 30Mb</span>
+du<span class="w"> </span>-sh<span class="w"> </span>venv
+30M<span class="w"> </span>venv
+</code></pre></div>
+
+<h2 id="adding-authentication">Adding authentication</h2>
+<p>Datasette doesn’t provide authentication by default, so <a href="https://docs.datasette.io/en/stable/authentication.html">you have to use a plugin for this</a>. I’ll be using <a href="https://github.com/simonw/datasette-auth-github">Github authentication</a> for now as it seems simple to add:</p>
+<div class="highlight"><pre><span></span><code>pip install datasette-auth-github
+</code></pre></div>
+
+<p>I’ve had to create a new github application and export the variables to my server, and add some configuration to my <code>metadata.yaml</code> file:</p>
+<div class="highlight"><pre><span></span><code><span class="nt">allow</span><span class="p">:</span>
+<span class="w"> </span><span class="nt">gh_login</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">almet</span>
+
+<span class="nt">plugins</span><span class="p">:</span>
+<span class="w"> </span><span class="nt">datasette-auth-github</span><span class="p">:</span>
+<span class="w"> </span><span class="nt">client_id</span><span class="p">:</span>
+<span class="w"> </span><span class="s">"$env"</span><span class="p p-Indicator">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">GITHUB_CLIENT_ID</span>
+<span class="w"> </span><span class="nt">client_secret</span><span class="p">:</span>
+<span class="w"> </span><span class="s">"$env"</span><span class="p p-Indicator">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">GITHUB_CLIENT_SECRET</span>
+</code></pre></div>
+
+<p>If that’s useful to you, here is <a href="https://gitlab.com/almet/timetracker-datasette-deploy">the git repository</a> I’m deploying to my server.</p>
+<h2 id="using-templates">Using templates</h2>
+<p>Okay, I now want to be able to send an <span class="caps">URL</span> to the people I’m working with, on which they can see what I’ve been doing, and what I’ve been using my time on.</p>
+<p>It was pretty simple to do, and kind of weird to basically do what I’ve been doing back in the days for my first <span class="caps">PHP</span> applications : put <span class="caps">SQL</span> statements in the templates ! heh.</p>
+<p>I’ve added a template with what I want to do. It has the side-effect of being able to propose a read-only view to a private database.</p>
+<div class="highlight"><pre><span></span><code><span class="p"><</span><span class="nt">h1</span><span class="p">></span>{{project}}
+ {% for row in sql("SELECT SUM(CAST(duration AS REAL)) as total_hours FROM journal WHERE project = '" + project + "';", database="db") %}
+({{ row["total_hours"] }} heures)
+{% endfor %}
+<span class="p"></</span><span class="nt">h1</span><span class="p">></span>
+<span class="p"><</span><span class="nt">dl</span><span class="p">></span>
+ {% for row in sql("select date, CAST(duration AS REAL) as duration, content from journal where project = '" + project + "' order by date DESC", database="db") %}
+ <span class="p"><</span><span class="nt">dt</span><span class="p">></span>{{ row["date"] }} ({{ row["duration"] }} heures)<span class="p"></</span><span class="nt">dt</span><span class="p">></span>
+ <span class="p"><</span><span class="nt">dd</span><span class="p">></span>{{ render_markdown(row["content"]) }}<span class="p"></</span><span class="nt">dd</span><span class="p">></span>
+ {% endfor %}
+<span class="p"></</span><span class="nt">dl</span><span class="p">></span>
+</code></pre></div>
+
+<p>Which looks like this :</p>
+<p><img alt="Alt text" src="/images/datasette/custom-template.png"></p>Using Datasette for tracking my professional activity2023-11-11T00:00:00+01:002023-11-11T00:00:00+01:00tag:blog.notmyidea.org,2023-11-11:/using-datasette-for-tracking-my-professional-activity.html<p>I’ve been following Simon Willison since quite some time, but I’ve actually never played with his main project <a href="https://datasette.io">Datasette</a> before.</p>
<p>As I’m going back into development, I’m trying to track where my time goes, to be able to find patterns, and just remember how much time …</p><p>I’ve been following Simon Willison since quite some time, but I’ve actually never played with his main project <a href="https://datasette.io">Datasette</a> before.</p>
<p>As I’m going back into development, I’m trying to track where my time goes, to be able to find patterns, and just remember how much time I’ve worked on such and such project. A discussion with <a href="https://thom4.net/">Thomas</a> made me realize it would be nice to track all this in a spreadsheet of some sort, which I was doing until today.</p>
<p>Spreadsheets are nice, but they don’t play well with rich content, and doing graphs with them is kind of tricky. So I went ahead and setup everything in Datasette.</p>
diff --git a/images/datasette/custom-template.png b/images/datasette/custom-template.png
new file mode 100644
index 0000000..10ea442
Binary files /dev/null and b/images/datasette/custom-template.png differ
diff --git a/tag/datasette.html b/tag/datasette.html
index ce4d7fd..6c570b4 100644
--- a/tag/datasette.html
+++ b/tag/datasette.html
@@ -28,6 +28,12 @@