Just my blogroll - BlogFlock2026-01-21T00:59:51.618ZBlogFlockProtesilaos Stavrou: News and Announcements, Justin Barclay, The Emacs Cat, Arialdo Martini, BuzzMachine, GamingOnLinux Latest Articles, Xah Lee, Emacs@ Dyerdwelling, Jeff Kreeftmeijer, Karthinks, Sacha Chua, MacAdie Web Blog, Philip KALUDERCIC, Bowmansarrow, Irreal, Take on Rules, manuel uberti, Wilfred Hughes::Blog, Bicycle For Your Mind, LWN.net, Rock Paper Shotgun Latest Articles Feed, McSweeney’sRyabitsev: Tracking kernel development with korgalore - LWN.nethttps://lwn.net/Articles/1055219/2026-01-20T21:34:31.000ZKonstantin Ryabitsev has put up <a
href="https://people.kernel.org/monsieuricon/tracking-kernel-development-with-korgalore">a
blog post about korgalore</a>, a tool he has written to circumvent delivery
problems experienced by kernel developers using the large, centralized
email systems.
<p>
<blockquote class="bq">
We cannot fix email delivery, but we can sidestep it
entirely. Public-inbox archives like lore.kernel.org store all
mailing list traffic in git repositories. In its simplest
configuration, korgalore can shallow-clone these repositories
directly and upload any new messages straight to your mailbox using
the provider's API.
</blockquote>Remote authentication bypass in telnetd - LWN.nethttps://lwn.net/Articles/1055213/2026-01-20T20:45:46.000ZOne would assume that most LWN readers stopped running network-accessible
telnet services some number of decades ago. For the rest of you, <a
href="https://lwn.net/ml/all/87h5sg9yfs.fsf@josefsson.org">this security advisory from
Simon Josefsson</a> is worthy of note:
<p>
<blockquote class="bq">
The telnetd server invokes /usr/bin/login (normally running as
root) passing the value of the USER environment variable received
from the client as the last parameter.
<p>
If the client supplies a carefully crafted USER environment value
being the string "-f root", and passes the telnet(1) -a or --login
parameter to send this USER environment to the server, the client
will be automatically logged in as root bypassing normal
authentication processes.
</blockquote>Emacs and whisper.el :Trying out different speech-to-text backends and models - Sacha Chuahttps://sachachua.com/blog/2026/01/emacs-and-whisper-el-trying-out-different-speech-to-text-backends-and-models/2026-01-20T19:21:46.000Z<p>
I was curious about <a href="https://parakeettdt.com/">parakeet</a> because I heard that it was faster than Whisper on the <a href="https://huggingface.co/spaces/hf-audio/open_asr_leaderboard">HuggingFace leaderboard</a>. When I installed it and got it running on my laptop (CPU only, no GPU), it seemed like my results were a little faster than whisper.cpp with the large model, but much slower than whisper.cpp with the base model. The base model is decent for quick dictation, so I got curious about other backends and other models.
</p>
<p>
In order to try <a href="https://github.com/natrys/whisper.el">natrys/whisper.el</a> with other backends, I needed to work around how whisper.el validates the model names and sends requests to the servers. Here's the quick and dirty code for doing so, in case you want to try it out for yourself.
</p>
<div class="org-src-container">
<pre class="src src-emacs-lisp"><code>(<span class="org-keyword">defvar</span> <span class="org-variable-name">my-whisper-url-format</span> <span class="org-string">"http://%s:%d/transcribe"</span>)
(<span class="org-keyword">defun</span> <span class="org-function-name">whisper--transcribe-via-local-server</span> ()
<span class="org-doc">"Transcribe audio using the local whisper server."</span>
(message <span class="org-string">"[-] Transcribing via local server"</span>)
(whisper--setup-mode-line <span class="org-builtin">:show</span> <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">transcribing</span>)
(whisper--ensure-server)
(<span class="org-keyword">setq</span> whisper--transcribing-process
(whisper--process-curl-request
(format my-whisper-url-format whisper-server-host whisper-server-port)
(list <span class="org-string">"Content-Type: multipart/form-data"</span>)
(list (concat <span class="org-string">"file=@"</span> whisper--temp-file)
<span class="org-string">"temperature=0.0"</span>
<span class="org-string">"temperature_inc=0.2"</span>
<span class="org-string">"response_format=json"</span>
(concat <span class="org-string">"model="</span> whisper-model)
(concat <span class="org-string">"language="</span> whisper-language)))))
(<span class="org-keyword">defun</span> <span class="org-function-name">whisper--check-model-consistency</span> () t)
</code></pre>
</div>
<p>
Then I have this function for trying things out.
</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-test-whisper-api</span> (url <span class="org-type">&optional</span> args)
(<span class="org-keyword">with-temp-buffer</span>
(apply <span class="org-highlight-quoted-quote">#'</span><span class="org-highlight-quoted-symbol">call-process</span> <span class="org-string">"curl"</span> nil t nil <span class="org-string">"-s"</span>
url
(append (mapcan
(<span class="org-keyword">lambda</span> (h) (list <span class="org-string">"-H"</span> h))
(list <span class="org-string">"Content-Type: multipart/form-data"</span>))
(mapcan
(<span class="org-keyword">lambda</span> (h) (list <span class="org-string">"-F"</span> h))
(list (concat <span class="org-string">"file=@"</span> whisper--temp-file)
<span class="org-string">"temperature=0.0"</span>
<span class="org-string">"temperature_inc=0.2"</span>
<span class="org-string">"response_format=verbose_json"</span>
(concat <span class="org-string">"language="</span> whisper-language)))
args))
(message <span class="org-string">"%s %s"</span> (buffer-string) url)))
</code></pre>
</div>
<p>
Here's the audio file. It is around 10 seconds long. I run the benchmark 3 times and report the average time.
</p>
<p>
</p><div class="audio"><audio controls="1" preload="metadata" src="https://sachachua.com/blog/2026/01/emacs-and-whisper-el-trying-out-different-speech-to-text-backends-and-models/2026-01-19-14-17-53.wav" type="audio/x-wav"><a href="https://sachachua.com/blog/2026/01/emacs-and-whisper-el-trying-out-different-speech-to-text-backends-and-models/2026-01-19-14-17-53.wav">Download the audio</a></audio></div>
<a href="https://sachachua.com/blog/2026/01/emacs-and-whisper-el-trying-out-different-speech-to-text-backends-and-models/2026-01-19-14-17-53.wav">Download</a>
<p></p>
<details><summary>Code for running the benchmarks</summary>
<div class="org-src-container">
<pre class="src src-emacs-lisp" id="orgd2f393b"><code>(mapcar
(<span class="org-keyword">lambda</span> (group)
(<span class="org-keyword">let</span> ((whisper--temp-file <span class="org-string">"/home/sacha/recordings/whisper/2026-01-19-14-17-53.wav"</span>))
<span class="org-comment-delimiter">;; </span><span class="org-comment">warm up the model</span>
(eval (cadr group))
(list
(format <span class="org-string">"%.3f"</span>
(/ (car
(benchmark-call (<span class="org-keyword">lambda</span> () (eval (cadr group))) times))
times))
(car group))))
<span class="org-highlight-quoted-quote">'</span>(
(<span class="org-string">"parakeet"</span>
(my-test-whisper-api
(format <span class="org-string">"http://%s:%d/v1/audio/transcriptions"</span> whisper-server-host 5092)))
(<span class="org-string">"whisper.cpp base-q4_0"</span>
(my-test-whisper-api
(format <span class="org-string">"http://%s:%d/inference"</span> whisper-server-host 8642)))
(<span class="org-string">"speaches whisper-base"</span>
(my-test-whisper-api
(format <span class="org-string">"http://%s:%d/v1/audio/transcriptions"</span> whisper-server-host 8001)
(list <span class="org-string">"-F"</span> <span class="org-string">"model=Systran/faster-whisper-base"</span>)))
(<span class="org-string">"speaches whisper-base.en"</span>
(my-test-whisper-api
(format <span class="org-string">"http://%s:%d/v1/audio/transcriptions"</span> whisper-server-host 8001)
(list <span class="org-string">"-F"</span> <span class="org-string">"model=Systran/faster-whisper-base.en"</span>)))
(<span class="org-string">"speaches whisper-small"</span>
(my-test-whisper-api
(format <span class="org-string">"http://%s:%d/v1/audio/transcriptions"</span> whisper-server-host 8001)
(list <span class="org-string">"-F"</span> <span class="org-string">"model=Systran/faster-whisper-small"</span>)))
(<span class="org-string">"speaches whisper-small.en"</span>
(my-test-whisper-api
(format <span class="org-string">"http://%s:%d/v1/audio/transcriptions"</span> whisper-server-host 8001)
(list <span class="org-string">"-F"</span> <span class="org-string">"model=Systran/faster-whisper-small.en"</span>)))
(<span class="org-string">"speaches lorneluo/whisper-small-ct2-int8"</span>
(my-test-whisper-api
(format <span class="org-string">"http://%s:%d/v1/audio/transcriptions"</span> whisper-server-host 8001)
(list <span class="org-string">"-F"</span> <span class="org-string">"model=lorneluo/whisper-small-ct2-int8"</span>)))
<span class="org-comment-delimiter">;; </span><span class="org-comment">needed export TORCH_FORCE_NO_WEIGHTS_ONLY_LOAD=1</span>
(<span class="org-string">"whisperx-server Systran/faster-whisper-small"</span>
(my-test-whisper-api
(format <span class="org-string">"http://%s:%d/transcribe"</span> whisper-server-host 8002)))))
</code></pre>
</div>
</details>
<table>
<colgroup>
<col class="org-right">
<col class="org-left">
</colgroup>
<tbody>
<tr>
<td class="org-right">3.694</td>
<td class="org-left">parakeet</td>
</tr>
<tr>
<td class="org-right">2.484</td>
<td class="org-left">whisper.cpp base-q4_0</td>
</tr>
<tr>
<td class="org-right">1.547</td>
<td class="org-left">speaches whisper-base</td>
</tr>
<tr>
<td class="org-right">1.425</td>
<td class="org-left">speaches whisper-base.en</td>
</tr>
<tr>
<td class="org-right">4.076</td>
<td class="org-left">speaches whisper-small</td>
</tr>
<tr>
<td class="org-right">3.735</td>
<td class="org-left">speaches whisper-small.en</td>
</tr>
<tr>
<td class="org-right">2.870</td>
<td class="org-left">speaches lorneluo/whisper-small-ct2-int8</td>
</tr>
<tr>
<td class="org-right">4.537</td>
<td class="org-left">whisperx-server Systran/faster-whisper-small</td>
</tr>
</tbody>
</table>
<p>
I tried it with:
</p>
<ul class="org-ul">
<li><a href="https://parakeettdt.com/">parakeet</a></li>
<li><a href="https://huggingface.co/ggerganov/whisper.cpp">whisper.cpp</a> (as <a href="https://github.com/natrys/whisper.el">whisper.el</a> sets it up)</li>
<li><a href="https://github.com/speaches-ai/speaches">speaches</a>, which is a front-end for <a href="https://github.com/SYSTRAN/faster-whisper">faster-whisper</a>, and</li>
<li><a href="https://codeberg.org/aryak/whisperx-server">whisperx-server</a>, which is a front-end for <a href="https://github.com/m-bain/whisperX">whisperx</a></li>
</ul>
<p>
Looks like speaches + faster-whisper-base is the winner for now. I like how speaches lets me switch models on the fly, so maybe I can use base.en generally and switch to base when I want to try dictating in French. Here's how I've set it up to use the server I just set up.
</p>
<div class="org-src-container">
<pre class="src src-emacs-lisp"><code>(<span class="org-keyword">setq</span> whisper-server-port 8001 whisper-model <span class="org-string">"Systran/faster-whisper-base.en"</span>
my-whisper-url-format <span class="org-string">"http://%s:%d/v1/audio/transcriptions"</span>)
</code></pre>
</div>
<p>
At some point, I'll override <code>whisper--ensure-server</code> so that starting it up is smoother.
</p>
<p>
Benchmark notes: I have a Lenovo P52 laptop (released 2018) with an Intel Core i7-8850H (6 cores, 12 threads; 2.6 GHz base / 4.3 GHz turbo) with 64GB RAM and an SSD. I haven't figured out how to get the GPU working under Ubuntu yet.
</p>
<div><a href="https://sachachua.com/blog/2026/01/emacs-and-whisper-el-trying-out-different-speech-to-text-backends-and-models/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-whisper-el-trying-out-different-speech-to-text-backends-and-models%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>"Nobody's reinventing the wheel" with Marathon's mechanics, says former art boss, so the visual design needed to take risks - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/nobodys-reinventing-the-wheel-with-marathons-mechanics-says-former-art-boss-so-the-visual-design-needed-to-take-risks2026-01-20T18:01:31.000Z<img src="https://assetsio.gnwcdn.com/marathon_yHgkHEi.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p><a href="https://www.rockpapershotgun.com/games/marathon">Marathon</a>'s franchise art director Joseph Cross left Bungie in December, shortly after the Destiny developers announced a March 2026 release window for the sci-fi shooter reboot. Now, he’s talking about what it was like to work on the game, which has a fair bit of lingering negative press to contend with – <a href="https://www.rockpapershotgun.com/marathon-catches-an-indefinite-delay-as-bungie-promise-to-work-on-a-laundry-list-of-improvements">extended delays</a>, <a href="https://www.rockpapershotgun.com/destiny-creators-bungie-lay-off-220-people-and-form-new-studio-within-sony-to-stave-off-financial-ruin">mass studio layoffs and restructuring</a>, repeated accusations of <a href="https://www.rockpapershotgun.com/bungie-used-an-artists-work-without-permission-in-marathon">plagiarism<a></a>, <a href="https://www.rockpapershotgun.com/sony-are-still-fully-dedicated-to-releasing-marathon-by-march-as-they-sigh-in-disappointment-at-bungies-money-numbers">money troubles</a> owing to Bungie’s ailing shooter Destiny 2, and apathy about blockbuster live service games at large, <a href="https://www.rockpapershotgun.com/sony-write-off-ill-fated-200-million-shooter-concord-as-a-loss-by-closing-studio-permanently">epitomised</a> by the cancelling of Sony’s once-touted Concord.</a></p> <p><a href="https://www.rockpapershotgun.com/nobodys-reinventing-the-wheel-with-marathons-mechanics-says-former-art-boss-so-the-visual-design-needed-to-take-risks">Read more</a></p>The Democrats of the Seven Kingdoms - McSweeney’shttps://www.mcsweeneys.net/articles/the-democrats-of-the-seven-kingdoms2026-01-20T18:01:00.000Z<p><i>“As support for abolishing <span class="caps">ICE</span> grows among Democratic voters, party leadership continues to argue for reform instead.” —<a href="https://www.salon.com/2026/01/16/democratic-leaders-resist-call-of-voters-to-abolish-ice/">Salon</a></i></p> <div class='break'>- - -</div><h4>The Delegation to the Wall</h4> <p>When word reached King’s Landing that the dead were stirring beyond the Wall, the brave Democrats of the Seven Kingdoms sent a delegation north. They did not bring dragonglass, nor men for the Night’s Watch, nor coin to repair the Wall where it wept with meltwater. They brought parchment marked with sternly written words.</p> <p>The Lord Commander thanked them while a savage wind cut through his heavy cloak and the dead moaned incessantly down below. The letters expressed concern about the White Walkers, but urged restraint. They reminded the Wildlings, should they be listening, that their murderous behavior did not represent who the Realm was. The delegation stayed long enough to be seen shivering as they glanced briefly northward, then rode south, satisfied that the issue had been thoroughly acknowledged.</p> <h4>The Edict on Names</h4> <p>As the dead marched inexorably south, nearly 90 percent of the Realm insisted on calling them monsters, abominations, and evil incarnate. The Democrats of the Seven Kingdoms cautioned against such language.</p> <p>They proposed referring to the White Walkers as “nontraditional state actors” and urged all to consider how such incendiary labels might escalate tensions.</p> <h4>A Listening Tour in the Riverlands</h4> <p>Deep in the Riverlands, smallfolk had begun to vanish. Some were taken by raiders, some by famine, some by dark creatures in the dead of night that no one dared name aloud. The Democrats of the Seven Kingdoms arrived with colorful tents and an ancient octogenarian septon to advise them, and asked the people to speak freely.</p> <p>The people did. They spoke of burned fields and stolen children and soldiers who took innocence first and paid for their crimes never. One man said his wife had been dragged into the river at dusk and came back wrong. A woman said the gods had turned their faces away.</p> <p>The Democrats nodded gravely while promising nothing concrete, as was their way. A framework for a peace plan was developed. Later, in a warm hall with wine, crisp capons, and steaming boar that fell easily from the bone, the Democrats agreed the suffering was real, but the language around it needed softening.</p> <h4>The Brief Matter of the Wildlings</h4> <p>Many in Westeros demanded that the Free Folk beyond the Wall be welcomed south, if only to swell the ranks against greater threats. A small minority warned that this would upset affluent bannermen with deep coffers, who disliked the look of their shaggy, unkempt beards.</p> <p>The Democrats of the Seven Kingdoms proposed a compromise: The Free Folk could be acknowledged as people, in principle, while remaining north of the Wall, in practice.</p> <h4>The Roundtable at White Harbor</h4> <p>A meeting was convened between a flesh-hungry wight and a Stark of Winterfell, the kingdom most at risk of the Night King’s wrath.</p> <p>Maesters were appointed to moderate. Debate rules were read aloud. Each side was encouraged to share their essential truths. By the end of the discussion, there was very little of the Stark left.</p> <p>Afterward, the Democrats of the Seven Kingdoms celebrated the robust exchange of ideas.</p> <h4>A Journey to the Iron Islands</h4> <p>Seeking unity, the Democrats of the Seven Kingdoms sailed west to reason with the Ironborn, who were actively raiding the coast. They brought proposals of mutual respect, economic incentives, and a shared vision of peace.</p> <p>The Ironborn took their ships, their silver, and several delegates. Later, the Democrats who lived praised the “frank dialogue” and vowed to continue civic engagement.</p> <h4>The Flickering Fire</h4> <p>As the snows deepened and the dead marched on King’s Landing, the Democrats of the Seven Kingdoms issued one final statement. It acknowledged the living’s fears in the face of absolute evil, yet urged them not to overreact.</p> <p>Somewhere on the Kingsroad, a hedge knight and his young squire used the note to create a fire that fought the creeping cold and kept them alive till morning.</p> <p>It was not much—nearly nothing, in fact—but the meager warmth it afforded was still slightly more than anything proposed by the Democrats of the Seven Kingdoms. The donors were happy, however, and that’s really all one could ask for these days.</p>Mozilla introduces Firefox Nightly RPM package repository - LWN.nethttps://lwn.net/Articles/1055191/2026-01-20T17:26:37.000Z<p>Mozilla has <a
href="https://blog.nightly.mozilla.org/2026/01/19/introducing-mozillas-firefox-nightly-rpm-package-for-rpm-based-linux-distributions/">announced</a>
a repository with <a
href="https://www.firefox.com/en-US/channel/desktop/">Firefox
Nightly channel</a> packages for RPM-based Linux distributions such as CentOS
Stream, Fedora, and openSUSE. Mozilla has provided a Debian repository
since 2023.</p>
<p>Note that this repository only includes the nightly builds of The
<tt>firefox-nightly</tt> package. Mozilla is not providing stable
builds as RPMs at this time. However, the package will not conflict
with a distribution's regular <tt>firefox</tt> package; both packages
can be installed at the same time for those who wish to test the
nightly builds. See the blog post for instructions on setting up the
repository.</p>
<p></p>Find out if you can run a Marathon with the extraction shooter's system requirements - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/find-out-if-you-can-run-a-marathon-with-the-extraction-shooters-system-requirements2026-01-20T17:05:51.000Z<img src="https://assetsio.gnwcdn.com/marathon-gameplay.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>Following such recent news highlights as "<a href="https://www.rockpapershotgun.com/marathons-final-release-date-locked-in-by-bungie-with-the-shooter-finally-set-to-run-out-of-cover-soon">It’s out on March 5th</a>" and "<a href="https://www.eurogamer.net/bungie-reveals-marathon-cast-baldurs-gate-3-clair-obscur">It’s got that Ben Starr guy in it</a>," <a href="https://www.rockpapershotgun.com/games/marathon">Marathon</a>’s announce-o-blaster continues firing with a newly unveiled set of PC system requirements. As seen on the Bungie FPS’s <a href="https://store.steampowered.com/app/3065800/Marathon/">Steam page</a>, they’re nicely accommodating to cheapo rigs and older tech, though are missing any storage requirements.</p>
<p><a href="https://www.rockpapershotgun.com/find-out-if-you-can-run-a-marathon-with-the-extraction-shooters-system-requirements">Read more</a></p>I knew I'd enjoy Rubato's demo from the moment the Earth blew up and I fell in the toilet - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/i-knew-id-enjoy-rubatos-demo-from-the-moment-the-earth-blew-up-and-i-fell-in-the-toilet2026-01-20T16:48:15.000Z<img src="https://assetsio.gnwcdn.com/rubato.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>
Rubato is "an experimental, 2D physics-based take on the collect-a-thon genre", according to developer dconn, which doesn't really do justice to the below trailer full of screaming skulls and Mode 7 first-person driving bits and fleeting Minecraft references and PS1-era dancefloors. I guess I'm too used to the watering down of "experimental" as a descriptor. The blurb doesn't even communicate that you play as a frog. Seemingly. Fortunately, there is a demo. Please watch the trailer while I go play it.
</p> <p><a href="https://www.rockpapershotgun.com/i-knew-id-enjoy-rubatos-demo-from-the-moment-the-earth-blew-up-and-i-fell-in-the-toilet">Read more</a></p>[$] An alternate path for immutable distributions - LWN.nethttps://lwn.net/Articles/1054216/2026-01-20T16:22:09.000Z<p>
LWN has had a number of articles on immutable distributions,
such as <a href="https://lwn.net/Articles/954059/">Bluefin</a> and <a href="https://lwn.net/Articles/1046228/">
Bazzite</a>, in recent years. These distributions have taken a variety of approaches, including
using
<a href="https://coreos.github.io/rpm-ostree/">
rpm-ostree</a>, filesystem snapshots, and
<a href="https://lwn.net/Articles/979182/">bootable container (bootc) images</a>. But those
approaches, especially the latter, lead to extra complexity for a user
attempting to install new software, instead of just
using the existing package manager.
<a href="https://github.com/ashos/ashos?tab=readme-ov-file#ashos-any-snapshot-hierarchical-os">
AshOS</a> (Any Snapshot Hierarchical OS) is an experimental AGPL-3-licensed
"<q>meta-distribution</q>" that tried a different approach more in line with
traditional package management. Although the project is no longer updated,
it remains usable, and can still shed some light on a potential alternate path for users
worried about adopting bootc-based approaches.
</p>Even in 2026's component hellscape, AMD's Radeon RX 9070 XT is that rarest of things: a high-end GPU that’s still decent value - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/even-in-2026s-component-hellscape-amds-radeon-rx-9070-xt-is-that-rarest-of-things-a-high-end-gpu-thats-still-decent-value2026-01-20T16:21:53.000Z<img src="https://assetsio.gnwcdn.com/AMD-Radeon-RX-9070-XT-review-1.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>As we sink ever deeper into a squelching mire of <a href="https://www.rockpapershotgun.com/predicting-steam-machine-prices-would-be-a-lot-easier-if-ram-costs-hadnt-gone-horribly-wrong">memory shortages</a>, <a href="https://www.rockpapershotgun.com/ram-may-be-abominably-expensive-but-hey-at-least-ssd-prices-are-also-exploding">price gouging</a>, and <a href="https://www.rockpapershotgun.com/one-of-pc-gamings-key-ram-manufacturers-arent-selling-to-regular-humans-anymore-so-they-can-peddle-more-kit-to-ai-companies">abandonment in favour of AI fantasy farms</a>, there is one word above all that game-playing PC owners should keep front and centre in our doomscroll-addled brains: "relatively."</p>
<p><a href="https://www.rockpapershotgun.com/even-in-2026s-component-hellscape-amds-radeon-rx-9070-xt-is-that-rarest-of-things-a-high-end-gpu-thats-still-decent-value">Read more</a></p>Steam's 'complete the set' bundles can now be gifted, with bits your mates already own accounted for - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/steams-complete-the-set-bundles-can-now-be-gifted-with-bits-your-mates-already-own-accounted-for2026-01-20T15:42:07.000Z<img src="https://assetsio.gnwcdn.com/steam-coplete-the-set-bundles-giftable-01.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>If you've been waiting to bless one of your friends with an entire dump truck worth of games in a series they've enjoyed one entry of, then good news. Valve have made Steam's 'complete the set' bundles giftable, with prices adjusting to match whichever bits the recipient might already own - so you're not in danger of hurling someone their second copy of <a href="https://www.rockpapershotgun.com/games/fallout-4">Fallout 4</a> on one storefront.</p>
<p><a href="https://www.rockpapershotgun.com/steams-complete-the-set-bundles-can-now-be-gifted-with-bits-your-mates-already-own-accounted-for">Read more</a></p>Pathologic 3 is a sickly horror story about time pretending to be an 'easier' game - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/pathologic-3-is-a-sickly-horror-story-about-time-pretending-to-be-an-easier-game2026-01-20T15:38:06.000Z<img src="https://assetsio.gnwcdn.com/20260112232144_1.jpg?width=690&quality=85&format=jpg&auto=webp" />
<p><em>The following contains abstracted discussion of my own experiences of disease.</em></p>
<p><a href="https://www.rockpapershotgun.com/pathologic-3-is-a-sickly-horror-story-about-time-pretending-to-be-an-easier-game">Read more</a></p>Obey the Insect God brings live-action digitized sprite weirdness to action platformers - GamingOnLinux Latest Articleshttps://www.gamingonlinux.com/2026/01/obey-the-insect-god-brings-live-action-digitized-sprite-weirdness-to-action-platformers/2026-01-20T15:27:18.000ZRemember how the original Mortal Kombat used live-action sprites for characters? Now imagine if someone stuck that style into a modernised action platformer.<p><img src="https://www.gamingonlinux.com/uploads/articles/tagline_images/1556789885id28349gol.jpg" alt /></p><p>Read the full article on <a href="https://www.gamingonlinux.com/2026/01/obey-the-insect-god-brings-live-action-digitized-sprite-weirdness-to-action-platformers/">GamingOnLinux</a>.</p>TMR Video - Irrealhttps://irreal.org/blog/?p=135562026-01-20T15:20:42.000Z<p>
Despite what I wrote <a href="https://irreal.org/blog/?p=13300">last time about tmr</a>, I’ve come to realize that deep down I’m a timer nerd. As my family will tell you, I can be anal about following directions precisely. If the recipe says to beat the eggs for 30 seconds, I feel uncomfortable if I don’t have some way of measuring those 30 seconds more or less accurately.
</p>
<p>
Once I got my iWatch with it’s excellent and easy to use timer app, my inner timer nerd was released and now it seems I’m always using a timer for some reason or another. Given that I spend a huge amount of my time staring at a computer screen—most often in Emacs—it makes sense to be able to set and manage timers there too.
</p>
<p>
Prot to the rescue. His <a href="https://github.com/protesilaos/tmr">tmr</a> package is just what you need to set and manage timers from within Emacs. He’s got <a href="https://protesilaos.com/codelog/2026-01-19-emacs-timers-tmr-demo/">a great video up</a> that demonstrates tmr and its capabilities. It’s a lot more than just, “Beep after <i>x</i> seconds”. You can have multiple timers that you can set to fire after a given number of seconds, minutes, or hours. You can also set the timer to fire at a certain time.
</p>
<p>
You can add descriptions to each timer and display them all in a grid layout to see how much time, if any, is remaining in each timer, when it started, and when it will expire. You can also arrange to display the time remaining on each timer in the mode line if you like.
</p>
<p>
See Prot’s video for all the details. The video is 14 minutes, 32 seconds long so it should be easy to find time for it. Installation and configuration is easy so give it a try if you are also a timer nerd.</p>
Survive an elevator trying to eat you in co-op horror KLETKA when it releases February 19 - GamingOnLinux Latest Articleshttps://www.gamingonlinux.com/2026/01/survive-an-elevator-trying-to-eat-you-in-co-op-horror-kletka-when-it-releases-february-19/2026-01-20T14:52:29.000ZA bunch of criminals sent down the depths of a massive structure using a living elevator - what could go wrong? Lots and you'll find out in KLETKA.<p><img src="https://www.gamingonlinux.com/uploads/articles/tagline_images/1272129597id28348gol.jpg" alt /></p><p>Read the full article on <a href="https://www.gamingonlinux.com/2026/01/survive-an-elevator-trying-to-eat-you-in-co-op-horror-kletka-when-it-releases-february-19/">GamingOnLinux</a>.</p>RuneScape's Treasure Hunter microtransactions are now gone, restoring integrity as Jagex reveal integrity-focused 2026 plans integratively - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/runescapes-treasure-hunter-microtransactions-are-now-gone-restoring-integrity-as-jagex-reveal-integrity-focused-2026-plans-integratively2026-01-20T14:42:48.000Z<img src="https://assetsio.gnwcdn.com/runescape-2026-roadmap-01.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>Integrity. Inteh-gritty. In-teh-grih-teh. That's the word of the day when it comes to 2026 <a href="https://www.rockpapershotgun.com/games/runescape">RuneScape</a>, or at least it will be if the plans Jagex have just laid out work as intended. To be fair, pushing the big button that finally gets rid of those Treasure Hunter microtransactions <a href="https://www.rockpapershotgun.com/thanks-to-a-massive-community-vote-jagex-are-removing-runescapes-notorious-treasure-hunter-microtransactions">folks vocally disliked</a> is a good start.</p>
<p><a href="https://www.rockpapershotgun.com/runescapes-treasure-hunter-microtransactions-are-now-gone-restoring-integrity-as-jagex-reveal-integrity-focused-2026-plans-integratively">Read more</a></p>Giving some Undertale and OMORI vibes, the strange looking Immortal Boy gets a new trailer - GamingOnLinux Latest Articleshttps://www.gamingonlinux.com/2026/01/giving-some-undertale-and-omori-vibes-the-strange-looking-immortal-boy-gets-a-new-trailer/2026-01-20T14:39:41.000ZImmortal Boy is an upcoming retro-styled fantasy RPG adventure due out this year, and now it has a first proper full gameplay trailer.<p><img src="https://www.gamingonlinux.com/uploads/articles/tagline_images/370563898id28347gol.jpg" alt /></p><p>Read the full article on <a href="https://www.gamingonlinux.com/2026/01/giving-some-undertale-and-omori-vibes-the-strange-looking-immortal-boy-gets-a-new-trailer/">GamingOnLinux</a>.</p>tinyBuild are shutting down and delisting Pandemic Express - Zombie Escape - GamingOnLinux Latest Articleshttps://www.gamingonlinux.com/2026/01/tinybuild-are-shutting-down-and-delisting-pandemic-express-zombie-escape/2026-01-20T14:23:32.000ZWe're about to say a permanent goodbye to another multiplayer title, as Pandemic Express - Zombie Escape is set to be fully shut down.<p><img src="https://www.gamingonlinux.com/uploads/articles/tagline_images/1820981137id28346gol.jpg" alt /></p><p>Read the full article on <a href="https://www.gamingonlinux.com/2026/01/tinybuild-are-shutting-down-and-delisting-pandemic-express-zombie-escape/">GamingOnLinux</a>.</p>Security updates for Tuesday - LWN.nethttps://lwn.net/Articles/1055152/2026-01-20T14:06:26.000ZSecurity updates have been issued by <b>AlmaLinux</b> (gpsd-minimal, jmc, kernel, kernel-rt, and net-snmp), <b>Debian</b> (apache-log4j2 and dcmtk), <b>Fedora</b> (exim, gpsd, mysql8.0, mysql8.4, python-biopython, and rust-lru), <b>Mageia</b> (firefox, nss and thunderbird), <b>Oracle</b> (container-tools:rhel8, gpsd-minimal, jmc, kernel, net-snmp, and uek-kernel), <b>Red Hat</b> (net-snmp), <b>SUSE</b> (chromium, go, harfbuzz-devel, kernel, libsoup, rust1.91, rust1.92, and thunderbird), and <b>Ubuntu</b> (apache2, avahi, and python-urllib3).Monster taming adventure Stories of Somnia is one to keep an eye on - GamingOnLinux Latest Articleshttps://www.gamingonlinux.com/2026/01/monster-taming-adventure-stories-of-somnia-is-one-to-keep-an-eye-on/2026-01-20T14:05:52.000ZStories of Somnia is an upcoming mixture of real-time adventuring with monster taming and battling, one that looks quite sweet you need to keep an eye on.<p><img src="https://www.gamingonlinux.com/uploads/articles/tagline_images/417952551id28345gol.jpg" alt /></p><p>Read the full article on <a href="https://www.gamingonlinux.com/2026/01/monster-taming-adventure-stories-of-somnia-is-one-to-keep-an-eye-on/">GamingOnLinux</a>.</p>