Update the repository with latest posts

This commit is contained in:
Alexis Métaireau 2023-11-21 09:47:37 +01:00
parent 62f4cde0bb
commit 76200b68d0
6 changed files with 170 additions and 7 deletions

View file

@ -2,6 +2,7 @@
title: Adding Real-Time Collaboration to uMap, first week
headline: A heads-up on what I've been doing this week on uMap
tags: Python, CRDT, Sync
status: draft
---
Last week, I've been lucky to start working on [uMap](https://github.com/umap-project/umap/), an open-source map-making tool to create and share customizable maps, based on Open Street Map data.

View file

@ -0,0 +1,78 @@
---
title: Deploying and customizing datasette
headline: Step by step follow-up on how I've deployed it and added custom templates on top.
tags: Datasette, Deployment
---
First, create the venv and install everything
```bash
# Create and activate venv
python3 -m venv venv
source venv/bin/activate
# Install datasette…
pip install datasette
# … and the plugins
datasette install datasette-render-markdown datasette-dashboards datasette-dateutil
```
I was curious how much all of this was weighting. 30MB seems pretty reasonable to me.
```bash
# All of this weights 30Mb
du -sh venv
30M venv
```
## Adding authentication
Datasette doesn't provide authentication by default, so [you have to use a plugin for this](https://docs.datasette.io/en/stable/authentication.html). I'll be using [Github authentication](https://github.com/simonw/datasette-auth-github) for now as it seems simple to add:
```
pip install datasette-auth-github
```
I've had to create a new github application and export the variables to my server, and add some configuration to my `metadata.yaml` file:
```yaml
allow:
gh_login: almet
plugins:
datasette-auth-github:
client_id:
"$env": GITHUB_CLIENT_ID
client_secret:
"$env": GITHUB_CLIENT_SECRET
```
If that's useful to you, here is [the git repository](https://gitlab.com/almet/timetracker-datasette-deploy
) I'm deploying to my server.
## Using templates
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.
```html
<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>
```
Which looks like this :
![Alt text](/images/datasette/custom-template.png)

View file

