Just my blogroll - BlogFlock2026-03-02T03:37:32.771ZBlogFlockThe Emacs Cat, Protesilaos Stavrou: News and Announcements, manuel uberti, Irreal, Justin Barclay, BuzzMachine, GamingOnLinux Latest Articles, Philip KALUDERCIC, Karthinks, Xah Lee, Bowmansarrow, Arialdo Martini, Emacs@ Dyerdwelling, Jeff Kreeftmeijer, MacAdie Web Blog, Take on Rules, LWN.net, Bicycle For Your Mind, Wilfred Hughes::Blog, McSweeney’s, Rock Paper Shotgun Latest Articles Feed, Sacha ChuaKernel prepatch 7.0-rc2 - LWN.nethttps://lwn.net/Articles/1060802/2026-03-02T01:07:09.000ZThe <a href="https://lwn.net/Articles/1060801/">7.0-rc2</a> kernel prepatch is out for
testing. According to Linus:
<p>
<blockquote class="bq">
So I'm not super-happy with how big this is, but I'm hoping it's
just the random timing noise we see every once in a while where I
just happen to get more pull requests one week, only for the next
week to then be quieter.
</blockquote>groff 1.24.0 released - LWN.nethttps://lwn.net/Articles/1060786/2026-03-01T21:15:09.000ZVersion 1.24.0 of the groff text-formatting system has been released.
Improvements include the ability to insert hyperlinks between man pages, a
new <tt>polygon</tt> command for the <tt>pic</tt> preprocessor, various
PDF-output improvements, and more.Here's some of the most-played demos during Steam Next Fest - February 2026 edition - GamingOnLinux Latest Articleshttps://www.gamingonlinux.com/2026/03/heres-some-of-the-most-played-demos-during-steam-next-fest-february-2026-edition/2026-03-01T18:41:55.000ZWith Steam Next Fest - February 2026 nearly over, Valve recently revealed some of the most popular choices amongst gamers.<p><img src="https://www.gamingonlinux.com/uploads/articles/tagline_images/989741439id28582gol.jpg" alt /></p><p>Read the full article on <a href="https://www.gamingonlinux.com/2026/03/heres-some-of-the-most-played-demos-during-steam-next-fest-february-2026-edition/">GamingOnLinux</a>.</p>Here's the most played Steam Deck games for February 2026 - GamingOnLinux Latest Articleshttps://www.gamingonlinux.com/2026/03/heres-the-most-played-steam-deck-games-for-february-2026/2026-03-01T18:30:27.000ZAnother month is done and finished and what a month it was huh? February 2026 had some fun games arriving, so here's what was most popular on Steam Deck.<p><img src="https://www.gamingonlinux.com/uploads/articles/tagline_images/2101073950id28581gol.jpg" alt /></p><p>Read the full article on <a href="https://www.gamingonlinux.com/2026/03/heres-the-most-played-steam-deck-games-for-february-2026/">GamingOnLinux</a>.</p>Proton Experimental gets improvements for Vermintide 2 and more controller support for launchers - GamingOnLinux Latest Articleshttps://www.gamingonlinux.com/2026/03/proton-experimental-gets-improvements-for-vermintide-2-and-more-controller-support-for-launchers/2026-03-01T18:11:24.000ZValve released an update for Proton Experimental for February 27th, their testing ground for getting more Windows games running on Linux / SteamOS systems.<p><img src="https://www.gamingonlinux.com/uploads/articles/tagline_images/1727501522id28580gol.jpg" alt /></p><p>Read the full article on <a href="https://www.gamingonlinux.com/2026/03/proton-experimental-gets-improvements-for-vermintide-2-and-more-controller-support-for-launchers/">GamingOnLinux</a>.</p>Emacs For Game Development - Irrealhttps://irreal.org/blog/?p=136442026-03-01T15:44:18.000Z<p>
Over at the Emacs subreddit, alraban tells a nice story about <a href="https://www.reddit.com/r/emacs/comments/1rh5am7/im_amazed_by_how_good_emacs_is_for_game/">game development with Emacs</a>. The TL;DR is that it’s amazingly good. Alraban isn’t a professional developer but has been a hobbyist since the 80s. He has, several times, tried to write a game but never made anything he felt was performant enough to ship.
</p>
<p>
Recently he decided to try again. He used the Godot engine because he wanted to work with FOSS tools but he didn’t like the builtin editor or GUI so as a long time Emacs user, he thought he’d give Emacs a try.
</p>
<p>
Airaban was amazed at how good the experience was. The amazement wasn’t that you could develop games in Emacs—of course you can; people are doing it everyday—but at how good the tooling was and at how smooth and delightful the process was. Even as a long term user who “pretty much live[d] in Emacs” he was surprised at how much tooling there was available and how good it was. As he puts it,
</p>
<blockquote>
<p>
It was like starting a home improvement project I’d never done before, and discovering that I already had all the tools I needed in the basement.
</p>
</blockquote>
<p>
Most of us are pretty familiar with the Emacs tooling associated with our normal tasks. The takeaway from airaban’s post is that you’re apt to be surprised at what’s available when you move to a new task.
</p>
<p>
This is a short post and only takes a couple of minutes to read. It’s well worth your time.</p>
Emacs Carnival Feb 2026 wrap-up: Completion - Sacha Chuahttps://sachachua.com/blog/2026/03/emacs-carnival-feb-2026-wrap-up-completion/2026-03-01T12:37:57.000Z<p>
Check out all the wonderful entries people sent in for the <a href="https://sachachua.com/blog/2026/01/emacs-carnival-february-2026-completion/">Emacs Carnival Feb 2026 theme of Completion</a>:
</p>
<ul class="org-ul">
<li><a href="https://arjenwiersma.nl/completion-in-emacs-hledger">Completion (in Emacs hledger) — Arjen Wiersma</a></li>
<li><a href="https://mike.hostetlerhome.com/emacs-carnival-completion">Emacs Carnival: Completion — Where Are The Wise Men? - Mike Hostetler</a></li>
<li><a href="https://dolzhenko.me/blog/2026/02/file-name-completion-in-emacs/">File name completion in Emacs - Dmitry Dolzhenko</a></li>
<li><a href="https://cleberg.net/blog/emacs-carnival-2026-02-completion.html">Emacs Carnival: "Completion" - Christian Cleberg</a></li>
<li><a href="https://howardism.org/Technical/Emacs/alt-completing-read.html">An Alternate Completing Read - Howard Abrams</a></li>
<li><a href="https://jneidel.com/guide/emacs-completion/">Guide to Modern Emacs Completion: vertico, corfu & friends - jneidel</a></li>
<li><a href="http://sachachua.com/blog/2026/02/sorting-completion-candidates-such-as-sorting-org-headings-by-level/">Sorting completion candidates, such as sorting Org headings by level - Sacha Chua</a></li>
<li><a href="https://macadie.info/2026/02/26/emacs-carnival-completion/">Emacs Carnival: Completion – Eric MacAdie</a></li>
<li><a href="https://codeberg.org/eludom/home.public.notes/src/branch/master/home/public/notes/ai/20260226T090319--chat-emacs-completions__public_tech.org">CHAT emacs completions - George Jones</a></li>
<li><a href="https://sachachua.com/blog/2026/02/emacs-completion-and-handling-accented-characters-with-orderless/">Emacs completion and handling accented characters with orderless - Sacha Chua</a></li>
<li><a href="https://sachachua.com/blog/2026/02/using-speech-recognition-for-on-the-fly-translations-in-emacs-and-faking-in-buffer-completion-for-the-results/">Using speech recognition for on-the-fly translations in Emacs and faking in-buffer completion for the results - Sacha Chua</a></li>
<li><a href="https://www.matem.unam.mx/~omar/apropos-emacs.html#exploring-data-with-completion">Exploring large amounts of data with completion - Omar Antolin</a></li>
<li><a href="https://commonplace.doubleloop.net/emacs-carnival-completion">Emacs Carnival: Completion - Neil</a></li>
<li><a href="https://www.gonsie.com/blorg/org-completion-feb26-carnival.html">Emacs Carnival: Org Mode Completions - Elsa Gonsiorowski</a></li>
<li><a href="https://jneidel.com/dev/hugo-links/">Completion of hugo links in Emacs - jneidel</a></li>
<li><a href="https://johnrakestraw.com/post/emacs-carnival-completion-in-beancount-plain-text-accounting/">Emacs Carnival: Completion in Beancount Plain Text Accounting - John Rakestraw</a></li>
</ul>
<p>
Also, this one about completing the loop:
</p>
<ul class="org-ul">
<li><a href="https://christiantietze.de/posts/2026/02/complete-feedback-loop-in-emacs/">Emacs Complete: Feedback Loops in Emacs, Feedback Loops in Computing • Christian Tietze</a></li>
</ul>
<p>
Sometimes I miss things, so if you wrote something and you don't see it here, please let me know! 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).
If you like the idea but didn't get something together in time for February, it's never too late. Even if you come across this years later, feel free to write about the topic if it inspires you. I'd love to include a link to your notes in <a href="https://sachachua.com/blog/category/emacs-news">Emacs News</a>.
</p>
<p>
I added a ton of links from the Emacs News archives to the <a href="https://sachachua.com/blog/2026/01/emacs-carnival-february-2026-completion/#emacs-carnival-february-2026-completion-links-and-ideas">Resources and Ideas</a> section, so check those out too.
</p>
<p>
I had a lot of fun learning together with everyone. I already have a couple of ideas for March's Emacs Carnival theme of <a href="https://sdf.org/~pkal/blog/emacs/mistakes.html">Mistakes and Misconceptions</a> (thanks to Philip Kaludercic for hosting!), and I can't wait to see what people will come up with next!
</p>
<div><a href="https://sachachua.com/blog/2026/03/emacs-carnival-feb-2026-wrap-up-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%2F03%2Femacs-carnival-feb-2026-wrap-up-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>The Sunday Papers - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/the-sunday-papers-7992026-03-01T10:00:00.000Z<img src="https://assetsio.gnwcdn.com/the-sunday-papers-big.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>Sundays are for wondering why the neighbour’s cat is mad at you. I thought we were getting along well – I’ve been letting her into the block regularly, and we have a little ritual where she runs partway up the stairs, and I do Mousey Fingers through the bannister. We had a little ritual, anyway. The last few times, she’s hissed at me and run away. “Ho ho, you goofball,” I say, as my heart quietly implodes. “Cats are so weird,” I chuckle, tears dripping from my chin, as I hurry into my flat.</p>
<p><a href="https://www.rockpapershotgun.com/the-sunday-papers-799">Read more</a></p>Mightreya is a crunchy, meaty, complicated anime-superhero fusion of Devil May Cry and Gravity Rush - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/mightreya-is-a-crunchy-meaty-complicated-anime-superhero-fusion-of-devil-may-cry-and-gravity-rush2026-02-28T22:55:42.000Z<img src="https://assetsio.gnwcdn.com/mightreya.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>
I've had my eye on Mightreya since long before it had its name, when it was just clips of a somewhat generic anime girl doing sick tricks and beatdowns in levels without assets. But now it looks like a genuine (the -uine pronounced like wine, so you've got the right intonation) <a href="https://www.rockpapershotgun.com/best-action-games">action</a> video game, with a slightly less generic looking anime girl continuing to do sick tricks and beatdowns, albeit with a bit more context. And you can even try it out for yourself now with a new demo! Which I did and will tell you about thusly.
</p> <p><a href="https://www.rockpapershotgun.com/mightreya-is-a-crunchy-meaty-complicated-anime-superhero-fusion-of-devil-may-cry-and-gravity-rush">Read more</a></p>I still can't tell you what's going on in Hypnos but its demo's scenic megastructure world is one I want to keep exploring - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/i-still-cant-tell-you-whats-going-on-in-hypnos-but-its-demos-scenic-megastructure-world-is-one-i-want-to-keep-exploring2026-02-28T21:57:43.000Z<img src="https://assetsio.gnwcdn.com/HYPNOS-DEMO.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>
When I first wrote about <a href="https://www.rockpapershotgun.com/games/hypnos">Hypnos</a> upon its announcement last month, <a href="https://www.rockpapershotgun.com/i-have-no-idea-what-you-do-in-hypnos-but-its-cosmic-horror-megastructure-world-looks-so-pretty-im-not-bothered">I noted how I don't really know what you do in it</a>. The trailer was entirely about The Vibes, but that was enough for my mechanically minimalist loving heart. I've now had a go at the demo, and to tell you the truth, I'm still not entirely sure what you do, and I couldn't give a monkeys because oh me oh my, what a pretty world it does contain.
</p> <p><a href="https://www.rockpapershotgun.com/i-still-cant-tell-you-whats-going-on-in-hypnos-but-its-demos-scenic-megastructure-world-is-one-i-want-to-keep-exploring">Read more</a></p>One former Highguard level designer thinks it's struggled because Wildlight "leaned too far into the competitive scene" - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/one-former-highguard-level-designer-thinks-its-struggled-because-wildlight-leaned-too-far-into-the-competitive-scene2026-02-28T21:11:15.000Z<img src="https://assetsio.gnwcdn.com/highguard-5v5.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>
A few years ago, it's entirely possible that <a href="https://www.rockpapershotgun.com/games/highguard">Highguard</a> isn't the current talk of a town called Didn't Work. But now, when everyone wants a piece of the live service pie, it's not so easy to come in and claim some for yourself. We could spend an eternity figuring out what went wrong, but perhaps the words of former senior level designer on the <a href="https://www.rockpapershotgun.com/best-fps-games">shooter</a> Alex Graner will provide a particular insight that the comment section of an annoying YouTuber won't.
</p> <p><a href="https://www.rockpapershotgun.com/one-former-highguard-level-designer-thinks-its-struggled-because-wildlight-leaned-too-far-into-the-competitive-scene">Read more</a></p>As Warhammer 40,000: Dark Heresy gets an early gameplay look-in, Rogue Trader gets an infinitely brief DLC teaser - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/as-warhammer-40000-dark-heresy-gets-an-early-gameplay-look-in-rogue-trader-gets-an-infinitely-brief-dlc-teaser2026-02-28T19:03:25.000Z<img src="https://assetsio.gnwcdn.com/warhammer-40000-rogue-trader-dlc.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>
Last year, Owlcat announced they were working on another CRPG set within the world of Warhammer 40,000 called <a href="https://www.rockpapershotgun.com/games/warhammer-40000-dark-heresy">Dark Heresy</a>. This would have potentially led to an assumption that they were done with their previous game, <a href="https://www.rockpapershotgun.com/games/warhammer-40000-rogue-trader">Rogue Trader</a>, but nope! They're still going, and a brief teaser for that CRPG's next bit of DLC was shared (and when I say brief, I do mean it), and to wet your appetite, some gameplay for Dark Heresy is there to have a look at too.
</p> <p><a href="https://www.rockpapershotgun.com/as-warhammer-40000-dark-heresy-gets-an-early-gameplay-look-in-rogue-trader-gets-an-infinitely-brief-dlc-teaser">Read more</a></p>While you wait for a release date announcement, have a gander at Nivalis' opening moments - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/while-you-wait-for-a-release-date-announcement-have-a-gander-at-nivalis-opening-moments2026-02-28T17:08:29.000Z<img src="https://assetsio.gnwcdn.com/nivalis-opening-moments.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>
<a href="https://www.rockpapershotgun.com/games/nivalis">Nivalis</a> is a game that whenever I see it I just think "oh, that can't be right, games like this don't actually exist do they?" Arguable, until it's actually out, its existence is neither here nor there. But at the very least for the month of February, instead of talking at us lot in their monthly devlogs, developer Ion Lands opted to show off a little snippet of the game's opening moments to tide us over until release.
</p> <p><a href="https://www.rockpapershotgun.com/while-you-wait-for-a-release-date-announcement-have-a-gander-at-nivalis-opening-moments">Read more</a></p>Harp: A Private Health Records App - Irrealhttps://irreal.org/blog/?p=136422026-02-28T16:07:44.000Z<p>
Abhinav Tushar likes to curate what he calls <i>macro</i> health data. That means things like ailments, aches and pains, and other symptoms one might want to mention to the doctor during an appointment. After researching the currently available apps, he realized there was nothing that met his needs so he decided to roll his own. The result is <a href="https://lepisma.xyz/2026/02/24/harp/#fnr.1">Harp</a>, an Android app that should soon be available on the Play Store. It’s also available for free on Fdroid. You can also checkout the <a href="https://git.sr.ht/~lepisma/harp-kmp">source at Sourcehut</a>. Finally, you can find out more about Harp <a href="https://docs.lepisma.xyz/harp/">here</a>.
</p>
<p>
Like my favorite app <a href="https://xenodium.com/journelly-for-ios">Journelly</a>, Tushar decided to keep his data in Org Mode. That, of course, brings the immediate benefit of making the data viewable and editable in Emacs or any other editor for that matter. It’s one of the reasons I’m so fond of Journelly. A couple more apps like these and we could see Org markup evolve into a sort of universal app data storage language.
</p>
<p>
Right now, only an Android version of Harp exists but his near term plans include an iOS version. That good news for those of us in the Apple camp. The main difficulty appears to be navigating the Apple App Store submission maze, which is well known for its opaque rules.
</p>
<p>
Take a look at Tushar’s post for some more of his short term goals. It looks like a handy app—and, of course, one that keeps its data in Org mode—so it’s definitely worth trying out. I’ll probably give it a try when the iOS version appears and will let you know what I think of it then.</p>
What are we all playing this weekend? - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/what-are-we-all-playing-this-weekend-3712026-02-28T08:01:00.000Z<img src="https://assetsio.gnwcdn.com/Abandoning-the-Circassian.JPG?width=690&quality=85&format=jpg&auto=webp" /> <p><a href="https://www.rockpapershotgun.com/what-are-we-all-playing-this-weekend-370">Edwin got beat up the other day</a>, so I suppose it’s up to me to ask what everyone’s playing this weekend. No extended joke here. He’s just absolutely battered. In pieces, really. God, that must have been humiliating for him.</p>
<p><a href="https://www.rockpapershotgun.com/what-are-we-all-playing-this-weekend-371">Read more</a></p>Using speech recognition for on-the-fly translations in Emacs and faking in-buffer completion for the results - Sacha Chuahttps://sachachua.com/blog/2026/02/using-speech-recognition-for-on-the-fly-translations-in-emacs-and-faking-in-buffer-completion-for-the-results/2026-02-27T20:11:58.000Z<p>
When I'm writing a journal entry in French, I
sometimes want to translate a phrase that I can't
look up word by word using a dictionary.
Instead of switching to a browser, I can use an
Emacs function to prompt me for text and either
insert or display the translation.
The <a href="https://github.com/alphapapa/plz.el">plz</a> library makes HTTP requests slightly
neater.
</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-french-en-to-fr</span> (text <span class="org-type">&optional</span> display-only)
(<span class="org-keyword">interactive</span> (list (read-string <span class="org-string">"Text: "</span>) current-prefix-arg))
(<span class="org-keyword">let*</span> ((url <span class="org-string">"https://translation.googleapis.com/language/translate/v2"</span>)
(params <span class="org-highlight-quoted-quote">`</span>((<span class="org-string">"key"</span> . ,(getenv <span class="org-string">"GOOGLE_API_KEY"</span>))
(<span class="org-string">"q"</span> . ,text)
(<span class="org-string">"source"</span> . <span class="org-string">"en"</span>)
(<span class="org-string">"target"</span> . <span class="org-string">"fr"</span>)
(<span class="org-string">"format"</span> . <span class="org-string">"text"</span>)))
(query-string (mapconcat
(<span class="org-keyword">lambda</span> (pair)
(format <span class="org-string">"%s=%s"</span>
(url-hexify-string (car pair))
(url-hexify-string (cdr pair))))
params
<span class="org-string">"&"</span>))
(full-url (concat url <span class="org-string">"?"</span> query-string)))
(<span class="org-keyword">let*</span> ((response (plz <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">get</span> full-url <span class="org-builtin">:as</span> <span class="org-highlight-quoted-quote">#'</span><span class="org-highlight-quoted-symbol">json-read</span>))
(data (alist-get <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">data</span> response))
(translations (alist-get <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">translations</span> data))
(first-translation (car translations))
(translated-text (alist-get <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">translatedText</span> first-translation)))
(<span class="org-keyword">when</span> (called-interactively-p <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">any</span>)
(<span class="org-keyword">if</span> display-only
(message <span class="org-string">"%s"</span> translated-text)
(insert translated-text)))
translated-text)))
</code></pre>
</div>
<p>
I think it would be even nicer if I could use speech synthesis, so I can keep it a little more separate from my typing thoughts. I want to be able to say "Okay, translate …" or "Okay, … in French" to get a translation. I've been using <a href="https://github.com/sachac/whisper.el/">my fork of natrys/whisper.el</a> for <a href="https://sachachua.com/topic/speech-recognition/">speech recognition</a> in English, and I like it a lot. By adding a function to <code>whisper-after-transcription-hook</code>, I can modify the intermediate results before they're inserted into 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-whisper-translate</span> ()
(goto-char (point-min))
(<span class="org-keyword">let</span> ((case-fold-search t))
(<span class="org-keyword">when</span> (re-search-forward <span class="org-string">"okay[,\\.]? translate[,\\.]? </span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">(</span></span><span class="org-string">.+</span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">)</span></span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">|</span></span><span class="org-string">okay[,\\.]? </span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">(</span></span><span class="org-string">.+?</span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">)</span></span><span class="org-string"> in French"</span> nil t)
(<span class="org-keyword">let*</span> ((s (<span class="org-keyword">or</span> (match-string 1) (match-string 2)))
(translation (<span class="org-keyword">save-match-data</span> (my-french-en-to-fr s))))
(replace-match
(propertize translation
<span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">type-hint</span> translation
<span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">help-echo</span> s))))))
(<span class="org-keyword">with-eval-after-load</span> <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">whisper</span>
(add-hook <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">whisper-after-transcription-hook</span> <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">my-whisper-translate</span> 70))
</code></pre>
</div>
<p>
But that's too easy. I want to actually type things myself so that I get more practice. Something like an autocomplete suggestion would be handy as a way of showing me a hint at the cursor. The usual completion-at-point functions are too eager to insert things if there's only one candidate, so we'll just fake it with an overlay. This code works only with my whisper.el fork because it supports using a list of functions for <code>whisper-insert-text-at-point</code>.
</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-whisper-maybe-type-with-hints</span> (text)
<span class="org-doc">"Add this function to `</span><span class="org-doc"><span class="org-constant">whisper-insert-text-at-point</span></span><span class="org-doc">'."</span>
(<span class="org-keyword">let</span> ((hint (<span class="org-keyword">and</span> text (org-find-text-property-in-string <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">type-hint</span> text))))
(<span class="org-keyword">if</span> hint
(<span class="org-keyword">progn</span>
(my-type-with-hint hint)
nil)
text)))
(<span class="org-keyword">defvar-local</span> <span class="org-variable-name">my-practice-overlay</span> nil)
(<span class="org-keyword">defvar-local</span> <span class="org-variable-name">my-practice-target</span> nil)
(<span class="org-keyword">defvar-local</span> <span class="org-variable-name">my-practice-start</span> nil)
(<span class="org-keyword">defun</span> <span class="org-function-name">my-practice-cleanup</span> ()
<span class="org-doc">"Remove the overlay and stop monitoring."</span>
(<span class="org-keyword">when</span> (overlayp my-practice-overlay)
(delete-overlay my-practice-overlay))
(<span class="org-keyword">setq</span> my-practice-overlay nil
my-practice-target nil
my-practice-start nil)
(remove-hook <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">post-command-hook</span> <span class="org-highlight-quoted-quote">#'</span><span class="org-highlight-quoted-symbol">my-practice-monitor</span> t))
(<span class="org-keyword">defun</span> <span class="org-function-name">my-practice-monitor</span> ()
<span class="org-doc">"Updates hint or cancels."</span>
(<span class="org-keyword">let*</span> ((pos (point))
(input (buffer-substring-no-properties my-practice-start pos))
(input-len (length input))
(target-len (length my-practice-target)))
(<span class="org-keyword">cond</span>
((<span class="org-keyword">or</span> (< pos my-practice-start)
(> pos (+ my-practice-start target-len))
(string-match <span class="org-string">"[\n\t]"</span> input)
(string= input my-practice-target))
(my-practice-cleanup))
((string-prefix-p (downcase input) (downcase my-practice-target))
(<span class="org-keyword">let</span> ((remaining (substring my-practice-target input-len)))
(move-overlay my-practice-overlay pos pos)
(overlay-put my-practice-overlay <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">after-string</span>
(propertize remaining <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">face</span> <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">shadow</span>))))
(t <span class="org-comment-delimiter">; </span><span class="org-comment">typo</span>
(move-overlay my-practice-overlay pos pos)
(overlay-put my-practice-overlay <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">after-string</span>
(propertize (substring my-practice-target input-len) <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">face</span> <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">error</span>))))))
(<span class="org-keyword">defun</span> <span class="org-function-name">my-type-with-hint</span> (string)
<span class="org-doc">"Show hints for STRING."</span>
(<span class="org-keyword">interactive</span> <span class="org-string">"sString to practice: "</span>)
(my-practice-cleanup)
(<span class="org-keyword">setq-local</span> my-practice-target string)
(<span class="org-keyword">setq-local</span> my-practice-start (point))
(<span class="org-keyword">setq-local</span> my-practice-overlay (make-overlay (point) (point) nil t t))
(overlay-put my-practice-overlay <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">after-string</span> (propertize string <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">face</span> <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">shadow</span>))
(add-hook <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">post-command-hook</span> <span class="org-highlight-quoted-quote">#'</span><span class="org-highlight-quoted-symbol">my-practice-monitor</span> nil t))
</code></pre>
</div>
<p>
Here's a demonstration of me saying "Okay, this is a test, in French.":
</p>
<div class="media-post" id="orgb96826f">
<p>
</p><figure><video controls="1" src="https://sachachua.com/blog/2026/02/using-speech-recognition-for-on-the-fly-translations-in-emacs-and-faking-in-buffer-completion-for-the-results/2026-02-27-translate-and-type-with-hints.webm" type="video/webm"><a href="https://sachachua.com/blog/2026/02/using-speech-recognition-for-on-the-fly-translations-in-emacs-and-faking-in-buffer-completion-for-the-results/2026-02-27-translate-and-type-with-hints.webm">Download the video</a></video><figcaption><div>Screencast of using speech recognition to translate into French and provide a hint when typing</div></figcaption></figure>
<p></p>
</div>
<p>
Since we're faking in-buffer completion here, maybe we can still get away with considering this as an entry for <a href="https://sachachua.com/blog/2026/01/emacs-carnival-february-2026-completion/">Emacs Carnival February 2026: Completion</a> ? =)
</p>
<div class="note">This is part of my <a href="https://sachachua.com/dotemacs#writing-and-editing-speech-recognition-using-speech-recognition-for-translations-in-emacs-and-faking-in-buffer-completion-for-the-results">Emacs configuration.</a></div><div><a href="https://sachachua.com/blog/2026/02/using-speech-recognition-for-on-the-fly-translations-in-emacs-and-faking-in-buffer-completion-for-the-results/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%2F02%2Fusing-speech-recognition-for-on-the-fly-translations-in-emacs-and-faking-in-buffer-completion-for-the-results%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>Marathon might be the perfect 2026 shooter in that I feel like I'm stuck in a giant Nvidia graphics card - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/marathon-might-be-the-perfect-2026-shooter-in-that-i-feel-like-im-stuck-in-a-giant-nvidia-graphics-card2026-02-27T17:05:25.000Z<img src="https://assetsio.gnwcdn.com/20260227134600_1.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>
Among the first things you see in the <a href="https://www.rockpapershotgun.com/games/marathon">Marathon</a> reboot playtest is a close-up of a barcoded moth, gleefully chowing on some larval diodes. It’s not even <a href="https://www.rockpapershotgun.com/cicadamata-is-the-most-exciting-fps-ive-played-in-years-come-try-the-demo">the first cybernetic insect motif</a> I’ve encountered in an <a href="https://www.rockpapershotgun.com/best-fps-games">FPS</a> this week, but it speaks to me. Friends, we are all that kooky little bug, crawling down overheated silicon canyons, nuzzling at chips, for this is <a href="https://www.reuters.com/business/nvidia-poised-record-5-trillion-market-valuation-2025-10-29/">the Nvidia era</a>, the Nvidiascene, and the whole world has become a GPU, dedicated to generating recipe ideas for the three edible objects in your fridge.
</p>
<p><a href="https://www.rockpapershotgun.com/marathon-might-be-the-perfect-2026-shooter-in-that-i-feel-like-im-stuck-in-a-giant-nvidia-graphics-card">Read more</a></p>Teardown's multiplayer update rolls out next month, so start packing a voxel lorry with mates and explosives - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/teardowns-multiplayer-update-rolls-out-next-month-so-start-packing-a-voxel-lorry-with-mates-and-explosives2026-02-27T16:46:50.000Z<img src="https://assetsio.gnwcdn.com/tradown-umtiplayer-update-full-release-date-01.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>Boom. Bang. Bash. Things falling down. <a href="https://www.rockpapershotgun.com/games/teardown">Teardown</a>. The voxel game about blowing stuff up. It's getting <a href="https://www.rockpapershotgun.com/teardown-is-getting-a-multiplayer-update-so-you-can-rough-up-innocent-walls-with-your-best-friends">multiplayer via an update</a>. Tick. Said multiplayer's been in beta testing for the past little while. Tick. It's rolling out in full in March. Boom.</p>
<p><a href="https://www.rockpapershotgun.com/teardowns-multiplayer-update-rolls-out-next-month-so-start-packing-a-voxel-lorry-with-mates-and-explosives">Read more</a></p>[$] The troubles with Boolean inversion in Python - LWN.nethttps://lwn.net/Articles/1059177/2026-02-27T16:21:11.000ZThe Python bitwise-inversion (or complement) operator, "<tt>~</tt>", <a
href="https://docs.python.org/3/library/stdtypes.html#index-16">behaves</a>
pretty much as expected when it is applied to integers—it toggles every
bit, from one
to zero and vice versa. It might be expected that applying the
operator to a non-integer, a <a
href="https://docs.python.org/3/library/stdtypes.html#boolean-type-bool"><tt>bool</tt></a>
for example, would raise a <tt>TypeError</tt>, but, because the
<tt>bool</tt> type is really an <a
href="https://docs.python.org/3/library/stdtypes.html#numeric-types-int-float-complex"><tt>int</tt></a>
in disguise, the complement operator is allowed, at least for now. For
nearly 15 years (and perhaps longer), there have been discussions about the
oddity of that behavior and whether it should be changed. Eventually,
that resulted in the "feature" being deprecated, producing a warning, with removal slated for
Python 3.16 (due October 2027). That has led to some reconsideration and the
deprecation may itself be deprecated.The OrangePi Neo gaming handheld with Manjaro Linux is now "on ice" due to component prices - GamingOnLinux Latest Articleshttps://www.gamingonlinux.com/2026/02/the-orangepi-neo-gaming-handheld-with-manjaro-linux-is-now-on-ice-due-to-component-prices/2026-02-27T15:34:56.000ZThe latest update for the OrangePi Neo handheld with Manjaro Linux is not a positive one, with the whole thing now unfortunately "on ice".<p><img src="https://www.gamingonlinux.com/uploads/articles/tagline_images/679199896id28579gol.jpg" alt /></p><p>Read the full article on <a href="https://www.gamingonlinux.com/2026/02/the-orangepi-neo-gaming-handheld-with-manjaro-linux-is-now-on-ice-due-to-component-prices/">GamingOnLinux</a>.</p>