Tux Machines

Programming Leftovers

Posted by Roy Schestowitz on Dec 12, 2025

today's leftovers
Hardware: Home Assistant, SBC, Purism, and More

Yordi Verkroost ☛ Advent of Code 2025 - Day 11

↺ Advent of Code 2025 - Day 11
We go through a hatch in the floor, climb down a ladder and reach a server rack which - of course - is broken. As the Elves think the problem lies somewhere on a path to a server with the label out, we need to follow cables between servers starting from a server with the label you. We get a list of devices with their outputs, like so: [...]

Rob Zolkos ☛ Fizzy's Pull Requests: Who Built What and How

↺ Fizzy's Pull Requests: Who Built What and How
Reading the code shows the outcome. Pull requests show the decisions.
I love reading PRs because they reveal the reasoning behind the work, the options considered and the tradeoffs made. Review comments often become real lessons as people question choices, suggest alternatives, and offer encouragement.
These reviews can create quick, informal mentorship where one person spots a cleaner abstraction and another catches an edge case before it slips through.

Johan Halse ☛ Retrofuture

↺ Retrofuture
I'm easily a better programmer than these clankers, which is sort of comforting, but what they lack in sophistication they make up for in sheer relentlessness. They use the russian war strategy for coding: throw thousands upon thousands of drunk imbeciles at a fortified position with zero fucks given about cost or suffering, and you'll get someone through eventually. Programming by brute force. It's unnerving, but here we are.

AdventOfCode ☛ Day 12 - Advent of Code 2025

↺ Day 12 - Advent of Code 2025
As always, the Elves have a summary of the situation (your puzzle input) for you. First, it contains a list of the presents' shapes. Second, it contains the size of the region under each tree and a list of the number of presents of each shape that need to fit into that region. For example: [...]

Qt ☛ Qt Creator 18.0.1 released

↺ Qt Creator 18.0.1 released
For remote build devices this release fixes a crash when auto-detecting tools, a temporary freeze during startup when a remote CMake tool is not accessible because the device is disconnected, and issues if the temporary directory on the remote device is mounted without executable permission. The release comes with various other fixes and performance improvements across various areas.

David Edmundson ☛ Setting up distributed compilations with sccache

↺ Setting up distributed compilations with sccache
Obviously the first answer is to have a faster machine, but having a super fast laptop and a super fast PC all the time contributes to e-waste which I also hate. Some of my test devices for touch and tablet work are 5 year old Intel atom devices that I still sometimes need to compile on to fix things.
The solution is distributed compiling, using multiple computers to share the work.

Chris ☛ Deprecate Like You Mean It

↺ Deprecate Like You Mean It
Seth Larson noticed that people don’t act on deprecation warnings. The response.getheader method in urllib has been deprecated since 2023 because the response.headers dictionary is what should be used instead. When the method was eventually removed, lots of code broke.

Eli Bendersky ☛ Revisiting "Let's Build a Compiler"

↺ Revisiting "Let's Build a Compiler"
There's an old compiler-building tutorial that has become part of the field's lore: the Let's Build a Compiler series by Jack Crenshaw (published between 1988 and 1995).
I ran into it in 2003 and was very impressed, but it's now 2025 and this tutorial is still being mentioned quite often in Hacker News threads. Why is that? Why does a tutorial from 35 years ago, built in Pascal and emitting Motorola 68000 assembly - technologies that are virtually unknown for the new generation of programmers - hold sway over compiler enthusiasts? I've decided to find out.

JeanHeyd Meneide ☛ The Cost Of a Closure in C

↺ The Cost Of a Closure in C
Closures in this instance are programming language constructs that includes data alongside instructions that are not directly related to their input (arguments) and their results (return values). They can be seen as a “generalization” of the concept of a function or function call, in that a function call is a “subset” of closures (e.g., the set of closures that do not include this extra, spicy data that comes from places outside of arguments and returns). These generalized functions and generalized function objects hold the ability to do things like work with “instance” data that is not passed to it directly (i.e., variables surrouding the closure off the stack) and, usually, some way to carry around more data than is implied by their associated function signature.

Ben Congdon ☛ What I Look For in [SLOP] PRs

↺ What I Look For in [SLOP] PRs
I review a lot of PRs these days. As the job of a PR author becomes easier with AI, the job of a PR reviewer gets harder.1
↺ becomes easier
↺ 1
AI can “assist” with code review, but I’m less optimistic about Hey Hi (AI) code review than Hey Hi (AI) code generation. Sure, Claude/Codex can be quite helpful as a first pass, but code review still requires a large amount of human taste.2
↺ 2
↺ becomes easier
↺ 1
↺ 2

