Slice the backlog

Je souffre de TDAH et c'est bien galère de prioriser des tâches plutôt que d'autres, tant la passion de tout faire est présente. Parfois pourtant on se retrouve submergé.

Après avoir lu les 4 premiers tomes de la BD Samurai, le cycle de l'empereur et du treisième phophète donc, je me suis remis à gribouiller, un Samurai bien entendu, devant mon fils admiratif (il a quatre ans, évidemment que tout ce que je dessine lui paraît bien ;-p). Bref j'ai eu envie de m'appliquer à la même discipline, à défaut de lames j'opte pour le dégraissage de ma liste de tâches sur TickTick.

Et ça tombe bien, je suis en train de lire La semaine de 4 heures de Tim Ferris, il y a un passage qui m'a fortement marqué, pour aider à faire le tri entre les envies et les choses qu'on doit absolument faire. Je n'ai pu m'empêcher de penser à Steve Jobs qui avait pour réputation d'associer le moins à la perfection et le surplus à une absence de vision.

Bref, j'ai une liste TickTick de plus de 500 tâches, dont certaines reviennent chaque semaine, et chaque jour mon lecteur de flux RSS récupère de nouvelles entrées passionnantes. J'ai également une famille avec laquelle j'essaie de passer du temps de qualité, plein de projets, de livres, séries TV, films dans mes envies. On n'a pas forcément de contrôle sur le temps qui passe, et l'argent va et vient, mais ne résoud pas tout. Par contre je peux choisir où mettre mon énergie.

En conscience de tous les travaux de rénovation qui m'attendent, de la famille qui va s'agrandir d'ici septembre, de mon travail accaparrant en tant qu'indépendant, il me faut vraiment tailler dans le lard.

J'ai donc ajouté une tâche récurrente dans TickTick pour éliminer une dizaine de tâches au quotidien, toute chose qui me prendra du temps et qui n'est qu'une idée/envie, finira sans doute à la poubelle ou devra aller ailleurs que dans TickTick.

A castle made of bazaar

I've accumulated quite a lot of nerd automations in my tech stack, I'll try to give an idea of what I've done up to this day

For the Cloudron instance I run

  • A cron job that monitor disk usage, using bash +Cloudron API, it will alert me via email and ntfy when any folder usage > 75%.
  • A cron job that checks if some apps time out and restart them via Cloudron API. In bash too.

DNS Monitoring

  • I take a snapshot of my Hetzner DNS configs every 5 minutes and watch frequently for diffs using Changedetection.

Uptime monitoring

  • I'm using Uptime Kuma to monitor the status pages of several services/APIs I'm relying on (Dropbox, OpenAI, Mistral AI, ...) as well as my own self-hosted apps. I get ntfy alerts in case any is failing.

Feed generators

Files Syncing

  • A cron job syncing my .torrent files from Dropbox to QBittorrent, using rclone
  • A cron job syncing my downloaded audiobooks to AudioBookShelf, using rsync.
  • A cron job syncing my downloaded ebooks to Calibre, by uploading the files to Calibre API, using bash.

Music management

  • A cron job syncing my downloaded music (torrent) to my main Music Library, using rsync.
  • A cron job verifying the quality of my Music Library content using mp3val and reporting for corrupted files via ntfy.
  • A cron job verifying the quality of my Soulseek download folder using mp3val and only moving the verified ones to my Music Library.
  • A user script integrating with ListenBrainz/LastFM scrobbler for when I listen to live radios from RTBF (they use radioplayer technology).
  • A user script to filter automatically the search results within Soulseek (web version running on Cloudron).

Photos management

  • A cron job that syncs my photos library between Dropbox and Immich, using rclone, but only for pics and videos under a certain size.
  • A cron job that generate Immich album only made of pictures of specific persons.
  • Scripts that I run ad-hoc, using ffmpeg, to compress my pictures, videos, fix their EXIF date at need.
  • Scripts that I run ad-hoc, using Syncthing, to remove all pics/videos from my Phone (WhatsApp and Camera folders) and move them to Dropbox, before I compress and triage them. Anything on Dropbox is then sync to Immich, so that's how I keep my phone clean.

Emails management

  • A script which checks for invoices (with attachments or downloadable links) in my emails and sends them to my Dropbox forwarding email, which in turn backups those attachments in a specific folder which can be treated.

Freelancer paperwork management

  • I have several scripts to rename my receipts and invoices with the right date, invoice nr, provider and organize them per year/quarter/month, it's done in PHP.
  • A user script to fill my timesheet automatically based on my declared days off.

Web curation and bookmark management

  • A cron job that will browse my recent Shaarli shares and, when needed, add tags, HN Thread links, Web Archive link, and a summary. It's done in Python.
  • A cron job that will browse my Miniflux unread entries and mark as read the ones that I will probably not care about. using Mistral AI.
  • A cron job that will browse my Miniflux unread entries and send me an email with the unread entries summarized and grouped by feed, a bit like feu Subworthy.com (by Phil Stephens) was doing around 2022.
  • A user script that will add TLDRs buttons at the bottom of my Miniflux entries, so I can get a quick summary generated by Mistral AI, at need.
  • A user script to warn me on any website if there is a Hacker News thread for the page I visit.
  • A user script to highlight and extract all top links from the current Hacker News thread.

LinkedIn management

  • A user script that adds a reply generator in LinkedIn conversations, using Mistral AI.

This looks quite a lot, and that's not all.

Productivity monk

