Skip to main content

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

Ton premier jour d'école

3 min read

C'était ton premier jour d'école, aujourd'hui. Je n'aurais manqué ça pour rien au monde.

J'ai mal dormi cette nuit, remplis de doutes, d'incertitudes et de questions. Jusqu'à présent, nous t'avions gardé rien que pour nous, et désormais, tu aurais ta propre petite vie, en dehors de la maison. J'ai passé une bonne partie de la nuit à me demander si nous t'avions bien préparé.

Tu t'es réveillé de bonne humeur ce matin, tu as pris ton lait, tes céréales, et regardé un épisode des Pyjamasques. Je t'ai encore expliqué ce qui allait se passer, ta maman aussi. Je n'étais pas tout à fait sûr que tu comprenais bien toutes les implications que ça avait, mais tu es resté stoïque.

Quand l'heure de partir est arrivée, je n'en menais pas large. Toi par contre, tu as été brave. Très brave. Bien plus que je ne pouvais l'être. Dans la voiture, tu m'as demandé la vraie chanson. Tu parlais bien sûr de Californication. La vraie chanson, pas la berceuse que je te fais écouter le soir avant de dormir.

Nous sommes arrivés à l'école, ton petit cartable sur le dos, tu as traversé la cours en regardant tout autour de toi. Calme et silencieux, comme souvent, tu te contentais d'observer ce qui t'entourait. A l'intérieur, nous t'avons montré ton porte-manteau, ton prénom y était écrit à côté d'un dessin de petite voiture. Tu as déposé tes affaires avant de me montrer la petite cuisine, dans le couloir.

Enfin nous sommes entrés en classe. Tu as déposé ta collation et ta gourde dans le tiroir à ton nom, puis tu t'es précipité vers le garage des petites voitures. Tu étais à la fête : plein de jouets dans une salle remplie d'enfants. Intérieurement, je fondais en larmes de voir mon petit bonhomme devenir un grand, mais il ne fallait rien laisser transparaître.

Alors je me suis tu. Je t'ai souris, je me suis accroupi pour regarder de plus près le jouet que tu me montrais. Quand vint l'heure de partir, maman t'as expliqué que nous te laissions là, jouer avec tes nouveaux amis, mais qu'elle viendrait te rechercher un peu plus tard. Tu as hoché la tête, en disant "oui". Tu nous a pris dans tes bras, fait un bisou, puis tu t'es dirigé vers la fenêtre pour nous faire "coucou".

Nous nous sommes éloignés sans pour autant quitter l'école tout de suite. Je t'ai vu revenir à la fenêtre quelques minutes plus tard. Tu as regardé un petit moment, puis, ne nous voyant pas, tu es retourné dans l'espace de jeu.

C'était un moment dur pour ta maman et moi, mais bien heureusement, il a semblé bien plus facile pour toi. J'ai hâte de rentrer à la maison, ce soir, et de t'entendre me raconter ta journée.

 

How to install Rubocop for Sublime Text with rbenv

1 min read

Rubocop is a static code analyzer and formatter for Ruby. Long story short : it helps you to write better code.

Installing it pretty straight-forward :

gem install rubocop

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

  1. Find Package Control: Install Package
  2. Then Rubocop (currently v2018.12.05.18.01.20)
  3. Hit enter

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

https://gist.github.com/cedricbousmanne/2c89bf83de175f6fa6fe8dea9b7724b7

Now we can have a list of the available options by typing rubocop withing the Control Panel (CTRL+Shift+P).

RVV9n3B.png