Hi, I’m Sylvain Bougerel

This blog is about my personal fun, software projects and my passion for the environment. I am starting this blog with the goal of writing once a week.

NextJS revalidateTag won't work if it's not called in an awaited promise

Using unstable_cache extensions or "use cache" if you’re on NextJS16, you can leverage revalidateTag to invalidate cache across cached calls. However, I noticed today that these won’t work in a route handler that is not async. And I’m not yet sure why. This was my original (simplified) route handler: export async function POST(req: Request) { try { void someTask(); return NextResponse.json({ done: true }); } catch (err) { return new NextResponse(`Internal error`, { status: 500, }); } } Note that someTask returns a Promise which I didn’t await initially: the caller only needed to know that someTask was called, not that it succeeded. However, it became evident someTask didn’t behave properly. ...

December 18, 2025 · 2 min · Sylvain Bougerel

Private Language Tools for browser spell checks

With LanguageTool (LT), it’s possible to run a local language tool server and have your browser extension connect to it. That way, your personal prose remains private (if you trust the browser extension, that is). It’s all documented here and it’s pretty simple to do. In this post, I cover how you can do this on Arch Linux (but it’s likely easy to port to other distro) with systemd to keep that server running. ...

December 15, 2025 · 2 min · Sylvain Bougerel

Hard to argue with time

Since work on Canterly begun, I dropped my mini blog posting schedule. It’s a shame, because I do like to find the time, but anytime I sit at my computer nowadays, it is to work. And there is so much to do.

December 15, 2025 · 1 min · Sylvain Bougerel

Typing faster

I’ve always been rather ashamed of my shabby typing speed. When I code, I sometimes spend as much time correcting as writing. It’s painful to watch, it’s such a dent on productivity. Last March, I started to use MonkeyType and since June, I also added Keybr to my routine. It’s been 6 months, and I’ve made noticeable progress. Not as fast as I hoped to be frank, but I’m satisfied with the results so far. This is how I do it. ...

August 24, 2024 · 4 min · Sylvain Bougerel

Domino and tromino tiling sorcery

Since I’m currently looking for a job, I try to train daily on Leetcode. I started with a now classic study plan, originally authored by Yang Shun Tay and hosted on Grind75. Eventually though, Leetcode presented me with a tiling problem that I found immediately appealing: Domino and tromino tiling. Spoiler alert: the following content reveals the solution to the problem If you don’t know the problem yet, take a look at the description in the link. If you are eager to solve it yourself, stop reading this post immediately. Try solving it and come back to this afterward. ...

May 18, 2024 · 6 min · Sylvain Bougerel

Logseq as Org-roam on the go (Part III)

This is the last part of a 3 part series: Introduction, Logseq and Termux on mobile Improving Logseq and Org-roam interoperability Automating synchronisation (this part) This post will cover automating synchronisation between the 2 mediums, to the point where you will almost forget it is there. It’s not perfect (merge conflicts sometime arise) but for the most part, it works flawlessly. Automatic synchronisation in Emacs There’s many ways to automatically synchronise Git repositories on your desktop. I wrote an Emacs package for it which has the added benefit to let me execute Emacs hooks post merge. Skip this part if you already have a solution that you are satisfied with. ...

April 27, 2024 · 7 min · Sylvain Bougerel

Logseq as Org-roam on the go (Part II)

This is the second part of a 3 part series: Introduction, Logseq and Termux on mobile Improving Logseq and Org-roam interoperability (this part) Automating synchronisation This part covers my Emacs configuration and package to enable Org-roam and Logseq interoperability. I personally use Emacs on my desktop and Logseq on the go, but if you plan to use both on the same machine, this post should apply as well. Org-roam configuration I’ve introduced some of it in my previous post, to detail Logseq’s configuration. This is the gist of it: ...

April 13, 2024 · 6 min · Sylvain Bougerel

Logseq as Org-roam on the go (Part I)

This is the first part of a 3 part series: Introduction, Logseq and Termux on mobile (this part) Improving Logseq and Org-roam interoperability Automating synchronisation I started to use Logseq in the fall of 2023, and with almost 9 months of use, I’m confident it is a great mobile application for Org-roam. Some applications do a better job at being compatible with the Org file format (e.g. organice) however they do not support Org-roam readily. Logseq, while a bit lax with its support of the Org file format (more on that in a bit), is closer to Org-roam’s Zettelkasten philosophy: links between pages are a breeze to create, backlinks show up immediately and the journal entries quickly becomes your entry point for time management. ...

April 8, 2024 · 9 min · Sylvain Bougerel

My first post from org-mode

This post was exported from Emacs org-mode (with org-roam) using ox-hugo. Yes, that’s all there is to that post. But I’m gonna leave it there for keepsake.

February 20, 2024 · 1 min · Sylvain Bougerel

Programming a fast integral sine

I started playing puzzles on codingames.com recently. Although many challenges can be solved by beginners, getting to the top spots on the ladder for the toughest challenges demands a lot of time investment. Which makes it a great game. The game I focus on is Mad Pod Racing, it plays in an arena where your bot meets another bot. Your bot has a finite amount of time for each move. This became an excuse to look into approx fast integer operations. I don’t really need to, but when I started looking at integer computations for Sine, I was swallowed whole into the rabbit hole. What could be more pointless fun than that? ...

November 12, 2018 · 11 min · Sylvain Bougerel