Trail of Bits ☛ Introducing mrva, a terminal-first approach to CodeQL multi-repo variant analysis

↺ Introducing mrva, a terminal-first approach to CodeQL multi-repo variant analysis
In 2023 Microsoft's proprietary prison GitHub introduced CodeQL multi-repository variant analysis (MRVA). This functionality lets you run queries across thousands of projects using pre-built databases and drastically reduces the time needed to find security bugs at scale. There’s just one problem: it’s largely built on VS Code and I’m a Vim user and a terminal junkie. That’s why I built mrva, a composable, terminal-first alternative that runs entirely on your machine and outputs results wherever stdout leads you.
↺ multi-repository variant analysis
↺ VS Code
↺ mrva
↺ multi-repository variant analysis
↺ VS Code
↺ mrva

R / R-Script

Dirk Eddelbuettel ☛ Dirk Eddelbuettel: #056: Running r-ci with R-devel

↺ Dirk Eddelbuettel: #056: Running r-ci with R-devel
The recent post #54 reviewed a number of earlier posts on r-ci, our small (but very versatile) runner for continunous integration (CI) with R. The post also introduced the notion of using a container in the ‘matrix’ of jobs defined and running in parallel. The initial motivation was the (still ongoing, and still puzzling) variation in run-times of GitHub Actions. So when running CI and relying on r2u for the ‘fast, easy, reliable: pick all three!’ provision of CRAN packages as Ubuntu binaries, a small amount of time is spent prepping a basic Ubuntu instance with the necessary setup. This can be as fast as maybe 20 to 30 seconds, but it can also stretch to almost two minutes when GitHub is busier or out of sorts for other reasons. When the CI job itself is short, that is a nuisance. We presented relying on a pre-made r2u4ci container that adds just a few commands to the standard r2u container to be complete for CI. And with that setup CI runs tend to be reliably faster.

Rlang ☛ Counterfactual Scenario Analysis with ahead::ridge2f

↺ Counterfactual Scenario Analysis with ahead::ridge2f

Python

Evan Hahn ☛ How I implemented relative imports with Pyodide

↺ How I implemented relative imports with Pyodide
I was recently playing with Pyodide, the WebAssembly Python runtime. I wanted to have my main code import a utility file. Something like this: [...]

Perl / Raku

Perl ☛ Perl Advent Calendar 2025 - The Night Before Deployment: How Melian Saved Christmas (and How It Can Speed Up Your App Too)

↺ Perl Advent Calendar 2025 - The Night Before Deployment: How Melian Saved Christmas (and How It Can Speed Up Your App Too)
Let's walk through a simple real-world setup you can use today. And with this knowledge, you might be able to use Melian at work tomorrow.
For this example, we'll build a small Gift Tracker backed by SQLite.

Java/Golang

Canonical ☛ Java 25 now available on Google Cloud Serverless

↺ Java 25 now available on Google Cloud Serverless
Today Canonical, the publisher of Ubuntu, announced the immediate availability of Java 25 across Google Cloud’s serverless portfolio, including Cloud Run, App Engine, and Cloud Functions.

Rust

Rust Blog ☛ The Rust Programming Language Blog: Announcing Rust 1.92.0

↺ The Rust Programming Language Blog: Announcing Rust 1.92.0
The Rust team is happy to announce a new version of Rust, 1.92.0. Rust is a programming language empowering everyone to build reliable and efficient software.
If you have a previous version of Rust installed via rustup, you can get 1.92.0 with:
If you don't have it already, you can get rustup from the appropriate page on our website, and check out the detailed release notes for 1.92.0.
↺ get rustup
↺ detailed release notes for 1.92.0
↺ get rustup
↺ detailed release notes for 1.92.0

LWN ☛ Rust 1.92.0 released

↺ Rust 1.92.0 released
Version 1.92.0 of Rust has been released. This release includes a number of stabilized APIs, emits unwind tables by default on Linux, validates input to #[macro_export], and much more. See the separate release notes for Rust, Cargo, and Clippy.
↺ Version 1.92.0
↺ Rust
↺ Cargo
↺ Clippy
↺ Version 1.92.0
↺ Rust
↺ Cargo
↺ Clippy

Rust Weekly Updates ☛ This Week In Rust: This Week in Rust 629

↺ This Week In Rust: This Week in Rust 629
Hello and welcome to another issue of This Week in Rust!

It's FOSS ☛ The Tor Project is Making a Switch to Rust, Ditches C

↺ The Tor Project is Making a Switch to Rust, Ditches C
Arti, the Rust rewrite of Tor, brings circuit isolation and onion service improvements in its 1.8.0 release.
gemini.tuxmachines.org