Just my blogroll - BlogFlock2026-02-01T14:26:13.344ZBlogFlockThe Emacs Cat, Irreal, Justin Barclay, BuzzMachine, Arialdo Martini, Protesilaos Stavrou: News and Announcements, GamingOnLinux Latest Articles, Bowmansarrow, Philip KALUDERCIC, Karthinks, Xah Lee, Emacs@ Dyerdwelling, Jeff Kreeftmeijer, MacAdie Web Blog, manuel uberti, Take on Rules, Bicycle For Your Mind, Wilfred Hughes::Blog, LWN.net, McSweeney’s, Rock Paper Shotgun Latest Articles Feed, Sacha ChuaThe Sunday Papers - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/the-sunday-papers-7952026-02-01T10:17:31.000Z<img src="https://assetsio.gnwcdn.com/the-sunday-papers-big.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>Sundays are for heading into your kitchen at 7am to find the neighbour’s cat squatting with her back to you on the windowsill. The neighbour’s cat spooks easily and every time you scare her away, you worry she’s never coming back. So let’s very quietly make a cup of coffee and ever so softly click on some links to internet articles and read them as frictionlessly as we can manage. </p>
<p>You! I can hear your eyelids squeaking. I can hear the little wheels chewing and rattling between your temples, as you digest these very words. Please wrap some cotton wool around your head before we continue.</p> <p><a href="https://www.rockpapershotgun.com/the-sunday-papers-795">Read more</a></p>One year on from Citizen Sleeper 2, I'm tempted back into its world with a physical release of its TTRPG spin-off - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/one-year-on-from-citizen-sleeper-2-im-tempted-back-into-its-world-with-a-physical-release-of-its-ttrpg-spin-off2026-01-31T22:55:06.000Z<img src="https://assetsio.gnwcdn.com/citizen-sleeper-2-spindlejack-ttrpg.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>
Crafting a world that begs to be explored is a tricky thing to do, especially when the world is kind of sucky, doubly so when it's woven mostly through words with only supplementary imagery to provide a broader context. Yet <a href="https://www.rockpapershotgun.com/games/citizen-sleeper">Citizen Sleeper's</a> is one I'm often thinking about because amongst all the grand sci-fi concepts is a grounded sense of reality that you'll always find in the best of the cyberpunk genre. And here I am, a year on from the second game's release, tempted to return once more, but this time in a form based on its tabletop origins.
</p> <p><a href="https://www.rockpapershotgun.com/one-year-on-from-citizen-sleeper-2-im-tempted-back-into-its-world-with-a-physical-release-of-its-ttrpg-spin-off">Read more</a></p>Trust Me, I Nailed It is a turn-based strategy game where you make sick video edits of a really rubbish hero - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/trust-me-i-nailed-it-is-a-turn-based-strategy-game-where-you-make-sick-video-edits-of-a-really-rubbish-hero2026-01-31T21:35:49.000Z<img src="https://assetsio.gnwcdn.com/trust-me-i-nailed-it.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>
There are not enough games in the world where it feels like the initial concept was born from the thought, "wouldn't it be funny if…" I'm no fool, I know this is because developing a video game is akin to getting hit by a car, miraculously coming away from it unscathed, only to be hit by six more cars as you continue your journey. In any case, this is still how I would like to imagine Trust Me, I Nailed It was born, a turn-based <a href="https://www.rockpapershotgun.com/the-best-strategy-games-on-pc">strategy</a> game where you have to make cool video edits of some warrior to make him seem like a monster slaying legend.
</p> <p><a href="https://www.rockpapershotgun.com/trust-me-i-nailed-it-is-a-turn-based-strategy-game-where-you-make-sick-video-edits-of-a-really-rubbish-hero">Read more</a></p>The Sims 4's next expansion looks perfect for all your reality TV show fantasies - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/the-sims-4s-next-expansion-looks-perfect-for-all-your-reality-tv-show-fantasies2026-01-31T19:06:57.000Z<img src="https://assetsio.gnwcdn.com/the-sims-4-royalty-legacy.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>
You know, I'm surprised that EA has never made a Sims reality show where contestants have to act out odd, Simish challenges on a Truman Show-esque production lot, given how much the games themselves feel like simulators for the trashiest (said lovingly) TV show genre. In the meantime, while it isn't at all themed reality shows, <a href="https://www.rockpapershotgun.com/games/the-sims-4">The Sims 4's</a> next expansion, Royalty & Legacy, seems like a perfect fit for a fictitious one of your own making.
</p> <p><a href="https://www.rockpapershotgun.com/the-sims-4s-next-expansion-looks-perfect-for-all-your-reality-tv-show-fantasies">Read more</a></p>RuneScape: Dragonwilds's next big update ups the level cap to 99, even though it's literally pointless right now - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/runescape-dragonwildss-next-big-update-ups-the-level-cap-to-99-even-though-its-literally-pointless-right-now2026-01-31T18:01:52.000Z<img src="https://assetsio.gnwcdn.com/runescape-dragonwilds-level-cap.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>
<a href="https://www.rockpapershotgun.com/games/runescape-dragonwilds">RuneScape: Dragonwilds</a> just held its 2026 summit this week, and with it came a bevy of details about future updates and plans for the <a href="https://www.rockpapershotgun.com/the-best-survival-games-on-pc">survival</a> game. Oh what joy for you scaper or runes! The main thing that got a look-in was the game's next big update, Dowdun Reach: Madness of Zamorak, which certainly has an air of someone looking at any section of a given <a href="https://www.rockpapershotgun.com/games/dark-souls">Dark Souls</a> and thinking "yeah, I want a fortress like that."
</p> <p><a href="https://www.rockpapershotgun.com/runescape-dragonwildss-next-big-update-ups-the-level-cap-to-99-even-though-its-literally-pointless-right-now">Read more</a></p>While the jury's still out on it, Highguard gets a temporary new mode that ups the headcount in matches - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/while-the-jurys-still-out-on-it-highguard-gets-a-temporary-new-mode-that-ups-the-headcount-in-matches2026-01-31T16:52:26.000Z<img src="https://assetsio.gnwcdn.com/highguard-5v5.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>
I'm sure there's been many a Dweet and forum post about <a href="https://www.rockpapershotgun.com/games/highguard">Highguard</a> is already a dead game or some such silly thing to say about a game that's not even a week old, but it does at least seem like developer Wildlight is paying attention to some of the more constructive bits of criticism about the game. Namely, that many aren't fond of the <a href="https://www.rockpapershotgun.com/best-fps-games">shooter's</a> 3v3 Raids simply because it feels like there aren't enough people for such large maps. So in turn, there's already an update adding in an experimental new raid mode.
</p> <p><a href="https://www.rockpapershotgun.com/while-the-jurys-still-out-on-it-highguard-gets-a-temporary-new-mode-that-ups-the-headcount-in-matches">Read more</a></p>Revisiting The 500 Mile Email - Irrealhttps://irreal.org/blog/?p=135792026-01-31T15:57:21.000Z<p>
Someone reposted Trey Harris’ famous story about <a href="https://web.mit.edu/jemorris/humor/500-miles">the 500 mile email</a>. The TL;DR is that Harris, working as a university system administrator, received a call from the Statistics Department claiming that they couldn’t send an email further than about 500 miles. If you know anything at all about how email works, your reaction would be the same as Harris’: Yeah right.
</p>
<p>
Oddly, though, it turned out to be true. It was the Statistics Department, after all, and they had all sorts of data supporting the claim. Harris ran his own tests and discovered to his astonishment that it was true. Email to a site closer than 500 miles worked fine. Those to sites further away than a little over 500 miles invariably failed.
</p>
<p>
I’ve written about this at least a couple of times before but it’s such a good story that it’s worth repeating now and then for people who haven’t heard it. The solution makes perfect sense once you know what it is but until you do it’s seems like an impossibility.
</p>
<p>
Take a look at Harris’ original post for the answer and for the amusing story. You may even learn a new way of thinking about network problems. Sometimes you need to look under the layer where the problems seems to exist to discover what’s actually going on.</p>
What are we all playing this weekend? - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/what-are-we-all-playing-this-weekend-3672026-01-31T08:00:00.000Z<img src="https://assetsio.gnwcdn.com/weekend-cycling.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>In the past week, two keen cyclists I know have both ruled out getting on their bikes until March. Too cold, they say. Too wet, they say. I'm trying to put their warnings out of mind because I've seen a glimmer of sun and I am desperate to get on my velocipede, ride it out to Epping forest, and see some green.</p>
<p>Maybe I'll get five miles through the big smoke before I have to turn back because my hands have gone blue, but gosh darn it I'm going to give it the old college try.</p>
<p><a href="https://www.rockpapershotgun.com/what-are-we-all-playing-this-weekend-367">Read more</a></p>Emacs and French: Focus flycheck-grammalecte on the narrowed part of the buffer - Sacha Chuahttps://sachachua.com/blog/2026/01/emacs-and-french-focus-flycheck-grammalecte-on-the-narrowed-part-of-the-buffer/2026-01-31T03:22:49.000Z<p>
After learning about French spellcheck and grammar checking from <a href="https://eeame-97718b.frama.io/jours/jour11/">Emacs expliqué à mes enfants</a>, I added <a href="https://github.com/milouse/flycheck-grammalecte">flycheck-grammalecte</a> to my config. Nudged by <a href="https://mastodon.zaclys.com/@lann/115974248832191444">@lann@mastodon.zaclys.com</a>, I finally got around to figuring out why my setup sometimes worked and sometimes didn't. When I checked <code>flycheck-verify-setup</code>, I noticed that grammalecte kept getting disabled. A little digging around showed me that it was getting disabled because of too many errors. That was because it was trying to work on my whole file instead of just the portion that I <a href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Narrowing.html">narrowed</a> to with <code>org-narrow-to-subtree</code> (ooh, just noticed an <code>org-toggle-narrow-to-subtree</code> command).
</p>
<p>
After some fiddling around, I figured out how to define a checker that runs only on the narrowed part of the buffer.
</p>
<div class="org-src-container">
<pre class="src src-emacs-lisp"><code>(<span class="org-keyword">defun</span> <span class="org-function-name">my-flycheck-grammalecte-buffer</span> (checker callback)
(<span class="org-keyword">let*</span> ((temp-file-name (make-temp-file <span class="org-string">"grammalecte"</span>))
(output-buffer (get-buffer-create temp-file-name))
(buffer (current-buffer))
(cmdline (delq nil <span class="org-highlight-quoted-quote">`</span>(<span class="org-string">"python3"</span>
,(expand-file-name <span class="org-string">"flycheck_grammalecte.py"</span>
grammalecte--site-directory)
,(<span class="org-keyword">unless</span> flycheck-grammalecte-report-spellcheck <span class="org-string">"-S"</span>)
,(<span class="org-keyword">unless</span> flycheck-grammalecte-report-grammar <span class="org-string">"-G"</span>)
,(<span class="org-keyword">unless</span> flycheck-grammalecte-report-apos <span class="org-string">"-A"</span>)
,(<span class="org-keyword">unless</span> flycheck-grammalecte-report-nbsp <span class="org-string">"-N"</span>)
,(<span class="org-keyword">unless</span> flycheck-grammalecte-report-esp <span class="org-string">"-W"</span>)
,(<span class="org-keyword">unless</span> flycheck-grammalecte-report-typo <span class="org-string">"-T"</span>)
(option-list <span class="org-string">"-f"</span> flycheck-grammalecte-filters)
(eval (flycheck-grammalecte--prepare-arg-list
<span class="org-string">"-f"</span> flycheck-grammalecte-filters-by-mode))
(eval (flycheck-grammalecte--prepare-arg-list
<span class="org-string">"-b"</span> flycheck-grammalecte-borders-by-mode))
,temp-file-name)))
(args (mapcan (<span class="org-keyword">lambda</span> (arg) (flycheck-substitute-argument arg checker)) cmdline))
(command (flycheck--wrap-command (car args) (cdr args))))
(write-region (buffer-string) nil temp-file-name)
(make-process <span class="org-builtin">:name</span> <span class="org-string">"grammalecte"</span>
<span class="org-builtin">:buffer</span> output-buffer
<span class="org-builtin">:command</span> command
<span class="org-builtin">:sentinel</span>
(<span class="org-keyword">lambda</span> (process status)
(<span class="org-keyword">let</span> ((errors (<span class="org-keyword">with-current-buffer</span> (process-buffer process)
(message <span class="org-string">"%s"</span> (buffer-string))
(flycheck-parse-with-patterns
(buffer-string)
checker
(current-buffer)))))
(delete-file temp-file-name)
(kill-buffer output-buffer)
<span class="org-comment-delimiter">;; </span><span class="org-comment">offset</span>
(funcall
callback
<span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">finished</span>
(<span class="org-keyword">let</span> ((offset (<span class="org-keyword">save-excursion</span> (goto-char (point-min))
(line-number-at-pos nil t))))
(mapcar
(<span class="org-keyword">lambda</span> (err)
(<span class="org-keyword">let</span> ((new-err (copy-flycheck-error err)))
(<span class="org-keyword">setf</span> (cl-struct-slot-value <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">flycheck-error</span> <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">buffer</span> new-err)
buffer)
(<span class="org-keyword">setf</span> (cl-struct-slot-value <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">flycheck-error</span> <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">line</span> new-err)
(+ (flycheck-error-line new-err)
offset -1))
(<span class="org-keyword">setf</span> (cl-struct-slot-value <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">flycheck-error</span> <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">-end-line</span> new-err)
(+ (flycheck-error-end-line new-err)
offset -1))
new-err))
errors))))))))
(<span class="org-keyword">defun</span> <span class="org-function-name">my-flycheck-grammalecte-setup</span> ()
<span class="org-doc">"Build the flycheck checker, matching your taste."</span>
(<span class="org-keyword">interactive</span>)
(<span class="org-keyword">unless</span> (grammalecte--version)
(advice-add <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">grammalecte-download-grammalecte</span> <span class="org-builtin">:after-while</span>
<span class="org-highlight-quoted-quote">#'</span><span class="org-highlight-quoted-symbol">flycheck-grammalecte--retry-setup</span>))
(grammalecte--augment-pythonpath-if-needed)
(flycheck-define-generic-checker <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">my-grammalecte-narrowed</span>
<span class="org-doc">"Report Grammalecte errors, but only for the narrowed section."</span>
<span class="org-builtin">:start</span> <span class="org-highlight-quoted-quote">#'</span><span class="org-highlight-quoted-symbol">my-flycheck-grammalecte-buffer</span>
<span class="org-builtin">:modes</span> flycheck-grammalecte-enabled-modes
<span class="org-builtin">:predicate</span> (<span class="org-keyword">lambda</span> ()
(<span class="org-keyword">if</span> (functionp flycheck-grammalecte-predicate)
(funcall flycheck-grammalecte-predicate)
t))
<span class="org-builtin">:enabled</span> <span class="org-highlight-quoted-quote">#'</span><span class="org-highlight-quoted-symbol">grammalecte--version</span>
<span class="org-builtin">:verify</span> <span class="org-highlight-quoted-quote">#'</span><span class="org-highlight-quoted-symbol">flycheck-grammalecte--verify-setup</span>)
(<span class="org-keyword">setf</span> (flycheck-checker-get <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">my-grammalecte-narrowed</span> <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">error-patterns</span>)
(seq-map (<span class="org-keyword">lambda</span> (p)
(cons (flycheck-rx-to-string <span class="org-highlight-quoted-quote">`</span>(<span class="org-keyword">and</span> ,@(cdr p))
<span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">no-group</span>)
(car p)))
flycheck-grammalecte--error-patterns))
(add-to-list <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">flycheck-checkers</span> <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">grammalecte</span>)
(flycheck-grammalecte--patch-flycheck-mode-map))
</code></pre>
</div>
<p>
After I use <code>my-flycheck-grammalecte-setup</code>, I can use <code>flycheck-select-checker</code> to select <code>my-grammalecte-narrowed</code> and then use <code>flycheck-buffer</code> to run it. Then it will underline all the number/gender agreement issues I usually have. It's nice that I can practise editing my text with this script before I run the text through an LLM (also via flycheck) for feedback on wording.
</p>
<figure id="org042646b">
<a href="https://sachachua.com/blog/2026/01/emacs-and-french-focus-flycheck-grammalecte-on-the-narrowed-part-of-the-buffer/2026-01-30_22-20-20.png"><img src="https://sachachua.com/blog/2026/01/emacs-and-french-focus-flycheck-grammalecte-on-the-narrowed-part-of-the-buffer/2026-01-30_22-20-20.png" alt="2026-01-30_22-20-20.png"></a>
<figcaption><span class="figure-number">Figure 1: </span>Screenshot of grammalecte providing grammar feedback</figcaption>
</figure>
<div class="note">This is part of my <a href="https://sachachua.com/dotemacs#multimedia-learning-french">Emacs configuration.</a></div><div><a href="https://sachachua.com/blog/2026/01/emacs-and-french-focus-flycheck-grammalecte-on-the-narrowed-part-of-the-buffer/index.org">View org source for this post</a></div>
<p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F01%2Femacs-and-french-focus-flycheck-grammalecte-on-the-narrowed-part-of-the-buffer%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>Wreckfest 2's career mode is based around a fender bending moral alignment chart of lawful racers and chaotic crashers - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/wreckfest-2s-career-mode-is-based-around-a-fender-bending-moral-alignment-chart-of-lawful-racers-and-chaotic-crashers2026-01-30T17:25:11.000Z<img src="https://assetsio.gnwcdn.com/wreckfest-2-career-mode-dev-blog-1-01.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>Are you more of a supervan wrecker or a bone stock maniac? Can you be best described as a British couch racing champion, or is your calling more in the realms of Finnish folk? These are the sorts of questions you'll have to pose to yourself whenever you fire up <a href="https://www.rockpapershotgun.com/games/wreckfest-2">Wreckfest 2</a>'s still-in-the works career mode, which devs Bugbear Entertainment have just laid out a bunch of plans for.</p>
<p><a href="https://www.rockpapershotgun.com/wreckfest-2s-career-mode-is-based-around-a-fender-bending-moral-alignment-chart-of-lawful-racers-and-chaotic-crashers">Read more</a></p>Turtle Beach Burst II Pro gaming mouse review - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/turtle-beach-burst-ii-pro-gaming-mouse-review2026-01-30T16:44:37.000Z<img src="https://assetsio.gnwcdn.com/Turtle-Beach-Burst-II-Pro-Quick-Kits.jpg?width=690&quality=85&format=jpg&auto=webp" />
<p>The Turtle Beach Burst II Pro’s raison d'être is to bung a <a href="https://www.rockpapershotgun.com/games/valorant">Valorant</a> esportist’s Christmas list of premium features into an ultra-lightweight gaming mouse; a class of peripheral that’s more accustomed to jettisoning luxuries than hoarding them. Thus we have a desk rat that weighs 57g, less than half of the apparently immortal <a href="https://www.rockpapershotgun.com/logitech-g502-hero-review">Logitech G502 Hero</a>, while packing pleasantly clicky optical switches and an 8K polling sensor – meaning it sends its latest positional info to the PC eight thousand times a second. That’s Windows 11 levels of notification spam.</p>
<p><a href="https://www.rockpapershotgun.com/turtle-beach-burst-ii-pro-gaming-mouse-review">Read more</a></p>Emacs Carnival February 2026: Completion - Sacha Chuahttps://sachachua.com/blog/2026/01/emacs-carnival-february-2026-completion/2026-01-30T16:41:18.000Z<p>
For the Emacs Carnival theme for February, let's learn more about completion together.
There are all sorts of cheesy puns one can make about completion and Emacs and Valentine's Day, like "You complete me," but beyond the jokes, it's actually a really good topic to help us work with Emacs more efficiently.
</p>
<div id="outline-container-orgc919a51" class="outline-3">
<h3 id="orgc919a51">First, what's the <a href="https://www.emacswiki.org/emacs/Carnival">Emacs Carnival</a>?</h3>
<div class="outline-text-3" id="text-orgc919a51">
<p>
From Christian Tietze:
</p>
<blockquote>
<p>
A blog carnival is a fun way to tie together a community with shared writing prompts, and marvel at all the creative interpretations of the topic of the month.
</p>
</blockquote>
<p>
You can get a sense of previous carnivals by checking out the previous ones:
</p>
<table>
<colgroup>
<col class="org-left">
<col class="org-left">
<col class="org-left">
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">Month</th>
<th scope="col" class="org-left">Host</th>
<th scope="col" class="org-left">Topic</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">June 2025</td>
<td class="org-left"><a href="https://www.emacswiki.org/emacs/ctietze">ctietze</a></td>
<td class="org-left"><a href="https://christiantietze.de/posts/2025/06/emacs-carnival-2025-06-take-two/">"Take Two"</a></td>
</tr>
<tr>
<td class="org-left">July</td>
<td class="org-left"><a href="https://www.emacswiki.org/emacs/gnewman">gnewman</a></td>
<td class="org-left"><a href="https://gregnewman.io/blog/emacs-carnival-2025-07-writing-experience/">"Writing Experience"</a></td>
</tr>
<tr>
<td class="org-left">August</td>
<td class="org-left"><a href="https://www.emacswiki.org/emacs/takeonrules">takeonrules</a></td>
<td class="org-left"><a href="https://takeonrules.com/2025/08/01/emacs-carnival-2025-08-your-elevator-pitch-for-emacs/">"Your Elevator Pitch for Emacs"</a></td>
</tr>
<tr>
<td class="org-left">September</td>
<td class="org-left"><a href="https://www.emacswiki.org/emacs/rodiongoritskov">rodiongoritskov</a></td>
<td class="org-left"><a href="https://goritskov.com/posts/obscure_packages.html">"Obscure packages"</a></td>
</tr>
<tr>
<td class="org-left">October</td>
<td class="org-left"><a href="https://www.emacswiki.org/emacs/AndyDrop">AndyDrop</a></td>
<td class="org-left"><a href="https://plaindrops.de/blog/2025/emacscarnival/">"Maintenance, server or home or garden"</a></td>
</tr>
<tr>
<td class="org-left">November</td>
<td class="org-left"><a href="https://www.emacswiki.org/emacs/donaldh">donaldh</a></td>
<td class="org-left"><a href="https://donaldh.wtf/2025/10/emacs-carnival-2025-11-an-ode-to-org-babel/">"An ode to org-babel"</a></td>
</tr>
<tr>
<td class="org-left">December</td>
<td class="org-left"><a href="https://www.emacswiki.org/emacs/GeorgeJones">GeorgeJones</a></td>
<td class="org-left"><a href="https://curious.port111.com/2025/11/01/emacs-carnival-december-the-people.html/">"The People of Emacs"</a></td>
</tr>
<tr>
<td class="org-left">January 2026</td>
<td class="org-left"><a href="https://www.emacswiki.org/emacs/ctietze">ctietze</a></td>
<td class="org-left"><a href="https://christiantietze.de/posts/2026/01/emacs-carnival-2026-01-this-year-i-will/">"This year, I'll…"</a></td>
</tr>
</tbody>
</table>
<p>
You don't have to be an expert in order to post. In fact, this is a great way for all of us (beginners and otherwise) to focus on a topic together. Let's treat it like a kind of book club where we can share our notes as we learn.
</p>
</div>
</div>
<div id="outline-container-org6a2917b" class="outline-3">
<h3 id="org6a2917b">What do we mean by completion in Emacs?</h3>
<div class="outline-text-3" id="text-org6a2917b">
<p>
<a href="https://www.emacswiki.org/emacs/CategoryCompletion">Completion</a> can make it faster to enter text and to reduce errors. You can use it to find Emacs commands even if you don't know their full names or keyboard shortcuts. You can use it to expand abbreviations or even fix the typos you usually make. You can use it when you code and when you write. I've heard some people define common abbreviations across different programming languages so they don't have to remember the differences between syntaxes, and minibuffer-completion-based interfaces like consult-ripgrep let you flip through search results astoundingly quickly.
</p>
<p>
Let's start by talking about two types of completion:
</p>
<ul class="org-ul">
<li><b>minibuffer completion,</b> which happens in the small window at the bottom of the screen whenever you use M-x, find a file, etc. This is where you can type a little and then find matching options so that you don't have to remember the full names of commands or files. Be sure to check out <a href="https://www.masteringemacs.org/article/understanding-minibuffer-completion">Understanding Minibuffer Completion - Mastering Emacs</a>!</li>
<li><b>in-buffer completion,</b> like when you expand an abbreviation, insert a snippet, or fill in the rest of a variable name.</li>
</ul>
<p>
Here are some ideas for things to explore. Pick an idea or come up with your own and write a post sharing what you're figuring out!
</p>
<ul class="org-ul">
<li><b>Minibuffer completion</b>
<ul class="org-ul">
<li>Do you know about <code>S-M-x</code> (<code>execute-extended-command-for-buffer</code> - available with Emacs 28.1 or higher), which suggests commands relevant to the current mode?</li>
<li>Have you gotten the hang of using <code>M-p</code> to go back through your history? (Did you know you can interactively search through that history with <code>C-s</code> and <code>C-r</code>?)</li>
<li>Do you know about using <code>M-n</code> to go into the <a href="https://engineering.collbox.co/post/working-faster-in-emacs-by-reading-the-future/">future history</a>?</li>
<li>Have you tried saving your minibuffer history with <a href="https://github.com/emacs-mirror/emacs/blob/master/lisp/savehist.el">savehist</a>?</li>
<li>Do you want to experiment with <a href="https://irreal.org/blog/?p=314">recursive minibuffers</a> so that you can do something else in the middle of a completion?</li>
<li>Do you have nicer completion set up, like <a href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Icomplete.html">icomplete-vertical-mode</a>, <a href="http://xahlee.info/emacs/emacs/emacs_fido_mode.html">fido-mode or fido-vertical-mode</a>, <a href="https://www.gnu.org/software/emacs/manual/html_mono/ido.html">ido-mode or ido-vertical-mode</a>, <a href="https://github.com/emacsmirror/ivy">ivy</a>, or <a href="https://github.com/minad/vertico">vertico</a>? This makes things like <code>M-x</code> (<code>execute-extended-command</code>) and <code>M-y</code> (<code>yank-pop</code>) soo much nicer!</li>
<li>Have you experimented with other completion styles like <a href="https://github.com/oantolin/orderless">orderless</a> so that you can type parts of the completion name in any order?</li>
<li>Have you checked out the convenient search and navigation commands in more complex completion frameworks like <a href="https://github.com/minad/consult">consult</a>, <a href="https://elpa.gnu.org/packages/counsel.html">counsel</a>, or <a href="https://github.com/emacs-helm/helm">helm</a>?</li>
<li>Have you experimented with other <a href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Completion-Options.html">sort orders</a> like the built-in historical option or more complex sorts with <a href="https://github.com/radian-software/prescient.el">prescient.el</a>?</li>
<li>Do you want to see additional information when you're choosing completions? Try out <a href="https://github.com/minad/marginalia">marginalia</a>.</li>
<li>Have you checked out <a href="https://github.com/oantolin/embark">embark</a> for doing other things with your completion like inserting a file name instead of opening it, or changing the command that you wanted to do, or acting on multiple items?</li>
<li>If you use Org Mode, do you want to <a href="https://www.gnu.org/software/emacs/manual/html_node/org/Adding-Hyperlink-Types.html">make your own custom Org link type with completion</a>?
(I really like being able to quickly link to <a href="https://sachachua.com/dotemacs#linking-to-blog-posts">blog posts</a>, <a href="https://sachachua.com/dotemacs#links-to-my-config">parts of my config</a>, or <a href="https://sachachua.com/blog/2024/01/using-an-emacs-lisp-macro-to-define-quick-custom-org-mode-links-to-project-files/">project files</a> with completion)</li>
<li>Do you want to define your own completion commands, maybe even with previews, dynamic collections or asynchronous data?</li>
</ul></li>
<li><b>In-buffer completion</b>
<ul class="org-ul">
<li>Have you set up your own <a href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Abbrevs.html">abbreviations</a> to fix common typos or expand text quickly?</li>
<li>Have you tried using <a href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Dynamic-Abbrevs.html">dabbrev-expand</a> to expand words based on what you have in the current buffer or in other buffers?</li>
<li>Do you want to try <a href="https://www.gnu.org/software/emacs/manual/html_node/autotype/Hippie-Expand.html">hippie-expand</a> to try different functions for expansion?</li>
<li>Have you defined your own snippets for prose or code? (<a href="https://github.com/joaotavora/yasnippet">Yasnippet</a> is popular.)
<ul class="org-ul">
<li>Did you know you can <a href="https://joaotavora.github.io/yasnippet/snippet-development.html#orgcde188c">embed Emacs Lisp in your Yasnippet templates</a>?</li>
</ul></li>
<li>Have you tried <a href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Icomplete.html">icomplete-in-buffer</a>, <a href="https://github.com/minad/corfu">corfu</a>, <a href="https://github.com/company-mode/company-mode">company</a>, or some other in-buffer completion framework?
<ul class="org-ul">
<li>If you use Yasnippet and you've just added completion at point, have you added your snippets to the completions with something like <a href="https://github.com/elken/yasnippet-capf">yasnippet-capf</a>?</li>
</ul></li>
<li>Do you want context-sensitive completions for your shell commands in Emacs? Try <a href="https://www.masteringemacs.org/article/pcomplete-context-sensitive-completion-emacs">pcomplete</a> - you can even define your own.</li>
<li>If you code, do you have <a href="https://github.com/emacs-lsp/lsp-mode">LSP</a>, <a href="https://github.com/joaotavora/eglot">Eglot</a>, or something similar set up to offer you completions in your programming languages?</li>
</ul></li>
<li>Meta: What else can you bring into Emacs so that you can take advantage of all the completions that you've set up, like note-taking or e-mail? (Ex: <a href="https://codeberg.org/martianh/mastodon.el">mastodon.el</a> + <a href="https://github.com/emacsmirror/org-contacts">org-contacts</a> + a little code to insert a <a href="https://sachachua.com/dotemacs#mastodon-org-contacts-complete">Mastodon handle with completion</a> = I can think of people by name instead of by handle!)</li>
</ul>
</div>
</div>
<div id="outline-container-org615ceea" class="outline-3">
<h3 id="org615ceea">Things I want to learn about</h3>
<div class="outline-text-3" id="text-org615ceea">
<p>
For example, this month, I want to…
</p>
<ul class="org-ul">
<li>Minibuffer:
<ul class="org-ul">
<li>Figure out some kind of approximate speech-based minibuffer completion for commands</li>
<li>Create a custom Org Mode link type for emacswiki and other things I refer to frequently</li>
<li>Write about the completion functions I'm using to help me learn French</li>
</ul></li>
<li>In-buffer completion:
<ul class="org-ul">
<li>Notice where I keep typing the same kinds of things and define more snippets for them</li>
<li>Figure out some kind of speech interface for expanding snippets</li>
<li>Sort out completion in programming buffers so that I can finally take advantage of LSP</li>
<li>Complete French words in-buffer ignoring accented characters</li>
</ul></li>
<li>Organize tons of completion-related links from <a href="https://sachachua.com/blog/category/emacs-news">Emacs News</a> onto <a href="https://www.emacswiki.org/emacs/CategoryCompletion">EmacsWiki: Category Completion</a> and other pages</li>
<li>Revisit the completion-related code in my <a href="https://sachachua.com/dotemacs">config</a> to dust off things that I can update, remember to use, or document with <a href="https://github.com/emacsmirror/gif-screencast">gif-screencast</a></li>
</ul>
<p>
I'll publish my notes on my blog and I'll add them to this post as well. I'd love to check out your notes too!
</p>
</div>
</div>
<div id="outline-container-org4183def" class="outline-3">
<h3 id="org4183def">How to submit your entry/entries</h3>
<div class="outline-text-3" id="text-org4183def">
<p>
Please <a href="mailto:sacha@sachachua.com">e-mail me at sacha@sachachua.com</a> or <a href="https://social.sachachua.com/@sacha">DM me via Mastodon</a> with a link to your post(s) by February 28 so that I can add them to this post. I'm happy to link to multiple posts. For example, here are some things you might like to write about:
</p>
<ul class="org-ul">
<li>what you're thinking of figuring out (in case other people have suggestions)</li>
<li>your notes along the way</li>
<li>your current setup</li>
<li>things you're particularly proud of</li>
</ul>
<p>
Looking forward to hearing from you!</p>
</div>
</div>
<div><a href="https://sachachua.com/blog/2026/01/emacs-carnival-february-2026-completion/index.org">View org source for this post</a></div>
<p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F01%2Femacs-carnival-february-2026-completion%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>[$] Compiling Rust to readable C with Eurydice - LWN.nethttps://lwn.net/Articles/1055211/2026-01-30T16:09:24.000Z<p>
A few years ago, the only way to compile Rust code was using the rustc compiler
with LLVM as a backend. Since then, several projects, including
<a href="https://github.com/thepowersgang/mrustc?tab=readme-ov-file#mutabahs-rust-compiler">
Mutabah's Rust Compiler</a> (mrustc), <a href="https://lwn.net/Articles/1040197/">GCC's Rust
support</a> (gccrs),
<a href="https://lwn.net/Articles/907405/#rust_codegen_gcc">
rust_codegen_gcc</a>, and
<a href="https://lwn.net/Articles/964735/">
Cranelift</a> have made enormous progress
on diversifying Rust's compiler implementations. The most recent such project,
<a href="https://github.com/AeneasVerif/eurydice?tab=readme-ov-file#eurydice">
Eurydice</a>, has a
more ambitious goal: converting Rust code to clean C code. This is especially
useful in high-assurance software, where existing verification and compliance
tools expect C. Until such tools can be updated to work with Rust, Eurydice could
provide a smoother transition for these projects, as well as a stepping-stone
for environments that have a C compiler but no working Rust compiler. Eurydice
has been used to compile some post-quantum-cryptography routines from Rust to C,
for example.
</p>Beyond Good & Evil 2 director confirms team are "unaffected" by Ubisoft cuts, "remain committed" to the game - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/beyond-good-evil-2-director-confirms-team-are-unaffected-by-ubisoft-cuts-remain-committed-to-the-game2026-01-30T16:07:09.000Z<img src="https://assetsio.gnwcdn.com/beyond-good-and-evil-2-unaffected-ubisoft-changes-01.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>Ubisoft recently unleashed a raft of <a href="https://www.rockpapershotgun.com/prince-of-persia-the-sands-of-time-remake-and-more-cancelled-by-ubisoft-with-layoffs-potentially-on-the-horizon">cancellations, delays and studio closures</a> as part of a brutal bout of corporate restructuring. We've still yet to see how all of the repercussions of it will go, with <a href="https://www.rockpapershotgun.com/ubisoft-propose-cutting-up-to-200-jobs-at-paris-headquarters-as-unions-reportedly-agree-three-day-strike">proposed voluntary redundancies</a> at the company's Paris headquarters having seen unions put plans in place for a <a href="https://www.rockpapershotgun.com/unionised-french-ubisoft-workers-put-out-call-for-an-international-strike-held-by-all-current-employees">three day strike in February</a>.</p>
<p>One of the games which wasn't among the cancellations was long-in-development sequel <a href="https://www.rockpapershotgun.com/games/beyond-good-and-evil-2">Beyond Good and Evil 2</a>, and its director has now confirmed as much, offering a brief message to reassure fans and encourage folks to support devs affected by Ubisoft's bloodletting.</p>
<p><a href="https://www.rockpapershotgun.com/beyond-good-evil-2-director-confirms-team-are-unaffected-by-ubisoft-cuts-remain-committed-to-the-game">Read more</a></p>Extracting Data From Journelly Entries - Irrealhttps://irreal.org/blog/?p=135772026-01-30T15:33:40.000Z<p>
As you all know, I am always writing about how much I like and use Journelly. One of the things that I always say is that since Journelly saves it data as an Org mode file—or, if you prefer, as a Markdown file—the file is essentially a database that can be queried and processed to produce other files.
</p>
<p>
Álvaro Ramírez has <a href="https://xenodium.com/film-tv-bookmarks-chaos-resolved">a very interesting post</a> that describes one such workflow. Much like I might do, Ramírez adds an entry in his Journelly when he comes across some data about a movie he might want to watch. It may be an IMDB entry, a Reddit post, or even just something someone told him so that all he has is the movie or director name. The common denominator is that he adds a tag such as #film or #watch to mark those entries having to do with movies he should watch. Journelly can, of course, search on the tags but Ramírez has a better way.
</p>
<p>
First he extracts all the entries having an appropriate tag into a <code>watchlist.org</code> file. That gives him a file with all the movies he might want to watch. He uses this and the Claude Code agent to look up each entry in IMDB and to retrieve all the metadata for each movie from IMDB and put it in a db.org file. Finally, he uses the db.org file to generate HTML so that he has a browsable file showing each movie along with its poster.
</p>
<p>
Take a look at his post for the details and to see the final results. As Ramírez says,
</p>
<blockquote>
<p>
At the center of all it all my beloved org syntax. Thanks to plain text formats, we can easily peek at them, query them, poke at them, tweak them, and bend til our heart’s content. It’s just so versatile and now we can throw them at LLMs, too.
</p>
</blockquote>
<p>
Almost none of this is something you’d expect a text editor to do but the Combination of Emacs and Journelly provides a way of moving from free form capture entries to a polished, browsable file.</p>
The Award for Excellence in Open Source goes to Greg Kroah-Hartman - LWN.nethttps://lwn.net/Articles/1056699/2026-01-30T15:26:14.000ZDaniel Stenberg, the recipient of last year's Award for Excellence in Open
Source from the European Open Source Academy, <a
href="https://daniel.haxx.se/blog/2026/01/30/gregkh-awarded-the-prize-for-excellence-in-open-source-2026/">presented
that award to this year's recipient</a>: Greg Kroah-Hartman.
<p>
<blockquote class="bq">
It's impossible to overstate the importance of the work Greg has
done on Linux. In software, innovation grabs headlines, but
stability saves lives and livelihoods. Every Android phone, every
web server, every critical system running Linux depends on Greg's
meticulous work. He ensures that when hospitals, banks,
governments, and individuals rely on Linux, it doesn't fail
them. His work represents the highest form of service: unglamorous,
relentless, and essential.
</blockquote>Three stable kernel updates - LWN.nethttps://lwn.net/Articles/1056693/2026-01-30T14:45:40.000ZThe
<a href="https://lwn.net/Articles/1056694/">6.18.8</a>,
<a href="https://lwn.net/Articles/1056695/">6.12.68</a>, and
<a href="https://lwn.net/Articles/1056696/">6.6.122</a> stable kernel updates have been
released; each contains another set of important fixes.Security updates for Friday - LWN.nethttps://lwn.net/Articles/1056692/2026-01-30T14:43:59.000ZSecurity updates have been issued by <b>AlmaLinux</b> (curl, gimp:2.8, glibc, grafana, grafana-pcp, kernel, osbuild-composer, php:8.3, python-urllib3, python3.11, and python3.12), <b>Debian</b> (chromium), <b>Mageia</b> (ceph, gpsd, libxml2, openjdk, openssl, and xen), <b>SUSE</b> (abseil-cpp, assertj-core, coredns, freerdp, java-11-openjdk, java-25-openjdk, libxml2, openssl-1_0_0, openssl-1_1, python, python-filelock, and python311-sse-starlette), and <b>Ubuntu</b> (kernel, linux, linux-aws, linux-aws-hwe, linux-hwe, linux-kvm, linux-oracle, linux, linux-aws, linux-kvm, linux-lts-xenial, linux-aws-fips, linux-fips, linux-fips, and texlive-bin).CachyOS founder explains why they didn't join the new Open Gaming Collective (OGC) - GamingOnLinux Latest Articleshttps://www.gamingonlinux.com/2026/01/cachyos-founder-explains-why-they-didn-t-join-the-new-open-gaming-collective-ogc/2026-01-30T14:04:15.000ZThe Open Gaming Collective (OGC) was an interesting announcement recently from a few bigger names, but the CachyOS team opted out of it and now we know why.<p><img src="https://www.gamingonlinux.com/uploads/articles/tagline_images/2104927921id28411gol.jpg" alt /></p><p>Read the full article on <a href="https://www.gamingonlinux.com/2026/01/cachyos-founder-explains-why-they-didn-t-join-the-new-open-gaming-collective-ogc/">GamingOnLinux</a>.</p>GPD release their own statement on the confusion with Bazzite Linux support - GamingOnLinux Latest Articleshttps://www.gamingonlinux.com/2026/01/gpd-release-their-own-statement-on-the-confusion-with-bazzite-linux-support/2026-01-30T13:06:08.000ZIn the continuing saga of GPD versus Bazzite Linux, the GPD team have now posted their own statement on what happened.<p><img src="https://www.gamingonlinux.com/uploads/articles/tagline_images/1405882476id28410gol.jpg" alt /></p><p>Read the full article on <a href="https://www.gamingonlinux.com/2026/01/gpd-release-their-own-statement-on-the-confusion-with-bazzite-linux-support/">GamingOnLinux</a>.</p>