200 Followers
68 Following
873 Posts
Computer programmer up t’north. Former organiser of London Computation Club and speaker at London Ruby User Group, now mostly writing Ruby, Go and JavaScript but also Python, PHP, Rust and Clojure. My views do not represent those of my employer.
webhttps://mudge.name
githubhttps://github.com/mudge
sponsorhttps://github.com/sponsors/mudge
https://github.com/yarnpkg/yarn/issues/9234 finally pushed us to switch away from Yarn 1 and back to npm today.
Issue · yarnpkg/yarn

The 1.x line is frozen - features and bugfixes now happen on https://github.com/yarnpkg/berry - Issue · yarnpkg/yarn

GitHub
#TIL if you’re load balancing a lot of long-lived connections between HAProxy and your backend servers, you will eventually exhaust your local port range (see https://tldp.org/LDP/solrhe/Securing-Optimizing-Linux-RH-Edition-v1.3/chap6sec70.html). You can expand that range from its default of ~28,000 ports via sysctl to give you some room or, better still, add extra backends on different ports so each one benefits from the full local port range.
The ip_local_port_range parameters

I had hoped to release this over the long weekend but it is now ready:

re2 2.27.0 is now out and now releases the Ruby Global VM Lock when performing matches with RE2::Regexp, a compiled RE2::Set, and when using RE2.replace, RE2.global_replace, and RE2.extract.

This gives a near-linear speed-up when using the gem in a multi-threaded environment (e.g. with Puma) and there’s a toy benchmark in the release notes to demonstrate.

https://github.com/mudge/re2/releases/tag/v2.27.0

Release 2.27.0: Concurrent matching without the Ruby Global VM Lock · mudge/re2

Changed The Ruby Global VM Lock (GVL) will now be released while matching with an RE2::Regexp, compiled RE2::Set, and when replacing or extracting with RE2.replace, RE2.global_replace, and RE2.ext...

GitHub

A gift from me to you after the Bank Holiday weekend:

Argon2id 0.10.0, now with multi-threading and Ractor support (it no longer holds the Ruby Global VM Lock while doing the expensive computation of your password hash so these can now run in parallel, freeing up other work) and Argon2id::Password objects are now frozen.

https://github.com/mudge/argon2id/releases/tag/v0.10.0

Release 0.10.0: Frozen passwords, multi-threading, and Ractor support · mudge/argon2id

Changed Hashing and verifying passwords no longer holds the Ruby Global VM Lock (GVL) during the intentionally expensive computation of the Argon2id hash, allowing other threads to do work at the ...

GitHub

re2 2.26.0 is now out distinguishing zero-length groups (e.g. `(a*)`) from unmatched ones (e.g. `(a)?`) by returning them as empty strings, not nil. This fixes the new `pre_match` and `post_match` methods when only matching a zero-length group but **may be a breaking change** if you relied on zero-length groups being nil.

https://github.com/mudge/re2/releases/tag/v2.26.0

Release 2.26.0: Distinguish zero-length groups from unmatched ones · mudge/re2

Changed Return zero-length capturing groups (e.g. (a*)) as empty strings, not nil. RE2 distinguishes between the two (one is a re2::StringPiece with NULL data and the other a non-NULL re2::StringP...

GitHub
Now that https://status.rubygems.org/incidents/4ykfcgr7gy74 is resolved, the x86_64-darwin native precompiled gem is now available for re2 2.25.0.
Degraded performance

RubyGems.org's Status Page - Degraded performance.

(Note the native gem for x86_64-darwin isn’t yet available as there was some sort of server issue with RubyGems when I pushed it. I’m waiting to hear back from their support about re-pushing it.)

re2 2.25.0 is now out with a new RE2.extract method and an expanded API for RE2::Regexp and RE2::MatchData to match Ruby’s own Regexp and MatchData more closely: names, named_captures, values_at, offset, pre_match, post_match, and match_length.

https://github.com/mudge/re2/releases/tag/v2.25.0

Release 2.25.0: RE2.extract and expanded API for RE2::Regexp and RE2::MatchData · mudge/re2

Added Add RE2.extract to expose RE2's Extract API which returns a given rewrite string with substitutions for a given text and matching pattern (non-matching portions are ignored). Add RE2::Regexp...

GitHub

re2 2.24.0 is now out, upgrading the bundled version of Abseil to 20260107.1, allowing the copying of RE2 objects, and fixing bugs when handling uninitialized RE2 objects.

https://github.com/mudge/re2/releases/tag/v2.24.0

@jonty do you have any recommendations for a thermal camera for general home radiator bothering? I vaguely recall you mentioning alternatives to Flir but search is failing me.