Skip to main content

Using IFTTT to syndicate (PESOS) your Reddit saved post to your own IndieWeb website

3 min read

Introduction

This post has been heavily inspired by Chris Aldrich's recent post Using IFTTT to syndicate (PESOS) content from social services to WordPress using Micropub and finally finds an answer to the frustration I had ever since I realised it was not that easy to post bookmark on my Known-based website.

When you own an IndieWeb website, it quickly becomes clear that you want to centralize all your content in one place, including the posts you save on Reddit.

Now, I spend a fair amount of time on Reddit, but i never spend a long time in one go, meaning I usually scroll my feed, save things that catch my eyes, and come back to them later on when I have more time. The frustration comes from the decentralized part : I have saved bookmarks on my browser, in my company's Slack, on Reddit, you name it. The risk is that I finally forgot about some of them and never reads them at all.

If you need more information on IndieWeb, IFTTT, and why this is awesome, I encourage you to read Chris Aldrich's post. In this post, I'll only talk about the particular case I ran into : silo-ing my Reddit saved posts to a Known-based website.

Getting a token

If you played a bit with Known, you know there's no easy way to generate a token on the fly - as opposed to a Wordpress-based website for instance. But that's OK, Give Me A Token is here to save the day.

 The process is not that long nor difficult, and at the end of step 3, you'll have the possibility to download your token file, save it on your disk for later, that's all we need to do with that right now.

The IFTTT recipe

We can now start to create our own IFTTT applet, in the first part (the if), we'll choose Reddit > New post saved by you as a trigger and i the second (the then), we'll choose Webhooks > Make a web request.

All we have left to do is to fill in the 4 fields in the form :

  • URL : your micropub server endpoint (find yours here)
  • Method : POST
  • Content Type : application/x-www-form-urlencoded

The Body part is the trickiest, but once again I encourage you to ready Chris's post which explain it thoroughly. As far as i'm concerned here's what I typed in the Body field - don't forget to replace YOUR_TOKEN_FILE_CONTENT_HERE by the content of the file we previously downloaded :

h=entry&bookmark-of={{PostURL}}&name={{Title}}&content={{Title}}&category[]=reddit&category[]={{Subreddit}}&YOUR_TOKEN_FILE_CONTENT_HERE

And that's it. All you have to do now is going back on Reddit and save a few posts, IFTTT should shortly trigger your webhook call and syndicate your saved posts on your own website.

 

Syndication

Remove git branches older than X months

1 min read

For the example, we're deleting merged branches older than 3 months :

for k in $(git branch --sort=committerdate --remote --merged | grep -o -P "(?<=origin\/)[^ ]+"); do
  if [[ ! $(git log -1 --since='3 month ago' -s origin/$k) ]]; then
    git push --delete origin $k
  fi
done

Triggering a command line on file change

1 min read

Today I was migrating a somewhat old codebase to Ruby on Rails 6.0.0. As per usual, this can be a very tidious job requiring a bunch of depencies to be updated as well. In this case, the Gemfile contains around 150 lines.

When I have to do that kind of job, the first thing I do is commenting out every single gem except for rails itself, then bundle update, then I re-add the other gems to the Gemfile.

It rarely goes smoothly, since every gem has it's own dependencies and sometime the bundle command has trouble to find a way to update everything in one go, so I usually re-add 2-5 gems at once then run bundle update on my modified Gemfile, until all the dependencies have been re-added.

The whole process of going back and forth to editing, saving, running the bundle command is somewhat exhausting, so today I decided to have a look at a more productive way to do this : the following command uses inotifywait to detect whenever I save the Gemfile then run bundle update automagically.

while inotifywait -e close_write Gemfile; do bundle update; done

 

i3wm - Displaying Slack incoming call floating window in the current workspace

1 min read

Since I discovered i3wm (and tilling managers in general) a few months ago, i felt in love with it and I wouldn't get back to any other desktop manager.

However, since I switched to i3wm, then number of missed incoming Slack calls started to increase, mostly because :

  • Sound is muted by default on my workstation
  • Slack incoming call window was displayed on the workspace Slack is running