I have taken a few habits recently:

  • Inbox zero by bedtime. Unhandled mails go to TickTick.
  • Tasks default to next week. If they matter, they’ll wait.
  • One work task per day. If it drags, I commit or kill it.
  • Articles get bookmarked. Read later—or never. Doesn’t matter.
  • Tasks get automated. Or ignored.
  • Midnight is my hard stop. Usually...
  • Everything goes in TickTick.
  • No date = no task. No surprises.
  • Task and blog ideas are dumped into TickTick as notes, voice or text.
  • LLMs get a few hours. That’s it. And only for automation.
  • LinkedIn runs on auto-reply.
  • Same rules at home and work. One brain. Scripts everywhere.
  • I keep folders of tabs—Wednesday, Friday, Daily. I open them when it’s time. Not before.
  • I use browser userscripts to bend websites to my will. UX included.
  • Family runs on self-service. Automation takes care of the rest.
  • And a few things don’t change—only improve: Backups and monitoring for everything. Unit tests for all my scripts. And pipelines. Obviously.

This isn’t a system. It’s survival. Simplicity is the only thing that scales, especially with kids and ADHD.


Things nerds commonly have, but I don’t

Inspiration: https://forkingmad.blog/things-people-commonly-have-but-i-dont/

In a conversation recently with a colleague I casually mentioned I didn't have something. He was shocked... "but how then do you..." was the response.

So here's my list of don't haves

  • Spotify account. I have CDs and I've bought a CD player from KLIM. I just find the CD to be a very nice looking and collectible object, pleasant to listen to. Also I feel it's mine, and I like the creative goodies and packaging that you don't have with a digital copy of an album.
  • A NAS. I don't need a NAS to backup pictures or stream videos through Plex. I have a VPS where I run a Cloudron which hosts most of my web apps, one is for sharing my family pictures. And I also use Syncthing, and Dropbox to keep my photos in sync and backed up in several places. And next to that I use Plex but I just don't host it on my infra, I pay a provider for their generous bandwidth and for the fact they take care of streaming my content through Plex. It's so fluid. I couldn't and wouldn't maintain this at home.
  • A gaming machine nor a gaming chair. Seriously I do not see the point, because I consider most games do not require super advanced graphics or material to be fun. In fact I love minimalistic games with pixellated art. I'm old and also feel nostalgic of specific games that are all forgotten now. Anyway I'm developing the best game ever, which is the only one I play. More about this soon, when I'll buy the domain for the website, after I decide on a name.
  • A mechanical keyboard. Seriously, what's the deal is with those noisy expensive impractical keyboards.
  • A 3D Printer. Seriously, this is so cool to possess one, I just don't have the space for this now. Maybe when I'll have my own space in our future home.
  • A VPN. Sure it sounds secure but it's just someone else glorified proxy, and it's vulnerable to authority requiring logs or to any part getting compromised. You have to blindly and naively trust the VPN and people behind it to not disclose your information when their company will be required to by the authority. If different contexts I use them, i.e at work, of course, wherever it's mandatory.


Lazy coding done right

When performing a task, even if it's a one-off, I believe it's a mistake to approach it with a short-term vision. We might solve many problems just for one occasion, but that's the nature of any project; each one is unique and happens only once. Should we really ship it with a short-term vision and skip automation, documentation, and testing just because they require more effort? Should we be so lazy?

I believe being lazy can be a good thing, but we shouldn't be so lazy that we skip essential steps like testing, documentation, information processing and retention, automation, collaboration, asking questions, and improving processes. These efforts will surely pay off for our knowledge and efficiency, or if not for ours, then for the team's knowledge and efficiency, for maintainability, and to reduce tech debt and bus factor. Of course, that requires thinking like a chess player, calculating our moves, and doing some planning.

For example, during an infrastructure migration, we faced many integrations that needed testing from the ops side, yet we lacked internal QA expertise. We rushed to collaborate with others to gather information on testing their flows. Even though we didn't have time to write automated tests immediately, I documented all the information so we could use it for future monitoring and automation purposes.

Another instance is our workspace setups, which were initially painful, yet many developers accepted it. When I had to use their setup script, I found many outdated or irrelevant steps and undocumented instructions. I automated those steps and fixed the instructions. Now, newcomers recognize the value of this, and even people external to the project can set it up without prior knowledge, saving days of effort and enabling easier contributions.

When I have to do a task, even just once, I try to make a script and document it. If I have to do it more than once, I try to automate even more parts. Each time I return to a task I'm becoming too familiar with, I feel the urge to improve the process, document and automate it, make it configurable, flexible, shared, robust, and efficient. When performing repetitive operations, I script them, always. At least partially if not fully. If mistakes occur, the fixes are likely to be automated or documented.

When asking for help, I provide context, and when doing something useful, I share the news or update the docs so people can be aware and benefit from it. I often receive positive feedback for this approach, as people start to realize that automation is more efficient, forgiving, and less risky than repeating operations manually.

Sometimes it's more tempting and fun to spend two days automating something rather than spending an hour running an imperfect automation hundreds of times. You have to balance the pros and cons of fun versus efficiency, depending on your priorities. However, it's risky to automate something you don't fully understand. You need to acquire some level of expertise in a topic before embracing automation and contributing improvements. It's dangerous to automate something you don't know how to run, debug, or test manually.

LLMs can help automate tasks, but you should be able to code and debug without them. You need to perform a task fully without LLMs or scripting before attempting to script it. It's good practice to study the documentation, API, and man pages of the tools you use and learn to troubleshoot effectively.

I believe every second counts, and even if we're solving a unique problem for the first time, the knowledge gained is worth documenting. This way, we can extract a process or history from it, which can be helpful for us, our team, or anyone else if shared.

Mastodon