@ -0,0 +1,28 @@
---
title: Importing a PostgreSQL dump under a different table name
headline: Simple commands to help you during an import
tags: postgresql, sysadmin
---
For [Chariotte](https://chariotte.fr), I've had to do an import from one system to the other. I had no control on the export I received. It contained the database name and the ACLs, which I had to change to match the ones on the new system.
## Decrypting the dump
First off, the import I received was encrypted, so I had to decrypt it. It took me some time to figure out that both my private **and public** keys needed to be imported to the pgp. Once that was done, I could decrypt with
```bash
# Decrypt the file
gpg --decrypt hb_chariotte_prod.pgdump.asc > hb_chariotte_prod.pgdump
# Upload it to the server with scp
scp hb_chariotte_prod.pgdump chariotte:.
```
## Importing while changing ACLs and table name
On the server, here is the command to change the name of the database and the user. The file I received was using the so-called "custom" format, which is not editable with a simple editor, so you have to export it to SQL first, and then edit it before running the actual queries.
```bash
# Convert to SQL, then replace the table name with the new one, and finally run the SQL statements.
pg_restore -C -f - hb_chariotte_prod.pgdump | sed 's/hb_chariotte_prod/chariotte_temp/g' | psql -U chariotte_temp -d chariotte_temp -h yourhost
```

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

View file

@ -9,9 +9,9 @@ Une reprise après deux semaines de pause. Première semaine sur uMap, et beauco
## Ce qui s'est passé
**[uMap](https://umap.openstreetmap.fr/)**
**[uMap](https://github.com/umap-project/umap/)**
: J'ai commencé à travailler sur le projet, que je rejoins pour quelques temps, aux côté de David, Yohan, Aurélie et Sophie. L'idée est de travailler spécifiquement sur la collaboration temps réel sur les cartes. J'ai commencé par lire le code existant, puis par faire un état de l'art des solutions existantes. Prendre le temps de lire le code, de comparer les différents approches, et de mesurer leurs impacts.
: David et Yohan m'ont proposé d'écrire de documenter mon travail, j'ai donc fait [un premier billet de blog](/adding-real-time-collaboration-to-umap-first-week.html) (en anglais) sur le sujet.
: David et Yohan m'ont proposé de documenter mon travail, j'ai donc fait [un premier billet de blog, à paraître]() (en anglais) sur le sujet.
**[Argos](https://framasoft.frama.io/framaspace/argos/)**
: J'ai pu échanger sur le code que j'ai fait avec Matthieu. Ses yeux sont plus avertis, et j'ai pu avoir des retours intéressants. J'ai appris entre autres lexistence d'[un projet similaire](https://github.com/mozilla-services/telescope) chez Mozilla, qui recouvre une partie des mêmes usages. Quelques pistes intéressantes la bas. Je n'ai pas encore pris le temps d'intégrer les changements, mais j'aime beaucoup l'idée de faire des revues de code de ce type.
@ -29,12 +29,12 @@ Une reprise après deux semaines de pause. Première semaine sur uMap, et beauco
- Ressentir mon envie de reprendre à faire de la technique après deux semaines à faire autre chose.
- Prendre le temps de mesurer la dynamique existante d'un groupe avant de faire des propositions.
- Réussir ne pas me laisser envahir par des émotions qui ne sont pas les miennes.
- Réunir des amis et amis pour un atelier d'écriture. Être content d'entendre les textes des autres.
- Réunir des amis et amies pour un atelier d'écriture. Être content d'entendre les textes des autres.
- Prendre le temps d'une après-midi pour échanger en toute simplicité.
- Ressentir de la joie en écoutant de la musique. C'est simple, mais ça marche tellement bien.
- Apprécier une session de brainstorming technique.
- Recroiser des personnes du milieu brassicole sans stresser.
- Faire de la revue de code avec Matthieu, en profiter pour se donner des nouvelles.
- Faire de la revue de code avec [Matthieu](https://blog.mathieu-leplatre.info/), en profiter pour se donner des nouvelles.
- Avoir du temps seul sans contraintes horaires et me sentir productif à ce moment là.
- Me retrouver dans une voiture sous la pluie battante, entouré d'amies, en écoutant Clara Ysé à fond.
- Participer à un temps d'échange de compétences.
@ -47,7 +47,7 @@ Une reprise après deux semaines de pause. Première semaine sur uMap, et beauco
- Je me suis senti parfois anxieux et triste au réveil.
- J'ai annulé un week-end qui me donnait envie pour éviter de contaminer tout le monde. À la fois frustré et content de prendre soin (de moi et des autres).
- Je me suis senti désorganisé et « flottant » durant ma dernière semaine de pause.
- Me sentir jugé dans une conversation et ne pas prendre la distance nécessaire avec les interlocuteurs.
- Ne pas prendre la distance nécessaire avec mes interlocuteurs alors que je me sentais jugé (à tord ou à raison).
## Vu, lu, écouté
@ -66,4 +66,4 @@ Une reprise après deux semaines de pause. Première semaine sur uMap, et beauco
- J'ai lu [un thread à propos de Overturemaps sur le forum de OSM](https://community.openstreetmap.org/t/overturemaps-org-big-businesses-osmf-alternative/6760/7), assez éclairant sur ce qu'est Overture Maps, et la potentielle menace pour OSM.
- ▶︎ Simon Willison à fait [une présentation sur les embeddings](https://www.youtube.com/watch?v=ArnMdc-ICCM&t), comment ils fonctionnent et comment les utiliser.
- ▶︎ Une présentation sur [le fonctionnement interne et l'état de l'art des CRDTs](https://www.youtube.com/watch?v=x7drE24geUw) par Martin Kleppmann
- 🕸️ J'ai découvert [https://freesound.org/](Freesound..org) grace à Sam : une bibliothèque de sons libres de droits.
- 🕸️ J'ai découvert [Freesound](https://freesound.org/) grace à Sam : une bibliothèque de sons libres de droits.

View file

@ -0,0 +1,56 @@
---
date: 2023-11-20
headline: Deuxième semaine de travail sur uMap.
---
# 2023, Semaine 46
Une semaine de progrès en cartographie et stockage de données. J'ai senti le besoin de mieux m'organiser pour améliorer l'équilibre travail / perso.
## Ce qui s'est passé
**[uMap](https://github.com/umap-project/umap/)**
Je continue mon exploration autour des solutions techniques pour faire de la cartographie temps réelle. J'ai pris le temps de comprendre différents concepts qui m'échappaient dans le monde du SIG. Je comprends maintenant mieux à quoi servent des projets comme [pmtiles](https://docs.protomaps.com/pmtiles/) par exemple.
On a fait de la revue de code avec Yohann sur une manière de faire de la résolution de conflits de manière optimiste, la PR est presque prête.
J'ai exploré ensuite les différentes possibilités de stockage de données, entre autres en me disant que peut-être SQLite était une bonne piste. J'ai pu faire des tests d'utilisation de SQLite dans le navigateur, ce qui fonctionne, [et permet de la réplication en utilisant des CRDTs en interne](https://github.com/vlcn-io/cr-sqlite) !
**[Chariotte](https://chariotte.fr/)**
J'ai passé un peu de temps à préparer la migration vers les services d'AlwaysData. Je me sens rouillé. Tout marche, mais me prends plus de temps que prévu.
**Le groupe, le jeu**
On a bossé une journée avec [Sam](https://www.samuelgenin.fr), et on a découvert [TwineJS](https://github.com/klembot/twinejs), un outil qui permet de travailler sur des histoires à choix multiples. J'ai fait un outil qui permet d'importer le format Twee dans notre (futur) jeu.ÒÒ
**Notmyidea**
J'ai pris du temps cette semaine pour mettre en place une station de travail digne de ce nom. Si je n'ai pas terminé, je suis content de pouvoir utiliser [Asahi Linux](https://asahilinux.org/) sur mon Mac. Certains logiciels (dont Keybase) ne sont pas disponible pour cette architecture logicielle, ce qui m'a donné du fil à retordre.
J'espère bientôt pouvoir migrer complètement dessus, et me faire une session de travail et une session perso comme j'ai pu faire par le passé.
## Des joies 🤗
- Prendre une journée pour faire complètement autre chose. C'est super de pouvoir m'organiser comme je l'entends.
- Recommencer à faire du trombone avec d'autres personnes. Je ne pensais pas que ça me donnerait autant d'énergie.
- J'arrive à mettre des mots sur ce qui s'est passé pour moi cet été. Je suis content, j'avance.
- Je prends toujours du plaisir à coder en Elm.
- J'ai pris beaucoup de plaisir à monter en compétences sur les sujets autour du stockage hors ligne et sur la synchronisation de données.
- Récupérer un lit et meubler ma chambre avec une grande bibliothèque ! C'est fou comme ça peut faire la différence.
- Avoir un soutien émotionnel extérieur qui ne pèse pas sur mes proches. Je mesure combien ça m'est précieux et ce que j'en retire.
- Réussir à expliciter mes besoins auprès de mes proches.
- Une super soirée hors du temps à discuter, se marrer, manger. Qu'est-ce que ça fait du bien !
- Sentir que l'approche systémiste m'aide à mieux analyser certains conflits.
## Des peines 😬
- J'ai culpabilisé à prendre du temps pour apprendre des choses que je ne sais pas, alors même que c'est ce pour quoi je suis payé. Heureusement que l'équipe est bienveillante :-) La vie n'est pas une compétition !
- j'ai senti les choses flotter à plusieurs reprises lors d'une visio, alors que j'aurais aimé plus de cadre. J'ai envie de me prendre un temps de préparation pour rendre ces moments plus utiles.
- J'étais désorganisé durant ma semaine de travail. J'ai fini par couper les sources de distractions (chat, mails). J'ai envie de commencer cette semaine par une session de planning, on verra ou ça me mène.
## Vu, lu, écouté
- 🎧 Écouté [une série de podcasts courts autour du conflit israélo-palestinien](https://www.radiofrance.fr/franceculture/podcasts/serie-israel-palestine-les-mots-de-la-guerre) sur France Culture. Faire des définitions me parle bien et donne beaucoup du contexte que je manquais.
- 🫣 Je suis allé à l'opéra de Rennes et j'ai détesté l'expérience. L'impression de voir une culture de l'ancien monde se reproduire en direct. Brrr.