Thanks to Reddit, I found a solution to force this window to pop on the current workspace (the one i'm working on at any given time) instead of staying it the workspace where Slack is running.

Here's the line to add to your i3 config file :

for_window [class="Slack" floating] move container to workspace current

Source : Recommended way of handling Slack calls? on r/i3wm

Passer une journée en Suisse & se faire dépouiller de 300€ par @mobilevikingsBE et @proximus

7 min read

Début juillet, je suis parti quelques jours en vacances du côté de lac de Constance. Puisqu'on était à un jet de pierre de la Suisse, nous avions décidé d'aller passer une journée à Zurich. L'idée semblait bonne, sauf que Mobile Viking et Proximus nous ont conjointement dépouillé de presque 300€ pour quelques malheureux méga de data.

Constance est située sur la frontière entre l'Allemagne et la Suisse. Au départ de l'hôtel, je lance Waze et Spotify comme a mon habitude, et nous nous mettons en routes. A peine avais-je traversé la frontière que mon écran s'allume sur un SMS reçu :

"Infos Mobile Vikings: A propos de votre abonnement : ce mois-ci, vous avez déjà utilisé EUR 2,97 hors forfait. Ces couts seront disponibles sur votre prochain(e) relevé de compte."

Oups, my bad, j'avais oublié qu'en entrant en Suisse je sortais de l'Union Européenne. 2.97€ me semble être un montant un peu exagéré, mais je ne sais pas depuis combien de temps mon téléphone a basculé sur le réseau suisse et, après tout, j'ai Waze et Spotify qui tournent. Rapide comme un ninja, je scroll vers le bas et passe en mode avion. Ouf, le pire a été évité.

Arrivé a Zurich, nous discutons de la situation : dans l'autre voiture, ma belle-mère a eu le même soucis avec son opérateur (Proximus), a l'exception que celle-ci a reçu un SMS l'informant que le montant de ses dépenses avait atteint 60€ et que, en conséquence, Proximus bloquait son accès data depuis l'étranger pour éviter de mauvaise surprise (comme si 60€ pour quelques minutes d'utilisation n'était pas déjà une mauvaise surprise en soit). Vu l'infortune de ma belle-mère, je me considère encore chanceux avec mes trois petits euros de dépenses hors-forfait. Oui, mais non.

Arrivés à la gare de Zurich, je veux me connecter au Wi-Fi gratuit afin de trouver quelques informations sur les environs. Bien mal m'en a pris : pour activer le réseaux Wi-Fi, il faut désactiver le mode avion de l’appareil, ce qui déclenche quasi immédiatement le débarquement des cavaliers de l'apocalypse :

Quatre SMS de Mobile Viking, reçus dans un ordre apparemment aléatoire, précisant que mes dépenses s'élèvent respectivement à 48€, puis 49.99€. Finalement non, 32.22€. Ou bien peut-être seulement 13.65€?

Mais ce n'est pas bien grave, on m'informe dans le premier SMS que mes données mobiles hors forfait seront bloquées quand j'atteindrais 60€ de dépenses ✌️

Deuxième victime de la journée, je prend à mon tour 60€ de dépenses dans les dents. Perplexe, je consulte en vitesse l'application "My Viking" pour essayer de comprendre ce qu'il s'est passé :

3Mb (ou plus exactement 3123kb) consommés pour un total de 49.99€. Y en a un peu plus, je vous le met quand même?

Au cours de la journée, mon épouse, sa sœur, et son père, recevront également le même genre de SMS (bien tard par rapport à la consommation puisque nous avions tous passé nos appareils en mode avion après les premiers indices).

Total des dépenses téléphoniques de la journée :

  • Proximus : 4x60€ = 240€
  • Mobile Viking : 60€

Plus tard, je recevrais même un dernier SMS m'informant des tarifs en application hors UE. Dommage, un peu trop tard.

Informer ses clients des tarifs en application après leur avoir vidé les poches, c'est toujours très classe.

J'entend déjà d'ici certain d'entre vous crier au scandale, que je tente de mettre les deux opérateurs au pilori, et qu'il s'agit d'un minable procès d'intention : je savais que je sortais de l'UE et que des tarifs moins avantageux allaient être d'application. Oui, j'ai merdé, j'ai complètement oublié ce détail et, passant régulièrement les frontières françaises et luxembourgeoises, il y a bien longtemps que ça ne m'avait plus tracassé.

Je soulève simplement ici les points suivants :

  • Les informations concernant les tarifs en application sont arrivé très tard (trop tard a vrai dire puisque mon accès avait déjà été bloqué)
  • Le prix au méga est parfaitement ridicule : 13€. Je répète : treize euros! Pour un minuscule méga de donnée. Vous savez ce que vous faites avec 1Mb? Rien. Télécharger une minute de chanson sur Spotify, tout au plus. C'est un prix ridiculement élevé pour une quantité si petite d'information. Dans le tas je me demande qui se taille la plus grosse part du gâteau : les réseaux belges ou suisses? J'ai bien ma petite idée sur la question mais sans preuve j'éviterais de la partager.
  • Que ça soit Proximus ou Mobile Viking : tout deux nous prouvent qu'ils ont la capacité technique de bloquer cet accès hors-UE (pour nous éviter de grosses dépenses par inadvertance), cependant, ils choisissent sciemment de ne bloquer le client qu'une fois 60€ de dépenses atteintes. Cela ressemble plus à une taxe pour les distraits qu'à une réelle inquiétude que le client ne dépense trop, ils connaissent le prix au méga et sont parfaitement conscient qu'on ne peut rien faire avec à peine 4.6Mb (60/13). En quelques secondes a peine, le quota est remplit, et leurs poches aussi.

    Ce comportement ne m'étonne pas de la part de Proximus, qui n'a jamais cherché a passer pour le plus éthique des opérateurs; par contre, il m’écœure totalement de la part de Mobile Viking, dont l'image tend a vouloir faire croire qu'ils sont du côté du client (en proposant des offres pay-as-you-go, pay-what-you-need à l'inverse des opérateurs qui tentent de vous saucissonner à votre contrat pour 24 ou 48 mois). Cette pratique tend a prouver qu'il s'agit la d'une campagne marketing et pas d'un réel soucis du client.

Que ma mésaventure vous serve de leçon : faite gaffe si vous sortez de l'UE cet été.

Cet article a été partagé sur les communautés Reddit r/Wallonia et r/belgium ainsi que sur Twitter.

Edit: [16:48] après quelques échanges sur Twitter avec Mobile Viking, on me confirme qu'un dossier a été ouvert pour "contrôler la situation et (de) voir si il y a une possibilité d'annuler ces coûts supplémentaires dans ce cas-ci".

Edit: [31/07] on me signale que déshormais, Mobile Viking désactive l'accès aux data en dehors de l'UE par défaut. Le geste mérite d'être signalé, au moins plus personne ne se fera avoir par erreur.

Going back in time with Git

1 min read

Let's pretend you want to initiate a git bisect because someone (obviously you) introduced a bug in your code base. Once you launched the first git bisect bad, you have to go back in time to find a state of the code where the bug was not present and mark it as git bisect good.

You could find your way to a commit where the code was good with a bunch of git log and git checkout, but if you know when the code was right, you can use this syntax :

git checkout '@{10 days ago}'

You're welcome, future me.

Spotify playlists curated by music subreddits

1 min read

I created a bunch of Spotify playlists based on some music genre subreddits. Basically it's an IFTTT applet looking for new posts on a given subreddit. When a song is shared it tries to add it to the playlist.

Disclaimer : this is heavily biased by my own tastes in music but if anyone has other playlists to suggest I'll be happy to share them.

Tridactyl, the clipboard, and the URLs

1 min read

Here are 3 quick tips if you use Tridactyl for Firefox (if you don't, you should):

,y will yank (copy) the current URL to the system's clipboard;

,p will open an url contained in the clipboard it the current tab;

,P will open an url contained in the clipboard in a new tab;

QuteBrowser and LastPass

2 min read

I've been using QuteBrowser for the past 2 days (more on that later), and the only thing I missed so far was a LastPass integration.

Now, QuteBrowser does not come with a plugin store like Firefox or Chrome, but it is still possible to use LastPass with it.

First we need to install lastpass-cli and login to the service. I'm running Manjaro Linux on my laptop so I use yaourt :

yaourt lasstpass-cli

Now we login to Lastpass :

lpass login <email@domain.tld>

A prompt pops-up, asking for your master password. If everything went right, the CLI should responds with

Success: Logged in as <email@domain.tld>.

Since we're good to go, we can now download the QuteBrowser userscripts :

mkdir -p $/.local/share/qutebrowser/userscripts && cd $_

wget https://raw.githubusercontent.com/welps/qutebrowser/9a85796ac30ef33218dd7dee9db6a3c28364f668/misc/us...

chmod +x qute-lastpass

The script is installed. We can restart QuteBrowser by typing :restart.

Now everytime you need to find your login/password for a given page type :spawn --userscript qute-lastpass

Troubleshooting

Process stderr:
Traceback (most recent call last):
File "/home/cedric/.local/share/qutebrowser/userscripts/qute-lastpass", line 50, in <module>
import tldextract
ModuleNotFoundError: No module named 'tldextract'

Solution : pip install tldextract --user

FileNotFoundError: [Errno 2] No such file or directory: 'lpass': 'lpass'

Solution : install lastpass-cli

FileNotFoundError: [Errno 2] No such file or directory: 'rofi': 'rofi'

Solution : install rofi

How to install Solargraph with Sublime Text LSP

1 min read

Solargraph is a Ruby Language Server. It's meant to add code completion and inline documentation onto IDEs.

We have to install the gem first

gem install solargraph

Within Sublime Text Control Panel (CTRL+Shift+P) :

  1. Find Package Control: Install Package
  2. Then LSP
  3. Hit enter

By default, the ST plugin will look for rvm, not rbenv. We have to force the settings Preferences > Package Settings > LSP > Settings, and paste this :

https://gist.github.com/cedricbousmanne/099bccef4472912aba61545d0c31d5ec

Note : you need to adjust the value of the path on line 8. You can find the exact installation path of solargraph on your system with the following command

which solargraph

Finally we can enable the server via the Sublime Text Control Panel (CTRL+Shift+P)

6W7tjXLl.png