<?xml version="1.0"?>
<rss version="2.0">

<channel>
	<title>Planet Debian</title>
	<link>https://planet.debian.org/</link>
	<language>en</language>
	<description>Planet Debian - https://planet.debian.org/</description>


<item>
	<title>Bits from Debian: DebConf26 starts today in Santa Fe on Monday, July 20, 2026</title>
	<guid>tag:bits.debian.org,2026-07-20:/2026/07/debconf26-starts-today.html</guid>
	<link>https://bits.debian.org/2026/07/debconf26-starts-today.html</link>
     <description>  &lt;img src=&quot;http://planet.debian.org/heads/dwn.png&quot; width=&quot;77&quot; height=&quot;85&quot; alt=&quot;&quot; align=&quot;right&quot; style=&quot;float: right;&quot;&gt;  &lt;p&gt;&lt;a href=&quot;https://debconf26.debconf.org/&quot;&gt;DebConf26&lt;/a&gt;, the 27th annual
&lt;a href=&quot;https://www.debconf.org/&quot;&gt;Debian Developer Conference&lt;/a&gt;, is taking place at
Santa Fe, Argentina from 20 to 25 July 2026.
Debian contributors from all over the world have come together at the Facultad
de Ingeniería en Ciencias Hídricas (Faculty of Engineering in Water Sciences),
one of the faculties that belong to the Universidad Nacional del Litoral
(National University of the Littoral), to participate and work in a
conference exclusively ran by volunteers.&lt;/p&gt;
&lt;p&gt;Today the main conference starts with around 300 expected attendants and over
80 scheduled activities, including 45-minute and 20-minute talks, Bird of a
Feather (&quot;&lt;abbr&gt;BoF&lt;/abbr&gt;&quot;) team meetings, workshops, a job fair, as well as
a variety of other events.
The full &lt;a href=&quot;https://debconf26.debconf.org/schedule/&quot;&gt;schedule&lt;/a&gt; is updated each
day, including activities planned ad-hoc by attendees over the course of the
conference.&lt;/p&gt;
&lt;p&gt;If you would like to engage remotely, you can follow the &lt;strong&gt;video streams&lt;/strong&gt;
available from the &lt;a href=&quot;https://debconf26.debconf.org/&quot;&gt;DebConf26 website&lt;/a&gt; for the
events happening in the three main talk rooms: Aula Magna - FADU,
Aula Magna - FBCB and Aula 0.3 - FICH accessible from the DebConf26 homepage.
You can also join the conversations happening inside the talk rooms via the
&lt;a href=&quot;https://www.oftc.net/&quot;&gt;OFTC IRC network&lt;/a&gt; in the
&lt;a href=&quot;irc://irc.oftc.net/debconf-fadu&quot;&gt;#debconf-fadu&lt;/a&gt;,
&lt;a href=&quot;irc://irc.oftc.net/debconf-fbcb&quot;&gt;#debconf-fbcb&lt;/a&gt;,
and &lt;a href=&quot;irc://irc.oftc.net/debconf-fich3&quot;&gt;#debconf-fich3&lt;/a&gt; channels.
Please also join us in the &lt;a href=&quot;irc://irc.oftc.net/debconf&quot;&gt;#debconf&lt;/a&gt; channel for
common discussions related to DebConf.&lt;/p&gt;
&lt;p&gt;You can also follow the live coverage of news about DebConf26 provided by our
&lt;a href=&quot;https://micronews.debian.org/&quot;&gt;micronews service&lt;/a&gt; or the @debian profile on
your favorite social network.&lt;/p&gt;
&lt;p&gt;DebConf is committed to a safe and welcoming environment for all participants.
Please see our &lt;a href=&quot;https://debconf26.debconf.org/about/coc/&quot;&gt;Code of Conduct page&lt;/a&gt;
for more information on this.&lt;/p&gt;
&lt;p&gt;Debian thanks the commitment of numerous sponsors to support DebConf26,
particularly our Platinum Sponsors:
&lt;a href=&quot;https://www.infomaniak.com/&quot;&gt;&lt;strong&gt;Infomaniak&lt;/strong&gt;&lt;/a&gt; and
&lt;a href=&quot;https://www.proxmox.com/&quot;&gt;&lt;strong&gt;Proxmox&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;DebConf26 sponsors logo&quot; src=&quot;https://bits.debian.org/images/debconf26-sponsors-banner.svg&quot; /&gt;&lt;/p&gt; </description> 
	<pubDate>Mon, 20 Jul 2026 07:45:07 +0000</pubDate>

</item> 
<item>
	<title>Russ Allbery: podlators v6.1.0</title>
	<guid>https://www.eyrie.org/~eagle/journal/2026-07/002.html</guid>
	<link>https://www.eyrie.org/~eagle/journal/2026-07/002.html</link>
     <description>  &lt;p&gt;
This is the latest release of the Pod::Man and Pod::Text modules and
their supporting scripts, which convert POD documentation to text and
*roff output.
&lt;/p&gt;

&lt;p&gt;
The major change in this release is a workaround for a groff bug in the
1.24.0 release that breaks compatibility between the &lt;code&gt;.IP&lt;/code&gt; and
&lt;code&gt;.TP&lt;/code&gt; macros and misrenders &lt;code&gt;.IP&lt;/code&gt; by removing all space between
the tag and the text. Ideally groff bugs should be fixed in groff, but
apparently this rendering bug was
&lt;a href=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1134776#72&quot;&gt;introduced intentionally by the groff maintainer&lt;/a&gt; to force authors who
were using &lt;code&gt;.IP&lt;/code&gt; with text tags to switch to &lt;code&gt;.TP&lt;/code&gt; for correct
formatting, allowing future introduction of a semantic distinction between
the two macros. I didn&#39;t see a good alternative at this relatively late
date after the release other than changing Pod::Man accordingly.
&lt;/p&gt;

&lt;p&gt;
This will at least work around this problem for Pod::Man users,
although it won&#39;t help with existing manual pages.
&lt;/p&gt;

&lt;p&gt;
This release also works around another backwards-incompatible change to
groff that attempts to force the default enabling of hyphenation and full
justification after every occurrence of the &lt;code&gt;.TH&lt;/code&gt; macro. The groff
upstream position is currently that the end user should be able to set
registers and strings to override the defaults of hyphenation and full
justification, but the man page author has no control over the defaults
for these settings. Pod::Man ignores the admonishment in groff_man(7) and
overrides these registers anyway to restore its long-standing historic
behavior of always using left justification and disabling hyphenation,
because there is currently no way to change the default without overriding
the new user preference. Should some mechanism be provided in the future,
I&#39;ll be happy to adopt it and thus honor user configuration as well.
&lt;/p&gt;

&lt;p&gt;
New in this release is support for an encoding of &lt;code&gt;none&lt;/code&gt;, which tells
Pod::Man and Pod::Text to do no character set encoding in their output and
leave the output in Perl&#39;s internal representation. This is useful in
combination with &lt;code&gt;output_string()&lt;/code&gt; when the output will be used
internally by a Perl program.
&lt;/p&gt;

&lt;p&gt;
Pod::Man also adopts &lt;code&gt;CR&lt;/code&gt; as the default fixed-width font instead
of its long-standing default of &lt;code&gt;CW&lt;/code&gt;, originally chosen for
compatibility with Solaris. This avoids warnings with newer groff at the
cost of breaking troff (not nroff) output on Solaris 10. I believe this
platform is now sufficiently old, and this use case sufficiently obscure,
that no one will miss it. Solaris 11 and later will render man pages
correctly with troff, and &lt;code&gt;--fixed=CW&lt;/code&gt; will restore the previous
behavior.
&lt;/p&gt;

&lt;p&gt;
This release also has a few other bug fixes, particularly for quoting
heuristics in &lt;code&gt;C&amp;lt;&amp;gt;&lt;/code&gt; blocks, and various documentation improvements.
&lt;/p&gt;

&lt;p&gt;
You can get the latest release from CPAN or from
&lt;a href=&quot;https://www.eyrie.org/~eagle/software/podlators/&quot;&gt;the podlators distribution page&lt;/a&gt;.
&lt;/p&gt; </description> 
	<pubDate>Mon, 20 Jul 2026 04:14:00 +0000</pubDate>

</item> 
<item>
	<title>Russell Coker: ECC and DDR5</title>
	<guid>https://etbe.coker.com.au/?p=6237</guid>
	<link>https://etbe.coker.com.au/2026/07/19/ecc-ddr5/</link>
     <description>  &lt;h2&gt;Hamming Codes&lt;/h2&gt;
&lt;p&gt;ECC RAM corrects errors that occur in memory before it gets to the CPU. The most common form of ECC is &lt;a href=&quot;https://en.wikipedia.org/wiki/Hamming_code&quot;&gt;the Hamming Code [1]&lt;/a&gt; which when it has R redundant bits can correct single bit errors and detect double-bit errors in messages with 2^R-R-1 bits of data. For PC use that means if you want to protect 32bits of data you need R=6 and with 64bits you need R=7. The standard for DDR4 and similar RAM is 72 bits of data width on the bus and Hamming codes to correct single bit errors and detect double bit errors for 65bits of data. The computers we use have 64bits of data so that allows an extra bit that could be an extra parity, I don’t know what if anything is done with this extra bit.&lt;/p&gt;
&lt;h2&gt;RDIMM vs UDIMM&lt;/h2&gt;
&lt;p&gt;One point of confusion in such things is the difference between &lt;a href=&quot;https://en.wikipedia.org/wiki/Registered_memory&quot;&gt;Registered memory AKA RDIMMs [2]&lt;/a&gt; and regular PC/laptop memory which is often referred to as UDIMMs. The “register” is just a buffer which due to complex issues that aren’t relevant to this post means that DIMMs can be larger and you can have more DIMMs in a system but latency may be slightly worse. It is technically quite possible to create RDIMMs without ECC (64bits wide instead of 72) but I have never seen a system that used such RAM.&lt;/p&gt;
&lt;p&gt;I have used more than a few systems with ECC UDIMMs and I recommend avoiding them if convenient as ECC UDIMMs are expensive on the second hand market while ECC RDIMMs can get very cheap. There are servers with ECC RDIMMs that are very unsuitable for home use (such as dual-CPU 1RU servers which are very noisy) so once they are past the 5 year tax write-off period the server chassis gets sent to ewaste and the RAM goes on the second hand market, the glut of RAM without systems to use it forces the price down.&lt;/p&gt;
&lt;p&gt;For the systems most commonly seen there are RDIMM systems with ECC and UDIMM systems without ECC.&lt;/p&gt;
&lt;h2&gt;Chipkill&lt;/h2&gt;
&lt;p&gt;If every bit in RAM was independent of every other bit then the basic Hamming code would solve most problems. However multiple bits in the same chip may be affected by the same problem, or one chip on the DIMM might entirely fail. With every RDIMM having 18 or 36 DRAM chips there are 2 or 4 bits per chip. On DIMMs with 36 DRAM chips one chip could fail and have the errors reliably detected with a Hamming code. On DIMMs with 18 DRAM chips one failed chip can’t necessarily be detected with Hamming codes. IBM trademarked the term &lt;a href=&quot;https://en.wikipedia.org/wiki/Chipkill&quot;&gt;ChipKill for ECC systems which can cope with a single DRAM chip failing [3]&lt;/a&gt;. This is referred to as “Advanced ECC” on Dell and HP servers which require an even number of DIMMs. If anyone knows what coding method is used for “ChipKill” type systems then please let me know.&lt;/p&gt;
&lt;p&gt;Systems with advanced ECC also often have features like hot-spare for RAM and RAID-1 type functionality which is interesting but not something most people who read my blog will ever want to use.&lt;/p&gt;
&lt;h2&gt;DDR5&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.atpinc.com/tw/blog/ddr5-what-is-on-die-ecc-how-is-it-different-to-traditional-ecc&quot;&gt;DDR5 has on-die ECC to deal with the increased error incidence from smaller and faster memory [4]&lt;/a&gt;, this is specified as 8 bits of error correction per 128 bits of data which implies basic Hamming codes.&lt;/p&gt;
&lt;p&gt;The on-die ECC is not a replacement for regular ECC, it’s a mitigation for new problems introduced. My experience of memory errors is that the majority of repeatable errors (where a system would get an error with Memtest86+ or an ECC error report repeatedly) were DIMM seating issues, I could unplug and reinsert the DIMM in question and then the same tests would pass. Those errors would not be affected by on-die ECC.&lt;/p&gt;
&lt;p&gt;One thing that concerns me is the possibility of on-die ECC interacting with ECC on the motherboard and reducing it’s effectiveness. I haven’t been able to find out enough about how this works to determine if that’s the case. My concern is that an error of 3+ bits that’s corrected with a basic Hamming code might be more likely to create an error condition that “Advanced ECC” can’t fix than the original error.&lt;/p&gt;
&lt;p&gt;Currently the best published research on the effectiveness of ECC on RAM errors is &lt;a href=&quot;https://www.cs.toronto.edu/~bianca/papers/sigmetrics09.pdf&quot;&gt;the Google paper published in 2009 which is based on DDR and DDR2 RAM [5]&lt;/a&gt;. So I don’t expect that we will see published research about even DDR4 ECC any time soon. I presume that Google and the other cloud providers are still doing such research and providing the information to DRAM vendors under NDA so we have to just hope that the DRAM vendors do what’s required to make things work correctly and allow us to buy products based on that research.&lt;/p&gt;
&lt;h2&gt;DDR5 EC4 vs EC8&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/DDR5_SDRAM#Subchannels&quot;&gt;DDR5 supports 2*32bit “subchannels” instead of just supporting 64bit words [6]&lt;/a&gt;. For DDR5 ECC RAM there are variants EC4 which has 36bits of data per subchannel and EC8 which has 40 bits. EC8 allows Hamming codes on each subchannel indepdendently. I haven’t found a reference on how exactly EC4 works, it could be reading 64bits at a time (not taking advantage of the subchannels) to use Hamming codes or it could have 1 parity bit for each subchannel and just assume that there’s no need to check Hamming codes unless the subchannel parity fails. EC8 allows full Hamming code checks on 32bits of data and presumably ChipKill on 64bits.&lt;/p&gt;
&lt;p&gt;It’s widely claimed that all DDR5 RDIMMs are EC8 and all DDR5 ECC UDIMMs are EC4. A quick search on ebay turned up adverts for EC4 and EC8 RDIMMs and links to apparently reliable sites confirming that some of the RDIMMs are EC4. There are reports of EC8 UDIMMs even though I couldn’t find any advertised. This seems to mirror the situation with DDR4 where non-ECC RDIMMs are apparently available somewhere and ECC UDIMMs are something I’ve used a few times but most people have never seen.&lt;/p&gt;
&lt;p&gt;I then searched for information on what servers support. The Dell R760 server supports both EC4 and EC8 RDIMMs but you can’t have both in the same system.&lt;/p&gt;
&lt;p&gt;The existence of EC4 DIMMs is wrong. They shouldn’t make substandard gear, the manufacturing price difference between 72 and 80 bit wide DIMMs isn’t going to be great and the end result is some systems with inadequate specs and extra difficulty in upgrading systems with more things to check for compatibility.&lt;/p&gt;
&lt;h2&gt;Why ECC is Needed&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.tomshardware.com/pc-components/ram/bit-flips-cause-up-to-15-percent-of-firefox-crashes-asserts-mozilla-engineer-figure-inferred-from-470-000-auto-submitted-crash-reports&quot;&gt;Here’s an interesting article about Mozilla’s claim that 15% of Firefox crashes are due to RAM hardware errors [7]&lt;/a&gt;, this seems to be based on repeatable errors and therefore won’t count errors where a bit flip happens once a day or less.&lt;/p&gt;
&lt;p&gt;Some years ago I reported a BTRFS corruption issue on my desktop PC to the BTRFS developers and one of them stated that the corruption in question didn’t match any pattern expected from a BTRFS bug and recommended that I run Memtest86+. The memory test revealed that I was getting about one memory corruption per 5 hours so if I had used Firefox on that system any crashes probably wouldn’t have been regarded as hardware errors with RAM. Those errors caused filesystem corruption and some data loss, if I hadn’t been using BTRFS that could have gone unnoticed for years.&lt;/p&gt;
&lt;p&gt;On another occasion I had a VM I was using for testing software I was developing that had some unexpected errors. After working on it for a day I had shared the errors with a mailing list of other developers who also spent some time investigating it. Eventually I began to suspect a hardware problem, I went on site and when I rebooted the system to run Memtest86+ it didn’t even boot as it had errors that stopped the BIOS from even working correctly. It was strange that the system was apparently working correctly and restarting the KVM VM resulted in the same errors happening in the same code and nothing else on the VM apparently having a problem. It turned out that the system had a motherboard problem that made all but one of the DIMM sockets unusable so I ended up sending it to e-waste. That wasted a day of my time and some hours of other people’s time. Presumably on other occasions developer time is wasted due to hardware errors and no-one even realises.&lt;/p&gt;
&lt;h2&gt;What Society Needs&lt;/h2&gt;
&lt;p&gt;We need ECC RAM to be more widely used. Ideally we would have some government action to force this given the ongoing cost to society in corrupted data and lost time due to RAM hardware errors. I think that at minimum we need sufficient taxes on non-ECC RAM (and EC4 RAM for DDR5) to make it more expensive when bought new than ECC RAM.&lt;/p&gt;
&lt;p&gt;We need to have greater knowledge of the benefits of ECC RAM among computer experts, people need to recommend that computers be purchased with ECC RAM whenever possible and that systems which can’t have ECC RAM (laptops and phones) shouldn’t be used for storing important data.&lt;/p&gt;
&lt;p&gt;We need to avoid silly things like having so many variants of RAM to confuse people and make it needlessly difficult to get ECC RAM working.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[1]&lt;a href=&quot;https://en.wikipedia.org/wiki/Hamming_code&quot;&gt; https://en.wikipedia.org/wiki/Hamming_code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[2]&lt;a href=&quot;https://en.wikipedia.org/wiki/Registered_memory&quot;&gt; https://en.wikipedia.org/wiki/Registered_memory&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[3]&lt;a href=&quot;https://en.wikipedia.org/wiki/Chipkill&quot;&gt; https://en.wikipedia.org/wiki/Chipkill&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[4]&lt;a href=&quot;https://www.atpinc.com/tw/blog/ddr5-what-is-on-die-ecc-how-is-it-different-to-traditional-ecc&quot;&gt; https://tinyurl.com/2aj7oztw&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[5]&lt;a href=&quot;https://www.cs.toronto.edu/~bianca/papers/sigmetrics09.pdf&quot;&gt; https://www.cs.toronto.edu/~bianca/papers/sigmetrics09.pdf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[6]&lt;a href=&quot;https://en.wikipedia.org/wiki/DDR5_SDRAM#Subchannels&quot;&gt; https://en.wikipedia.org/wiki/DDR5_SDRAM#Subchannels&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[7]&lt;a href=&quot;https://www.tomshardware.com/pc-components/ram/bit-flips-cause-up-to-15-percent-of-firefox-crashes-asserts-mozilla-engineer-figure-inferred-from-470-000-auto-submitted-crash-reports&quot;&gt; https://tinyurl.com/yv4of7hz&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;yarpp yarpp-related yarpp-related-rss yarpp-template-list&quot;&gt;

&lt;p&gt;Related posts:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://etbe.coker.com.au/2007/07/15/desktop-machines-and-ecc-ram/&quot; rel=&quot;bookmark&quot; title=&quot;Desktop Machines and ECC RAM&quot;&gt;Desktop Machines and ECC RAM&lt;/a&gt; &lt;small&gt;In a comment on my post about memory errors Chris...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://etbe.coker.com.au/2025/05/18/ddr4-ram-size/&quot; rel=&quot;bookmark&quot; title=&quot;DDR4 RAM Size&quot;&gt;DDR4 RAM Size&lt;/a&gt; &lt;small&gt;I’ve been looking at computer hardware on AliExpress a lot...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://etbe.coker.com.au/2022/07/31/workstations-ecc-ram/&quot; rel=&quot;bookmark&quot; title=&quot;Workstations With ECC RAM&quot;&gt;Workstations With ECC RAM&lt;/a&gt; &lt;small&gt;The last new PC I bought was a Dell PowerEdge...&lt;/small&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt; </description> 
	<pubDate>Sun, 19 Jul 2026 05:00:37 +0000</pubDate>

</item> 
<item>
	<title>Bits from Debian: DebConf26 welcomes its sponsors</title>
	<guid>tag:bits.debian.org,2026-07-18:/2026/07/debconf26-welcomes-sponsors.html</guid>
	<link>https://bits.debian.org/2026/07/debconf26-welcomes-sponsors.html</link>
     <description>  &lt;img src=&quot;http://planet.debian.org/heads/dwn.png&quot; width=&quot;77&quot; height=&quot;85&quot; alt=&quot;&quot; align=&quot;right&quot; style=&quot;float: right;&quot;&gt;  &lt;p&gt;&lt;a href=&quot;https://bits.debian.org/images/Romina_Molina_dc26_2.svg&quot;&gt;&lt;img alt=&quot;Alt DebConf26 by Romina Molina&quot; src=&quot;https://bits.debian.org/images/Romina_Molina_dc26_2.svg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://debconf26.debconf.org/&quot;&gt;DebConf26&lt;/a&gt;, the 27th edition of the Debian
conference is taking place at the
&lt;a href=&quot;https://www.fich.unl.edu.ar/&quot;&gt;Facultad de Ingeniería en Ciencias Hídricas&lt;/a&gt; of
the Universidad Nacional del Litoral, in Santa Fe, Argentina. We appreciate
the organizers for their hard work, and hope this event will be highly
beneficial for those who attend in person as well as online.&lt;/p&gt;
&lt;p&gt;This event would not be possible without the help from our generous sponsors.
We would like to warmly welcome the sponsors of DebConf26, and introduce them
to you.&lt;/p&gt;
&lt;p&gt;We have two Platinum sponsors.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Our first Platinum sponsor is &lt;a href=&quot;https://www.proxmox.com/&quot;&gt;&lt;strong&gt;Proxmox&lt;/strong&gt;&lt;/a&gt;.
  Proxmox develops powerful, yet easy-to-use open-source server solutions.
  The comprehensive open-source ecosystem is designed to manage divers IT
  landscapes, from single servers to large-scale distributed data centers.
  Our unified platform integrates server virtualization, easy backup, and
  rock-solid email security ensuring seamless interoperability across the
  entire portfolio. With the Proxmox Datacenter Manager, the ecosystem also
  offers a &quot;single pane of glass&quot; for centralized management across different
  locations.
  Since 2005, all Proxmox solutions have been built on the rock-solid Debian
  platform. We are proud to return to DebConf26 as a sponsor because the
  Debian community provides the foundation that makes our work possible. We
  believe in keeping IT simple, open, and under your control.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://www.infomaniak.com/&quot;&gt;&lt;strong&gt;Infomaniak&lt;/strong&gt;&lt;/a&gt; is the second Platinum sponsor.
  Infomaniak is an independent, employee-owned Swiss technology company that
  designs, develops, and operates its own cloud infrastructure and digital
  services entirely in Switzerland. With over 300 employees — more than 70%
  engineers and developers — the company reinvests all profits into R&amp;amp;D. Its
  public cloud is built on OpenStack, with managed Kubernetes, Database as a
  Service, object storage, and sovereign AI services accessible via OpenAI-
  compatible APIs, all running on its own Swiss infrastructure. Infomaniak also
  develops a sovereign collaborative suite — messaging, email, storage, online
  office tools, videoconferencing, and a built-in AI assistant — developed in-
  house and as a privacy-respecting solution to proprietary platforms. Open
  source is central to how Infomaniak operates. Its latest data center (D4)
  runs on 100% renewable energy and uses no traditional cooling: all the heat
  generated by its servers is captured and fed into Geneva&#39;s district heating
  network, supplying up to 6,000 homes in winter and hot water year-round. The
  entire project has been documented and open-sourced at
  &lt;a href=&quot;https://d4project.org/&quot;&gt;d4project.org&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Our Gold sponsors are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://www.freexian.com/&quot;&gt;&lt;strong&gt;Freexian&lt;/strong&gt;&lt;/a&gt;, Freexian specializes in Free
  Software with a particular focus on Debian GNU/Linux. Freexian can assist
  with consulting, training, technical support, packaging, or software
  development on projects involving use or development of Free software.
  All of Freexian&#39;s employees and partners are well-known contributors in the
  Free Software community, a choice that is integral to Freexian&#39;s business
  model.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://www.viridiengroup.com&quot;&gt;&lt;strong&gt;Viridien&lt;/strong&gt;&lt;/a&gt; an advanced technology,
  digital and Earth data company that pushes the boundaries of science for
  a more prosperous and sustainable future. Viridien has been using
  Debian-based systems to power most of its HPC infrastructure and its
  cloud platform since 2009 and currently employs two active Debian
  Project Members.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Our Silver sponsors are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.arm.com/&quot;&gt;&lt;strong&gt;Arm&lt;/strong&gt;&lt;/a&gt;: leading technology provider of processor
  IP, Arm powered solutions have been supporting innovation for
  more than 30 years and are deployed in over 280 billion chips to date.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.pexip.com/&quot;&gt;&lt;strong&gt;Pexip&lt;/strong&gt;&lt;/a&gt; brings the ease of commercial video
  platforms to secure and sovereign environments without compromising control
  or performance.&lt;/li&gt;
&lt;li&gt;The &lt;a href=&quot;https://www.bfh.ch/&quot;&gt;&lt;strong&gt;Bern University of Applied Sciences&lt;/strong&gt;&lt;/a&gt; with around
  7,959 students enrolled, located in the Swiss capital.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.canonical.com/&quot;&gt;&lt;strong&gt;Ubuntu&lt;/strong&gt;&lt;/a&gt;,
  the Operating System delivered by Canonical.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://os-sci.com/&quot;&gt;&lt;strong&gt;OS-Sci&lt;/strong&gt;&lt;/a&gt;, Open Source Science is a world-leading
  institution dedicated to teaching computer science through Free and Open
  Source Software (FOSS).&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.gcoop.coop/&quot;&gt;&lt;strong&gt;gcoop&lt;/strong&gt;&lt;/a&gt;, a free software development company
  with over 19 years of market experience, organized as a worker cooperative,
  promoting best practices in software development.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.qualcomm.com/developer/opensource&quot;&gt;&lt;strong&gt;Qualcomm&lt;/strong&gt;&lt;/a&gt; Technologies,
  one of the world&#39;s leading companies in field of mobile technology, sponsors
  and contributes to Open Source developer communities that drive collaboration.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.cip-project.org/&quot;&gt;&lt;strong&gt;Civil Infrastructure Platform&lt;/strong&gt;&lt;/a&gt;,
  a collaborative project hosted by the Linux Foundation, establishing an open
  source “base layer” of industrial grade software.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://opensource.siemens.com/&quot;&gt;&lt;strong&gt;Siemens&lt;/strong&gt;&lt;/a&gt; is a technology company
  focused on industry, infrastructure and transport.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.collabora.com/&quot;&gt;&lt;strong&gt;Collabora&lt;/strong&gt;&lt;/a&gt;, a global consultancy delivering
  Open Source software solutions to the commercial world.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://nerdearla.com/en/&quot;&gt;&lt;strong&gt;NERDEARLA&lt;/strong&gt;&lt;/a&gt;, the largest free tech event in
  the Spanish-speaking world.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bronze sponsors:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.loongson.cn/&quot;&gt;&lt;strong&gt;Loongson&lt;/strong&gt;&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.credativ.de/&quot;&gt;&lt;strong&gt;credativ&lt;/strong&gt;&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://google.com/&quot;&gt;&lt;strong&gt;Google&lt;/strong&gt;&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.spacemit.com/&quot;&gt;&lt;strong&gt;SpacemiT&lt;/strong&gt;&lt;/a&gt;,&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And finally, our Supporter level sponsors:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://altusmetrum.org/&quot;&gt;&lt;strong&gt;Altus Metrum&lt;/strong&gt;&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://loongfans.cn/en/&quot;&gt;&lt;strong&gt;Loongson Hobbyists Community&lt;/strong&gt;&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.santafe.gob.ar/&quot;&gt;&lt;strong&gt;Secretaría de Tecnologías para la Gestión de la Provincia de Santa Fe&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A special thanks to the
&lt;a href=&quot;https://www.fich.unl.edu.ar/&quot;&gt;&lt;strong&gt;Facultad de Ingeniería y Ciencias Hídricas - FICH UNL&lt;/strong&gt;&lt;/a&gt;,
our Venue Partner!&lt;/p&gt;
&lt;p&gt;Thanks to all our sponsors for their support!
Their contributions enable a diverse global community of Debian developers and
maintainers to collaborate, support one another, and share knowledge at
DebConf26.&lt;/p&gt; </description> 
	<pubDate>Sat, 18 Jul 2026 12:00:00 +0000</pubDate>

</item> 
<item>
	<title>Sergio Cipriano: Running Graphical Applications in Incus Containers</title>
	<guid>tag:www.sergiocipriano.com,2026-07-17:posts/running-gui-in-incus.md</guid>
	<link>https://sergiocipriano.com/running-gui-in-incus.html</link>
     <description>  &lt;h1 id=&quot;running-graphical-applications-in-incus-containers&quot;&gt;Running
Graphical Applications in Incus Containers&lt;/h1&gt;
&lt;p&gt;I didn&#39;t know how easy it is to display the graphical console of a
virtual machine until I tried recently.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ sudo apt install virt-viewer
$ incus launch images:debian/trixie test --vm
$ incus console test --type=vga&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That&#39;s it.&lt;/p&gt; </description> 
	<pubDate>Fri, 17 Jul 2026 20:17:17 +0000</pubDate>

</item> 
<item>
	<title>Reproducible Builds (diffoscope): diffoscope 325 released</title>
	<guid>https://diffoscope.org/news/diffoscope-325-released/</guid>
	<link>https://diffoscope.org/news/diffoscope-325-released/</link>
     <description>  &lt;p&gt;The diffoscope maintainers are pleased to announce the release of diffoscope
version &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;325&lt;/code&gt;. This version includes the following changes:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;[ Chris Lamb ]
* Fix tests to work with zipdetails 4.0008. (Closes: #1141359)
* Downgrade debhelper compatibility level to 13 for now.
* Update copyright years.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;You find out more by &lt;a href=&quot;https://diffoscope.org&quot;&gt;visiting the project homepage&lt;/a&gt;.&lt;/p&gt; </description> 
	<pubDate>Fri, 17 Jul 2026 00:00:00 +0000</pubDate>

</item> 
<item>
	<title>Steinar H. Gunderson: Looking at dpkg startup time</title>
	<guid>http://blog.sesse.net/blog/tech/2026-07-15-08-45_looking_at_dpkg_startup_time.html</guid>
	<link>http://blog.sesse.net/blog/tech/2026-07-15-08-45_looking_at_dpkg_startup_time.html</link>
     <description>  &lt;img src=&quot;http://planet.debian.org/heads/sesse.png&quot; width=&quot;74&quot; height=&quot;85&quot; alt=&quot;&quot; align=&quot;right&quot; style=&quot;float: right;&quot;&gt;  &lt;p&gt;Five years or so ago, I had a look at trying to speed up dpkg&#39;s package
installation; I concluded that it was probably possible to speed up,
but that there was no appetite for this kind of large-scale changes.
(You&#39;d probably need to rewrite the transaction system to get rid of
a lot of fsyncs, you&#39;d ideally want to reduce the number of syscalls
for unpack by io_uring and so on.)&lt;/p&gt;

&lt;p&gt;This summer, I&#39;ve been looking at something related on and off; it is
possible to speed up the startup time? That&#39;s in a sense the opposite
scenario; instead of installing lots of packages in a newly debootstrapped
chroot (with very few packages), see how fast you can install one
in a much more busy chroot (I just copied my laptop&#39;s dpkg dir, with ~6600 packages
installed).&lt;/p&gt;

&lt;p&gt;Before I show the numbers, I must stress that this is an &lt;em&gt;investigation&lt;/em&gt;,
not a fair benchmark, and you should not go shout at the dpkg maintainers
that they need to get to “catch up”. That said:&lt;/p&gt;

&lt;pre&gt;&amp;gt; sudo time dpkg --root=root -i hello_2.12.3-1_amd64.deb &amp;gt;/dev/null
Not building database; man-db/auto-update is not &#39;true&#39;.
1.12user 0.49system 0:01.85elapsed 87%CPU (0avgtext+0avgdata 171880maxresident)k
0inputs+14648outputs (0major+72963minor)pagefaults 0swaps

&amp;gt; sudo time ./src/dpkg --root=root -i hello_2.12.3-1_amd64.deb &amp;gt; /dev/null
0.04user 0.01system 0:00.15elapsed 38%CPU (0avgtext+0avgdata 6520maxresident)k
0inputs+1080outputs (0major+2705minor)pagefaults 0swaps
&lt;/pre&gt;

&lt;p&gt;How is it unfair? Well, for one, the code to run triggers is messed up
so they&#39;re not run (but the trigger in question should be very fast).
And there&#39;s one step at the end with detecting “disappearing packages” that doesn&#39;t run properly
because it&#39;s a bit tricky in my model and I didn&#39;t want to deal
with, well, difficult problems. But I think both are perfectly doable without
really affecting the end time, it just requires engineering. There&#39;s a &lt;em&gt;lot&lt;/em&gt; of work to be done, though;
diving into the code makes me shudder at all the complexities that need to be
in place to support all the corner cases of multiarch, for instance.&lt;/p&gt;

&lt;p&gt;The code is extremely proof-of-concept, but it runs and can read (and write)
metadata from SQLite instead of flat text files, it can resolve dependencies
in the most basic fashion, it can keep track of installed files, it should be
crash- and powerloss-proof. You know, the very very basic stuff, and without changing the
model fundamentally (like e.g. Michael Stapelberg did with
&lt;a href=&quot;https://distr1.org/&quot;&gt;distri&lt;/a&gt;, fundamentally replacing packages with disk
images and ending up in a very fast but rather different-looking system). So it was satisfying to see
that it ends up around 10x even on my not-very-new laptop (plus a significant
RAM reduction); I believe it should be possible to squeeze under 100 ms,
but that would probably require also optimizing the unpacking itself, which I didn&#39;t look at this time.&lt;/p&gt;

&lt;p&gt;Having a bunch of files being read into RAM and then processed freely was a design that made
a lot of sense when dpkg was written (in 1995!) and Debian had ~250 binary
packages &lt;em&gt;in total&lt;/em&gt; (and you probably wouldn&#39;t install all of them).
There was no reasonable database available for desktop systems; the closest
thing you&#39;d have was probably BerkeleyDB and that wasn&#39;t really it,
so flat files and fsync made a lot of sense, and was easy to manipulate
and persist.
But now, SQLite is widely available and probably the most battle-tested
code in history, a typical system has thousands of packages (you could
easily install tens of thousands if you&#39;re doing heavy development),
SSDs have replaced HDDs almost everywhere for system disks, and the
environment has just changed a lot in general. So I hope that someone at some
point will be crazy enough to pick this up and run with it, because it&#39;s a
lot of work and I don&#39;t intend to. :-)&lt;/p&gt;

&lt;p&gt;PS: I didn&#39;t look at apt; I think what I&#39;d really love to see first and
foremost is a package format change so that apt-listchanges can look at
(or look for) NEWS.gz without having to unpack the entire package.
Perhaps a control field saying “nothing new here”?&lt;/p&gt; </description> 
	<pubDate>Wed, 15 Jul 2026 07:15:23 +0000</pubDate>

</item> 
<item>
	<title>Russell Coker: libproc-processtable-perl in Debian</title>
	<guid>https://etbe.coker.com.au/?p=6233</guid>
	<link>https://etbe.coker.com.au/2026/07/15/processtable-perl-debian/</link>
     <description>  &lt;p&gt;I’ve just filed a &lt;a href=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1142050&quot;&gt;Debian bug report about libproc-processtable-perl giving bad errors when SE Linux denies access to files under /proc [1]&lt;/a&gt;.&lt;/p&gt;
&lt;pre&gt;Ran into unknown state (hex char: 0) at /tmp/test.pl line 8.&lt;/pre&gt;
&lt;p&gt;The errors are of the above form which Google didn’t find before now so obviously isn’t a common situation, below is my test program.&lt;/p&gt;
&lt;pre&gt;#!/usr/bin/perl
use strict;

use Proc::ProcessTable;

my $process_table = new Proc::ProcessTable(&#39;cache_ttys&#39; =&amp;gt; 0 );

foreach my $process ( @{$process_table-&amp;gt;table} )
{
  print $process-&amp;gt;fname . &quot;\n&quot;;
}&lt;/pre&gt;
&lt;p&gt;Here is the relevant part of strace output:&lt;/p&gt;
&lt;pre&gt;newfstatat(AT_FDCWD, &quot;/proc/2&quot;, 0x7fff19533c10, 0) = -1 EACCES (Permission denied)
openat(AT_FDCWD, &quot;/proc/2/stat&quot;, O_RDONLY) = -1 EACCES (Permission denied)
access(&quot;/proc/2&quot;, F_OK)                 = 0
write(2, &quot;Ran into unknown state (hex char: 0) at /tmp/test.pl line 8.\n&quot;, 61) = 61&lt;/pre&gt;
&lt;p&gt;Below is the apt sources.list line for my personal repository which has a version of the package with this fix. The gpg key is in the &lt;b&gt;etbe-base&lt;/b&gt; package in that repository and the source is all there. &lt;a href=&quot;https://www.coker.com.au/dists/trixie/misc/binary-amd64/&quot;&gt;To access it without apt use this web page [2]&lt;/a&gt;.&lt;/p&gt;
&lt;pre&gt;deb [signed-by=/usr/share/keyrings/etbe.gpg arch=amd64 ] https://www.coker.com.au trixie misc&lt;/pre&gt;
&lt;p&gt;I’ve also done some work on the &lt;b&gt;ps.monitor&lt;/b&gt; script in etbe-mon that uses this Perl package and made it better handle program names longer than 15 characters. That improvement apparently only works on Linux, Darwin, and Cygwin. People who want things to work better on BSD etc could patch libproc-processtable-perl accordingly.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[1]&lt;a href=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1142050&quot;&gt; https://tinyurl.com/2ckw4kh2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[2]&lt;a href=&quot;https://www.coker.com.au/dists/trixie/misc/binary-amd64/&quot;&gt; https://www.coker.com.au/dists/trixie/misc/binary-amd64/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;yarpp yarpp-related yarpp-related-rss yarpp-template-list&quot;&gt;

&lt;p&gt;Related posts:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://etbe.coker.com.au/2022/03/31/amt-mebx-debian/&quot; rel=&quot;bookmark&quot; title=&quot;AMT/MEBX on Debian&quot;&gt;AMT/MEBX on Debian&lt;/a&gt; &lt;small&gt;I’ve just been playing with Intel’s Active Management Technology (AMT)...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://etbe.coker.com.au/2007/07/21/unaligned-access-on-ia64/&quot; rel=&quot;bookmark&quot; title=&quot;unaligned access on IA64&quot;&gt;unaligned access on IA64&lt;/a&gt; &lt;small&gt;I recently had some problems with unaligned access on IA64,...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://etbe.coker.com.au/2026/05/09/amazfish-debian/&quot; rel=&quot;bookmark&quot; title=&quot;Packaging Amazfish for Debian&quot;&gt;Packaging Amazfish for Debian&lt;/a&gt; &lt;small&gt;I have done some packaging work on Amazfish (the smart-watch...&lt;/small&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt; </description> 
	<pubDate>Wed, 15 Jul 2026 07:07:04 +0000</pubDate>

</item> 
<item>
	<title>Dirk Eddelbuettel: qlcal 0.1.2 on CRAN: Fresh Upstream Updates</title>
	<guid>http://dirk.eddelbuettel.com/blog/2026/07/14#qlcal-r_0.1.2</guid>
	<link>http://dirk.eddelbuettel.com/blog/2026/07/14#qlcal-r_0.1.2</link>
     <description>  &lt;img src=&quot;http://planet.debian.org/heads/dirk.png&quot; width=&quot;65&quot; height=&quot;90&quot; alt=&quot;&quot; align=&quot;right&quot; style=&quot;float: right;&quot;&gt;  &lt;p&gt;The twentieth release of the &lt;a href=&quot;https://dirk.eddelbuettel.com/code/qlcal-r.html&quot;&gt;qlcal&lt;/a&gt; package
arrivied at &lt;a href=&quot;https://cran.r-project.org&quot;&gt;CRAN&lt;/a&gt; today, and has
been built for &lt;a href=&quot;https://eddelbuettel.github.io/r2u/&quot;&gt;r2u&lt;/a&gt;.
This version synchronises with &lt;a href=&quot;https://www.quantlib.org&quot;&gt;QuantLib&lt;/a&gt; 1.43 released today as
well.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://dirk.eddelbuettel.com/code/qlcal-r.html&quot;&gt;qlcal&lt;/a&gt;
delivers the calendaring parts of &lt;a href=&quot;https://www.quantlib.org&quot;&gt;QuantLib&lt;/a&gt;. It is provided (for the R
package) as a set of included files, so the package is self-contained
and does not depend on an external &lt;a href=&quot;https://www.quantlib.org&quot;&gt;QuantLib&lt;/a&gt; library (which can be
demanding to build). &lt;a href=&quot;https://dirk.eddelbuettel.com/code/qlcal-r.html&quot;&gt;qlcal&lt;/a&gt; covers
over seventy country / market calendars and can compute holiday lists,
its complement (&lt;em&gt;i.e.&lt;/em&gt; business day lists) and much more.
Examples are in the README at the &lt;a href=&quot;https://github.com/qlcal/qlcal-r&quot;&gt;repository&lt;/a&gt;, the &lt;a href=&quot;https://dirk.eddelbuettel.com/code/qlcal-r.html&quot;&gt;package page&lt;/a&gt;,
and course at the &lt;a href=&quot;https://cran.r-project.org/package=qlcal&quot;&gt;CRAN package
page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This releases updates to several new calendars (see below), and
extends the calendars for Israel to some added new conventions, updates
a few helper functions, and turns on &lt;code&gt;ccache&lt;/code&gt; for continuous
integration builds.&lt;/p&gt;
&lt;p&gt;The full details from &lt;code&gt;NEWS.Rd&lt;/code&gt; follow.&lt;/p&gt;
&lt;blockquote&gt;
&lt;h4 id=&quot;changes-in-version-0.1.2-2026-07-14&quot;&gt;Changes in version 0.1.2
(2026-07-14)&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Synchronized with QuantLib 1.43&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Calendar updates for India, Israel, and South Korea; small
interface update for Israle&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;New calendars for Croatia, Malta, Montenegro, North Macedonia,
Serbia, Slovenia, Uzebekistan&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Updates to a number of QuantLib helper functions&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Continuous integration now uses ccache via a setup
action&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Courtesy of my &lt;a href=&quot;https://dirk.eddelbuettel.com/cranberries/&quot;&gt;CRANberries&lt;/a&gt;, there
is a diffstat report for &lt;a href=&quot;https://dirk.eddelbuettel.com/cranberries/2026/07/14/#qlcal_0.1.2&quot;&gt;this
release&lt;/a&gt;. See the &lt;a href=&quot;https://dirk.eddelbuettel.com/code/qlcal-r.html&quot;&gt;project page&lt;/a&gt;
and package documentation for more details, and more examples.&lt;/p&gt;
&lt;p style=&quot;font-size: 80%; font-style: italic;&quot;&gt;
This post by &lt;a href=&quot;https://dirk.eddelbuettel.com&quot;&gt;Dirk
Eddelbuettel&lt;/a&gt; originated on his &lt;a href=&quot;https://dirk.eddelbuettel.com/blog/&quot;&gt;Thinking inside the box&lt;/a&gt;
blog. If you like this or other open-source work I do, you can &lt;a href=&quot;https://github.com/sponsors/eddelbuettel&quot;&gt;sponsor me at
GitHub&lt;/a&gt;.
&lt;/p&gt;&lt;p&gt;&lt;/p&gt; </description> 
	<pubDate>Wed, 15 Jul 2026 01:49:00 +0000</pubDate>

</item> 
<item>
	<title>Freexian Collaborators: Debian Contributions: Python 3.14 as default transition, DebConf 26 preparations, debvm, pconr and more! (by Anupa Ann Joseph)</title>
	<guid>https://www.freexian.com/blog/debian-contributions-06-2026/</guid>
	<link>https://www.freexian.com/blog/debian-contributions-06-2026/</link>
     <description>  &lt;img src=&quot;http://planet.debian.org/heads/freexian.png&quot; width=&quot;215&quot; height=&quot;101&quot; alt=&quot;&quot; align=&quot;right&quot; style=&quot;float: right;&quot;&gt;  &lt;h1 id=&quot;debian-contributions-2026-06&quot;&gt;Debian Contributions: 2026-06&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://www.freexian.com/about/debian-contributions/&quot;&gt;Contributing to Debian&lt;/a&gt;
is part of &lt;a href=&quot;https://www.freexian.com/about/&quot;&gt;Freexian’s mission&lt;/a&gt;. This article
covers the latest achievements of Freexian and their collaborators. All of this
is made possible by organizations subscribing to our
&lt;a href=&quot;https://www.freexian.com/lts/&quot;&gt;Long Term Support contracts&lt;/a&gt; and
&lt;a href=&quot;https://www.freexian.com/services/&quot;&gt;consulting services&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;python-314-as-default-transition-by-stefano-rivera&quot;&gt;Python 3.14 as default transition, by Stefano Rivera&lt;/h2&gt;
&lt;p&gt;Debian has had Python 3.13 and 3.14 in &lt;code&gt;unstable&lt;/code&gt; and &lt;code&gt;testing&lt;/code&gt; since December
2025, with Python 3.13 as the default version (&lt;code&gt;/usr/bin/python3&lt;/code&gt; = 3.13). This
gave time for packages to implement support and detect issues in their test suites.&lt;/p&gt;
&lt;p&gt;A slot to transition to 3.14 as default was requested from the release team
&lt;a href=&quot;https://bugs.debian.org/1130323&quot;&gt;in March&lt;/a&gt;, and they indicated that we would
likely be able to schedule it in late June. In preparation, Stefano reviewed the
open bugs against Python interpreters and squashed some in uploads of the latest
point releases of Python: &lt;a href=&quot;https://www.python.org/downloads/release/python-31314/&quot;&gt;3.13.14&lt;/a&gt;
and &lt;a href=&quot;https://www.python.org/downloads/release/python-3146/&quot;&gt;3.14.6&lt;/a&gt;. Also in
June, Python &lt;a href=&quot;https://www.python.org/downloads/release/python-3150b2/&quot;&gt;3.15.0 beta 2&lt;/a&gt;
and &lt;a href=&quot;https://www.python.org/downloads/release/python-3150b3/&quot;&gt;beta 3&lt;/a&gt; released.
Stefano uploaded these to Debian &lt;code&gt;experimental&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The 3.15 betas were reason to &lt;a href=&quot;https://discuss.python.org/t/can-we-consider-an-uncoditional-change-of-abi3t-so-to-abi3t-soabi-platform-so-for-3-15-last-minute/107919&quot;&gt;attempt to revive review&lt;/a&gt;
of a blocked &lt;a href=&quot;https://github.com/python/cpython/pull/122917&quot;&gt;upstream patch&lt;/a&gt; to
support Debian multiarch in stable ABI Python extensions, now that Python 3.15
is adding a new stable ABI &lt;code&gt;abi3t&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&quot;debconf-26-preparations-by-stefano-rivera-antonio-terceiro-lucas-kanashiro-santiago-ruano-rincón-and-anupa-ann-joseph&quot;&gt;DebConf 26 preparations, by Stefano Rivera, Antonio Terceiro, Lucas Kanashiro, Santiago Ruano Rincón and Anupa Ann Joseph&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://debconf26.debconf.org/&quot;&gt;DebConf 26&lt;/a&gt;, the annual Debian Developer
Conference, is being held in Santa Fe, Argentina, in July. Stefano Rivera,
Antonio Terceiro, Lucas Kanashiro, Santiago Ruano and Anupa Ann Joseph
contributed to the preparations for the event.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;As usual, Stefano has been supporting the conference website and registration,
helping the local team to get accurate data on attendee numbers.&lt;/li&gt;
&lt;li&gt;Antonio has been supporting the conference website and helping the content
team to put together the conference schedule.&lt;/li&gt;
&lt;li&gt;Santiago has been helping the local team on different topics regarding logistics.&lt;/li&gt;
&lt;li&gt;Anupa assisted with the accommodation arrangements for DebCamp and DebConf,
working alongside Nattie.&lt;/li&gt;
&lt;li&gt;Lucas has been coordinating the conference schedule and communicating with
some speakers.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;debvm-by-helmut-grohne&quot;&gt;debvm, by Helmut Grohne&lt;/h2&gt;
&lt;p&gt;The &lt;a href=&quot;https://salsa.debian.org/helmutg/debvm&quot;&gt;debvm&lt;/a&gt; tool used for creating and
running ephemeral virtual machines saw a number of small improvements. The
requirement of having a filesystem label has been removed in favor of using a
uuid and &lt;code&gt;/etc/fstab&lt;/code&gt; is no longer created. A memory balloon is enabled by
default and this enables qemu to automatically release free guest memory to the
host. Booting Ubuntu VMs regressed as a result of their use of &lt;code&gt;uutils&lt;/code&gt; and has
been fixed. The &lt;code&gt;--architecture&lt;/code&gt; flag is back to be able to better support Hurd,
which is a work-in-progress of Johannes Schauer Marin Rodrigues. Thanks to
Jochen Sprickerhof, you can more easily create VMs for &lt;code&gt;autopkgtest-virt-qemu&lt;/code&gt;
using &lt;code&gt;--hook-dir=/usr/share/mmdebstrap/hooks/autopkgtest-create-qemu&lt;/code&gt;. There
also are a few documentation and error message improvements. All of this is
pending in git waiting to be uploaded once development slows down. While booting
a machine from &lt;code&gt;virtiofsd&lt;/code&gt; succeeded, turning the proof-of-concept into
production remains for later.&lt;/p&gt;
&lt;h2 id=&quot;pconr-by-helmut-grohne&quot;&gt;pconr, by Helmut Grohne&lt;/h2&gt;
&lt;p&gt;At &lt;a href=&quot;https://debconf25.debconf.org/talks/170-reviving-unschroot/&quot;&gt;DebConf25&lt;/a&gt;,
Helmut reported on a &lt;a href=&quot;https://codeberg.org/shelter/reschroot&quot;&gt;schroot&lt;/a&gt;
substitute called unschroot. The second iteration uses &lt;a href=&quot;https://varlink.org&quot;&gt;varlink&lt;/a&gt;
IPC to construct a container. That varlink API is now separated into a new
project called &lt;a href=&quot;https://git.subdivi.de/~helmut/pconr.git/&quot;&gt;programmable container runtime&lt;/a&gt;.
It is meant to provide more flexibility in constructing containers than
established solutions such as the &lt;code&gt;unshare&lt;/code&gt; command from util-linux, bubblewrap
or podman provide while still managing repetitive complexity such as process
orchestration for the developer. A new example that uses this infrastructure is
&lt;a href=&quot;https://git.subdivi.de/~helmut/pconr.git/tree/examples/mmdebstrap_container.py&quot;&gt;a better containment for mmdebstrap&lt;/a&gt;
eliminating chroot escape. There also is an
&lt;a href=&quot;https://github.com/helmutg/asyncvarlink/commit/3e16139f72c7374f2ca3640045ef7162c98e7a4c&quot;&gt;asyncvarlink/0.3.2 release&lt;/a&gt;
taking steps to become more maintainable in Debian to eventually get pconr into
Debian.&lt;/p&gt;
&lt;h2 id=&quot;miscellaneous-contributions&quot;&gt;Miscellaneous contributions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Stefano did routine uploads (mostly new upstream versions) of &lt;code&gt;python-pip&lt;/code&gt;,
&lt;code&gt;python-pipx&lt;/code&gt;, &lt;code&gt;hatchling&lt;/code&gt;, &lt;code&gt;dh-python&lt;/code&gt;, &lt;code&gt;beautifulsoup4&lt;/code&gt;, &lt;code&gt;python-virtualenv&lt;/code&gt;,
&lt;code&gt;python-mitogen&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Stefano uploaded a snowball mini-transition: &lt;code&gt;snowball&lt;/code&gt;, &lt;code&gt;snowball-data&lt;/code&gt;,
and &lt;code&gt;pystemmer&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Stefano did some &lt;a href=&quot;https://wiki.debian.org/Teams/DebianNet&quot;&gt;debian.net&lt;/a&gt; team
admin, setting up a container and later a VM for
&lt;a href=&quot;https://salsa.debian.org/debiannet-team/requests/-/work_items/36&quot;&gt;vote.debian.net&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Stefano &lt;a href=&quot;https://lists.debian.org/msgid-search/cer4b3szczxpt64wbzhumcm6go7tmkfvhdsqoftpevav2ovu3l@zherud2oym4p&quot;&gt;responded&lt;/a&gt;
to a &lt;a href=&quot;https://lists.debian.org/msgid-search/CAEd1pt5QiD9-UUV5jP=U7=L2pM5f6c1WPcUY3jWoYbcTO8iRcw@mail.gmail.com&quot;&gt;semi-escalation&lt;/a&gt;
to the Debian Technical Committee, after some communication between an upstream,
a bug reporter, and a Debian package maintainer went sideways and got heated.&lt;/li&gt;
&lt;li&gt;Emilio managed several transitions, and filed bugs against the few remaining
GCC 13 rdeps.&lt;/li&gt;
&lt;li&gt;Antonio did salsa maintenance work, debugging service issues, approving user
registrations, and processing support requests.&lt;/li&gt;
&lt;li&gt;Antonio worked on Debian CI maintenance, including but not limited to
deploying new armhf and armel workers, fixing bugs and preparing an upcoming
release of debci.&lt;/li&gt;
&lt;li&gt;Antonio did several maintenance tasks for MiniDebConf websites.&lt;/li&gt;
&lt;li&gt;Antonio uploaded ruby-bunny, ruby-sinatra and ruby-mustermann, fixing a few
FTBFS bugs among them.&lt;/li&gt;
&lt;li&gt;Carles using &lt;code&gt;&lt;a href=&quot;https://salsa.debian.org/carlespina/po-debconf-manager&quot;&gt;po-debconf-manager&lt;/a&gt;&lt;/code&gt;:
Reviewed Catalan translations for 5 packages, submitted 6 packages. Added a
&lt;a href=&quot;https://salsa.debian.org/carlespina/po-debconf-manager/-/blob/main/docs/blog/2026-06-29-update.md?ref_type=heads&quot;&gt;draft blog/update&lt;/a&gt;
about the po-debconf-manager project.&lt;/li&gt;
&lt;li&gt;Carles submitted a new &lt;a href=&quot;https://github.com/BestImageViewer/geeqie/pull/2438&quot;&gt;Geeqie Catalan translation&lt;/a&gt;:
it had accumulated a large number of untranslated strings over the last 4 years.&lt;/li&gt;
&lt;li&gt;Carles contributed to the Debian wiki: improved documentation for the
Framework Laptop and added a new section “&lt;a href=&quot;https://wiki.debian.org/InstallingDebianOn/Framework/Laptop13/AMD_Ryzen_AI_300_Series#Battery_charging_control&quot;&gt;Battery charging control&lt;/a&gt;”
(after doing some debugging and testing). He wrote a page about
&lt;a href=&quot;https://wiki.debian.org/SignalDesktop&quot;&gt;Signal Desktop&lt;/a&gt;. Carles started looking
at testing/documenting Mailman2 -&amp;gt; Mailman3 migration.&lt;/li&gt;
&lt;li&gt;Carles, in relation to the migration process, double checked old pages without
relevant information in the Debian wiki.&lt;/li&gt;
&lt;li&gt;Thorsten did another upload of package hplip to fix some bugs.&lt;/li&gt;
&lt;li&gt;In the context of the Google Summer of Code 2026 project, Santiago continued
co-mentoring Aryan Karamtoth, who is working on the Linux live-patching project.
As part of the team, Santiago guided Aryan to help design the different
workflows and to study the different tools available, including the
&lt;a href=&quot;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/scripts/livepatch/klp-build?h=v6.19&quot;&gt;upstream klp-build&lt;/a&gt;
(that was introduced in v6.19), and compare it with &lt;a href=&quot;https://github.com/SUSE/klp-build/&quot;&gt;SUSE’s klp-build&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Colin &lt;a href=&quot;https://salsa.debian.org/webmaster-team/webwml/-/merge_requests/1149&quot;&gt;clarified&lt;/a&gt;
the bug tracking system’s documentation to indicate that maintainers may
sometimes reasonably ask users to file bugs upstream themselves.&lt;/li&gt;
&lt;li&gt;Colin fixed 15 packages for &lt;a href=&quot;https://udd.debian.org/cgi-bin/bts-usertags.cgi?user=debian-python%40lists.debian.org&amp;amp;tag=pytest9.1&quot;&gt;pytest 9.1&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Colin fixed a &lt;a href=&quot;https://bugs.debian.org/1140927&quot;&gt;depthcharge-tools regression with Python 3.14 as default&lt;/a&gt;
that broke debian-installer builds.&lt;/li&gt;
&lt;li&gt;Helmut continued to report undeclared file conflicts and correspond about them.&lt;/li&gt;
&lt;li&gt;Helmut wrote patches for &lt;a href=&quot;https://tracker.debian.org/strace&quot;&gt;strace&lt;/a&gt; to enable
&lt;a href=&quot;https://bugs.debian.org/1140559&quot;&gt;cross building&lt;/a&gt; and a
&lt;a href=&quot;https://bugs.debian.org/1062446&quot;&gt;32bit personality on arm64&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Helmut continued maintaining rebootstrap working fixing build failures in
fontconfig, gettext and sqlite3 as well as changing the way packages from gcc
builds are installed to better serve a need reported by
&lt;a href=&quot;https://lists.debian.org/debian-cross/2026/06/msg00005.html&quot;&gt;Samuel Thibault&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt; </description> 
	<pubDate>Wed, 15 Jul 2026 00:00:00 +0000</pubDate>

</item> 
<item>
	<title>Gunnar Wolf: Got your keys ready for DebConf26?</title>
	<guid>https://gwolf.org/2026/07/got-your-keys-ready-for-debconf26.html</guid>
	<link>https://gwolf.org/2026/07/got-your-keys-ready-for-debconf26.html</link>
     <description>  &lt;img src=&quot;http://planet.debian.org/heads/gwolf.png&quot; width=&quot;69&quot; height=&quot;83&quot; alt=&quot;&quot; align=&quot;right&quot; style=&quot;float: right;&quot;&gt;  &lt;p&gt;Yay! Finally it’s that time of year — DebCamp is underway, and soon it will
be time for DebConf! 🎉🥳&lt;/p&gt;

&lt;p&gt;As it is by now tradition, it’s my task to coordinate the DebConf26
keysigning party. And, as usual, I have set up the list of &lt;a href=&quot;https://people.debian.org/~gwolf/dc26_ksp/&quot;&gt;DebConf26
keysigning maps&lt;/a&gt; for everybody
involved.&lt;/p&gt;

&lt;p&gt;So, if you are taking part of DebConf, make sure to:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Find yourself in the &lt;a href=&quot;https://people.debian.org/~gwolf/dc26_ksp/&quot;&gt;keysigning
map&lt;/a&gt;. Are you a part of the
listing?&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;If you are not there, log in to the DebConf26 management system and
edit the &lt;a href=&quot;https://debconf26.debconf.org/register/step-3&quot;&gt;Personal
Information&lt;/a&gt; section of
your profile. Make sure you submit your OpenPGP key fingerprint.&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Make sure your key is available in the keyserver network. They should
basically be equivalent and interoperate, but in any case — my scripts
will try to find your key at &lt;a&gt;pgpkeys.eu&lt;/a&gt;,
&lt;a&gt;keys.openpgp.org&lt;/a&gt;,
&lt;a&gt;keyserver.computer42.org&lt;/a&gt;,
&lt;a&gt;keyserver.ubuntu.com&lt;/a&gt;,
&lt;a&gt;keyring.debian.org&lt;/a&gt;,
&lt;a&gt;pgp.surf.nl&lt;/a&gt;, &lt;a&gt;pgp.pm&lt;/a&gt;,
&lt;a&gt;pgp.mit.edu&lt;/a&gt;, &lt;a&gt;the.earth.li&lt;/a&gt;.&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Make sure your name is readable and matches what you want others to
sign. If it does not, edit your key and upload it &lt;em&gt;now&lt;/em&gt;!&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Remember that, &lt;a href=&quot;https://debconf26.debconf.org/about/ksp/&quot;&gt;as announced&lt;/a&gt;,
the deadline for the final list is on &lt;strong&gt;Thursday, 2026.07.16, 09:00 GMT-3
(Argentinian time).&lt;/strong&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt; </description> 
	<pubDate>Tue, 14 Jul 2026 21:23:21 +0000</pubDate>

</item> 
<item>
	<title>Jonas Meurer: zed-xdebug</title>
	<guid>https://blog.freesources.org//posts/2026/07/zed-xdebug/</guid>
	<link>https://blog.freesources.org//posts/2026/07/zed-xdebug/</link>
     <description>  &lt;h1 id=&quot;Nextcloud_PHP_debugging_with_Xdebug_in_Zed_editor&quot;&gt;Nextcloud PHP debugging with Xdebug in Zed editor&lt;/h1&gt;

&lt;p&gt;I started to switch from PhpStorm to Zed as IDE recently as Zed is open source
and has a much smaller footprint and is more slick than PhpStorm.&lt;/p&gt;

&lt;p&gt;One thing that I didn&#39;t get running immediately was Xdebug integration, so I did
a bit of research and asked Claude for help. Here&#39;s a quick writeup of how to
get it running.&lt;/p&gt;

&lt;p&gt;I have Zed installed as Flatpak on a Debian Trixie host system.&lt;/p&gt;

&lt;p&gt;The PHP process runs in a &lt;a href=&quot;https://github.com/juliusknorr/nextcloud-docker-dev/&quot;&gt;nextcloud-docker-dev&lt;/a&gt;
Docker container.&lt;/p&gt;

&lt;h2 id=&quot;Install_Zed_and_configure_debugging_there&quot;&gt;Install Zed and configure debugging there&lt;/h2&gt;

&lt;p&gt;Install Zed: &lt;code&gt;flatpak install flathub dev.zed.Zed&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;In Zed: open the Extensions view and install PHP.&lt;/p&gt;

&lt;p&gt;Configure the debugger:&lt;/p&gt;

&lt;p&gt;Create &lt;code&gt;~/.var/app/dev.zed.Zed/config/zed/debug.json&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;json&quot;&gt;[
  {
    &quot;label&quot;: &quot;PHP: Listen to Xdebug&quot;,
    &quot;adapter&quot;: &quot;Xdebug&quot;,
    &quot;request&quot;: &quot;launch&quot;,
    &quot;port&quot;: 9003,
    &quot;pathMappings&quot;: {
      &quot;/var/www/html&quot;:             &quot;/home/&amp;lt;user&amp;gt;/devel/nextcloud/server&quot;,
      &quot;/var/www/html/apps-extra&quot;:  &quot;/home/&amp;lt;user&amp;gt;/devel/nextcloud/server/apps-extra&quot;,
      &quot;/var/www/html/apps-shared&quot;: &quot;/home/&amp;lt;user&amp;gt;/devel/nextcloud/apps-shared&quot;
    }
  }
]
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Add one entry per bind-mounted app directory.&lt;/p&gt;

&lt;p&gt;After creating the file, restart Zed.&lt;/p&gt;

&lt;p&gt;Inside Zed, select &quot;debugger: start&quot; from command palette and then &quot;PHP: Listen to Xdebug&quot;.&lt;/p&gt;

&lt;p&gt;Verify Zed is listening. Running &lt;code&gt;ss -tlnp | grep 9003&lt;/code&gt; on the host should show &lt;code&gt;*:9003&lt;/code&gt; with Zed as the process.&lt;/p&gt;

&lt;h2 id=&quot;Configure_Xdebug_inside_the_container&quot;&gt;Configure Xdebug inside the container&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;/usr/local/etc/php/conf.d/xdebug.ini&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;ini&quot;&gt;xdebug.mode = debug
xdebug.idekey = PHPSTORM
xdebug.trace_output_name=trace.%R.%u
xdebug.profiler_output_name=profile.%R.%u
xdebug.output_dir=/shared/xdebug

xdebug.log = /var/log/xdebug.log
xdebug.log_level = 3

; Try to discover the client host, otherwise fall back to the docker host
xdebug.discover_client_host=true
xdebug.client_host=host.docker.internal

; When you cannot specify a trigger, use &quot;xdebug.start_with_request = yes&quot; to autostart debugging for all requests
; https://xdebug.org/docs/all_settings#start_with_request
xdebug.start_with_request = trigger

; Set xdebug.mode trace to use this
; More details at https://derickrethans.nl/flamboyant-flamegraphs.html
xdebug.trace_format=3
xdebug.trace_output_name=xdebug.%R.%u
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Apply changes by restarting apache in the container: &lt;code&gt;apache2ctl -k graceful&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Notes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;host.docker.internal&lt;/code&gt; resolves on Linux Docker only if the container was started with &lt;code&gt;--add-host=host.docker.internal:host-gateway&lt;/code&gt; (nextcloud-docker-dev already does this).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;discover_client_host = true&lt;/code&gt; makes xdebug follow &lt;code&gt;X-Forwarded-For&lt;/code&gt; - useful behind Nextcloud&#39;s dev reverse proxy.&lt;/li&gt;
&lt;/ul&gt;


&lt;h2 id=&quot;Test_xdebug_with_a_PHP_command_inside_the_container&quot;&gt;Test xdebug with a PHP command inside the container&lt;/h2&gt;

&lt;p&gt;Run &lt;code&gt;XDEBUG_SESSION=PHPSTORM php occ status&lt;/code&gt; inside the container and check &lt;code&gt;/var/log/xdebug.log&lt;/code&gt;.&lt;/p&gt;

&lt;h2 id=&quot;Install_the_browser_extension&quot;&gt;Install the browser extension&lt;/h2&gt;

&lt;p&gt;Install Xdebug Helper (Firefox/Chrome). In its preferences, set the IDE Key to PhpStorm. It will set the &lt;code&gt;XDEBUG_SESSION&lt;/code&gt; cookie when toggled to Debug.&lt;/p&gt;

&lt;p&gt;Click the Xdebug Helper icon in the browser and set it to Debug.&lt;/p&gt;

&lt;h2 id=&quot;Test_Xdebug_with_browser_extension&quot;&gt;Test Xdebug with browser extension&lt;/h2&gt;

&lt;p&gt;Load the URL that exercises the code path with the breakpoint. Zed should stop the code exection at the breakpoint.&lt;/p&gt; </description> 
	<pubDate>Tue, 14 Jul 2026 10:46:20 +0000</pubDate>

</item> 
<item>
	<title>Kentaro Hayashi: Try to build Mozc with Bazel 7.7.1</title>
	<guid>hatenablog://entry/14945776032052860672</guid>
	<link>https://kenhys.hatenablog.jp/entry/2026/07/12/231009</link>
     <description>  &lt;img src=&quot;http://planet.debian.org/heads/kenhys.png&quot; width=&quot;72&quot; height=&quot;85&quot; alt=&quot;&quot; align=&quot;right&quot; style=&quot;float: right;&quot;&gt;  &lt;h2 id=&quot;Introduction&quot;&gt;Introduction&lt;/h2&gt;

&lt;p&gt;Recently, I&#39;ve got a chance to try building Mozc (Most famous Japanese input method editor) with Bazel.&lt;/p&gt;

&lt;p&gt;As you know, recently newer Bazel related packages were landed into
debian/unstable.
Then now I&#39;m planning to update Mozc from 2.29.5160.102
to 3.33.6133.&lt;/p&gt;

&lt;h2 id=&quot;Background-story-about-Mozc-and-Debian&quot;&gt;Background story about Mozc and Debian&lt;/h2&gt;

&lt;p&gt;The upstream of Mozc had released 3.34.6239, but on Debian,
we stick to Mozc 2.29.5160.102.&lt;/p&gt;

&lt;p&gt;Mozc requires newer Bazel but we only had Bazel 4.2.3 at that time on Debian, so even though the upstream of Mozc switched from GYP to Bazel,
we had patched Mozc with GYP based package.&lt;/p&gt;

&lt;p&gt;We even did make an effort to restore build options that had been already removed. :-(
And needed to migrate from GTK2 renderer to GTK3 renderer.&lt;/p&gt;

&lt;p&gt;That is why the version of Mozc is diverged from upstream on Debian.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;2.29.5160.102 (Now on Debian)&lt;/li&gt;
&lt;li&gt;2.29.5268.102&lt;/li&gt;
&lt;li&gt;2.29.5374.102&lt;/li&gt;
&lt;li&gt;2.29.5544.102&lt;/li&gt;
&lt;li&gt;2.30.5544.102&lt;/li&gt;
&lt;li&gt;2.31.5712.102&lt;/li&gt;
&lt;li&gt;2.31.5851.102&lt;/li&gt;
&lt;li&gt;2.32.5994.102&lt;/li&gt;
&lt;li&gt;3.33.6089&lt;/li&gt;
&lt;li&gt;3.33.6133 (Target to upgrade for)&lt;/li&gt;
&lt;li&gt;3.34.6239&lt;/li&gt;
&lt;/ul&gt;


&lt;h2 id=&quot;How-to-switch-from-GYP-to-Bazel&quot;&gt;How to switch from GYP to Bazel?&lt;/h2&gt;

&lt;p&gt;At first, we needed to decide what Mozc version to work with it.&lt;/p&gt;

&lt;p&gt;Now latest version of Mozc is 3.34.x, but it requires Bazel 9.x.
Please recall that Bazel 7.7.1 was introduced Debian/unstable.
And more, newer dependency libraries are required.&lt;/p&gt;

&lt;p&gt;You might feel that target version (3.33.6133) is too high from 2.29.5160.102,
but if we upgrade to more older Mozc, it means that it
requires to backport Mozc to older libabsl compatible codes and so on.&lt;/p&gt;

&lt;p&gt;That is why Mozc 3.33.6133 was chosen.&lt;/p&gt;

&lt;p&gt;Even once the target version has been decided, you can&#39;t let your guard down.&lt;/p&gt;

&lt;p&gt;There are many technical tasks to solve.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Revisit patch sets to apply&lt;/li&gt;
&lt;li&gt;Porting uim mozc patch and fix FTBFS&lt;/li&gt;
&lt;li&gt;Porting fcitx5 mozc patch and fix FTBFS&lt;/li&gt;
&lt;li&gt;Fix src/third_party vendoring&lt;/li&gt;
&lt;li&gt;Switch from GYP to Bazel build systems&lt;/li&gt;
&lt;li&gt;...&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;At least, it will likely require several rounds of testing in the
Debian experimental.&lt;/p&gt;

&lt;h2 id=&quot;Conclusion&quot;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;Currently, &lt;code&gt;gbp buildpackge&lt;/code&gt; has succeeded finally on local machine,
but need to tidy and cleanup stuffs.&lt;/p&gt;

&lt;p&gt;I didn&#39;t know packaging with Bazel best practice yet, to remove many third party vendor/ bundles, I&#39;ve found that it requires pile of patch to eliminate them.&lt;/p&gt;

&lt;p&gt;In the current version of Debian, as a one of build system, further work — such as support from debhelper -
will be needed.&lt;/p&gt;

&lt;p&gt;I&#39;ll file working progress on &lt;a href=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1085173&quot;&gt;#1085173&lt;/a&gt;&lt;/p&gt; </description> 
	<pubDate>Sun, 12 Jul 2026 14:10:09 +0000</pubDate>

</item> 
<item>
	<title>Vasudev Kamath: Releasing debvulns-exporter: Prometheus exporter for Debian System Vulnerabilities</title>
	<guid>tag:copyninja.in,2026-07-21:/blog/debvulns-exporter.html</guid>
	<link>https://copyninja.in/blog/debvulns-exporter.html</link>
     <description>  &lt;img src=&quot;http://planet.debian.org/heads/vasudev.png&quot; width=&quot;65&quot; height=&quot;85&quot; alt=&quot;&quot; align=&quot;right&quot; style=&quot;float: right;&quot;&gt;  &lt;p&gt;Following up on my previous &lt;a class=&quot;reference external&quot; href=&quot;https://copyninja.in/blog/debvulns-cli.html&quot;&gt;post&lt;/a&gt;, I am releasing
&lt;a class=&quot;reference external&quot; href=&quot;https://pypi.org/project/debvulns/&quot;&gt;debvulns-exporter&lt;/a&gt;, a Prometheus exporter
for tracking Debian system vulnerabilities. The underlying vulnerability
analysis logic remains identical to the  previously released MCP server and CLI
utility.&lt;/p&gt;
&lt;div class=&quot;section&quot; id=&quot;why-an-exporter&quot;&gt;
&lt;h2&gt;Why an Exporter?&lt;/h2&gt;
&lt;p&gt;In my engineering workflows, I frequently deal with Debian and vulnerability
management. Most enterprise environments rely on commercial, paid vulnerability
platforms like Tenable or Rapid7. While these platforms provide extensive
feature sets, I noticed a distinct lack of open-source tools tailored for this
specific pipeline. While &lt;cite&gt;debsecan&lt;/cite&gt; exists, it lacks a structured, parseable
format suitable for building dashboards aimed at management consumption. What
started as an experimental MCP server for learning purposes evolved into a
practical question: why not convert it into a Prometheus exporter? Given that
Prometheus is the de facto standard metrics platform across the industry, this
architecture was the logical next step.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;design-and-exported-metrics&quot;&gt;
&lt;h2&gt;Design and Exported Metrics&lt;/h2&gt;
&lt;p&gt;The exporter is implemented as a native Prometheus exporter utilizing the
&lt;cite&gt;prometheus-client&lt;/cite&gt; library. It operates using two threads: one handles fetching
the vulnerability data, parsing EPSS feeds, and cross-referencing installed
packages to identify local vulnerabilities; the second handles serving the
metrics endpoint. The full architecture details and metrics specifications can
be found in the &lt;a class=&quot;reference external&quot; href=&quot;https://github.com/copyninja/debsecan-mcp/blob/main/docs/prometheus_exporter_design.md&quot;&gt;design doc&lt;/a&gt;.
The specification was drafted during a technical brainstorming session with
&lt;em&gt;Claude 4.6 Sonnet&lt;/em&gt; on &lt;em&gt;Antigravity&lt;/em&gt; prior to writing the implementation.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;testing-and-dashboarding&quot;&gt;
&lt;h2&gt;Testing and Dashboarding&lt;/h2&gt;
&lt;p&gt;To validate the exporter, I spun up older &lt;em&gt;Debian 11&lt;/em&gt; and &lt;em&gt;Debian 12&lt;/em&gt; cloud
images sourced from the &lt;a class=&quot;reference external&quot; href=&quot;https://cloud.debian.org/images/cloud/&quot;&gt;Debian Cloud team&lt;/a&gt;. The older image was intentionally
selected to guarantee a standard baseline of unpatched vulnerabilities for
testing. The local evaluation topology is structured as shown below:&lt;/p&gt;
&lt;img alt=&quot;&quot; src=&quot;https://copyninja.in/images/debvulns-exporter-setup.png&quot; /&gt;
&lt;p&gt;Rather than constructing the Grafana dashboard from scratch, I used Claude 4.6
Sonnet via Antigravity to generate the layout configuration. The generated
dashboard for the local testbed functions effectively:&lt;/p&gt;
&lt;img alt=&quot;&quot; src=&quot;https://copyninja.in/images/debvulns-exporter-dashboard.png&quot; /&gt;
&lt;p&gt;The complete, ready-to-import Grafana dashboard configuration is included
directly in the &lt;cite&gt;debvulns&lt;/cite&gt; &lt;a class=&quot;reference external&quot; href=&quot;https://github.com/copyninja/debsecan-mcp/blob/main/contrib/grafana/debvulns-dashboard.json&quot;&gt;source code&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;renaming-the-project&quot;&gt;
&lt;h2&gt;Renaming the project&lt;/h2&gt;
&lt;p&gt;To prevent namespace conflicts and confusion with the native &lt;cite&gt;debsecan&lt;/cite&gt; utility
in Debian, I have unified the ecosystem under the &lt;em&gt;debvulns&lt;/em&gt; moniker. The core
CLI is named &lt;cite&gt;debvulns&lt;/cite&gt;, the exporter is &lt;cite&gt;debvulns-exporter&lt;/cite&gt;, and the MCP
component is &lt;cite&gt;debvulns-mcp&lt;/cite&gt;. The migration release has been published to &lt;a class=&quot;reference external&quot; href=&quot;https://pypi.org/project/debsecan-mcp/&quot;&gt;PyPI&lt;/a&gt;, and the new consolidated repository
is active at &lt;a class=&quot;reference external&quot; href=&quot;https://pypi.org/project/debvulns/&quot;&gt;debvulns&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;conclusion&quot;&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;While this began as a personal utility to fill a niche tool gap, I expect it
will be useful for others managing Debian infrastructure at scale. My next
objective is to formalize Debian packaging for both the CLI and the exporter.
The MCP component will likely remain available as an independent artifact. Until
then, happy hacking.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: As a core design choice, `debvulns` still uses native `debsecan` as its
ground-truth standard. The tool continuously cross-verifies its output against
`debsecan` to ensure perfect functional parity and data consistency.&lt;/em&gt;&lt;/p&gt;
&lt;/div&gt; </description> 
	<pubDate>Sun, 12 Jul 2026 11:30:25 +0000</pubDate>

</item> 
<item>
	<title>Reproducible Builds: Reproducible Builds in June 2026</title>
	<guid>https://reproducible-builds.org/reports/2026-06/</guid>
	<link>https://reproducible-builds.org/reports/2026-06/</link>
     <description>  &lt;p class=&quot;lead&quot;&gt;&lt;strong&gt;Welcome to the June 2026 report from the &lt;a href=&quot;https://reproducible-builds.org&quot;&gt;Reproducible Builds&lt;/a&gt; project!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://reproducible-builds.org/&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://reproducible-builds.org/images/reports/2026-06/reproducible-builds.png#right&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In these reports, we outline the most important things that we have been up to over the past month. As a quick recap about what problem our project intends to solve, whilst anyone may inspect the source code of free software for malicious flaws, almost all software is distributed to end users as pre-compiled binaries. The motivation behind the reproducible builds effort is to ensure no flaws have been introduced during this compilation process by promising identical results are always generated from a given source, thus allowing multiple third-parties to come to a consensus on whether a build was compromised or not.&lt;/p&gt;

&lt;p&gt;If you are interested in contributing to the project, please visit our &lt;a href=&quot;https://reproducible-builds.org/contribute/&quot;&gt;&lt;em&gt;Contribute&lt;/em&gt;&lt;/a&gt; page on our website.&lt;/p&gt;

&lt;p&gt;In this month’s report, we cover:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;a href=&quot;https://reproducible-builds.org/blog/index.rss#only-installing-reproducible-packages-with-repro-threshold&quot;&gt;Only installing reproducible packages with &lt;em&gt;repro-threshold&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://reproducible-builds.org/blog/index.rss#distribution-work&quot;&gt;Distribution work&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://reproducible-builds.org/blog/index.rss#diffoscope-development&quot;&gt;diffoscope development&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://reproducible-builds.org/blog/index.rss#from-our-mailing-list&quot;&gt;From our mailing list…&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://reproducible-builds.org/blog/index.rss#documentation-updates&quot;&gt;Documentation updates&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://reproducible-builds.org/blog/index.rss#patches&quot;&gt;Patches&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://reproducible-builds.org/blog/index.rss#four-new-scholarly-papers&quot;&gt;Four new scholarly papers&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3 id=&quot;only-installing-reproducible-packages-with-repro-threshold&quot;&gt;Only installing reproducible packages with &lt;em&gt;repro-threshold&lt;/em&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://rebuilderd.xpam.pl:2096/demo.html&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://reproducible-builds.org/images/reports/2026-06/repro-threshold.png#center&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A &lt;a href=&quot;https://rebuilderd.xpam.pl:2096/demo.html&quot;&gt;very interesting demonstration&lt;/a&gt; is now available showing how you might configure your Debian system to only install packages that have been reproduced by &lt;em&gt;m/n&lt;/em&gt; rebuilders.&lt;/p&gt;

&lt;p&gt;This is implemented via a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;reproduced+https://&lt;/code&gt; &lt;a href=&quot;https://en.wikipedia.org/wiki/APT_(software)&quot;&gt;APT&lt;/a&gt; transport ( a mechanism for communicating between the APT client and its repository source — commonly HTTP):&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Every package download is intercepted by &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;repro-threshold&lt;/code&gt;, which queries two independent rebuilders for a signed attestation before allowing installation to proceed. [It] is important to note that [an] install will only succeed if all package dependencies are also reproducible.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The &lt;a href=&quot;https://rebuilderd.xpam.pl:2096/demo.html&quot;&gt;demo&lt;/a&gt; gives examples of how to quickly experiment with this using a &lt;a href=&quot;https://www.docker.com/&quot;&gt;Docker&lt;/a&gt; container.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3 id=&quot;distribution-work&quot;&gt;Distribution work&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://debian.org/&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://reproducible-builds.org/images/reports/2026-06/debian.png#right&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In &lt;strong&gt;Debian&lt;/strong&gt; this month:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;The &lt;a href=&quot;https://tracker.debian.org/pkg/debian-installer&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;debian-installer&lt;/code&gt;&lt;/a&gt; package in Debian was uploaded with a &lt;a href=&quot;https://tracker.debian.org/news/1768824/accepted-debian-installer-20260628-source-into-unstable/&quot;&gt;substantial reproducibility-related changelog&lt;/a&gt;. This means, for the first time, the &lt;a href=&quot;https://reproduce.debian.net/excuses.html?source_name=debian-installer&quot;&gt;uploaded version could finally be reproduced&lt;/a&gt;.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Various &lt;a href=&quot;https://openjdk.org/&quot;&gt;OpenJDK&lt;/a&gt; packages were also uploaded to Debian, including the fix for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;JDK-8385738&lt;/code&gt; (“Javadoc does not produce reproducible output…”) (&lt;a href=&quot;https://reproduce.debian.net/all/api/v1/builds/206100/artifacts/426780/diffoscope&quot;&gt;for example&lt;/a&gt;). [&lt;a href=&quot;https://tracker.debian.org/news/1760093/accepted-openjdk-27-2724ea-2-source-into-unstable/&quot;&gt;…&lt;/a&gt;][&lt;a href=&quot;https://tracker.debian.org/news/1760960/accepted-openjdk-26-26018-3-source-into-unstable/&quot;&gt;…&lt;/a&gt;][&lt;a href=&quot;https://tracker.debian.org/news/1760962/accepted-openjdk-25-25044ea-1-source-into-unstable/&quot;&gt;…&lt;/a&gt;]&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;The “reason” pages on &lt;a href=&quot;https://reproduce.debian.net&quot;&gt;&lt;em&gt;reproduce.debian.net&lt;/em&gt;&lt;/a&gt;, &lt;a href=&quot;https://reproduce.debian.net/ppc64el/stats/unstable/&quot;&gt;such as the one for &lt;em&gt;ppc64el&lt;/em&gt;&lt;/a&gt;, now feature links labeled with the &lt;a href=&quot;https://www.compart.com/en/unicode/U+1F41B&quot;&gt;bug emoji&lt;/a&gt; (i.e. 🐛) which links to the categorized issues packages have been tagged with in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;reproducible-notes.git&lt;/code&gt; repo.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Indeed, 25 reviews of Debian packages were added, 31 were updated and 33 were removed this month adding to &lt;a href=&quot;https://tests.reproducible-builds.org/debian/index_issues.html&quot;&gt;our extensive knowledge about identified issues&lt;/a&gt;. Two issue types were updated as well. [&lt;a href=&quot;https://salsa.debian.org/reproducible-builds/reproducible-notes/commit/a2302451&quot;&gt;…&lt;/a&gt;][&lt;a href=&quot;https://salsa.debian.org/reproducible-builds/reproducible-notes/commit/9e09f1ee&quot;&gt;…&lt;/a&gt;]&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href=&quot;https://apt.izzysoft.de/fdroid/&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://reproducible-builds.org/images/reports/2026-06/izzyondroid.png#right&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;https://apt.izzysoft.de/fdroid/&quot;&gt;&lt;strong&gt;IzzyOnDroid&lt;/strong&gt;&lt;/a&gt; Android APK repository reached its next milestone this month, now covering 2 out of every 3 apps (66.7%) with reproducible builds. Their &lt;a href=&quot;https://izzyondroid.org/docs/reproducibleBuilds/DebugFailedRBs/&quot;&gt;documentation for debugging and fixing failed builds&lt;/a&gt; has steadily grown as well. More clients have picked up showing reproducibility results (e.g. Droid-ify), and &lt;a href=&quot;https://apt.izzysoft.de/packages/com.machiav3lli.fdroid&quot;&gt;Neo Store&lt;/a&gt; now can be configured to stick to only reproducible applications. Further, an &lt;a href=&quot;https://shields.rbtlog.dev/&quot;&gt;independent builder&lt;/a&gt; has been added to the build farm, increasing the trust level even more as APK builds can have multiple confirmations now.&lt;/p&gt;

&lt;p&gt;At the same time, IzzyOnDroid’s &lt;a href=&quot;https://codeberg.org/IzzyOnDroid/rbtlog&quot;&gt;&lt;em&gt;rbtlog&lt;/em&gt;&lt;/a&gt; got several new features. The most outstanding is caching for frequently used resources such as &lt;a href=&quot;https://github.com/obfusk/reproducible-apk-tools&quot;&gt;&lt;em&gt;reproducible-apk-tools&lt;/em&gt;&lt;/a&gt;, command-line tools and NodeJS in order to counter ongoing issues with GitHub availability, while at the same time saving bandwidth and build time. This change also enables some other some smaller enhancements such as being able to configure build timeouts per recipe for those builds running longer than the average, release pattern filtering for update checks or having a field for maintainer notes to shortly summing up e.g. why a reproducible build failed.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.opensuse.org/&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://reproducible-builds.org/images/reports/2026-06/opensuse.png#right&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lastly, Bernhard M. Wiedemann posted another &lt;a href=&quot;https://www.opensuse.org/&quot;&gt;&lt;strong&gt;openSUSE&lt;/strong&gt;&lt;/a&gt; &lt;a href=&quot;https://lists.opensuse.org/archives/list/factory@lists.opensuse.org/thread/LQPMRQ5W3XJ7RWAQ6ITI4EY2EDVTVHKA/&quot;&gt;monthly update&lt;/a&gt; for their reproducibility work there.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3 id=&quot;diffoscope-development&quot;&gt;&lt;em&gt;diffoscope&lt;/em&gt; development&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://diffoscope.org/&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://reproducible-builds.org/images/reports/2026-06/diffoscope.png#right&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://diffoscope.org&quot;&gt;&lt;strong&gt;diffoscope&lt;/strong&gt;&lt;/a&gt; is our in-depth and content-aware diff utility that can locate and diagnose reproducibility issues. This month, Chris Lamb made the following changes, including preparing and uploading versions &lt;a href=&quot;https://tracker.debian.org/news/1762589/accepted-diffoscope-319-source-into-unstable/&quot;&gt;319&lt;/a&gt;, &lt;a href=&quot;https://tracker.debian.org/news/1764827/accepted-diffoscope-320-source-into-unstable/&quot;&gt;320&lt;/a&gt;, &lt;a href=&quot;https://tracker.debian.org/news/1764860/accepted-diffoscope-321-source-into-unstable/&quot;&gt;321&lt;/a&gt;, &lt;a href=&quot;https://tracker.debian.org/news/1767978/accepted-diffoscope-322-source-into-unstable/&quot;&gt;322&lt;/a&gt; and &lt;a href=&quot;https://tracker.debian.org/news/1769647/accepted-diffoscope-323-source-into-unstable/&quot;&gt;323&lt;/a&gt; to Debian:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Debian adds an extra &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Flags:&lt;/code&gt; line in the output of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ocamlobjinfo&lt;/code&gt;, so adjust the test for cross-distribution compatibility. [&lt;a href=&quot;https://salsa.debian.org/reproducible-builds/diffoscope/commit/3a2303e5&quot;&gt;…&lt;/a&gt;]&lt;/li&gt;
  &lt;li&gt;Bump debhelper compatibility level to 14. [&lt;a href=&quot;https://salsa.debian.org/reproducible-builds/diffoscope/commit/ae1d587a&quot;&gt;…&lt;/a&gt;]&lt;/li&gt;
  &lt;li&gt;Fix compatibility with Ocaml 5.4.1. [&lt;a href=&quot;https://salsa.debian.org/reproducible-builds/diffoscope/commit/50476c66&quot;&gt;…&lt;/a&gt;]&lt;/li&gt;
  &lt;li&gt;Use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--long-form&lt;/code&gt;-style arguments when calling &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;apktool&lt;/code&gt; in order to support &lt;em&gt;apktool&lt;/em&gt; version 3. [&lt;a href=&quot;https://salsa.debian.org/reproducible-builds/diffoscope/commit/02c65572&quot;&gt;…&lt;/a&gt;]&lt;/li&gt;
  &lt;li&gt;Support Androguard version 4 and previous versions at the same time. [&lt;a href=&quot;https://salsa.debian.org/reproducible-builds/diffoscope/commit/2b17885b&quot;&gt;…&lt;/a&gt;]&lt;/li&gt;
  &lt;li&gt;Update copyright years. [&lt;a href=&quot;https://salsa.debian.org/reproducible-builds/diffoscope/commit/bf7aa877&quot;&gt;…&lt;/a&gt;]&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In addition, Jochen Sprickerhof added better header detection for the &lt;a href=&quot;https://www.sphinx-doc.org/en/master/&quot;&gt;Sphinx documentation system&lt;/a&gt; [&lt;a href=&quot;https://salsa.debian.org/reproducible-builds/diffoscope/commit/b800d697&quot;&gt;…&lt;/a&gt;], Michael Daniels fixed the tests when run with &lt;em&gt;zipdetails&lt;/em&gt; version 4.006 [&lt;a href=&quot;https://salsa.debian.org/reproducible-builds/diffoscope/commit/fade8d04&quot;&gt;…&lt;/a&gt;] and Zbigniew Jędrzejewski-Szmek added a version of the deprecated &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;os.path.commonprefix&lt;/code&gt; method [&lt;a href=&quot;https://salsa.debian.org/reproducible-builds/diffoscope/commit/2af9e134&quot;&gt;…&lt;/a&gt;].&lt;/p&gt;

&lt;p&gt;In addition, Vagrant Cascadian &lt;a href=&quot;https://codeberg.org/guix/guix/commit/43f80a83c99f7e3bf82cc27c5a95b9aead659ee6&quot;&gt;updated &lt;em&gt;diffoscope&lt;/em&gt; in GNU Guix to version &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;321&lt;/code&gt;&lt;/a&gt; and &lt;a href=&quot;https://codeberg.org/guix/guix/commit/636a104836fe00fca5844e15e3c40c9cf5cd1427&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;323&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;Chris Lamb also made the following changes to &lt;em&gt;&lt;a href=&quot;https://tracker.debian.org/pkg/strip-nondeterminism&quot;&gt;strip-nondeterminism&lt;/a&gt;&lt;/em&gt;, our tool to remove specific non-deterministic results from a completed build:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Skip symlinks when manually called via &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/usr/bin/strip-nondeterminism&lt;/code&gt;. (&lt;a href=&quot;https://bugs.debian.org/1139000&quot;&gt;#1139000&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Update &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;debian/watch&lt;/code&gt; format. [&lt;a href=&quot;https://salsa.debian.org/reproducible-builds/strip-nondeterminism/commit/9042813&quot;&gt;…&lt;/a&gt;]&lt;/li&gt;
  &lt;li&gt;Drop &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Rules-Requires-Root: no&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Priority: optional&lt;/code&gt; fields. [&lt;a href=&quot;https://salsa.debian.org/reproducible-builds/strip-nondeterminism/commit/7399bc4&quot;&gt;…&lt;/a&gt;]&lt;/li&gt;
  &lt;li&gt;Bump &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Standards-Version&lt;/code&gt; to version 4.7.4. [&lt;a href=&quot;https://salsa.debian.org/reproducible-builds/strip-nondeterminism/commit/aa3e692&quot;&gt;…&lt;/a&gt;]&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3 id=&quot;from-our-mailing-list&quot;&gt;From our mailing list…&lt;/h3&gt;

&lt;p&gt;On &lt;a href=&quot;https://lists.reproducible-builds.org/listinfo/rb-general/&quot;&gt;our mailing list&lt;/a&gt; this month:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;em&gt;kpcyrd&lt;/em&gt; posted to our mailing list regarding the “waves of malware uploads to &lt;a href=&quot;https://aur.archlinux.org/&quot;&gt;aur.archlinux.org&lt;/a&gt;”. Curiously, “every incident I looked at used npmjs.com for malware delivery”, specifically where the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;npm&lt;/code&gt; package includes an (automatically executed) &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;preinstall&lt;/code&gt; script that is an ELF binary.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;em&gt;kpcyrd&lt;/em&gt; also announced the release of &lt;a href=&quot;https://github.com/kpcyrd/debian-repro-status&quot;&gt;&lt;em&gt;debian-repro-status&lt;/em&gt;&lt;/a&gt; version &lt;a href=&quot;https://github.com/kpcyrd/debian-repro-status/releases/tag/v0.4.0&quot;&gt;0.4.0&lt;/a&gt;, a tool written “to give you an approximate idea of how viable it would be to enforce a ‘reproducible packages only’ update policy for the computer system you’ve built”:&lt;/p&gt;

    &lt;blockquote&gt;
      &lt;p&gt;The change updates dependencies to the latest versions, and adds support for multiple &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-H&lt;/code&gt; options, to query results from multiple rebuilderd instances. The results are also now fetched concurrently.&lt;/p&gt;
    &lt;/blockquote&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;em&gt;kpcyrd&lt;/em&gt; also reported that, whilst taking a screenshot for the above release, they noticed that the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;debian:sid&lt;/code&gt; &lt;a href=&quot;https://lists.reproducible-builds.org/pipermail/rb-general/2026-June/004121.html&quot;&gt;container now is 100% reproducible&lt;/a&gt;.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Finally, &lt;em&gt;kpcyrd&lt;/em&gt; &lt;strong&gt;also&lt;/strong&gt; &lt;a href=&quot;https://github.com/keszybz/add-determinism/pull/78&quot;&gt;created a pull request&lt;/a&gt; against the &lt;a href=&quot;https://github.com/keszybz/add-determinism&quot;&gt;&lt;em&gt;add-determinism&lt;/em&gt;&lt;/a&gt; package to update the &lt;a href=&quot;https://docs.python.org/3/library/itertools.html&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;itertools&lt;/code&gt;&lt;/a&gt; and &lt;a href=&quot;https://docs.python.org/3/library/zipfile.html&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;zip&lt;/code&gt;&lt;/a&gt; Python dependencies.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3 id=&quot;documentation-updates&quot;&gt;Documentation updates&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://reproducible-builds.org/&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://reproducible-builds.org/images/reports/2026-06/website.png#right&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Yet again, there were a number of improvements made to our website this month including:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Chris Lamb added a reminder re. using the UTC variants of the Javascript &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Date&lt;/code&gt; methods. [&lt;a href=&quot;https://salsa.debian.org/reproducible-builds/reproducible-website/commit/27245b53&quot;&gt;…&lt;/a&gt;]&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Mattia Rizzolo moved &lt;a href=&quot;https://www.opentech.fund/&quot;&gt;OTF&lt;/a&gt; to the ‘old’ sponsors list. Thank you for your support!. [&lt;a href=&quot;https://salsa.debian.org/reproducible-builds/reproducible-website/commit/d029630d&quot;&gt;…&lt;/a&gt;]&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;em&gt;kpcyrd&lt;/em&gt; updated the &lt;a href=&quot;https://rust-lang.org/&quot;&gt;Rust&lt;/a&gt; documentation to recommend using the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--release&lt;/code&gt; argument for consistency. [&lt;a href=&quot;https://salsa.debian.org/reproducible-builds/reproducible-website/commit/f5d645e5&quot;&gt;…&lt;/a&gt;]&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3 id=&quot;patches&quot;&gt;Patches&lt;/h3&gt;

&lt;p&gt;The Reproducible Builds project detects, dissects and attempts to fix as many currently-unreproducible packages as possible. We endeavour to send all of our patches upstream where applicable or possible. This month, we wrote a large number of such patches, including:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Bernhard M. Wiedemann:&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://bugzilla.opensuse.org/show_bug.cgi?id=1268265&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cvise&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://build.opensuse.org/request/show/1362390&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;efl&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://bugzilla.opensuse.org/show_bug.cgi?id=1268542&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gettext-runtime/bash&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://bugzilla.opensuse.org/show_bug.cgi?id=1268340&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hadrian&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://build.opensuse.org/request/show/1362888&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;plasma6-keyboard&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://invent.kde.org/frameworks/syntax-highlighting/-/merge_requests/806&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;syntax-highlighting&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Chris Lamb:&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1139654&quot;&gt;#1139654&lt;/a&gt; filed against &lt;a href=&quot;https://tracker.debian.org/pkg/node-fuse.js&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;node-fuse.js&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1139655&quot;&gt;#1139655&lt;/a&gt; filed against &lt;a href=&quot;https://tracker.debian.org/pkg/node-egjs-hammerjs&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;node-egjs-hammerjs&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1139656&quot;&gt;#1139656&lt;/a&gt; filed against &lt;a href=&quot;https://tracker.debian.org/pkg/node-chartjs-adapter-date-fns&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;node-chartjs-adapter-date-fns&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1139662&quot;&gt;#1139662&lt;/a&gt; filed against &lt;a href=&quot;https://tracker.debian.org/pkg/mkdocs-include-markdown-plugin&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mkdocs-include-markdown-plugin&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1139704&quot;&gt;#1139704&lt;/a&gt; filed against &lt;a href=&quot;https://tracker.debian.org/pkg/lmarbles&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;lmarbles&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1140240&quot;&gt;#1140240&lt;/a&gt; filed against &lt;a href=&quot;https://tracker.debian.org/pkg/rocm-docs-core&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rocm-docs-core&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1140567&quot;&gt;#1140567&lt;/a&gt; filed against &lt;a href=&quot;https://tracker.debian.org/pkg/libecoli&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;libecoli&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1140688&quot;&gt;#1140688&lt;/a&gt; filed against &lt;a href=&quot;https://tracker.debian.org/pkg/golang-github-tobischo-gokeepasslib&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;golang-github-tobischo-gokeepasslib&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Jochen Sprickerhof:&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1139457&quot;&gt;#1139457&lt;/a&gt; filed against &lt;a href=&quot;https://tracker.debian.org/pkg/c-munipack&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;c-munipack&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1140365&quot;&gt;#1140365&lt;/a&gt; filed against &lt;a href=&quot;https://tracker.debian.org/pkg/latex-coffee-stains&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;latex-coffee-stains&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1140366&quot;&gt;#1140366&lt;/a&gt; filed against &lt;a href=&quot;https://tracker.debian.org/pkg/cxxtest&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cxxtest&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1140367&quot;&gt;#1140367&lt;/a&gt; filed against &lt;a href=&quot;https://tracker.debian.org/pkg/slime&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;slime&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1140368&quot;&gt;#1140368&lt;/a&gt; filed against &lt;a href=&quot;https://tracker.debian.org/pkg/spooles&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;spooles&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1140369&quot;&gt;#1140369&lt;/a&gt; filed against &lt;a href=&quot;https://tracker.debian.org/pkg/sdpb&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sdpb&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1140645&quot;&gt;#1140645&lt;/a&gt; filed against &lt;a href=&quot;https://tracker.debian.org/pkg/procmail&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;procmail&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1140676&quot;&gt;#1140676&lt;/a&gt; filed against &lt;a href=&quot;https://tracker.debian.org/pkg/proftpd-dfsg&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;proftpd-dfsg&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1141059&quot;&gt;#1141059&lt;/a&gt; filed against &lt;a href=&quot;https://tracker.debian.org/pkg/mah-jong&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mah-jong&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1141133&quot;&gt;#1141133&lt;/a&gt; filed against &lt;a href=&quot;https://tracker.debian.org/pkg/dxf2gcode&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dxf2gcode&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1141194&quot;&gt;#1141194&lt;/a&gt; filed against &lt;a href=&quot;https://tracker.debian.org/pkg/afterstep&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;afterstep&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1141195&quot;&gt;#1141195&lt;/a&gt; filed against &lt;a href=&quot;https://tracker.debian.org/pkg/ledger2beancount&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ledger2beancount&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1141196&quot;&gt;#1141196&lt;/a&gt; filed against &lt;a href=&quot;https://tracker.debian.org/pkg/ocamlviz&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ocamlviz&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Kris Van Hee and Vagrant Cascadian:&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1140167&quot;&gt;#1140167&lt;/a&gt; filed against &lt;a href=&quot;https://tracker.debian.org/pkg/dtrace&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dtrace&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3 id=&quot;four-new-scholarly-papers&quot;&gt;Four new scholarly papers&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://lab.iisec.ac.jp/~suzaki_lab/PDF/DSN-HAP26_muto.pdf&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://reproducible-builds.org/images/reports/2026-06/DSN-HAP26_muto.png#right&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Kenichiro Muto and Kuniyasu Suzaki of the &lt;a href=&quot;https://www.iisec.ac.jp/english/&quot;&gt;Institute of Information Security&lt;/a&gt; in Yokohama, Japan published an interesting paper this month titled &lt;a href=&quot;https://lab.iisec.ac.jp/~suzaki_lab/PDF/DSN-HAP26_muto.pdf&quot;&gt;&lt;em&gt;Attestable Build Chain: Enabling Trust in Reproducible Builds&lt;/em&gt;&lt;/a&gt; (PDF). Their abstract is as follows:&lt;/p&gt;

&lt;p&gt;Ensuring trust in software supply chains requires verifying not only artifacts but also the processes that produce them. Although Reproducible Builds (R-B) require rebuilding to validate artifacts, they cannot verify whether the build was executed with the intended toolchain and inputs and may reproduce unintended or compromised builds without detection. We present Attestable Build Chain, a framework for externally verifying build-time execution without rebuilding. Rather than preventing compromise, it provides verifiable, tamper-evident evidence of actual build-time execution, enabling verification of build process integrity from observed file accesses during the build. [&lt;a href=&quot;https://lab.iisec.ac.jp/~suzaki_lab/PDF/DSN-HAP26_muto.pdf&quot;&gt;…&lt;/a&gt;]&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://hal.science/hal-05630285v1&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://reproducible-builds.org/images/reports/2026-06/2025-nixpkgs-reproducibility-extended.png#right&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Julien Malka, Stefano Zacchiroli and Théo Zimmermann published a 50-page report detailing &lt;a href=&quot;https://hal.science/hal-05630285v1&quot;&gt;&lt;em&gt;A Decade of Software Reproducibility in the Nix Package Ecosystem&lt;/em&gt;&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;We find that functional package management enables extremely high rebuildability over time (&lt;strong&gt;near-universal ability to reconstitute historical build environments and rebuild software packages&lt;/strong&gt;), while bitwise reproducibility has steadily improved and reaches a high point in recent years (up to 93% in 2024). Early years show substantially lower bitwise reproducibility, indicating that functional package management alone does not guarantee bitwise-identical outputs, and that the observed high level of bitwise reproducibility is not solely due to the package management approach. Common causes of unreproducibility, both in the rebuildability and bitwise reproducibility dimensions, include management of dates in build and test processes; we quantify their prevalence and other common causes using manual analysis of logs of rebuild failures and automated analysis of &lt;a href=&quot;https://diffoscope.org/&quot;&gt;&lt;em&gt;diffoscope&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A &lt;a href=&quot;https://hal.science/hal-05630285v1/file/2025-nixpkgs-reproducibility-extended.pdf&quot;&gt;PDF of their report&lt;/a&gt; is available online&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://devguard.org/research-development/bit-for-bit-building-sovereign-reproducible-container-supply-chain-devguard.pdf&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://reproducible-builds.org/images/reports/2026-06/bit-for-bit-building-sovereign-reproducible-container-supply-chain-devguard.png#right&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tim Bastin of &lt;a href=&quot;https://l3montree.com/&quot;&gt;L3montree GmbH&lt;/a&gt; and Jacek Galowicz of &lt;a href=&quot;https://applicative.systems/&quot;&gt;Applicative Systems GmbH&lt;/a&gt; from &lt;a href=&quot;https://devguard.org/&quot;&gt;DevGuard&lt;/a&gt; published a paper detailing &lt;a href=&quot;https://devguard.org/research-development/bit-for-bit-building-sovereign-reproducible-container-supply-chain-devguard.pdf&quot;&gt;&lt;em&gt;How We Built a Sovereign, Reproducible Container Supply Chain for DevGuard&lt;/em&gt;&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;This paper presents how the &lt;a href=&quot;https://devguard.org/&quot;&gt;DevGuard&lt;/a&gt; project rebuilt its &lt;a href=&quot;https://opencontainers.org/&quot;&gt;OCI container&lt;/a&gt; pipeline around reproducible &lt;a href=&quot;https://nixos.org/&quot;&gt;Nix&lt;/a&gt; builds and independent dual-platform digest verification. DevGuard images are built hermetically from pinned source revisions, signed with &lt;a href=&quot;https://github.com/sigstore/cosign&quot;&gt;Sigstore/Cosign&lt;/a&gt;, and verified through digest comparison across GitHub Actions and sovereign GitLab infrastructure hosted on container.gov.de. We describe the practical integration of reproducible OCI image builds into existing CI/CD workflows and argue that independently reproducible container digests provide a stronger integrity guarantee against build tampering than provenance alone. The paper further discusses remaining trust assumptions and the relevance of sovereign build infrastructure for government and regulated environments.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.sciencedirect.com/science/article/pii/S2405959526001086&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://reproducible-builds.org/images/reports/2026-06/1-s2.0-S2405959526001086-main.png#right&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finally, Yiseul Choi, Junga Kim, Jun-Ho Hong and Seongmin Kim of the &lt;a href=&quot;https://www.sungshin.ac.kr/main_eng/15348/subview.do&quot;&gt;Department of Convergence Security Engineering&lt;/a&gt; at the &lt;a href=&quot;https://www.sungshin.ac.kr/&quot;&gt;Sungshin Women’s University&lt;/a&gt; in Seoul, Korea titled &lt;a href=&quot;https://www.sciencedirect.com/science/article/pii/S2405959526001086&quot;&gt;&lt;em&gt;Attestation-based verification of SBOM integrity via consumer-side reproducibility&lt;/em&gt;&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Software bills of materials (SBOMs) support supply chain transparency, but they do not prove that a delivered SBOM reproducibly corresponds to its software artifact. Existing signing and provenance mechanisms protect integrity and traceability, yet lack consumer-side reproducible verification. We propose an SBOM integrity verification framework combining procedure disclosure, consumer-side reproduction, authority-generated reference evidence, and digest comparison. A trusted authority records a reference digest, and consumers compare it with locally reproduced and delivered SBOM digests. Experiments on 100 real-world container images show detection of artifact tampering, SBOM substitution, distribution modification, and adaptive tampering beyond signature-based approaches&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;Finally, if you are interested in contributing to the Reproducible Builds project, please visit our &lt;a href=&quot;https://reproducible-builds.org/contribute/&quot;&gt;&lt;em&gt;Contribute&lt;/em&gt;&lt;/a&gt; page on our website. However, you can get in touch with us via:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;IRC: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;#reproducible-builds&lt;/code&gt; on &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;irc.oftc.net&lt;/code&gt;.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Mastodon: &lt;a href=&quot;https://fosstodon.org/@reproducible_builds&quot;&gt;@reproducible_builds@fosstodon.org&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Mailing list: &lt;a href=&quot;https://lists.reproducible-builds.org/listinfo/rb-general&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rb-general@lists.reproducible-builds.org&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt; </description> 
	<pubDate>Sat, 11 Jul 2026 19:27:22 +0000</pubDate>

</item> 
<item>
	<title>Jamie McClelland: DNS, OG of high availability</title>
	<guid>https://current.workingdirectory.net/posts/2026/dns-high-availability/</guid>
	<link>https://current.workingdirectory.net/posts/2026/dns-high-availability/</link>
     <description>  &lt;p&gt;At &lt;a href=&quot;https://mayfirst.coop&quot;&gt;May First&lt;/a&gt;, we recently received (all within a
single week) three different complaints about domain names that previously
worked fine suddenly not resolving to our servers.&lt;/p&gt;
&lt;p&gt;While that isn’t terribly uncommon, we discovered that in each case, the domain
name’s authoritative name servers were pointing to our mail servers
(&lt;code&gt;a.mx.mayfirst.org&lt;/code&gt;, &lt;code&gt;b.mx.mayfirst.org&lt;/code&gt; and &lt;code&gt;c.mx.mayfirst.org&lt;/code&gt;) instead of
our name servers (&lt;code&gt;a.ns.mayfirst.org&lt;/code&gt;, &lt;code&gt;b.ns.mayfirst.org&lt;/code&gt; and
&lt;code&gt;c.ns.mayfirst.org&lt;/code&gt;). The weird part: this mistaken configuration was happening
at the registrar level, protected by each member’s own credentials that we
don’t have access to.&lt;/p&gt;
&lt;p&gt;Each affected member fixed their records to resolve the problem but also made
very clear that they had not logged into their registrar in years, sugggesting
that the DNS authoritative records in their registrar accounts spontaneously
changed on their own. The first time was weird, the second time could possibly
be a coincidence? But by the third time this happened, we started to panic.
&lt;em&gt;How could registrar records spontaneously change?&lt;/em&gt; All three domain names were
registered with different companies - so it couldn’t be a single registrar
problem? Are we going to get a flood of these complaints? What is going on!?!?&lt;/p&gt;
&lt;p&gt;We did an inventory to see if this was happening with other domain names in use
by our membership and that’s when we discovered just how hard it is for our
mostly non-technical users to set a domain’s authoritative name servers. The
error rate was less than 1% but still that was a lot of domain names with
typos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;raise your fist in the air with &lt;code&gt;a.ns.mayfist.org&lt;/code&gt;!&lt;/li&gt;
&lt;li&gt;or just plain give up and hit the floor with &lt;code&gt;a.ns.matfirst.org&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Or more commonly people added our name servers, but also left the default
name servers in place.&lt;/li&gt;
&lt;li&gt;Also, one person added as their authoritative name servers:
&lt;code&gt;a.ns.mayfirst.org&lt;/code&gt;, &lt;code&gt;b.ns.mayfirst.org&lt;/code&gt;, &lt;code&gt;c.ns.mayfirst.org&lt;/code&gt;,
&lt;code&gt;a.mx.mayfirst.org&lt;/code&gt;, &lt;code&gt;b.mx.mayfirst.org&lt;/code&gt;, &lt;code&gt;c.mx.mayfirst.org&lt;/code&gt;, and even
&lt;code&gt;a.webproxy.mayfirst.org&lt;/code&gt; - in other words, all the domain names we tell you
do to anything with.&lt;/li&gt;
&lt;li&gt;And lastly, I did find two more domains just pointing to
&lt;code&gt;a.mx.mayfirst.org&lt;/code&gt;, &lt;code&gt;b.mx.mayfirst.org&lt;/code&gt; and &lt;code&gt;c.mx.mayfirst.org&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That’s when it occurred to me: for years we have maintained an offsite server
that provides &lt;em&gt;both&lt;/em&gt; &lt;code&gt;c.ns.mayfirst.org&lt;/code&gt; and &lt;code&gt;c.mx.mayfirst.org&lt;/code&gt;. It hangs out
in case something terrible happens to our main colo. The week before we started
receiving these complaints, I separated these services, moving
&lt;code&gt;c.mx.mayfirst.org&lt;/code&gt; to a dedicated MX server. As a result, these two domain
names stopped pointing to the same IP address. And that’s when the complaints
started rolling in. In other words: the affected members set the incorrect name
servers years ago, but because just one of the name servers resolved to an IP
that happened to provide the correct authoritative lookup services, it went
undeteced all this time.&lt;/p&gt;
&lt;p&gt;So… mystery solved. Nobody’s authoritative registrar records “suddenly”
changed. They were mis-configured for years but &lt;em&gt;thanks to the amazing
resilience of the DNS system, nobody noticed because just one working DNS
server is all you need.&lt;/em&gt;&lt;/p&gt; </description> 
	<pubDate>Sat, 11 Jul 2026 12:27:10 +0000</pubDate>

</item> 
<item>
	<title>Dirk Eddelbuettel: RQuantLib 0.4.28 on CRAN: Small Update</title>
	<guid>http://dirk.eddelbuettel.com/blog/2026/07/10#rquantlib_0.4.28</guid>
	<link>http://dirk.eddelbuettel.com/blog/2026/07/10#rquantlib_0.4.28</link>
     <description>  &lt;img src=&quot;http://planet.debian.org/heads/dirk.png&quot; width=&quot;65&quot; height=&quot;90&quot; alt=&quot;&quot; align=&quot;right&quot; style=&quot;float: right;&quot;&gt;  &lt;p&gt;A new minor release 0.4.28 of &lt;a href=&quot;https://dirk.eddelbuettel.com/code/rquantlib.html&quot;&gt;RQuantLib&lt;/a&gt;
arrived on &lt;a href=&quot;https://cran.r-project.org&quot;&gt;CRAN&lt;/a&gt; this evening,
has been uploaded to &lt;a href=&quot;https://www.debian.org&quot;&gt;Debian&lt;/a&gt;, and is
being built for &lt;a href=&quot;https://eddelbuettel.github.io/r2u/&quot;&gt;r2u&lt;/a&gt; as
well.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.quantlib.org&quot;&gt;QuantLib&lt;/a&gt; is a rather
comprehensice &lt;em&gt;free/open-source&lt;/em&gt; library for quantitative
finance. &lt;a href=&quot;https://dirk.eddelbuettel.com/code/rquantlib.html&quot;&gt;RQuantLib&lt;/a&gt;
connects (some parts of) it to the R environment and language, and has
been part of &lt;a href=&quot;https://cran.r-project.org&quot;&gt;CRAN&lt;/a&gt; for nearly
twenty-three years (!!) as it was one of the first packages I uploaded
to &lt;a href=&quot;https://cran.r-project.org&quot;&gt;CRAN&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release of &lt;a href=&quot;https://dirk.eddelbuettel.com/code/rquantlib.html&quot;&gt;RQuantLib&lt;/a&gt;
brings a minor update to the calendars for Israel which in QuantLib 1.43
can now use one of three different exchange choices. However, using
‘settlement’ is now deprecated so we adjusted our code. This came up as
we had packaged the 1.43-rc version of the (upcoming) 1.43 release a few
days ago, and it is now in testing requiring &lt;a href=&quot;https://dirk.eddelbuettel.com/code/rquantlib.html&quot;&gt;RQuantLib&lt;/a&gt;
to catch up. Full details from the NEWS file follow as usual.&lt;/p&gt;
&lt;blockquote&gt;
&lt;h4 id=&quot;changes-in-rquantlib-version-0.4.28-2026-07-10&quot;&gt;Changes in &lt;span class=&quot;pkg&quot;&gt;RQuantLib&lt;/span&gt; version 0.4.28 (2026-07-10)&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Adjust to Israel calendar constructor change in QuantLib
1.43&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Continuous integration uses ccache-with-R action&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Courtesy of my &lt;a href=&quot;https://dirk.eddelbuettel.com/cranberries/&quot;&gt;CRANberries&lt;/a&gt;, there
is also a &lt;a href=&quot;https://dirk.eddelbuettel.com/cranberries/2026/07/10/#RQuantLib_0.4.28&quot;&gt;diffstat
report&lt;/a&gt; for the this release. As always, more detailed information is
on the &lt;a href=&quot;https://dirk.eddelbuettel.com/code/rquantlib.html&quot;&gt;RQuantLib
page&lt;/a&gt;. Questions, comments etc should go to the &lt;a href=&quot;https://groups.io/g/rquantlib&quot;&gt;rquantlib-devel mailing list&lt;/a&gt;.
Issue tickets can be filed at the &lt;a href=&quot;https://github.com/eddelbuettel/rquantlib&quot;&gt;GitHub repo&lt;/a&gt;.&lt;/p&gt;
&lt;p style=&quot;font-size: 80%; font-style: italic;&quot;&gt;
This post by &lt;a href=&quot;https://dirk.eddelbuettel.com&quot;&gt;Dirk
Eddelbuettel&lt;/a&gt; originated on his &lt;a href=&quot;https://dirk.eddelbuettel.com/blog/&quot;&gt;Thinking inside the box&lt;/a&gt;
blog. If you like this or other open-source work I do, you can now &lt;a href=&quot;https://github.com/sponsors/eddelbuettel&quot;&gt;sponsor me at
GitHub&lt;/a&gt;.
&lt;/p&gt;&lt;p&gt;&lt;/p&gt; </description> 
	<pubDate>Sat, 11 Jul 2026 03:35:00 +0000</pubDate>

</item> 
<item>
	<title>Jonathan Dowland: Bauer Fly30 ice skates</title>
	<guid>https://jmtd.net/log/fly30/</guid>
	<link>https://jmtd.net/log/fly30/</link>
     <description>  &lt;img src=&quot;http://planet.debian.org/heads/jmtd.png&quot; width=&quot;65&quot; height=&quot;85&quot; alt=&quot;&quot; align=&quot;right&quot; style=&quot;float: right;&quot;&gt;  &lt;p&gt;I used to ice skate as a teenager but I stopped at University. I tried to
pick it back up in 2024 but had to stop when I got &lt;a href=&quot;https://jmtd.net/log/ouch/&quot;&gt;ill&lt;/a&gt;. I restarted
in 2025, initially with a weekly skate session but last month I started group
hockey skate lessons.&lt;/p&gt;

&lt;div class=&quot;centre&quot;&gt;
&lt;div class=&quot;image+centre&quot;&gt;
&lt;a href=&quot;https://jmtd.net/log/fly30/heat.jpg&quot;&gt;&lt;img alt=&quot;IR photo of me skating&quot; class=&quot;img&quot; height=&quot;378&quot; src=&quot;https://jmtd.net/log/fly30/400x-heat.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;

&lt;p&gt;&lt;/p&gt;&lt;p&gt;There&#39;s not a lot of pics of me skating…
this one from an IR camera&lt;/p&gt;&lt;p&gt;&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;I&#39;ve been skating in a pair of Bauer&lt;sup id=&quot;fnref:1&quot;&gt;&lt;a href=&quot;https://jmtd.net/log/#fn:1&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; Nexus N77s that I bought &lt;a href=&quot;https://jmtd.net/log/Toronto/&quot;&gt;7 years
ago on a work trip to Toronto&lt;/a&gt;.
These did a great job of getting me back into the hobby for 6 years but
recently I felt it was time to step up to a better quality pair.
Despite being a size down from my shoe size, the Nexuses are too
large: I had been compensating with thick socks but still struggling to
get the boots tight enough. I&#39;d have to wear gloves to lace up because I&#39;d
cut my hands pulling the laces otherwise.&lt;/p&gt;

&lt;p&gt;After too long researching/deliberating/kvetching (very much on trend for me)
I upgraded to Bauer Vapor Fly30s another half-size down (and nearly ten times
as much).
The fit is &lt;em&gt;much&lt;/em&gt; better, in almost every respect. They actually go on easier
and I don&#39;t have to tear my hands tightening the laces. They feel like a natural
extension of my feet. I seem to be using a different set of muscles to skate,
so the first few sessions were very fatiguing, but that settled.
The Vapor line is speed-oriented, which I thought would fit my skate style best.&lt;/p&gt;

&lt;div class=&quot;centre&quot;&gt;
&lt;div class=&quot;image+centre&quot;&gt;
&lt;a href=&quot;https://jmtd.net/log/fly30/skates.jpg&quot;&gt;&lt;img alt=&quot;new and old skates&quot; class=&quot;img&quot; height=&quot;225&quot; src=&quot;https://jmtd.net/log/fly30/400x-skates.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;

&lt;p&gt;new and old skates&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;I have unfortunately gained a common problem: arch pain. More precisely, my
navicular bone seems to be quite prominent&lt;sup id=&quot;fnref:2&quot;&gt;&lt;a href=&quot;https://jmtd.net/log/#fn:2&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;, and that part is
pressing uncomfortably into the boot. Boots typically take a few sessions to
break in, but after 7-8 sessions the pain was getting to the stage that I
couldn&#39;t skate for a full session without being in agony.&lt;/p&gt;

&lt;p&gt;The last time I skated I tried to throw everything at the problem: I&#39;d had
the skates baked&lt;sup id=&quot;fnref:3&quot;&gt;&lt;a href=&quot;https://jmtd.net/log/#fn:3&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;; bought some orthotic insoles; then some &quot;Bunga&quot; pads over the sore bit and an
attempt to more loosely tie the laces over the affected area. I tried a ten
minute skate, and it &lt;em&gt;seemed&lt;/em&gt; a bit better.&lt;/p&gt;

&lt;p&gt;I then tried experimentally to swap back to my old skates, and I felt like
Bambi: I just couldn&#39;t do it!
They didn&#39;t press on the navicular, and they&#39;re
softer so you &lt;em&gt;can&lt;/em&gt; compensate for the size with tight lacing, but I had no
confidence in them, I couldn&#39;t lean into the turns. They just felt &lt;em&gt;weird&lt;/em&gt;.
I realised there&#39;s no way back.&lt;/p&gt;

&lt;p&gt;I switched back to the fly30s, adjusted the bunga pad positioning, tweaked
the lacing and went back on for about 40 minutes. It went well: the rink was
quiet, it was cool whilst we had a heat wave outside, so I worked up a sweat.
By the end there was &lt;em&gt;some&lt;/em&gt; discomfort, but not too much, and I think partly
the area is currently sensitive so just about anything will cause discomfort.
Fingers (or toes) crossed that I&#39;ve mitigated the problem! If not, it might
be time to try a &lt;em&gt;punch out&lt;/em&gt;.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr /&gt;
&lt;ol&gt;
&lt;li id=&quot;fn:1&quot;&gt;
I&#39;ve owned four pairs of skates: all hockey, my first were Bauers,
my second CCM Tacks of some kind. I&#39;ve no idea what happened to them.&lt;a href=&quot;https://jmtd.net/log/#fnref:1&quot; rev=&quot;footnote&quot;&gt;↩&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;fn:2&quot;&gt;
Or possibly I have &lt;em&gt;accessory navicular&lt;/em&gt; bones&lt;a href=&quot;https://jmtd.net/log/#fnref:2&quot; rev=&quot;footnote&quot;&gt;↩&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;fn:3&quot;&gt;
modern mid-tier skates are thermoformable, and many skate shops carry
a specially designed oven to briefly bake skates such that you wear them as
they cool and the padding should mould to your foot.&lt;a href=&quot;https://jmtd.net/log/#fnref:3&quot; rev=&quot;footnote&quot;&gt;↩&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt; </description> 
	<pubDate>Fri, 10 Jul 2026 20:57:20 +0000</pubDate>

</item> 
<item>
	<title>Tim Retout: Blocking distracting news links</title>
	<guid>https://retout.co.uk/2026/07/10/blocking-distracting-news-links/</guid>
	<link>https://retout.co.uk/2026/07/10/blocking-distracting-news-links/</link>
     <description>  &lt;p&gt;&lt;em&gt;“You are what you eat”&lt;/em&gt; – but perhaps this is even more true of our
information diet.  It is hard to strike a balance between remaining a
well-informed citizen versus spending hours ingesting unnecessary news
about issues and events we can’t affect.  But I’m increasingly
convinced that my hours lost to doomscrolling are down to design
choices by web publishers rather than a failure of individual
willpower.&lt;/p&gt;
&lt;h3 id=&quot;we-have-created-an-obesogenic-information-environment&quot;&gt;We have created an “obesogenic” information environment&lt;/h3&gt;
&lt;p&gt;I don’t think it is just me – I think our information environment has
been progressively altered over time as news sites look to maximize
engagement.  Even outside of social media, the invisible hand of the
market for eyeballs forces sites to optimize for browse time or risk
irrelevance.&lt;/p&gt;
&lt;p&gt;Even as newspapers find it increasingly difficult to fund good
journalism through advertising in an online world, especially local
journalism, they need to keep readers on their sites, clicking through
as many articles as possible. Clickbait headlines, “urgent” flashing
live icons to draw the attention, and many opportunities to leap from
one article to another, and another.&lt;/p&gt;
&lt;p&gt;But this design approach even extends to news organisations with a
different funding model, like BBC News, which is a public service
(state-owned but arms-length) organisation funded through a mandatory
television licence – a matter of controversy in some quarters.  And
it extends even to sites where I pay a subscription fee; I might get
adverts removed, but I am still bombarded with the same design
philosophy; too many opportunities to be pulled away from what I’m
reading towards some other unrelated article.&lt;/p&gt;
&lt;p&gt;Even if I try and limit my exposure to algorithmic “discovery” of new
news, via RSS feeds or similar, if I’m reading the full article in a
browser then I am prompted to read more stuff that I didn’t intend.
This defeats the benefit of curating a set of feeds, because you still
get dragged away to random articles.&lt;/p&gt;
&lt;h3 id=&quot;only-44-of-bbc-news-is-news&quot;&gt;Only 44% of BBC News is news&lt;/h3&gt;
&lt;p&gt;To show you what I mean, I’m going to pick on the BBC, although I
love them dearly and the same issue very much applies elsewhere.&lt;/p&gt;
&lt;p&gt;I’ve taken a screenshot of a &lt;a href=&quot;https://www.bbc.co.uk/news/articles/cly9r54e5r4o&quot;&gt;random BBC News
article&lt;/a&gt; in mobile
view (my preferred doomscrolling user access device), and measured
approximately what proportion of the full length of the page is taken
up by each section.  This is a fairly in-depth news article, so I
reckon if anything the figures would be worse than this on shorter
articles.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;A full-length screenshot of a BBC News article showing proportions of the page allocated to the main article vs. related links etc.&quot; src=&quot;https://retout.co.uk/2026/bbc-news-website.drawio.svg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;(These numbers will not sum to 100% for reasons which are obvious if
you look at the crossbars.  Also they’re approximations.)&lt;/p&gt;
&lt;p&gt;Less than half of the page (44% if you exclude the inline related
links) is actual news text/images; the rest are links trying to help
you find the next thing to read/watch. &lt;em&gt;I do not want this.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I’m sure this A/B tests well in terms of reader figures, but it
sometimes leaves me exhausted – it must take subconscious mental
energy to ignore, or I spend too much time trying to keep on top of
things.&lt;/p&gt;
&lt;p&gt;And remember, this is a publicly-funded site that does not rely on
advertising!&lt;/p&gt;
&lt;h3 id=&quot;blocking-out-the-noise&quot;&gt;Blocking out the noise&lt;/h3&gt;
&lt;p&gt;If you are technically-minded, you can use an ad-blocker such as
uBlock Origin to take back some control.  Applying the following lines
as a custom filter (Settings &amp;gt; My filters) brutally cuts out almost
all of these links:&lt;/p&gt;
&lt;div class=&quot;code-block-wrapper&quot;&gt;&lt;pre tabindex=&quot;0&quot;&gt;&lt;code&gt;bbc.co.uk##aside
bbc.co.uk##footer&amp;gt;div:has(h2)
bbc.co.uk##[data-block=&quot;uploaderEmbed&quot;]
bbc.co.uk##[data-block=&quot;links&quot;]&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;em&gt;Caveat emptor:&lt;/em&gt; I have not road-tested this for more than half an
hour, so who knows what consequences this could have on your web
browsing.  In particular, international readers outside the UK will
likely be redirected to bbc.com, the commercial arm of the BBC, where
these rules will need adapting.&lt;/p&gt;
&lt;p&gt;Is it unethical to use an ad-blocker to remove these links?  I would
argue not.  I am not depriving the BBC of any revenue, because I pay
my licence fee.  I might reduce the amount of time I spend on their
website, but if anything the subjectively better experience might
encourage me to consume more news from them, not less.  In other
circumstances (outside the UK for instance, where the BBC relies on
advertising), the balance might be different.&lt;/p&gt;
&lt;h3 id=&quot;product-managers-please-find-better-metrics&quot;&gt;Product managers, please find better metrics&lt;/h3&gt;
&lt;p&gt;I lament the state of the internet in 2026.  I now can’t unsee these
innocuous “related stories” links as a mechanism to grab my attention,
and it’s gone too far.&lt;/p&gt;
&lt;p&gt;If you are a normal person just browsing the news and looking to
discover the latest important stories relatively quickly, I can see
that these types of links might actually be useful for discovery; but
I’m actually reasonably sure that I’m not going to miss out on
anything major.  You still have the option of the news home page if
you want to be presented with more news for example, and it feels
natural to go back to there when you’ve run out of stories to consume.&lt;/p&gt;
&lt;p&gt;But it shouldn’t be down to individual responsibility to ignore or
geekily block these types of link; news sites with alternative funding
models should find better metrics for engagement than “hours spent on
site” – how about optimizing for customer mental wellbeing, or
minimizing time required to catch up with the news?  There’s no need
to maximize clicks and eyeballs.  This is a societal level issue,
because we are all going mad with news over-engagement.&lt;/p&gt;
&lt;p&gt;Product managers, over to you.&lt;/p&gt; </description> 
	<pubDate>Fri, 10 Jul 2026 15:00:00 +0000</pubDate>

</item> 
<item>
	<title>Junichi Uekawa: July already.</title>
	<guid>http://www.netfort.gr.jp/~dancer/diary/daily/2026-Jul-10.html.en#2026-Jul-10-18:04:45</guid>
	<link>http://www.netfort.gr.jp/~dancer/diary/daily/2026-Jul-10.html.en#2026-Jul-10-18:04:45</link>
     <description>  &lt;img src=&quot;http://planet.debian.org/heads/dancer.png&quot; width=&quot;75&quot; height=&quot;97&quot; alt=&quot;&quot; align=&quot;right&quot; style=&quot;float: right;&quot;&gt;  July already. Wow. It&#39;s getting to be a summer.
        &lt;p&gt;&lt;/p&gt; </description> 
	<pubDate>Fri, 10 Jul 2026 09:04:45 +0000</pubDate>

</item> 
<item>
	<title>Bits from Debian: New Debian Developers and Maintainers (May and June 2026)</title>
	<guid>tag:bits.debian.org,2026-07-10:/2026/07/new-developers-2026-07.html</guid>
	<link>https://bits.debian.org/2026/07/new-developers-2026-07.html</link>
     <description>  &lt;img src=&quot;http://planet.debian.org/heads/dwn.png&quot; width=&quot;77&quot; height=&quot;85&quot; alt=&quot;&quot; align=&quot;right&quot; style=&quot;float: right;&quot;&gt;  &lt;p&gt;The following contributors got their Debian Developer accounts in the last two
months:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Vivek K J (vivek)&lt;/li&gt;
&lt;li&gt;Benjamin Somers (bensmrs)&lt;/li&gt;
&lt;li&gt;Colin King (colinianking)&lt;/li&gt;
&lt;li&gt;Nadzeya Hutsko (nadzeya)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The following contributors were added as Debian Maintainers in the last two
months:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pieter Lenaerts&lt;/li&gt;
&lt;li&gt;Syed Shahrukh Hussain&lt;/li&gt;
&lt;li&gt;Ural Tunaboyu&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Congratulations!&lt;/p&gt; </description> 
	<pubDate>Fri, 10 Jul 2026 07:00:00 +0000</pubDate>

</item> 
<item>
	<title>Reproducible Builds (diffoscope): diffoscope 324 released</title>
	<guid>https://diffoscope.org/news/diffoscope-324-released/</guid>
	<link>https://diffoscope.org/news/diffoscope-324-released/</link>
     <description>  &lt;p&gt;The diffoscope maintainers are pleased to announce the release of diffoscope
version &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;324&lt;/code&gt;. This version includes the following changes:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;[ Paul Spooren ]
* Allow trailing garbage in Gzip files.

[ Chris Lamb ]
* Bump debhelper compatibility level to 14.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;You find out more by &lt;a href=&quot;https://diffoscope.org&quot;&gt;visiting the project homepage&lt;/a&gt;.&lt;/p&gt; </description> 
	<pubDate>Fri, 10 Jul 2026 00:00:00 +0000</pubDate>

</item> 
<item>
	<title>Valhalla&#39;s Things: Cockades!</title>
	<guid>https://blog.trueelena.org/blog/2026/07/10-cockades/index.html</guid>
	<link>https://blog.trueelena.org/blog/2026/07/10-cockades/index.html</link>
     <description>  &lt;article&gt;
    &lt;section class=&quot;header&quot;&gt;
        Posted on July 10, 2026
        &lt;br /&gt;
        
        Tags: &lt;a href=&quot;https://blog.trueelena.org/tags/madeof%3Aatoms.html&quot; title=&quot;All pages tagged &#39;madeof:atoms&#39;.&quot;&gt;madeof:atoms&lt;/a&gt;, &lt;a href=&quot;https://blog.trueelena.org/tags/FreeSoftWear.html&quot; title=&quot;All pages tagged &#39;FreeSoftWear&#39;.&quot;&gt;FreeSoftWear&lt;/a&gt;, &lt;a href=&quot;https://blog.trueelena.org/tags/craft%3Asewing.html&quot; title=&quot;All pages tagged &#39;craft:sewing&#39;.&quot;&gt;craft:sewing&lt;/a&gt;
        
    &lt;/section&gt;
    &lt;section&gt;
        &lt;p&gt;&lt;img alt=&quot;six cockades in black, grey, white, purple, in different sizes and with different centrepieces. One is only black and white and has a penguin pin in the middle.&quot; class=&quot;align-center&quot; src=&quot;https://blog.trueelena.org/blog/2026/07/10-cockades/pile_of_cockades.jpg&quot; style=&quot;width: 80.0%;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Earlier this year, I made myself a new hat (it will be blogged), and I
wanted to put a nice cockade on it.
So, I looked for suitable ribbons, and couldn’t find any.
I found some ribbon that looked passable, but the colours I wanted
weren’t available, so I set up the website to notify me, and kept
working on the hat.&lt;/p&gt;
&lt;p&gt;Eventually the hat was done, the ribbon was still not available, so I
decorated the hat with fake flowers from my stash, and started wearing
it.&lt;/p&gt;
&lt;p&gt;And that’s when I got notified that the ribbon was back in stock.&lt;/p&gt;
&lt;p&gt;By the time the ribbon arrived, I had decided that the hat looked better
with the flowers, and project cockade was put on hold, possibly for a
future hat.&lt;/p&gt;
&lt;p&gt;And then June came, and what could be a better time than that for a
project based on flag colours?&lt;/p&gt;
&lt;p&gt;As I feared, the ribbon I got wasn’t the best: it was a bit too stiff
and plasticy, and not really usable for many other things. It did
however work well enough for a cockade, and I decided it was a good
chance to try different methods and designs, and then make another one
to take pictures and publish step-by-step instructions.&lt;/p&gt;
&lt;p&gt;And that’s the perfect recipe to find oneself surrounded by a somewhat
unreasonable number of very similar cockades, I guess.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;A big cockade with four ribbons, starting with purple on the outside, and a black bead in the middle covering the centre of the black ribbon. The pleating isn&#39;t the most regular, and the black ribbon at the centre is almost more gathered than pleated.&quot; class=&quot;align-center&quot; src=&quot;https://blog.trueelena.org/blog/2026/07/10-cockades/number_one.jpg&quot; style=&quot;width: 80.0%;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I looked around for instructions, and the ones that gave a result that
was closer to my mental idea of a cockade were the ones by &lt;a href=&quot;https://blog.americanduchess.com/2010/04/how-to-make-18th-c-cockades.html&quot;&gt;American
Duchess&lt;/a&gt;,
so on my first attempt I tried to follow those.&lt;/p&gt;
&lt;p&gt;I didn’t have a cork board with a hole, so it was a bit fiddly, and the
result was passable, but could have been better. Meanwhile I saw &lt;a href=&quot;https://www.authentic-campaigner.com/forum/military-forums/camp-of-instruction/18697-easy-to-make-cockades#post163741&quot;&gt;a
forum post commenting on the above tutorial&lt;/a&gt;
and that gave me ideas for a procedure more suitable to the tools I had.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;A cockade with tree ribbons, starting with purple on the outside, then white, grey, and a black bead in the middle that is a bit bigger than the one on the previous one. The pleating isn&#39;t perfect, but neater than the previous one.&quot; class=&quot;align-center&quot; src=&quot;https://blog.trueelena.org/blog/2026/07/10-cockades/number_two.jpg&quot; style=&quot;width: 80.0%;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The second cockade I made was indeed more satisfactory, and I also
started to experiment with making a center piece with ribbons, to cut
down on the types of materials needed.&lt;/p&gt;
&lt;p&gt;On this one I also tried to add a pin backing, so that I could write
instructions on how to do it in what I believe is a more stable way than
simply adding it to the felt backing at the end.&lt;/p&gt;
&lt;p&gt;I’m not sure whether the other ones will be tacked to a hat, and thus
won’t require pins at all, or if I’ll just put them on some dress with
pins hidden under the ribbon layers.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;A cockade with three ribbons, starting with black on the outside, then grey and white, and a flat pentagonal knot of purple ribbon at the centre.&quot; class=&quot;align-center&quot; src=&quot;https://blog.trueelena.org/blog/2026/07/10-cockades/number_tree.jpg&quot; style=&quot;width: 80.0%;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;And then I was ready to make a third cockade, taking step by step
pictures for my website, and I planned to start on it the next morning.&lt;/p&gt;
&lt;p&gt;Trenord had different ideas.&lt;/p&gt;
&lt;p&gt;Thanks to the combination of independent but complete disruptions on
&lt;em&gt;two&lt;/em&gt; nearby train lines, I spent the morning driving a couple of people
to the nearest station that was still being served by trains, and then
back home less than 10 minutes before I had to start working, which if
you ask&lt;a class=&quot;footnote-ref&quot; href=&quot;https://blog.trueelena.org#fn1&quot; id=&quot;fnref1&quot;&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;/a&gt; me was pretty homophobic of the train company.&lt;/p&gt;
&lt;p&gt;There was way less traffic than I expected, and I did enjoy the drive
&lt;a class=&quot;footnote-ref&quot; href=&quot;https://blog.trueelena.org#fn2&quot; id=&quot;fnref2&quot;&gt;&lt;sup&gt;2&lt;/sup&gt;&lt;/a&gt;, but for various reasons it meant a significant delay for this
post.&lt;/p&gt;
&lt;p&gt;Anyway, less than a week later than I had planned, halfway in June I
managed to publish &lt;a href=&quot;https://sewing-patterns.trueelena.org/accessories/decorations/multi_colour_cockade/index.html&quot;&gt;step by step instructions on my website&lt;/a&gt;, but I wasn’t done with the project yet.&lt;/p&gt;
&lt;p&gt;Beside the fact that I still needed to finish sewing the backing felt to
the cockades I had done, I also had a few ideas for more centrepieces
made of ribbon I wanted to try.&lt;/p&gt;
&lt;p&gt;And this means that I moved on to another project that was already in
progress (this one will also be blogged).&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;A cockade with three ribbons, starting with black on the outside, then grey and white, and two squares of purple ribbon at the centre, forming a sort of eight point star. The ribbons are box pleated and this gives the cockade a bit more of a tree-dimensional shape.&quot; class=&quot;align-center&quot; src=&quot;https://blog.trueelena.org/blog/2026/07/10-cockades/number_four.jpg&quot; style=&quot;width: 80.0%;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;After I’ve finished that one, at the very end of June I quickly made the
last two centrepieces, taking pictures for the instructions, and in the
next few days I also finished the cockades.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;A cockade with three ribbons, starting with purple on the outside, then white and grey, and an hexagonal shape made of black ribbon at the centre. The ribbons are again box pleated.&quot; class=&quot;align-center&quot; src=&quot;https://blog.trueelena.org/blog/2026/07/10-cockades/number_five.jpg&quot; style=&quot;width: 80.0%;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;This time, instead of plain pleats I tried to use box pleats, and I
quite like the look they give, so if in the future I’ll have a need for
more cockades I may use again this pleating pattern.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;A cockade with just two gathered ribbons, starting with black on the outside, then white, and a linux.it pin in the middle with a black background and two eyes and an orange beak reminding of a penguin.&quot; class=&quot;align-center&quot; src=&quot;https://blog.trueelena.org/blog/2026/07/10-cockades/number_six.jpg&quot; style=&quot;width: 80.0%;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;For the last cockade I wanted to try two things: putting a pin in the
middle as a centrepiece, and gathering the ribbons.&lt;/p&gt;
&lt;p&gt;For the pin, I found that the only one I had that had a colour scheme
compatible with the ribbons I had was one with the penguin from
linux.it, which had a black background, so I put black ribbon on the
outside and white next to it for contrast.&lt;/p&gt;
&lt;p&gt;And gathering was done with a whipped gather with ribbons that were one
and a half times the outer circumference of their slot, and looks decent
enough, but I think I prefer the look of pleated cockades a lot. Maybe
it would look better with a softer ribbon.&lt;/p&gt;
&lt;p&gt;Anyway, I think this is plenty of cockades for the time being, unless I
get tempted by buying more colours of ribbon to make different ones. But
I’m not making an online purchase just for those. &lt;em&gt;I&lt;/em&gt; &lt;em&gt;am&lt;/em&gt; &lt;em&gt;not&lt;/em&gt;.&lt;/p&gt;
&lt;section class=&quot;footnotes footnotes-end-of-document&quot;&gt;
&lt;hr /&gt;
&lt;ol&gt;
&lt;li id=&quot;fn1&quot;&gt;&lt;p&gt;you probably shouldn’t.&lt;a class=&quot;footnote-back&quot; href=&quot;https://blog.trueelena.org#fnref1&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li id=&quot;fn2&quot;&gt;&lt;p&gt;also thanks to my partner who, on entering the destination
town, told me to stop on the big, straight, two-way road with plenty
of roundabouts to turn around, and went through the maze of one-way
streets to the station by foot.&lt;a class=&quot;footnote-back&quot; href=&quot;https://blog.trueelena.org#fnref2&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;
    &lt;/section&gt;
&lt;/article&gt; </description> 
	<pubDate>Fri, 10 Jul 2026 00:00:00 +0000</pubDate>

</item> 
<item>
	<title>Jonathan Dowland: Korg Minilogue XD Desktop Module</title>
	<guid>https://jmtd.net/log/synths/minilogue-xd/module/</guid>
	<link>https://jmtd.net/log/synths/minilogue-xd/module/</link>
     <description>  &lt;img src=&quot;http://planet.debian.org/heads/jmtd.png&quot; width=&quot;65&quot; height=&quot;85&quot; alt=&quot;&quot; align=&quot;right&quot; style=&quot;float: right;&quot;&gt;  &lt;p&gt;I bought a new synth! Kind-of.&lt;/p&gt;

&lt;p&gt;I&#39;ve traded my &lt;a href=&quot;https://jmtd.net/log/synths/minilogue-xd/&quot;&gt;Minilogue-XD&lt;/a&gt; (full-size version with integrated keyboard) for
the desktop/modular alternative.&lt;/p&gt;

&lt;div class=&quot;image&quot;&gt;
&lt;a href=&quot;https://jmtd.net/log/synths/minilogue-xd/module.jpg&quot;&gt;&lt;img alt=&quot;Modular Minilogue XD&quot; class=&quot;img&quot; height=&quot;300&quot; src=&quot;https://jmtd.net/log/synths/minilogue-xd/module/400x-module.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;

&lt;p&gt;Modular Minilogue XD&lt;/p&gt;

&lt;/div&gt;


&lt;p&gt;Why? Partly, because it fits on my desk better. Partly, because it changes the way
you engage with the instrument. It makes
a huge difference: the ivory keys come with so much cultural precedent. The module
version of the synth gains a switch that lets you use the 16 sequencer step buttons
as note inputs, so you can still play the thing solo. But the emphasis moves away
from note generation and more firmly towards tone.&lt;/p&gt;

&lt;p&gt;Both versions have a lovely stained wood back, which you never see; the modular one
has a hint of that at the front as well (which you do see).&lt;/p&gt;

&lt;p&gt;I plan to eventually buy a MIDI keyboard that could drive it, and other things:
possibly an Arturia KeyStep or Minilab, but there&#39;s no rush on that.&lt;/p&gt;

&lt;p&gt;(It&#39;s about time I recorded and shared something I produced on this)&lt;/p&gt; </description> 
	<pubDate>Thu, 09 Jul 2026 19:31:38 +0000</pubDate>

</item> 
<item>
	<title>Thorsten Alteholz: My Debian Activities in June 2026</title>
	<guid>http://blog.alteholz.eu/?p=2832</guid>
	<link>http://blog.alteholz.eu/2026/07/my-debian-activities-in-june-2026/</link>
     <description>  &lt;h3&gt;&lt;strong&gt;Debian LTS/ELTS&lt;/strong&gt;&lt;/h3&gt;



&lt;p&gt;&lt;/p&gt;&lt;p&gt;This was my hundred-forty-fourth month that I did some work for the Debian LTS initiative, started by Raphael Hertzog at Freexian.
&lt;/p&gt;
&lt;p&gt;
During my allocated time I uploaded or worked on:  
&lt;/p&gt;&lt;p&gt;&lt;/p&gt;



&lt;ul&gt;&lt;li&gt;[&lt;a href=&quot;https://lists.debian.org/debian-lts-announce/2026/06/msg00004.html&quot;&gt;DLA 4615-1&lt;/a&gt;]  exim4 security update to fix one CVE related to information disclosure in combination with proxies.
&lt;/li&gt;&lt;li&gt;[&lt;a href=&quot;https://lists.debian.org/debian-lts-announce/2026/06/msg00005.html&quot;&gt;DLA 4616-1&lt;/a&gt;] haveged security update to fix one CVE related to local root privilege escalation.
&lt;/li&gt;&lt;li&gt;[&lt;a href=&quot;https://lists.debian.org/debian-lts-announce/2026/06/msg00007.html&quot;&gt;DLA 4618-1&lt;/a&gt;] gsasl security update to fix one CVE related to denial of service.
&lt;/li&gt;&lt;li&gt;[&lt;a href=&quot;https://lists.debian.org/debian-lts-announce/2026/06/msg00020.html&quot;&gt;DLA 4631-1&lt;/a&gt;] asterisk security update to fix 13 CVEs related to buffer under- or overflows, either on heap or on stack. Some are related to use-after-free or wrong processing of invalid or untrusted certificates. 
&lt;/li&gt;&lt;li&gt;[ELA-1747-1] gimp security update to fix three CVEs in Buster related to denial of service or execution of arbitrary code if malformed PSP, JPEG 2000 or PSD files are opened.&lt;/li&gt;&lt;li&gt;[ELA-1748-1] gimp security update to fix two CVEs in Stretch related to denial of service or execution of arbitrary code if malformed PSP or PSD files are opened.&lt;/li&gt;&lt;li&gt;[ELA-1749-1] exim4 security update to fix one CVEs in Buster and Stretch related to information disclosure in combination with proxies.&lt;/li&gt;&lt;li&gt;[ELA-1750-1] gsasl security update to fix one CVEs in Buster and Stretch related to denial of service.&lt;/li&gt;&lt;/ul&gt;



&lt;p&gt;
Besides fixing all CVEs of &lt;i&gt;asterisk&lt;/i&gt; in Bullseye, I started to look at &lt;i&gt;asterisk&lt;/i&gt; in other releases as well. Rather surprisingly &lt;i&gt;asterisk&lt;/i&gt; is only part of Unstable and Bullseye. All other releases don’t include any version of &lt;i&gt;asterisk&lt;/i&gt; at all. So first things first, besides some security related RC bugs, &lt;i&gt;asterisk&lt;/i&gt; did not migrate due to RC-bugs in &lt;i&gt;dahdi-linux&lt;/i&gt;.
As I maintain &lt;i&gt;osmocom-dahdi-linux&lt;/i&gt; (which supports less/other hardware), I looked at the open issues and after some rounds I could upload a new upstream version, fixed some bugs and resolved issues with piuparts. &lt;i&gt;dahdi-linux&lt;/i&gt; meanwhile migrated to testing, job done! &lt;br /&gt; As a next step I looked at the open CVEs. Some of them had been already fixed in previous uploads but had not been marked accordingly. So I fixed all remaining ones and sent a debdiff to the maintainer. Unfortunately there was some kind of overlap in our work and he ignored my debdiff but uploaded a new upstream version. Anyway, job done as well, no open security issues anymore. The only thing that hinders &lt;i&gt;asterisk&lt;/i&gt; from migrating to testing is the reproducible build. So if anybody has some spare time …
&lt;/p&gt;


&lt;p&gt;
Other things I worked on were the regression update of &lt;i&gt;rsync&lt;/i&gt;. Some of the elven new patches need to be backported, but I am confidentially to finish this month. I already reviewed the &lt;i&gt;rsync&lt;/i&gt;– uploads of Sylvain to Buster and Stretch, so I don’t expect any big hurdles here. I am also making progress to find the correct patches for &lt;i&gt;hplip&lt;/i&gt; and &lt;i&gt;cups&lt;/i&gt;.
&lt;/p&gt;


&lt;h3&gt;&lt;strong&gt;Debian Printing&lt;/strong&gt;&lt;/h3&gt;



&lt;p&gt;This month I uploaded a new upstream versions:&lt;/p&gt;



&lt;ul&gt;&lt;li&gt;… &lt;a href=&quot;https://tracker.debian.org/lprng&quot;&gt;hplip&lt;/a&gt; to unstable to fix some bugs.&lt;/li&gt;&lt;/ul&gt;



&lt;p&gt;&lt;strong&gt;This work is generously funded by &lt;a href=&quot;https://www.freexian.com&quot;&gt;Freexian&lt;/a&gt;!&lt;/strong&gt;&lt;/p&gt;



&lt;h3&gt;&lt;strong&gt;Debian Lomiri&lt;/strong&gt;&lt;/h3&gt;



&lt;p&gt;&lt;/p&gt;&lt;p&gt;This month new upstream versions of dozens of lomiri packages have been released and I uploaded lots of them to Debian. After they migrate to testing, I am also going to sync them to the Ubuntu PPA. &lt;/p&gt;



&lt;p&gt;&lt;strong&gt;This work is generously funded by &lt;a href=&quot;https://freiesoftware.gmbh/&quot;&gt;Fre(i)e Software GmbH&lt;/a&gt;!&lt;/strong&gt;&lt;/p&gt;



&lt;h3&gt;&lt;strong&gt;Debian Astro&lt;/strong&gt;&lt;/h3&gt;



&lt;p&gt;This month I uploaded a new upstream version  or a bugfix version of:&lt;/p&gt;



&lt;ul&gt;&lt;li&gt;… &lt;a href=&quot;https://tracker.debian.org/supernovas&quot;&gt;indi-pentax&lt;/a&gt; to unstable. This is a package in contrib without autobuild and needed a new upload for the libraw transistion.&lt;/li&gt;&lt;li&gt;… &lt;a href=&quot;https://tracker.debian.org/c-munipack&quot;&gt;c-munipack&lt;/a&gt; to unstable.&lt;/li&gt;&lt;li&gt;… &lt;a href=&quot;https://tracker.debian.org/supernovas&quot;&gt;supernovas&lt;/a&gt; to unstable (sponsored upload).&lt;/li&gt;&lt;/ul&gt;



&lt;h3&gt;&lt;strong&gt;Debian IoT&lt;/strong&gt;&lt;/h3&gt;



&lt;p&gt;This month I uploaded a new upstream version  or a bugfix version of:&lt;/p&gt;



&lt;ul&gt;&lt;li&gt;… &lt;a href=&quot;https://tracker.debian.org/duktape&quot;&gt;duktape&lt;/a&gt; to unstable.&lt;/li&gt;&lt;li&gt;… &lt;a href=&quot;https://tracker.debian.org/libcoap3&quot;&gt;libcoap3&lt;/a&gt; to unstable.&lt;/li&gt;&lt;/ul&gt;



&lt;h3&gt;&lt;strong&gt;Debian Mobcom&lt;/strong&gt;&lt;/h3&gt;



&lt;p&gt;This month I uploaded a new upstream version  or a bugfix version of:&lt;/p&gt;



&lt;ul&gt;&lt;li&gt;… &lt;a href=&quot;https://tracker.debian.org/smstools&quot;&gt;smstools&lt;/a&gt; to unstable.&lt;/li&gt;&lt;/ul&gt;



&lt;h3&gt;&lt;strong&gt;misc&lt;/strong&gt;&lt;/h3&gt;



&lt;p&gt;This month I uploaded a new upstream version  or a bugfix version of:&lt;/p&gt;



&lt;ul&gt;&lt;li&gt;… &lt;a href=&quot;https://tracker.debian.org/visam&quot;&gt;visam&lt;/a&gt; to unstable. There had been an RC bug due to two binaries with the same name but different functionality. Yes, it is in the policy but … (my mother forbade me to elaborate more on this)&lt;/li&gt;&lt;li&gt;… &lt;a href=&quot;https://tracker.debian.org/mailio&quot;&gt;mailio&lt;/a&gt; to unstable.&lt;/li&gt;&lt;/ul&gt; </description> 
	<pubDate>Tue, 07 Jul 2026 17:56:04 +0000</pubDate>

</item> 
<item>
	<title>Aigars Mahinovs: How to make a good group photo</title>
	<guid>http://aigarius.com/blog/2026/07/05/making-of-group-photo/</guid>
	<link>http://aigarius.com/blog/2026/07/05/making-of-group-photo/</link>
     <description>  &lt;img src=&quot;http://planet.debian.org/heads/aigarius_hg.png&quot; width=&quot;85&quot; height=&quot;116&quot; alt=&quot;&quot; align=&quot;right&quot; style=&quot;float: right;&quot;&gt;  &lt;p&gt;Taking a good group photo consists of multiple aspects:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;hardware&lt;/li&gt;
&lt;li&gt;scouting&lt;/li&gt;
&lt;li&gt;organization&lt;/li&gt;
&lt;li&gt;preparation&lt;/li&gt;
&lt;li&gt;execution&lt;/li&gt;
&lt;li&gt;processing&lt;/li&gt;
&lt;li&gt;publishing&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I can say with confidence that nearly everything here comes from having failed to do these things right
at least once, even on the latest attempts, so this is an ideal to reach towards, not something we expect to
hit every time.&lt;/p&gt;
&lt;h3&gt;The Goal&lt;/h3&gt;
&lt;p&gt;The main goal of a big event group photo is capture both the moment itself and each individual person inside
that moment.&lt;/p&gt;
&lt;p&gt;We want people, who were &lt;em&gt;not&lt;/em&gt; there to see all the people involved and get an impression of what
it was like being there. It needs to show the breadth and depth of people that make up this group, this project.&lt;/p&gt;
&lt;p&gt;And we want people who &lt;em&gt;were&lt;/em&gt; there to be able to look back the next week, the next year
or in ten years and remember - ah, yes, I was there, I was standing right there with this grin on my face next
to this wonderful person and I was feeling great.&lt;/p&gt;
&lt;h3&gt;Hardware&lt;/h3&gt;
&lt;p&gt;Based on the goal we want to have high level photographic gear that is able to capture both a broad enough picture
to encompass all the people and some of their surroundings to communicate the context (without undue distortions)
and to deliver enough detail and resolution so that faces and facial expressions and underlying feelings of every
single person in that group could be clearly seen and preserved.&lt;/p&gt;
&lt;p&gt;To both capture the context and minimise distortion the final picture should be just a bit wider than normal human
field of view. That is about 50mm for a full-frame camera or 35mm for a typical 1.6 crop camera. You can go a bit
wider if there are no better alternatives (as detailed in the scouting section), but be prepared that corners
of the image will be distorted and not really usable (but we can fix that in processing step). Or you can go
to unusual aspect ratios, like we did in &lt;a href=&quot;https://wiki.debconf.org/wiki/DebConf10/GroupPhoto&quot;&gt;Debconf 10&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In the absence of a 100MP+ camera, you will need to be stitching together multiple frames to achieve resolution
high enough to have enough pixels-per-face to see emotions clearly. This means that the photos you will actually
be taking will be tighter than the overall field of view mentioned above. Still, a higher resolution camera body
is preferable - nowadays 24MP-32MP cameras APS-C provide a good compromise between resolution and price, but
45-67MP full-frame cameras also exist on the market. Assume that we will be shooting in a bright environment,
so most likely with quite low ISO settings, that means that high-ISO noise characteristics of more expensive
cameras will not really play a role here. You will also not need very fast burst modes, even manual speed of
one frame per second is sufficient.&lt;/p&gt;
&lt;p&gt;You will also want to get as much detail as possible out of your lens, and this is the &lt;em&gt;most important&lt;/em&gt; part.
You can do amazing work in all other steps of the process and have a great camera too, but if you pair it with
a lens that is not sharp, then the end result will be disappointing.&lt;/p&gt;
&lt;p&gt;You want the lens that is sharpest corner-to-corner when stepped down to about f/8-f/11, that you can get for
your system. You also want that lens to be about 85mm full-size sensor or 50mm for 1.6 crop size. Luckily that kind of
range is also a great range for optical design and sharpest lenses are typically available in exactly these kinds
of sizes. You absolutely want to have a fixed focal length lens, not a zoom lens. Even profession grade zoom lenses
often deliver worse image quality compared to fixed lenses that cost less 1/10th of their price (when shooting in
the same focal length). Newer design lenses are better than older lenses - optical design, coatings and precision
manufacturing have advanced a lot over the decades. Retro look is great for mood, but not as good for actual
resolution and clarity. You don&#39;t need to overpay for most expensive lenses because those often only improve
image quality on lower F-stops. To encompass the whole group we will need to shoot at f/8 and in bright light,
so the extra benefits of those f/1.2-capable super expensive lenses will not come into play here.&lt;/p&gt;
&lt;p&gt;We will have no use for a flash here. A tripod will be too restrictive when rapidly repositioning the camera between
different parts of the panorama shoot. But a monopod might help with stability - I have not tried that myself,
however.&lt;/p&gt;
&lt;p&gt;For my last photos I used a Canon EOS R7 (32.5MP) with Canon RF 50mm f/1.8 STM lens and considering an upgrade
to Sigma 56mm f/1.4 DC DN for the next time.&lt;/p&gt;
&lt;h3&gt;Scouting&lt;/h3&gt;
&lt;p&gt;Scouting a good location for the group photo is another big chunk of a successful picture. The critical piece of
the puzzle is lens-to-face distance. In order to keep everyone&#39;s face in-focus and have enough resolution on the
farthest faces (without making nearest faces truly massive) we want to do everything possible to reduce the
variance in lens-to-face distance - to reduce the difference in distance between closest and farthest face.&lt;/p&gt;
&lt;p&gt;The most effective way to do that is to have the photographer climb higher. To see this in action on the
&lt;a href=&quot;https://wiki.debian.org/DebConf/GroupPhotoAll&quot;&gt;Debconf photos&lt;/a&gt;, compare Debconf6 (very high camera position,
group on level ground - good) to Debconf10 (camera not too high, group on stairs, still good) and to Debconf17
(camera could not get high enough and the group is on flat ground - not great). Even the Debconf25 photo was
suboptimal from this perspective. The Debconf23 photo was a very good example from the recent years - good height
and also the group was positioned in a semi-circle so there were no people directly in front and very near to
the camera.&lt;/p&gt;
&lt;p&gt;So you are looking for the highest point you could get to (even if that requires a special permission of key or a
ladder) with a field large enough to fit the whole group comfortably. How to check that? Normally I simply take a
photo from the top of the whole area and note down from there where the extreme corners of the group could be
and still be fully seen in the shot - not blocked by trees, buildings and shadows. Then I go down and measure
that space. Rule of thumb being - people in one horizontal line can stand 1 normal length step from each other and
two horizontal lines can be half a step from each other vertically. So I can just measure a rough rectangle in
steps, multiply the sides, multiply that by two and I have the rough number of people that can fit there for the
photo.&lt;/p&gt;
&lt;p&gt;Once you have a candidate location or two, it is important to check them at the same time-of-day as you plan to
do the photo (see organization section for that). You want to make sure that the whole area of the group is in the
same illumination - if half of the group is in the sun and half in a shadow, then you will be having a very bad
time later. The absolute ideal positioning for the group photo is to have everyone be in shadow, but still have
enough bright skies and bright buildings in front of the people to give good illumination of the faces. Worst
you can do is have the sun be behind the people (so all the faces are really dark) and second worst is have the sun
be directly in front of the group, so that the faces are very well illuminated, but everyone&#39;s eyes are closed
because they are being blinded by the sun. And sometimes all you can do is pray for some light clouds to provide
for even and dispersed light. Debconf23 was very lucky that way.&lt;/p&gt;
&lt;p&gt;Another consideration is to how people are going to get to that place. You need to consider accessibility needs
of people (it is ok, if it takes more effort or time, but it needs to be organized and communicated well in
advance). And you need to consider how the big masses of people will be getting there - how to tell people where
&lt;em&gt;exactly&lt;/em&gt; it is and how to get there from various locations where people might be hanging out during the event?&lt;/p&gt;
&lt;p&gt;Having an alternate location indoors might be necessary if the weather report for the next days is not sufficiently
predictable. We had to use that contingency in Debconf9, for example.&lt;/p&gt;
&lt;h3&gt;Organization&lt;/h3&gt;
&lt;p&gt;It&#39;s hard to take a good group photo if half of the group does not show up or is too late, so this needs some
organization to happen smoothly.&lt;/p&gt;
&lt;p&gt;First of all you need to choose date and time for the photo. The photo does not take too much time from the
schedule of the event and can be squeezed in after all the other events are already scheduled. In fact I prefer
that as it allows you the flexibility of choosing the date based on weather conditions and time based on light
and shadow conditions in potential photo spots. You don&#39;t want to choose the daytrip day as most people will be
away and return times are not really predictable. You do not want to choose the morning after Cheese and Wine
party for obvious reasons. First day and last two days are also sub-optimal as some people arrive late and some
leave early for various personal reasons. Also &lt;em&gt;you&lt;/em&gt; don&#39;t want it to happen just before Cheese and Wine either
because then you&#39;d have very little time and clarity to do the processing of the image on the same day.&lt;/p&gt;
&lt;p&gt;For timing, the best way, in my experience, is to schedule the photo directly after the end of talk sessions before
a meal break - lunch or dinner. Typically in the Debconf schedule there are 2-3 daily breaks planned, say for
Debconf25 there was lunch, afternoon break and dinner. Talks are planned to end ~10 minutes before those breaks
(and meals) begin, so for example, afternoon break starts at 16:00 and all talks in the previous block end at
15:50. In such a case just schedule the &quot;Group photo&quot; event from 15:50 to 16:05. This gives people the info to go
there &lt;em&gt;directly&lt;/em&gt; from the end of all talks and that they will have sufficient time for break/meal afterwards.
Do not forget to specify the location (as exactly as possible) in that event entry and make sure to post it at
least two days in advance. People often want to wear something specific for the photo and thus need to know about it
in advance. This also makes sure that people do not make alternate food plans for that specific break and don&#39;t
leave the venue.&lt;/p&gt;
&lt;p&gt;Announce the date, time and the exact location as wide as possible, don&#39;t be shy. Announce and discuss mailing
lists, IRC, Signal, Telegram, make sure the front desk knows in case anyone asks in-person, ... Check that it
is again included in the announcements email on the day preceding the photo date.&lt;/p&gt;
&lt;p&gt;When the date has arrived, it is a good idea to check in early with people with special mobility needs to make
sure they know where to go, how to get there and how much time they will need to be able to get there on time.&lt;/p&gt;
&lt;p&gt;As the final round of talks before the group photo is starting up, it is time to recruit &quot;runners&quot;. I&#39;ve had great
success with this technique. The idea is pretty simple - for each room where people congregate (talk rooms,
hacklabs, cafeteria, outside hackspace, front-desk, ...) go there and choose one person. You want to choose a person
that you will recognise and remember among everyone else in the group, either because of who they are or what they
are wearing, whatever works best for you. If they agree to help, instruct them to: &quot;at end of talk, announce that
the group photo happening now and the location, herd people towards the photo location, be the last person out,
make sure there are no stragglers from this area behind you, when you arrive to the photo place I will assume
that everyone else from this room is also now there, when you are there catch my attention and show this sign so
I know for sure that it is all good and make sure that I did see it from you&quot;. With that sorted out all you will
need to remember is how many runners you recruited and how many have reported in to figure out if everyone has now
arrived or if we still have to wait for someone or some group.&lt;/p&gt;
&lt;p&gt;Then you will only have one last point of organization left - shaping the crowd into a group. People will not
know what your vision for the group photo is, so you will have to give clear and &lt;strong&gt;LOUD&lt;/strong&gt; instructions on where
people should &lt;em&gt;not&lt;/em&gt; be standing. Use clear, large gestures to support your words. You want to compact the group,
have the people that just joined in the last moment and are standing to the side come deeper in and join the
crowd. Have any holes in the middle of the crowd filled in. Forming a semi-circle instead of a blob helps with
averaging face-to-lens distances. Make sure people are not in unexpected shadows. Make sure carried objects, like
umbrellas of flags do not cover the faces of other people. Take the time to look at everyone face to make sure there
are no people hiding behind someone&#39;s shoulder - typically they are not aware that their face is in fact not really
visible. If there are such people, call them out and point directly at them and encourage them to step forward, if
they wish to do so. You are the &lt;em&gt;only&lt;/em&gt; one seeing the final picture now and only you can correct it before
capturing the moment. So a few extra seconds here are worth taking, even if 300+ people are standing in scorching
heat and waiting on you.&lt;/p&gt;
&lt;p&gt;When you are happy with what you are seeing, make sure to tell people clearly that you are now about to take
the pictures and &lt;em&gt;again&lt;/em&gt; remind them not to move and &lt;em&gt;explicitly&lt;/em&gt; not to turn their heads to the side until you
are done (this is the source of most of the extra work in processing). Be very loud and clear and make sure
you have everyone&#39;s undivided attention &lt;em&gt;before&lt;/em&gt; you start saying the important stuff.&lt;/p&gt;
&lt;p&gt;When done - say so. There will be other groups that will want to also have a photo taken after the main group
is a bit more dispersed, so don&#39;t run away. Typically at least the T-shirt group will want a picture and also
all the organizers.&lt;/p&gt;
&lt;p&gt;Final bit of organization during the group photo shooting itself is the sneaky self-insert. You may choose not
to bother with it, or do it in the simplest way, like I did in Debconf6, but if you really want to blend in with
the crowd, you need to have someone else take a photo of you in the exact same location at the same date and time
from the same location. So you should already during shaping the crowd decide where you would fit in, it is easiest
to blend in at the back of the crowd and to one or other side, so that it appears like you are just standing behind
the shoulders of a couple peoples. Remember that spot - it is easiest if you stand in the exact same ground spot
when your photo is taken. Just go down, recruit a volunteer to take your photo, make sure the settings are fixed
to the same ones as for the group photo shots and have them take a handful of shots of you - one of you centered in
the camera frame and a couple more with you more towards the corners of the frame. This distortion from being
off-center in the frame may be important later.&lt;/p&gt;
&lt;h3&gt;Preparation&lt;/h3&gt;
&lt;p&gt;In addition to preparing the crowd for the photo, you also need to prepare yourself and the equipment. Make sure
you have dusted your camera sensor and cleaned both inside and outside glass of your lens. It is usually a good
idea to remove any filters from the lens. Install the hood, if that could help with blocking the sun flares.
Make sure you have the right lens and that you have installed the right lens.&lt;/p&gt;
&lt;p&gt;For fixed settings I typically shoot in JPEG with RAW being there more like an emergency backup. The extra dynamic
range of RAW could be used, but it is really complex to do that in combination with image blending and it is
hard to get right, so I prefer an all-JPEG workflow and fix the dynamic range in the scene itself, before shooting.
For Canon I am using the Standard profile that boosts the color saturation and sharpness a bit as I just enjoy
that look and find it hard to get anything significantly better from RAW data even with a lot of effort.
In any case make sure you have enough space on the cards to take at least 100 images and that you have a full
battery. Do not use high speed burst setting because it is then too easy to take too many pictures at the start
of the sequence and be stuck with your camera still in &quot;Busy&quot; state writing big RAW files to slowish SD cards
and not allowing you to finish the full picture rapidly.&lt;/p&gt;
&lt;p&gt;You want to have the shutter speed at at least 1/100th of a second to prevent blur from both your hand movements
and also from people in the shot moving around a bit (image stabilisation will not help you there). And you want
to have the aperture to be around f/8 - lower apertures risk people in front or behind falling out of focus, make
the lenses look less sharp. Higher apertures also start to become less sharp due to diffraction effects above f/8.
ISO should stay as low as possible, ideally at ISO 100, but if there is not enough light then upping the ISO to 400
would be the first step that I would try to do and second would be decreasing the aperture to f/5.6. If there is
too much light, then increasing the shutter speed should be the safe thing to do.&lt;/p&gt;
&lt;p&gt;As people start to arrive into the shooting location - check the exposure and nail down the settings, ideally in
manual mode. Consider that left side could be a bit lighter or darker than right side. Err on the side of making
the picture a bit too dark as there is more depth to darkness before cut-off compared to clipping on the high
end. However, do not trust the exposure detection, instead take a picture and look specifically at skin tones in
faces of people that already are standing in the photo area. Faces are the key bit and the exposure needs to be
adjusted just to the faces and ignore darker of lighter clothing. Do some test shots and find settings where faces
look not too bright, but also not very dark and fix those settings in manual mode.&lt;/p&gt;
&lt;p&gt;Now you are ready for the action. Shape the crowd, check the faces and the action can start!&lt;/p&gt;
&lt;h3&gt;Execution&lt;/h3&gt;
&lt;p&gt;During taking of the group photo you want to finish it fast, but at the same time you have to take the time to
make it right. If you hurry too much under pressure, you risk being left with unusably blurry images and the
whole effort wasted. Having already prepared and verified the manual settings makes it easier.&lt;/p&gt;
&lt;p&gt;When you are taking pictures, you have to remain as still as possible - even at very high
shutter speeds even slow hand movements are still bad for image quality. So think of the movement as of
biathlon athlete shooting the very middle of five, very separate targets - take a burst, reframe, then steady
up for a second and only then take the next burst. 3 frames per burst are sufficient. 90% of the time the very
first photo of a burst will be best. As you move from frame to frame, aim for just a bit more than half-frame
overlap. This will give the opportunity to skip frames if all is good, but also have backup coverage of every
face in case of problems. Proceed systematically, I typically start off on the top left of the crowd, then
go right until the end of the line, then shift down half a frame and go left until the end and repeat until
I am done with the crowd. &lt;/p&gt;
&lt;p&gt;After that it is &lt;em&gt;very&lt;/em&gt; helpful to also immediately take photos of a &quot;frame&quot; around
the whole crowd. Stitching process often distorts the frames in weird ways that leave holes in the resulting image
that you can fill if you have a wide frame around the crowd. It is possible to compensate with creative
cutouts in the final image (like Debconf9), but the more framing room you make, the more flexible you will be
able to be with cropping of the final photo. The frame also gives you the opportunity to capture more of the
context of the place and space.&lt;/p&gt;
&lt;p&gt;As an example, Debconf25 group photo in the end consisted from 9 images + 1 for sick people + 1 for me. I ended
up missing the framing shots for bottom left, top left and top right corners. To get there I took 68 images. And
in some years it was more than a hundred.&lt;/p&gt;
&lt;h3&gt;Processing&lt;/h3&gt;
&lt;p&gt;This part might be less stressful than taking the pictures from intensity perspective, but it lasts longer. Depending
on you luck, skill and perfectionism it can take anywhere from 3 to 9 hours of work to complete.&lt;/p&gt;
&lt;p&gt;Before you start, however, you should first request things that you will need for other people. This &lt;em&gt;can&lt;/em&gt; even be
done before taking the actual group photo, but usually I forget. To finish the photo you will need three things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;good quality vector graphics of the current Debconf logo&lt;/li&gt;
&lt;li&gt;good quality vector graphics of the &lt;em&gt;next&lt;/em&gt; years Debconf logo (even if preliminary)&lt;/li&gt;
&lt;li&gt;motto of the conference&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The first two you should be able to get from the respective organizers. The motto is harder. I typically try to
ask the current DPL to come up with something describing the current mood of the project or of the event, but
it is rare that it is that easy. Most of the time I came up with something as I was editing the photo and
reflecting on what was the mood, the feeling, the mojo of this conference and of this year was like. Bend that
around a recognisable phrase or expression, make it a bit more insider-relevant and you are on the right path.
Some years this was the hardest part.&lt;/p&gt;
&lt;p&gt;For the panorama stitching I will describe the workflow that has served me good for years, but maybe there are
better ways possible nowadays. Feel free to let me know!&lt;/p&gt;
&lt;p&gt;First I would save all photos taken and select one sharpest photo from every burst. Next I would select the minimal
number of photos that appear to be covering the entire crowd. The fewer images you use, the better in the end
because the most quality problems crop up in the areas where photos are getting stitched together. Fewer seams
leads to fewer issues.&lt;/p&gt;
&lt;p&gt;Open &lt;a href=&quot;https://packages.debian.org/search?keywords=hugin&quot;&gt;Hugin&lt;/a&gt; (you will also need enblend and enfuse installed)
and import your minimal set of images into it. Click the &quot;Align&quot; button and wait a while - the processor will be
trying to figure out keypoints in each image and then try to match these points between the images to try to
fit them all together into a single projection. To do that it will distort the images. This is the trial and error
process part. You may need to add, remove or replace images to get the stitching to work or to work better. You
may want to add more of the frame images to fill the ragged holes around the image.&lt;/p&gt;
&lt;p&gt;After initial alignment, go to &quot;Move/Drag&quot; tab and move the image a bit up in the projected field of view and
make it a bit more central visually. That will help a bit with the distortions in the near-by people and people
in the corners of the image. In the &quot;Crop&quot; tab set the initial crop - leave it generous, you can always crop more
in later steps. Do not be afraid of leaving in sizable chunks of black homes, empty skies or grass. All of that
can be filled in later as well.&lt;/p&gt;
&lt;p&gt;Go back to the &quot;Assistant&quot; tab and click &quot;Create panorama&quot;. It is good enough to have JPEG output at 100% quality
using exposure corrected low dynamic range output option. Make sure to check the &quot;Keep intermediate images&quot; option.
This will not only generate the final, merged panorama, but also keep around the individual images &lt;em&gt;after&lt;/em&gt;
perspective correction and exposure blending steps. These are critical for fixing blending error in the next step.&lt;/p&gt;
&lt;p&gt;You might need to go back a forth a few times with a different sets of source images, maybe adding some image
between other two, maybe removing another to reach a better starting point. The key part to pay attention - how
many ugly stitches are there in the image. Check every face, the blending algorithms do not recognise faces and
sometimes try to stitch one face from two or more images creating very weird effects. They &lt;em&gt;can&lt;/em&gt; be fixed in the
next step, but it is rather hard manual work, so the fewer such faces are in the blended image, the less work
you will have. In some years I&#39;ve managed to find a combination where all faces were good and in other years
I had to manually fix 13-15 faces.&lt;/p&gt;
&lt;p&gt;Do not try to blend the extra pictures (like with you or with sick people) into the main panorama with Hugin - it
will get very confused with the parts of the grass that it is able to see where other people were standing.&lt;/p&gt;
&lt;p&gt;The next is the final processing in &lt;a href=&quot;https://packages.debian.org/search?keywords=gimp&quot;&gt;GIMP&lt;/a&gt;. Think of it like
a large and complex project - do as much as possible in separate layers, save often.&lt;/p&gt;
&lt;p&gt;Fixing wrongly stitched faces and also putting yourself into the photo are very similar activities in the end.
Just the scale and the source differ. For yourself you just cut out yourself (upper torso is enough) from the
separate photo. For corrupted face, choose one of two intermediate images that the Hugin created where the
face is transformed, but not yet merged (with a different version of itself). In either case crop the photo to
roughly the interesting size and put roughly in the right spot as a separate layer on top of the group photo
background. Reduce the opacity of the small layer to 30-40% and zoom in to 400%. With that it is much simpler to
position the layer with pixel precision. Then all you need to do is add a layer mask to this layer and paint it
just right. Basically in layer mask black means transparent and white means non-transparent. So you need to &lt;em&gt;just&lt;/em&gt;
make everything that is you have white mask and everything that is not you have black mask. And smudge the border
a bit with finger tool or blur to make the transition smoother. Easy to say. Hard to do. This is what takes most
of the actual work hours in post-processing.&lt;/p&gt;
&lt;p&gt;You &lt;em&gt;might&lt;/em&gt; miss someone. I am sure Phill is just thrilled to see me in the very middle of the Debconf25 final
picture .... But do try to fix them all.&lt;/p&gt;
&lt;p&gt;Use large, sweeping geometric figures to cover up black holes, empty grass fields and other sub-optimal corner
features. And then use that newly created free space to put in a large version of the logo of this years
conference, decently sized motto and slightly smaller invitation to the next years conference.&lt;/p&gt;
&lt;p&gt;Do not forget to add a copyright and license statement somewhere in the corner in smaller, but still well
readable font. I am using a text like: &quot;Photo by: Full Name, Email: fullemail@debian.org, License: GPLv2+ or
CCv3-BY&quot; This ensures that this image may be used in any press coverage (with basic attribution) and also
can be included in any GPL-licensed software, if that ever comes up. The same statement is also in the
metadata of the image file (see Image-Metadata-Edit metadata in GIMP) along with information that states
that this is &quot;Debian Developer Conference Group photo, City, Country, Year&quot;. 
Image-&amp;gt;Image properties-&amp;gt;Comment is another place where GIMP hides this EXIF information.&lt;/p&gt;
&lt;p&gt;For ease of use, in addition to a full-resolution image it is also useful to make a lower resolution version
that would still fit on a 4K screen at full resolution, so about 3840px wide. Some photo hosting services set
other limits for image size as well, so it might be needed to scale the image down below 100Mpix to upload it
to Google Photos, for example.&lt;/p&gt;
&lt;h3&gt;Publishing&lt;/h3&gt;
&lt;p&gt;So, it is finally 1AM and the group photo is ready! How do you push it out to people? Well, in all possible ways
and places. Again - don&#39;t be shy, people do really want to see it.&lt;/p&gt;
&lt;p&gt;Push it to whatever you use for your shared photos. Push it to 
&lt;a href=&quot;https://salsa.debian.org/debconf-team/public/share&quot;&gt;Debconf shared git&lt;/a&gt; (note that this is GIT-LFS repo, make sure
you know how to add content to the LFS specifically). All permanent links to that in 
&lt;a href=&quot;https://wiki.debian.org/DebConf/GroupPhotoAll&quot;&gt;GroupPhotosAll wiki&lt;/a&gt;. And then send those links to IRC, Signal,
Telegram groups, debconf-announce mailing list. Publish it in your blog and push that to 
&lt;a href=&quot;https://planet.debian.org/&quot;&gt;Debian Planet&lt;/a&gt;. Push it in Threads, Bluesky and Mastodon.
 Send an email separately to Debconf orga team. And one to 
&lt;a href=&quot;https://wiki.debian.org/Teams/Publicity&quot;&gt;Debian Publicity Team&lt;/a&gt; so they can put it into the
&lt;a href=&quot;https://www.debian.org/&quot;&gt;Debian Home Page&lt;/a&gt; and push via Debian micronews accounts.&lt;/p&gt;
&lt;p&gt;And that is about it. Now you can go back to enjoying the rest of the conference. Or running around doing other
things that you think need to be done. It&#39;s up to you. You did it. This moment will remain with people for a
very long time. And you helped.&lt;/p&gt;
&lt;p&gt;Questions? Feedback? Just ask
&lt;a href=&quot;https://bsky.app/profile/aigarius.com/post/3mpytbrm5dc2w&quot;&gt;here&lt;/a&gt; or
&lt;a href=&quot;https://www.threads.com/@aigarius/post/DadpZDbjqAx?xmt=AQG0WPOLDjK2ZkbDiiuXEOqQQWF5bum51R8V_uNtv9nliA&quot;&gt;here&lt;/a&gt;.&lt;/p&gt; </description> 
	<pubDate>Mon, 06 Jul 2026 19:30:00 +0000</pubDate>

</item> 
<item>
	<title>Russ Allbery: Review: The Player of Games</title>
	<guid>https://www.eyrie.org/~eagle/reviews/books/0-06-105356-2a.html</guid>
	<link>https://www.eyrie.org/~eagle/reviews/books/0-06-105356-2a.html</link>
     <description>  &lt;p&gt;Review: &lt;cite&gt;The Player of Games&lt;/cite&gt;, by Iain M. Banks&lt;/p&gt;

&lt;table&gt;
  &lt;tbody&gt;&lt;tr&gt;
    &lt;td&gt;Series:&lt;/td&gt;
    &lt;td&gt;Culture #2&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;Publisher:&lt;/td&gt;
    &lt;td&gt;HarperPrism&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;Copyright:&lt;/td&gt;
    &lt;td&gt;1989&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;Printing:&lt;/td&gt;
    &lt;td&gt;February 1987&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;ISBN:&lt;/td&gt;
    &lt;td&gt;0-06-105356-2&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;Format:&lt;/td&gt;
    &lt;td&gt;Trade paperback&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;Pages:&lt;/td&gt;
    &lt;td&gt;295&lt;/td&gt;
  &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;
&lt;cite&gt;The Player of Games&lt;/cite&gt; is political space opera and the second book in
the shared Culture setting. As with most Culture books, the reading order
is not particularly important. It won the 1989 Locus Award for best
science fiction novel and sometimes competes with
&lt;a href=&quot;https://www.eyrie.org/~eagle/reviews/books/1-85723-135-X.html&quot;&gt;&lt;cite&gt;Use of Weapons&lt;/cite&gt;&lt;/a&gt; as the consensus best
Culture novel.
&lt;/p&gt;

&lt;p&gt;
This review is a re-read and yet another experiment in how to re-review a
book. This time, I decided to write a full second review with substantial
spoilers so that I can talk in more detail about the book. If you want to
avoid spoilers, or just want to see how my thoughts have evolved from my
first reading, see &lt;a href=&quot;https://www.eyrie.org/~eagle/reviews/books/0-06-105356-2.html&quot;&gt;my original review&lt;/a&gt; from
2005.
&lt;/p&gt;

&lt;p&gt;
Gurgeh plays games. He is probably the best strategy game player in the
entirety of the galaxy-spanning Culture. He has written papers on game
theory, won innumerable major championships, and is a celebrity in the
circle of like-minded aficionados.
&lt;/p&gt;

&lt;p&gt;
Gurgeh is also bored and in the middle of the Culture equivalent of a
mid-life crisis. As the story opens, he&#39;s vaguely unsatisfied and adrift,
unenthused by his normal activities, and searching vaguely for something
that will break through his ennui. He is caught by surprise by the thrill
he gets from a moment&#39;s misunderstanding in which an opponent suspects him
of cheating, which sets him up to be (apparently) clumsily blackmailed by
a deeply unpleasant drone named Mawhrin-Skel.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;SPOILERS BELOW&lt;/strong&gt;. If you have not read this book, consider stopping
here and instead reading my original &lt;a href=&quot;https://www.eyrie.org/~eagle/reviews/books/0-06-105356-2.html&quot;&gt;no spoiler
review&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
The first hundred pages of &lt;cite&gt;The Player of Games&lt;/cite&gt; is a slow, somewhat
plodding introduction to Gurgeh, his social circle, and life in (one part
of) the Culture. I remember being fascinated by this part the first time I
read this book. It was only the second Culture novel I read and the first
set in the Culture proper, so the world-building underlying this odd
post-scarcity utopia on a vast intelligent habitat with sentient drones,
complex privacy rules, endless cocktail parties, and apparently
directionless socialites was intriguingly unlike the other science fiction
I was reading at the time. This time through, I have to admit I was less
impressed.
&lt;/p&gt;

&lt;p&gt;
Gurgeh is not very likable, and his desultory mid-life crisis is a little
boring. None of his friends have enough depth to appear as more than side
notes, in part because Gurgeh doesn&#39;t seem to care enough about any of
them to make them interesting to the reader. I&#39;ve since read seven other
Culture novels, so Banks&#39;s cocktail parties hold less charm and I was
impatient for the real action to begin.
&lt;/p&gt;

&lt;p&gt;
These chapters are still important, though, because they establish how
utterly average Gurgeh is. He has one unique talent, a deep affinity with
and obsession with strategy games, and is otherwise a bit of a depressed
narcissist with a few casual relationships, a friend that he barely
confides in, and a comfortable and familiar life. He is not in any way a
hero or a charismatic figure; he just happens to be exceptionally good at
one thing, enough to make him famous among people who care about that one
thing and probably unknown to anyone else apart from the occasional idly
perused news headline. He is the Culture&#39;s equivalent of the world chess
champion.
&lt;/p&gt;

&lt;p&gt;
The Contact division of the Culture has a problem. The Empire of Azad in
the Lesser Magellanic Cloud is a nasty, expansionist culture of the sort
that Contact would like to deal with before it causes broader problems.
The Culture&#39;s normal approaches are thwarted by an unusual organizing
principle: The empire is built around and takes its name from the game of
Azad, a highly complex strategy game developed over thousands of years.
Azad is the civil service exams, means of political and religious dispute
resolution, selection mechanism for the emperor, and civic religion. Faced
with that oddity, Contact turned to Special Circumstances, the Culture&#39;s
more aggressive and less restrained way of dealing with tricky problems.
Special Circumstances, in turn, needs someone who can learn how to play
the game of Azad. They want Gurgeh to take a very long trip.
&lt;/p&gt;

&lt;p&gt;
For all of Gurgeh&#39;s dissatisfaction, he&#39;s not impulsive enough to take a
five year journey away from his life and everyone he knows just to play a
novel game. Conveniently, Mawhrin-Skel&#39;s blackmail resolves this
reluctance.
&lt;/p&gt;

&lt;p&gt;
The game of Azad requires some suspension of disbelief. Banks provides a
few glimpses at the mechanics of the game, but those details are
insufficient to reconstruct the rules, and some of the claims made about
its properties are improbable at best. The best mental model I could build
for it is a strategy or simulation game built around units and territory
control, with supplemental side games used to build up resources for the
main boards, but it&#39;s more of a plot device and a set piece than a
world-building invention. The significance of Azad the game is its role in
society: The Empire of Azad believes they have constructed a game whose
complexity so closely models reality that the skills required for success
in the game are precisely the skills required for success in the empire.
&lt;/p&gt;

&lt;p&gt;
The Empire of Azad is wrong, and this is one of the core themes of
&lt;cite&gt;The Player of Games&lt;/cite&gt;. As with many Culture novels, what Special
Circumstances tells Gurgeh is, at best, incomplete. Gurgeh is a refutation
of the basis of belief in Azad; this is why it is important thematically
that he is an average, somewhat unlikable citizen of the Culture whose
only special characteristic is skill at learning and playing games.
&lt;/p&gt;

&lt;p&gt;
Azad is the myth of meritocracy given physical form as a game. It provides
the anchor of the empire for the same reason that societies on Earth place
enormous weight on standardized tests, capitalist success, or public
debates. All societies face the problem of selecting good leaders and
testing opposing beliefs, and all societies attempt to find some form of
shortcut, some set of general principles, tests, or objective metrics used
to select the best person via a process that people consider plausible and
fair. The game of Azad is a paragon of apparently meritocratic process. No
matter who you are or what your background is, if you excel at the game
that, in theory, objectively tests your skills, you are given a position
of power.
&lt;/p&gt;

&lt;p&gt;
In practice, the Empire of Azad is not that naive. Manipulation outside of
the game happens, only some players have the opportunity and resources to
spend years learning the game at a deep level, and only their dominant sex
truly stands a chance in games that matter. But neither is Azad&#39;s place in
society a fiction. There is corruption around the edges, and a lot of
people are filtered out before the games begin, but the highest echelons
of society are true believers. The game does decide both rank and policy;
Banks is arguing against a strong form of apparently working meritocracy.
&lt;/p&gt;

&lt;p&gt;
Gurgeh represents a refutation of this meritocracy through the mechanism
that breaks every supposed meritocracy: The map is not and cannot be the
territory. Any objective evaluation criteria is necessarily separate from
what it is trying to measure, and in that separation there is always an
opportunity. Gurgeh has none of the background, training, or mindset
expected for a player of Azad because he could not possibly care less
about any of the things Azad represents to the Empire. What he has instead
is a preternatural skill at games and vast experience with the most
intricate strategy games the Culture, a much larger society, has been able
to devise. He also has both the patience and the resources to devote
himself entirely to learning a game for several years, and past experience
in doing that with other games.
&lt;/p&gt;

&lt;p&gt;
If Azad represents the civil service exams, Gurgeh is the person who has
no interest in ruling but adores memorizing facts and taking tests. The
theory behind the exams is that the skills to pass the exam only come with
the correct mindset to do the job for which the exam is testing. Gurgeh is
an existence proof that this is not always the case.
&lt;/p&gt;

&lt;p&gt;
Banks also uses Azad to show another aspect of the failure of meritocracy:
A society whose rulers are chosen through a competition takes on the shape
of that competition. The Empire of Azad is run by the winners of
competitive games, so the empire is a winner-take-all system of dominance
and status hierarchy. Here, I think Banks lays the point on a little
thick; the empire is an irredeemable hellhole of misogyny, sexual abuse,
slavery, genocide, and military colonialism to a degree that is a bit hard
to justify solely from the game. There is a beautiful turning point about
two-thirds of the way through the book where Gurgeh&#39;s face is shoved into
just how vile Azad society is and reconsiders his approach to the
tournament as a result, and I think it may have been a bit stronger if the
morality had been a little less blatant and absolute.
&lt;/p&gt;

&lt;p&gt;
To the extent that Gurgeh has political beliefs, he represents a Culture
flavor of soft liberalism. He has opinions about acceptable and
unacceptable ways to treat people, but he grew up in a utopia and his
opinions are mostly theoretical. When he sees just how vile people can be
outside of that utopia, he is revolted and appalled and redoubles his
efforts to fight that society in the only way he knows how, inside of a
game. This part of the book follows the standard, if enjoyable, plot of a
flawed but fundamentally decent person discovering a true injustice and
becoming enraged at it.
&lt;/p&gt;

&lt;p&gt;
In a lot of books, that would have been where the plot stops. Banks is
doing something more subtle and more interesting, though. Gurgeh wipes the
board with his next challenger, but that soft liberalism eventually proves
inadequate. To learn the game of Azad and to play in the tournament,
Gurgeh has been wrapping himself in Azad culture and its language, and in
that frame of mind he is losing the climactic game of the book. It&#39;s only
when he is pushed to think in Marain, the native language of the Culture,
that he understands what is happening in the game and how to defeat
Nicosar, the emperor.
&lt;/p&gt;

&lt;p&gt;
This, on the surface, is a bit too close to the
&lt;a href=&quot;https://en.wikipedia.org/wiki/Linguistic_relativity&quot;&gt;strong
hypothesis of linguistic relativity&lt;/a&gt; to be entirely plausible, but such an
objection would miss the point that Banks is making here. Marain is a
construct, the product of considerable effort within the Culture to match
language to the most nuance and complexity that brains can understand, and
it is a language, one of the most social and collective artifacts a
society can produce. Gurgeh is a remarkable individual with an impressive
talent, but individual skill and achievement can only take him so far. The
critical final piece is the support of societal infrastructure
intentionally built and maintained to help him make better decisions.
&lt;/p&gt;

&lt;p&gt;
Once I noticed that point, I saw it everywhere in the book. The empire
repeatedly attempts to subvert or distract Gurgeh with drugs, pleasure,
politics, or danger, and at each point there is some critical piece of
Culture social infrastructure that blunts the attack. Illicit substances
and forbidden vices are less tempting to someone for whom the illicit has
been demystified by the Culture&#39;s gentler approach to rules and
boundaries. Embedded biological mechanisms allow him to divert drugs so
that they don&#39;t affect him. At first, it&#39;s easy to read this as an
exercise of self-control, but on this re-read I saw how much
behind-the-scenes infrastructure supports Gurgeh&#39;s ability to ignore
temptation.
&lt;/p&gt;

&lt;p&gt;
This social support notably does not take the form of some ideological
principle or moral framework. Gurgeh is not a monk or an ascetic, as is
obvious from the first third of the book, and he has no political ideology
to speak of. He is a flawed person with a streak of danger-seeking and
self-aggrandizement, which the Culture exploited to get him involved in
Azad. But through a lot of hard work, technological and social, the
Culture has given him a robust foundation and a set of mental and
biological tools that make him remarkably hard to corrupt. The implication
is that if Gurgeh has that support, so does every other member of the
Culture. It&#39;s neither a religion or an ideology; it&#39;s well-maintained
infrastructure, complex and nuanced and pragmatic, and composed of
innumerable small solutions to specific problems.
&lt;/p&gt;

&lt;p&gt;
I think the true climax of this book takes place the night before the
final day of the game, in the tower meeting between Gurgeh and Nicosar.
Gurgeh has realized that he&#39;s already won; there&#39;s nothing Nicosar can do
to salvage the game. He&#39;s also seen that the game represents a cultural
conflict and conversation between the Culture and Azad and he&#39;s
overwhelmed by the beauty of that communication and sadness that the game
is about to be over. Gurgeh&#39;s true passion is the game. It is doubtless
easier for him to be magnanimous because he&#39;s winning, but he also loves
the structure of the game itself and what two players can create in a sort
of collaborative competition.
&lt;/p&gt;

&lt;p&gt;
Gurgeh tries to express all of this to Nicosar. It is one of the most
centrist liberal moments I&#39;ve ever read in a novel, the pure essence of
&quot;reaching across the aisle&quot; or &quot;disagreeing agreeably.&quot; Gurgeh has seen
something beautiful, something he&#39;s created with Nicosar, a moment of true
communication, and he wants to share it. Surely Nicosar sees the same
thing; surely now that he sees Gurgeh has won, he can appreciate the board
structure, savor the moment, understand the transient beauty of a game
that is about to end and how perfectly it captures the meeting of their
different cultures. That moment does Gurgeh real credit. It&#39;s a rare sign
of emotional and spiritual depth in a character who often seems
superficial.
&lt;/p&gt;

&lt;p&gt;
Nicosar meets this outreach with unhinged, furious contempt. He despises
everything Gurgeh represents, everything the Culture is, and the next day
he tries to kill Gurgeh on the board of the game.
&lt;/p&gt;

&lt;p&gt;
It is a devastating critique of liberal tolerance, all the more so because
Gurgeh&#39;s attitude and outreach is truly admirable. It is perhaps the most
sympathetic moment that Gurgeh has in the entire book, the moment where
the reader thinks &quot;oh, I get it, I understand what he really cares about.&quot;
Gurgeh assumes that Nicosar is not his position or culture, that they have
made a moment of connection that transcends all the awful things he
previously learned about the empire of Azad. That Nicosar, despite being
the emperor of the society that is currently doing so many things Gurgeh
finds repulsive, cannot be as bad as his society. And Nicosar considers
that outreach to be weak, disgusting, and vile, and does everything that
he can to destroy it.
&lt;/p&gt;

&lt;p&gt;
One of the oddest twists of our current moment is the obsession that some
billionaires have with stories that are moral arguments against exactly
what those billionaires are currently doing. The most obvious example is
Peter Thiel, who is obsessed with &lt;cite&gt;The Lord of the Rings&lt;/cite&gt; and has
devoted his life to becoming Saruman, a character who is notably not one
of the protagonists. It&#39;s as if something in them recognizes the power of
the story, but some deep shame or narcissism or simple aversion allows
them to completely ignore what the story means.
&lt;/p&gt;

&lt;p&gt;
Elon Musk is obsessed with the Culture novels. He names the SpaceX rockets
following Culture Ship naming conventions and has claimed that one of his
goals is to bring about a Culture-style utopia. And in 1989, years before
anyone had ever heard of him, Banks cast him as the villain of &lt;cite&gt;The
Player of Games&lt;/cite&gt;. There is so much of Nicosar in Musk: the superficial
charm, the limited brilliance (Nicosar is a very good Azad player), the
ambition, the pride, and the vicious, spitting contempt for everything the
Culture represents at every level deeper than superficial materialism. And
Banks is as clear about his opinion of Nicosar as he is about anything in
any Culture novel.
&lt;/p&gt;

&lt;p&gt;
One of the oldest fictional answers to what a society does with people
like Nicosar is the consequences of hubris. By being unable to accept
defeat, by holding a vision of the world so tightly, they become brittle
and unstable and bring about their own collapse. In a broad sense, that is
what happens in &lt;cite&gt;The Player of Games&lt;/cite&gt; with a bit of pushing from
Special Circumstances. By the politics of the game, Nicosar had already
won; the results of Gurgeh&#39;s earlier games had already been faked, the
final game had no political consequences, and everyone who knew its true
outcome could be disposed of. Gurgeh&#39;s win could have been covered up and
ignored. But Nicosar could not endure the thought that he would be beaten
by someone like Gurgeh, playing Azad the way that Gurgeh was playing it.
Gurgeh had to be destroyed on the board of the game; Nicosar&#39;s pride did
not allow any other outcome, even if it meant Nicosar&#39;s death.
&lt;/p&gt;

&lt;p&gt;
However, Special Circumstances didn&#39;t let hubris be the end of the story.
In the climax of the book, the drone protecting Gurgeh also makes sure
that Nicosar dies. There is a fig leaf of plausible deniability, but it&#39;s
so obvious that even the unobservant Gurgeh sees through it immediately.
It&#39;s hard to escape the feeling that was Banks&#39;s answer to what to do with
people like Nicosar: They cannot live within society, because they will
not live peacefully within society.
&lt;/p&gt;

&lt;p&gt;
I enjoyed &lt;cite&gt;The Player of Games&lt;/cite&gt; as much this time through as I did
the first time, but for entirely different reasons. In my first read, I
focused on the world-building of the Culture, the political machinations,
and the concept of games as conversations between the players. This time,
I was struck by the political commentary just below the surface. Special
Circumstances wanted to resolve the problem of the Empire of Azad without
a military conflict and occupation that would be long, brutal, expensive,
and demoralizing. They found an answer that relied on the diversity of the
Culture. A vast, utopian civilization in which people can pursue whatever
interests make them happy produces innumerable microspecialized oddities,
people with astonishing talents in some small field that only a tiny
fraction of people care about. It produces, in other words, innumerable
keys for locks that you may never encounter, but which are invaluable if
you happen to stumble across that lock.
&lt;/p&gt;

&lt;p&gt;
Gurgeh is not a hero. He is not a paragon of moral virtue, or even a
charming charismatic, He is an entirely average member of an extraordinary
society, the beneficiary of thousands of years of concerted effort at
producing a robust, flexible foundation on which to raise robust, flexible
citizens with a shared sense of basic morality. Those people, by
themselves, do not solve all of life&#39;s problems; the structure of Special
Circumstances and its willingness to bend rules in order to maintain them
is the tension and &lt;em&gt;deus ex machina&lt;/em&gt; in all of the Culture novels.
But much of the strength of Special Circumstances is that it has an entire
civilization of people like Gurgeh to draw upon when it needs them.
&lt;/p&gt;

&lt;p&gt;
It has those people because the Culture comprehensively rejects
competitive meritocracy, something that some readers of the Culture novels
appear incapable of comprehending.
&lt;/p&gt;

&lt;p&gt;Rating: 9 out of 10&lt;/p&gt; </description> 
	<pubDate>Mon, 06 Jul 2026 03:09:00 +0000</pubDate>

</item> 
<item>
	<title>Russ Allbery: INN 2.7.4</title>
	<guid>https://www.eyrie.org/~eagle/journal/2026-07/001.html</guid>
	<link>https://www.eyrie.org/~eagle/journal/2026-07/001.html</link>
     <description>  &lt;p&gt;
This is a bug fix and minor feature release over INN 2.7.3, and the
upgrade should be painless. You can download the new release from
&lt;a href=&quot;https://downloads.isc.org/isc/inn/&quot;&gt;ISC&lt;/a&gt; or
&lt;a href=&quot;https://www.eyrie.org/~eagle/software/inn/&quot;&gt;my personal INN pages&lt;/a&gt;. The latter also has
links to the full changelog and the other INN documentation.
&lt;/p&gt;

&lt;p&gt;
For the full list of changes, see the
&lt;a href=&quot;https://www.eyrie.org/~eagle/software/inn/docs-2.7/news.html&quot;&gt;INN 2.7.4 NEWS file&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
As always, thanks to Julien ÉLIE for preparing this release and doing most
of the maintenance work on INN!
&lt;/p&gt; </description> 
	<pubDate>Mon, 06 Jul 2026 01:57:00 +0000</pubDate>

</item> 
<item>
	<title>Dirk Eddelbuettel: Rcpp 1.1.2 on CRAN: Usual Improvements in Semi-Annual Update</title>
	<guid>http://dirk.eddelbuettel.com/blog/2026/07/05#rcpp_1.1.2</guid>
	<link>http://dirk.eddelbuettel.com/blog/2026/07/05#rcpp_1.1.2</link>
     <description>  &lt;img src=&quot;http://planet.debian.org/heads/dirk.png&quot; width=&quot;65&quot; height=&quot;90&quot; alt=&quot;&quot; align=&quot;right&quot; style=&quot;float: right;&quot;&gt;  &lt;p&gt;&lt;img alt=&quot;rcpp logo&quot; src=&quot;https://dirk.eddelbuettel.com/images/rcpp-logo-blue-dial.png&quot; style=&quot;float: left; margin: 10px 10px 0px 0px;&quot; width=&quot;200&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Team Rcpp is excited to share that an brandnew new version 1.1.2 of
Rcpp is now on &lt;a href=&quot;https://cran.r-project.org&quot;&gt;CRAN&lt;/a&gt;, has also
been uploaded to &lt;a href=&quot;https://www.debian.org&quot;&gt;Debian&lt;/a&gt;, and has
already built for &lt;a href=&quot;https://eddelbuettel.github.io/r2u/&quot;&gt;r2u&lt;/a&gt;
and &lt;a href=&quot;https://rcppcore.r-universe.dev/Rcpp&quot;&gt;r-universe&lt;/a&gt;;
Windows etc builds at &lt;a href=&quot;https://cran.r-project.org&quot;&gt;CRAN&lt;/a&gt;
should follow in due course.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.rcpp.org&quot;&gt;Rcpp&lt;/a&gt; has long established itself
as &lt;em&gt;the&lt;/em&gt; most popular way of enhancing &lt;a href=&quot;https://www.r-project.org&quot;&gt;R&lt;/a&gt; with C or C++ code. Right now,
3236 packages on &lt;a href=&quot;https://cran.r-project.org&quot;&gt;CRAN&lt;/a&gt; depend on
&lt;a href=&quot;https://www.rcpp.org&quot;&gt;Rcpp&lt;/a&gt; for making analytical code go
faster and further. On CRAN, 13.4% of all packages depend (directly) on
&lt;a href=&quot;https://www.rcpp.org&quot;&gt;Rcpp&lt;/a&gt;, and 61.4% of all compiled
packages do. From the cloud mirror of CRAN (which is but a subset of all
CRAN downloads), &lt;a href=&quot;https://www.rcpp.org&quot;&gt;Rcpp&lt;/a&gt; has been
downloaded 121.6 million times. The two published papers (also included
in the package as preprint vignettes) have, respectively, 2263 (&lt;a href=&quot;https://dirk.eddelbuettel.com/blog/jss2011&quot;&gt;JSS, 2011&lt;/a&gt;) and 471 (&lt;a href=&quot;https://dirk.eddelbuettel.com/blog/tas2018&quot;&gt;TAS, 2018&lt;/a&gt;)
citations, while the the &lt;a href=&quot;https://dirk.eddelbuettel.com/blog/rcppbook&quot;&gt;book (Springer useR!,
2013)&lt;/a&gt; has another 742.&lt;/p&gt;
&lt;p&gt;The is the second update in the 1.1.* series which had, among other
changes, switched to &lt;a href=&quot;https://dirk.eddelbuettel.com/blog/2025/07/02#rcpp_1.1.0&quot;&gt;C++11 as
the minimum standard&lt;/a&gt;. This release continues as usual with the
six-months January-July cycle started with &lt;a href=&quot;https://dirk.eddelbuettel.com/blog/2020/07/06#rcpp_1.0.5&quot;&gt;release
1.0.5 in July 2020&lt;/a&gt;. Interim snapshots are always available via the
&lt;a href=&quot;https://rcppcore.r-universe.dev/Rcpp&quot;&gt;r-universe page and
repo&lt;/a&gt;. We continue to strongly encourage the use of these development
released and their testing—we tend to run our systems with them too.&lt;/p&gt;
&lt;p&gt;Having said that, we would like to reiterate that we strongly object
to the upstream R release and change management which in this 4.6.*
cycle made several &lt;em&gt;abrupt&lt;/em&gt; changes forcing packages which
consume header files to make very abrupt change. &lt;a href=&quot;https://www.rcpp.org&quot;&gt;Rcpp&lt;/a&gt;, just like numerous other &lt;a href=&quot;https://cran.r-project.org&quot;&gt;CRAN&lt;/a&gt; packages demonstrates that
API changes can be undertaken responsibly in a managed manner which
allows for transition periods followed by possible warning periods,
deprecations periods and finally (but only at long last) errors. What
happened here is a speed run to the final stage of forced errors. Uncool
and irritating for something as widely used as R. This forced us to make
an interim release 1.1.1-1.1 even though we have of course had a policy
of &lt;em&gt;always&lt;/em&gt; keeping properly tested, installable, and error-free
releases candidate version in the main repository branch and hence
available via &lt;a href=&quot;https://rcppcore.r-universe.dev/Rcpp&quot;&gt;R-universe&lt;/a&gt; tested
packages for all relevant platforms, and even via binaries for most
(including Ubuntu LTS). It would be nice if R Core found a way to take
advantage of this. Maybe development cycles, running apart for a year as
they do for R, should also include selected packages.&lt;/p&gt;
&lt;p&gt;Once again I am not attempting to summarize the different changes.
The full list follows below and details all these changes, their
respective PRs and, if applicable, issue tickets. Big thanks from all of
us to all contributors!&lt;/p&gt;
&lt;blockquote&gt;
&lt;h4 id=&quot;changes-in-rcpp-release-version-1.1.2-2026-07-01&quot;&gt;Changes in
Rcpp release version 1.1.2 (2026-07-01)&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Changes in Rcpp API:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Use of &lt;code&gt;execinfo.h&lt;/code&gt; is again conditional to avoid
build complexity (Dirk in &lt;a href=&quot;https://github.com/RcppCore/Rcpp/pull/1445&quot;&gt;#1445&lt;/a&gt; addressing
&lt;a href=&quot;https://github.com/RcppCore/Rcpp/issues/1442&quot;&gt;#1442&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;An internal state component for &lt;code&gt;Datetime&lt;/code&gt; is now
&lt;code&gt;int&lt;/code&gt; (Dirk in &lt;a href=&quot;https://github.com/RcppCore/Rcpp/pull/1448&quot;&gt;#1448&lt;/a&gt; and &lt;a href=&quot;https://github.com/RcppCore/Rcpp/pull/1449&quot;&gt;#1449&lt;/a&gt; fixing &lt;a href=&quot;https://github.com/RcppCore/Rcpp/pull/1447&quot;&gt;#1447&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Three new (in R 4.6.0) attribute accessors are used conditionally
(Dirk in &lt;a href=&quot;https://github.com/RcppCore/Rcpp/pull/1450&quot;&gt;#1450&lt;/a&gt;
closing &lt;a href=&quot;https://github.com/RcppCore/Rcpp/issues/1432&quot;&gt;#1432&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;An UBSAN error in the Sugar-based NA comparison has been
corrected (Iñaki in &lt;a href=&quot;https://github.com/RcppCore/Rcpp/pull/1453&quot;&gt;#1453&lt;/a&gt; fixing &lt;a href=&quot;https://github.com/RcppCore/Rcpp/issues/1452&quot;&gt;#1452&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Treatment of Inf outside of integer range in Sugar function has
been corrected (Iñaki in &lt;a href=&quot;https://github.com/RcppCore/Rcpp/pull/1458&quot;&gt;#1458&lt;/a&gt; fixing &lt;a href=&quot;https://github.com/RcppCore/Rcpp/issues/1455&quot;&gt;#1455&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Integer overflow protection has been added for sugar functions
(Iñaki in &lt;a href=&quot;https://github.com/RcppCore/Rcpp/pull/1457&quot;&gt;#1457&lt;/a&gt;
fixing &lt;a href=&quot;https://github.com/RcppCore/Rcpp/pull/1454&quot;&gt;#1454&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The parent environment is now accessed via
&lt;code&gt;R_ParentEnv&lt;/code&gt; (Dirk in &lt;a href=&quot;https://github.com/RcppCore/Rcpp/pull/1460&quot;&gt;#1460&lt;/a&gt; fixing &lt;a href=&quot;https://github.com/RcppCore/Rcpp/issues/1459&quot;&gt;#1459&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Change to returning &lt;code&gt;dataptr&lt;/code&gt; again for better
handling of empty vectors (Iñaki in &lt;a href=&quot;https://github.com/RcppCore/Rcpp/pull/1462&quot;&gt;#1462&lt;/a&gt; fixing &lt;a href=&quot;https://github.com/RcppCore/Rcpp/issues/1461&quot;&gt;#1461&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Undefined behavior errors in use of &lt;code&gt;ListOf&lt;/code&gt; proxies
have been addressed (Iñaki in &lt;a href=&quot;https://github.com/RcppCore/Rcpp/pull/1464&quot;&gt;#1464&lt;/a&gt; fixing &lt;a href=&quot;https://github.com/RcppCore/Rcpp/issues/1463&quot;&gt;#1463&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Under newer R version, &lt;code&gt;R_UnboundValue&lt;/code&gt; is no longer
used (Iñaki in &lt;a href=&quot;https://github.com/RcppCore/Rcpp/pull/1466&quot;&gt;#1466&lt;/a&gt; fixing &lt;a href=&quot;https://github.com/RcppCore/Rcpp/issues/1465&quot;&gt;#1465&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;New R API access point &lt;code&gt;R_getRegisteredNamespace()&lt;/code&gt; is
used with current R versions (Dirk in &lt;a href=&quot;https://github.com/RcppCore/Rcpp/pull/1469&quot;&gt;#1469&lt;/a&gt; fixing &lt;a href=&quot;https://github.com/RcppCore/Rcpp/issues/1468&quot;&gt;#1468&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;code&gt;Nullable::as()&lt;/code&gt; exporter now uses an explicit
cast to the templated type (Dirk in &lt;a href=&quot;https://github.com/RcppCore/Rcpp/pull/1471&quot;&gt;#1471&lt;/a&gt; fixing &lt;a href=&quot;https://github.com/RcppCore/Rcpp/issues/1470&quot;&gt;#1470&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A memory leak in the variadic &lt;code&gt;Rcpp::warning()&lt;/code&gt;
template has been fixed (Kevin in &lt;a href=&quot;https://github.com/RcppCore/Rcpp/pull/1475&quot;&gt;#1475&lt;/a&gt; fixing &lt;a href=&quot;https://github.com/RcppCore/Rcpp/issues/1474&quot;&gt;#1474&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;code&gt;Nullable::operatorT()&lt;/code&gt; has been added as a
&#39;opt-out&#39; (Dirk in &lt;a href=&quot;https://github.com/RcppCore/Rcpp/pull/1477&quot;&gt;#1477&lt;/a&gt; with
coordination in &lt;a href=&quot;https://github.com/RcppCore/Rcpp/issues/1472&quot;&gt;#1472&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add templated integer-index overload for &lt;code&gt;operator[]&lt;/code&gt;
on small systems such as WASM (Jeroen Ooms in &lt;a href=&quot;https://github.com/RcppCore/Rcpp/pull/1482&quot;&gt;#1482&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The attribute accessors in &lt;code&gt;AttributeProxyPolicy&lt;/code&gt; no
longer rely on &lt;code&gt;get__()&lt;/code&gt; (Kevin in &lt;a href=&quot;https://github.com/RcppCore/Rcpp/pull/1484&quot;&gt;#1484&lt;/a&gt; fixing &lt;a href=&quot;https://github.com/RcppCore/Rcpp/issues/1483&quot;&gt;#1483&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Changes in Rcpp Documentation:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reference in the bibliography used by the package vignettes have
been updated.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Changes in Rcpp Deployment:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Excute permissions are set consistently on scripts with shebangs
(Mattias Ellert in &lt;a href=&quot;https://github.com/RcppCore/Rcpp/pull/1467&quot;&gt;#1467&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;R 4.5.* has been added to the CI matrix (Dirk in &lt;a href=&quot;https://github.com/RcppCore/Rcpp/pull/1476&quot;&gt;#1476&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Three nag messages issued when obsolete build flag accessors are
used now show &lt;code&gt;Rcpp:::&lt;/code&gt; (Dirk in &lt;a href=&quot;https://github.com/RcppCore/Rcpp/pull/1480&quot;&gt;#1480&lt;/a&gt; fixing &lt;a href=&quot;https://github.com/RcppCore/Rcpp/issues/1456&quot;&gt;#1456&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Reference GitHub Actions have been updated to their current
versions (Dirk in &lt;a href=&quot;https://github.com/RcppCore/Rcpp/pull/1481&quot;&gt;#1481&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Non-release Changes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A non-release hotfix 1.1.1-1 used by CRAN accommodates breaking
changes to the API in R 4.6.0. It would be nice to have the same level
of release management in R itself that CRAN expects from us.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Thanks to my &lt;a href=&quot;https://dirk.eddelbuettel.com/cranberries/&quot;&gt;CRANberries&lt;/a&gt;, you
can also look at a &lt;a href=&quot;https://dirk.eddelbuettel.com/cranberries/2026/07/05/#Rcpp_1.1.2&quot;&gt;diff
to the previous interim release&lt;/a&gt; along with pre-releases &lt;a href=&quot;https://dirk.eddelbuettel.com/cranberries/2026/04/15#Rcpp_1.1.1-1&quot;&gt;1.1.1-1&lt;/a&gt;
and &lt;a href=&quot;https://dirk.eddelbuettel.com/cranberries/2026/04/24#Rcpp_1.1.1-1.1&quot;&gt;1.1.1-1.1&lt;/a&gt;
that were needed because R-devel once again sudden decided to move fast
and break things. Not our doing. And there also should not have been a
need to two such uploads but it was amateur hour all around.&lt;/p&gt;
&lt;p&gt;Questions, comments etc should go to the GitHub &lt;a href=&quot;https://github.com/RcppCore/Rcpp/discussions&quot;&gt;discussion&lt;/a&gt; or &lt;a href=&quot;https://github.com/RcppCore/Rcpp/issues&quot;&gt;issue&lt;/a&gt; section, or the
&lt;a href=&quot;https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel&quot;&gt;Rcpp
list&lt;/a&gt;. Bugs reports are welcome at the GitHub &lt;a href=&quot;https://github.com/RcppCore/Rcpp/issues&quot;&gt;issue tracker&lt;/a&gt; as
well. GitHub offers decent search for issue, pull requests and
discussions; as many topics have been covered it is worth checking as
well.&lt;/p&gt;
&lt;p style=&quot;font-size: 80%; font-style: italic;&quot;&gt;
This post by &lt;a href=&quot;https://dirk.eddelbuettel.com&quot;&gt;Dirk
Eddelbuettel&lt;/a&gt; originated on his &lt;a href=&quot;https://dirk.eddelbuettel.com/blog/&quot;&gt;Thinking inside the box&lt;/a&gt;
blog. If you like this or other open-source work I do, you can &lt;a href=&quot;https://github.com/sponsors/eddelbuettel&quot;&gt;sponsor me at
GitHub&lt;/a&gt;.
&lt;/p&gt;&lt;p&gt;&lt;/p&gt; </description> 
	<pubDate>Sun, 05 Jul 2026 15:18:00 +0000</pubDate>

</item> 
<item>
	<title>Birger Schacht: Status update, June 2026</title>
	<guid>https://bisco.org/notes/status-update-june-2026/</guid>
	<link>https://bisco.org/notes/status-update-june-2026/</link>
     <description>  &lt;h1 id=&quot;debian-related-work&quot;&gt;Debian Related Work&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Uploaded wofi 1.5.3-1 to unstable&lt;/li&gt;
&lt;li&gt;Uploaded wob 0.16-1 to unstable&lt;/li&gt;
&lt;li&gt;Uploaded labwc 0.20.0-1 and 0.20.1-1 to unstable; these releases come with
support for wlroots-0.20, which made labwc reenter testing&lt;/li&gt;
&lt;li&gt;Uploaded swaylock 1.8.5-2 to unstable to make it use the &lt;code&gt;common-auth&lt;/code&gt;
directive of pam (seeh &lt;a href=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1140096&quot;&gt;#1140096&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Uploaded swayimg 5.4-1 to unstable&lt;/li&gt;
&lt;li&gt;Uploaded wayback 0.3-2 to unstable, which was waiting in experimental
for a reupload and I had forgotten about it; also fixed a
&lt;a href=&quot;https://gitlab.freedesktop.org/wayback/wayback/-/merge_requests/96&quot;&gt;typo&lt;/a&gt;
in wayback upstream&lt;/li&gt;
&lt;li&gt;Uploaded xdg-desktop-portal-wlr 0.8.3-1 to unstable&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&quot;dh-related-work&quot;&gt;DH Related Work&lt;/h1&gt;
&lt;p&gt;The search app I was working on last month was still a focus in June. I refactored
the data model a bit and made it simpler. I stumbled over the &lt;a href=&quot;https://pythonkoans.substack.com&quot;&gt;Python
Koans&lt;/a&gt; and &lt;a href=&quot;https://pythonkoans.substack.com/p/koan-15-the-invisible-ink&quot;&gt;Koan 15: The Invisible
Ink&lt;/a&gt; gave me the
idea of using unicode normalization when indexing the items.&lt;/p&gt;
&lt;p&gt;I released a couple of bug fix releases for the APIS framework, namely 0.64.2,
0.64.3 and 0.64.4. I also release 0.65.0 which is one step further in dropping
support for the legacy &lt;code&gt;apis_entities&lt;/code&gt; app. When the &lt;code&gt;search&lt;/code&gt; module is merged
it will give way for removing the last bits of the old cruft to be removed.&lt;/p&gt;
&lt;p&gt;During a regular dependency update session I looked at the changes in &lt;a href=&quot;https://github.com/yourlabs/django-autocomplete-light&quot;&gt;the dal
dependency&lt;/a&gt;. After a
long time with no commits, the project suddenly had a lot of commits
co-authored by Claude and then released a new major version with a regression.
Given the state of the project, we decided to keep using the previous release
for now and look into replacing the dependency with an HTMX based solution. I
implemented a POC for one of the plugins we develop and it was actually pretty
easy. I also managed to combine the autocomplete approach with a multi-select
form field, based on &lt;a href=&quot;https://dev.to/apleshkov/htmx-multi-select-form-control-without-js-4jfk&quot;&gt;this blog
post&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In the
&lt;a href=&quot;https://www.oeaw.ac.at/de/acdh/forschung/dh-forschung-infrastruktur/aktivitaeten/dh-datenmodellierung/pfp-prosopographische-plattform-oesterreich&quot;&gt;PFP&lt;/a&gt;
project I finally merged the stats endpoint which give statistics about the
named graphs that are used as data sources.&lt;/p&gt;
&lt;h1 id=&quot;other&quot;&gt;Other&lt;/h1&gt;
&lt;p&gt;I attended &lt;a href=&quot;https://bsidesvienna.at/&quot;&gt;BSidesVienna 0x7EA&lt;/a&gt; but it was on one of
the hottest days this year so far so I left after a couple of talks.&lt;/p&gt; </description> 
	<pubDate>Sun, 05 Jul 2026 05:28:51 +0000</pubDate>

</item> 
<item>
	<title>Steinar H. Gunderson: An update on sesse@chromium.org</title>
	<guid>http://blog.sesse.net/blog/tech/2026-07-04-15-21_an_update_on_sesse_chromium_org.html</guid>
	<link>http://blog.sesse.net/blog/tech/2026-07-04-15-21_an_update_on_sesse_chromium_org.html</link>
     <description>  &lt;img src=&quot;http://planet.debian.org/heads/sesse.png&quot; width=&quot;74&quot; height=&quot;85&quot; alt=&quot;&quot; align=&quot;right&quot; style=&quot;float: right;&quot;&gt;  &lt;p&gt;As previously mentioned, I am leaving Chrome; my last work day
was yesterday. (Sorry to those with July 3rd off that I didn&#39;t
get to say goodbye to!) But I&#39;m staying in Google, on more internal
projects :-)&lt;/p&gt;

&lt;p&gt;After 1100+ commits it&#39;s hard to pick out one thing that I love
the most; as a team, we launched a lot of (IMO) useful CSS features
and fixed a lot of issues. But somehow, I keep on gravitating towards
performance, and perhaps &lt;a href=&quot;https://chromium-review.googlesource.com/c/chromium/src/+/3581992&quot;&gt;this commit&lt;/a&gt;
is the one I will remember the most fondly; a couple hundred lines
to speed up repeated attribute selectors a lot. (If you ever wonder
who would be doing that; well, there&#39;s a fairly high chance that you
have an extension injecting a stylesheet with a lot of &lt;code&gt;a[href*=&quot;...&quot;]&lt;/code&gt;
rules…)&lt;/p&gt;

&lt;p&gt;Upwards and onwards. Please write lean, clean CSS; I won&#39;t be there
to save you from now on. :-)&lt;/p&gt; </description> 
	<pubDate>Sat, 04 Jul 2026 14:21:00 +0000</pubDate>

</item> 
<item>
	<title>Tim Retout: AWS Washington Summit 2026</title>
	<guid>https://retout.co.uk/2026/07/04/aws-washington-summit-2026/</guid>
	<link>https://retout.co.uk/2026/07/04/aws-washington-summit-2026/</link>
     <description>  &lt;p&gt;I am somewhat jet-lagged, having returned from Washington DC just
before the 250th anniversary celebrations which will be happening
today.  I was part of a delegation sent by my employer to the AWS
Summit there this week, partly to kindle interactions between PA
Consulting and Jacobs who have recently &lt;a href=&quot;https://www.jacobs.com/newsroom/press-release/jacobs-acquire-remaining-stake-pa-consulting&quot;&gt;taken a 100% share in
PA&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Much of our conference time was spent in meetings with AWS executives
impressing the facts of the Jacobs/PA partnership upon them, and
discussing plans to broaden our collaboration in different sectors.
So I spent even less time than usual at conference keynotes, talks
etc.&lt;/p&gt;
&lt;p&gt;This was my first time to DC, and I did find some time to see some
sights – unfortunately the White House is rather fenced off at the
moment following the UFC match, but I did make it to the Capitol and
the Washington Monument in the heat.&lt;/p&gt;
&lt;p&gt;Last Sunday a select few of us attended the &lt;a href=&quot;https://www.mlb.com/orioles&quot;&gt;baseball in
Baltimore&lt;/a&gt; – rather than the game, the
thing that stood out for me was the military jets flying in formation
over the stadium every few minutes, and the block-booked seats for the
Navy in uniform, who were having a great time!  This is obviously a
hearts-and-minds thing, but it provides a stark contrast with the UK
– I can’t think of a time I’ve seen uniformed military at the
football (soccer) or cricket for example.  Or Union Jacks flying at
shopping centres.&lt;/p&gt;
&lt;p&gt;Speaking of soccer, England just about beat DR Congo while I was out
there, but it was a close-run thing as we were 1-0 down at half time.
I can’t claim to be following the World Cup too closely, but I
overheard comments (from US passers-by) that made clear it would have
had a significant reputational impact on our standing in the world had
we lost.&lt;/p&gt;
&lt;p&gt;Another highlight for me was the &lt;a href=&quot;https://www.asa-dc.org/&quot;&gt;Church of the Ascension and
St. Agnes&lt;/a&gt;, where I was able to get my fix of
Anglican plainchant and four-part harmony for the week.  At morning
prayer, I noted they use “God save this land” rather than “God save
the King” during the responses – I’ve since found other sources
online that choose “God save the State”.  It’s strange to think that
the words of the BCP dating back to 1549/1662 are a point of
continuity since well before the 1776 declaration of independence, and
yet are still adapted and used in worship today.&lt;/p&gt; </description> 
	<pubDate>Sat, 04 Jul 2026 12:40:45 +0000</pubDate>

</item> 
<item>
	<title>Julian Andres Klode: The pandemic of incomplete OpenSSL error handling</title>
	<guid>https://blog.jak-linux.org/2026/07/03/openssl-pandemic/</guid>
	<link>https://blog.jak-linux.org/2026/07/03/openssl-pandemic/</link>
     <description>  &lt;p&gt;Recently a person reported a bug in APT saying that TLS is failing on FIPS
systems with MD5 errors, and suggested we call &lt;code&gt;ERR_clear_error()&lt;/code&gt; around
TLS operations.&lt;/p&gt;
&lt;p&gt;Like any serious software engineer would do, I said No. Just because one component
failed to handle its errors does not mean I can go around and discard all errors
in another place - the program should have failed earlier (or discarded the error
when it was determined to be safe).&lt;/p&gt;
&lt;p&gt;Little did I know that people have for years been using this approach as a best
practice: Codebases everywhere are littered with calls to &lt;code&gt;ERR_clear_error()&lt;/code&gt;
before performing TLS, and upstream themselves suggest to do just that.&lt;/p&gt;
&lt;p&gt;This is a major, systemic, pandemic of incomplete error handling. We cannot
just discard unrelated errors if they become inconvenient. The code that
caused the error needs to be fixed to handle it.&lt;/p&gt;
&lt;p&gt;This isn’t all. It seems many authors are not familiar with libraries using a
stack of errors, and there is a second anti-pattern:&lt;/p&gt;
&lt;p&gt;Call an OpenSSL operation, check the top-level error, and then discard all
errors if deemed “not too bad”. This has the same problem: Unrelated errors
get silently discarded.&lt;/p&gt;
&lt;p&gt;I would strongly encourage everyone to inspect their code bases for any calls
to &lt;code&gt;ERR_clear_error()&lt;/code&gt; and whether they are safe or one of the bad patterns
above (or maybe you find a new pattern). You may want to use error stack
functionality of&lt;code&gt;ERR_set_mark&lt;/code&gt; (&lt;a href=&quot;https://docs.openssl.org/3.4/man3/ERR_set_mark/&quot;&gt;https://docs.openssl.org/3.4/man3/ERR_set_mark/&lt;/a&gt;)
to essentially “push” and “pop” an error context of your own as a guard around
multiple OpenSSL operations.&lt;/p&gt;
&lt;p&gt;To the OpenSSL authors, I would suggest not encouraging devastating security
practices that fundamentally break any trust in software.&lt;/p&gt;
&lt;p&gt;We need to do better than this.&lt;/p&gt; </description> 
	<pubDate>Fri, 03 Jul 2026 15:54:22 +0000</pubDate>
  <author>jak@jak-linux.org (Julian Andres Klode)</author>  
</item> 
<item>
	<title>Colin Watson: Free software activity in June 2026</title>
	<guid>tag:www.chiark.greenend.org.uk,2026-07-03:/~cjwatson/blog/activity-2026-06.html</guid>
	<link>https://www.chiark.greenend.org.uk/~cjwatson/blog/activity-2026-06.html</link>
     <description>  &lt;img src=&quot;http://planet.debian.org/heads/cjwatson.png&quot; width=&quot;70&quot; height=&quot;82&quot; alt=&quot;&quot; align=&quot;right&quot; style=&quot;float: right;&quot;&gt;  &lt;p&gt;My Debian contributions this month were all &lt;a href=&quot;https://www.freexian.com/about/debian-contributions/&quot;&gt;sponsored&lt;/a&gt; by Freexian.&lt;/p&gt;
&lt;p&gt;You can also support my work directly via &lt;a href=&quot;https://liberapay.com/cjwatson&quot;&gt;Liberapay&lt;/a&gt; or &lt;a href=&quot;https://github.com/sponsors/cjwatson&quot;&gt;GitHub Sponsors&lt;/a&gt;.  Thanks to new sponsor &lt;a href=&quot;https://github.com/fernandocc17&quot;&gt;@fernandocc17&lt;/a&gt;!&lt;/p&gt;
&lt;h2&gt;bugs.debian.org documentation&lt;/h2&gt;
&lt;p&gt;Sometimes I ask users to file bugs upstream themselves because I think they’d be better placed to have the ensuing discussion with the upstream maintainers directly rather than everything having to go through me.  Of course sometimes they don’t want to do so, perhaps because it requires creating another account somewhere.  Rarely, I’ve had people refuse to do this because the letter of the bug tracking system’s documentation seemed to tell them not to.  Since I don’t believe that was the intention, I &lt;a href=&quot;https://salsa.debian.org/webmaster-team/webwml/-/merge_requests/1149&quot;&gt;corrected this&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;OpenSSH&lt;/h2&gt;
&lt;p&gt;I spent two and a half hours extensively revising &lt;code&gt;debian/copyright&lt;/code&gt; so that &lt;code&gt;lrc&lt;/code&gt; believes it to be in sync with the output of &lt;code&gt;licensecheck&lt;/code&gt;.  I’m unconvinced that this was remotely worth the mind-numbing effort - as far as I can tell, it makes no difference to the practical legal position, to policy compliance, or to any reasonable user - but the &lt;span class=&quot;caps&quot;&gt;DFSG&lt;/span&gt; team increasingly seems to be objecting to any discrepancies here any time a package crosses their radar, so this was a pre-emptive measure to avoid problems with some upcoming trips through the &lt;span class=&quot;caps&quot;&gt;NEW&lt;/span&gt; queue.&lt;/p&gt;
&lt;h2&gt;OpenSSL 4.0&lt;/h2&gt;
&lt;p&gt;I fielded a few of the &lt;a href=&quot;https://udd.debian.org/cgi-bin/bts-usertags.cgi?user=pkg-openssl-devel%40lists.alioth.debian.org&amp;amp;tag=openssl-4.0&quot;&gt;OpenSSL 4.0 build failure bugs&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1138480&quot;&gt;omniorb-dfsg&lt;/a&gt; (along with upgrading to 4.3.4)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1138423&quot;&gt;openssh&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1138408&quot;&gt;yubihsm-shell&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Python packaging&lt;/h2&gt;
&lt;p&gt;New upstream versions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;certipy&lt;/li&gt;
&lt;li&gt;juptyer-server (fixing &lt;a href=&quot;https://bugs.debian.org/1136022&quot;&gt;&lt;span class=&quot;caps&quot;&gt;CVE&lt;/span&gt;-2025-61669, &lt;span class=&quot;caps&quot;&gt;CVE&lt;/span&gt;-2026-35397, &lt;span class=&quot;caps&quot;&gt;CVE&lt;/span&gt;-2026-40110, and &lt;span class=&quot;caps&quot;&gt;CVE&lt;/span&gt;-2026-40934&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;magicgui&lt;/li&gt;
&lt;li&gt;pydantic&lt;/li&gt;
&lt;li&gt;pydantic-core&lt;/li&gt;
&lt;li&gt;pydantic-settings&lt;/li&gt;
&lt;li&gt;pylint&lt;/li&gt;
&lt;li&gt;pytest-rerunfailures (fixing a &lt;a href=&quot;https://bugs.debian.org/1140869&quot;&gt;build failure with pytest 9.1&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;python-certifi&lt;/li&gt;
&lt;li&gt;python-django-celery-beat&lt;/li&gt;
&lt;li&gt;python-numpy-groupies&lt;/li&gt;
&lt;li&gt;python-packaging (aided by Debusine testing of reverse-dependencies)&lt;/li&gt;
&lt;li&gt;python-pytest-run-parallel&lt;/li&gt;
&lt;li&gt;python-pytest-unmagic&lt;/li&gt;
&lt;li&gt;python-service-identity&lt;/li&gt;
&lt;li&gt;python-tabulate&lt;/li&gt;
&lt;li&gt;python-urllib3 (fixing &lt;a href=&quot;https://bugs.debian.org/1140427&quot;&gt;&lt;span class=&quot;caps&quot;&gt;CVE&lt;/span&gt;-2026-9375&lt;/a&gt; and &lt;a href=&quot;https://bugs.debian.org/1136654&quot;&gt;&lt;span class=&quot;caps&quot;&gt;CVE&lt;/span&gt;-2026-44432&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;python-watchfiles&lt;/li&gt;
&lt;li&gt;python-yubihsm&lt;/li&gt;
&lt;li&gt;responses&lt;/li&gt;
&lt;li&gt;uncertainties&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;pytest 9.1 was uploaded to unstable this month, resulting in quite a few new build/test failure bugs.  I tried to keep on top of as many of these as I could; most of them had one of a small number of similar causes.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1140858&quot;&gt;domdf-python-tools&lt;/a&gt; (&lt;a href=&quot;https://github.com/domdfcoding/domdf_python_tools/pull/151&quot;&gt;contributed upstream&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1140978&quot;&gt;flask-caching&lt;/a&gt; (&lt;a href=&quot;https://github.com/pallets-eco/flask-caching/pull/652&quot;&gt;contributed upstream&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1140863&quot;&gt;magicgui&lt;/a&gt; (&lt;a href=&quot;https://github.com/pyapp-kit/magicgui/pull/731&quot;&gt;contributed upstream&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://salsa.debian.org/python-team/packages/pydantic-core/-/commit/0b294b4e0841b63d2a6ace55b9fbb6ec50fae6d3&quot;&gt;pydantic-core&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1140865&quot;&gt;pydantic-extra-types&lt;/a&gt; (&lt;a href=&quot;https://github.com/pydantic/pydantic-extra-types/pull/397&quot;&gt;contributed upstream&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1140866&quot;&gt;pydantic&lt;/a&gt; (&lt;a href=&quot;https://github.com/pydantic/pydantic/pull/13357&quot;&gt;contributed upstream&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1140867&quot;&gt;pylint&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1140868&quot;&gt;pytest-codeblocks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1140875&quot;&gt;python-docx&lt;/a&gt; (&lt;a href=&quot;https://github.com/python-openxml/python-docx/pull/1563&quot;&gt;contributed upstream&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1140879&quot;&gt;python-numpy-groupies&lt;/a&gt; (&lt;a href=&quot;https://github.com/ml31415/numpy-groupies/pull/96&quot;&gt;contributed upstream&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1140880&quot;&gt;python-openapi-core&lt;/a&gt; (&lt;a href=&quot;https://github.com/python-openapi/openapi-core/pull/1207&quot;&gt;contributed upstream&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1140932&quot;&gt;python-urllib3&lt;/a&gt; (&lt;a href=&quot;https://github.com/urllib3/urllib3/pull/5094&quot;&gt;contributed upstream&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1140883&quot;&gt;python-watchfiles&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1141032&quot;&gt;sphinx-automodapi&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Python 3.14 became the default Python version in unstable towards the end of the month, starting a &lt;a href=&quot;https://bugs.debian.org/1130323&quot;&gt;transition&lt;/a&gt;.  These usually involve quite a bit of work, and there’s much more to do, but I fixed a few things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1140927&quot;&gt;depthcharge-tools: Traceback with 3.14: args for positionals must be != 0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1131793&quot;&gt;domdf-python-tools: autopkgtest failure with Python 3.14&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Other build/test failures:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1140059&quot;&gt;dh-python: Dependency parsing is too picky about spacing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://salsa.debian.org/python-team/packages/psygnal/-/commit/060a129ae5267e404510bdcb5e2bfb20eafe9c25&quot;&gt;psygnal: Allow building without msgspec&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://salsa.debian.org/python-team/packages/pydantic-core/-/commit/0ec1508c0ff9cfeb2677fba4a0a29cc2cd19cabf&quot;&gt;pydantic-core: Accept and require uuid 1.23.0, now that it’s in Debian&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1135448&quot;&gt;pygame: &lt;span class=&quot;caps&quot;&gt;FTBFS&lt;/span&gt;: &lt;span class=&quot;caps&quot;&gt;FAIL&lt;/span&gt;: test_fill_rle (pygame.tests.surface_test.SurfaceTypeTest.test_fill_rle)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1139431&quot;&gt;pyro5: &lt;span class=&quot;caps&quot;&gt;FTBFS&lt;/span&gt;: Unable to determine debhelper compatibility version&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1139197&quot;&gt;python-persistent: Bump timeout in test_rapid_create_destroy_cycle&lt;/a&gt; (&lt;a href=&quot;https://github.com/zopefoundation/persistent/pull/238&quot;&gt;contributed upstream&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1140667&quot;&gt;python-yubihsm: Depends: python3-cryptography (&amp;lt; 47) but 47.0.0-1 is to be installed&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1138813&quot;&gt;sphinx-gallery: &amp;lt;!nodoc&amp;gt; build dependency removed from testing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://salsa.debian.org/python-team/packages/tpm2-pytss/-/commit/0b9dcb5d369f2f32d904437e7880cec0381745e0&quot;&gt;tpm2-pytss: Fix support for cryptography 47&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1140931&quot;&gt;twisted: Tests fail with pyopenssl 26.3.0: module ‘OpenSSL.crypto’ has no attribute ‘X509Req’&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Other bugs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://salsa.debian.org/python-team/packages/psygnal/-/commit/0bc98b31531ab5ce3f6f465b16780ed932633fe6&quot;&gt;psygnal: Fix reproducibility&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1138937&quot;&gt;python-nacl: Updating the python-nacl Uploaders list&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1046910&quot;&gt;python-tabulate: Fails to build source after successful build&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1046308&quot;&gt;tpm2-pytss: Fails to build source after successful build&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Rust packaging&lt;/h2&gt;
&lt;p&gt;New upstream versions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;rust-asn1 (&lt;a href=&quot;https://bugs.debian.org/1134917&quot;&gt;needed by new python-cryptography&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;rust-asn1-derive&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Code reviews&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1129695&quot;&gt;buildbot: [&lt;span class=&quot;caps&quot;&gt;INTL&lt;/span&gt;:sv] Swedish translation of debconf templates&lt;/a&gt; (merged and uploaded)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://salsa.debian.org/ssh-team/openssh/-/merge_requests/39&quot;&gt;openssh: Support DPKG_ROOT&lt;/a&gt; (merged and uploaded)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://salsa.debian.org/ssh-team/openssh/-/merge_requests/41&quot;&gt;openssh: Fix &lt;span class=&quot;caps&quot;&gt;GSS&lt;/span&gt; C25519 server blob bounds check&lt;/a&gt; (merged and uploaded)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://salsa.debian.org/python-team/packages/python-pyramid/-/merge_requests/1&quot;&gt;python-pyramid: &lt;span class=&quot;caps&quot;&gt;CVE&lt;/span&gt;-2023-40587 Backport patch&lt;/a&gt; (merged and uploaded)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Other bits and pieces&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/1140062&quot;&gt;busybox: chdir no longer available -&amp;gt; breaks d-i ‘live-installer.udeb’&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://salsa.debian.org/debian/debmirror/-/commit/7d25662cd048afbe8f90a437466dc1d8751a3e89&quot;&gt;debmirror: Refresh mirror_size documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; </description> 
	<pubDate>Fri, 03 Jul 2026 11:38:46 +0000</pubDate>

</item> 
<item>
	<title>Matthew Garrett: Securing agentic identity</title>
	<guid>https://codon.org.uk/~mjg59/blog/p/securing-agentic-identity/</guid>
	<link>https://codon.org.uk/~mjg59/blog/p/securing-agentic-identity/</link>
     <description>  &lt;img src=&quot;http://planet.debian.org/heads/mjg59.png&quot; width=&quot;69&quot; height=&quot;85&quot; alt=&quot;&quot; align=&quot;right&quot; style=&quot;float: right;&quot;&gt;  &lt;p&gt;As is the case for many people working in the security industry, the last
few months of my life have been focused on dealing with people wanting to
use LLMs everywhere. From an enterprise security perspective that’s not an
inherent problem - what’s more of a problem is that people want those agents
to have access to resources like their calendar and email and so on, and now
we have somewhat non-deterministic agents that seem very enthusiastic to
achieve what you asked whether that’s a good idea or not, and we’re
combining this with credentials that give them access to sensitive data, and
leaving those credentials on disk where they can be committed into git repos
or exfiltrated to some other service to make use of them on the agent’s
behalf or well just any other number of things, at which point your CEO’s
email is suddenly readable by everyone and you’re having a bad day.&lt;/p&gt;
&lt;p&gt;As I mentioned in my &lt;a class=&quot;link&quot; href=&quot;https://codon.org.uk/~mjg59/blog/p/preventing-token-theft/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;last
post&lt;/a&gt;, pretty
much every strong mechanism for keeping credentials in place is just not
supported in the wider world. We can imagine a universe where agents use
hardware (or at least hypervisor) backed certificates to obtain credentials
and any that end up leaking are worthless as a result. But, sadly, that’s
not an option for most people using existing identity providers. The state
of the art is that you use the &lt;a class=&quot;link&quot; href=&quot;https://mjg59.dreamwidth.org/62175.html&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;device code
flow&lt;/a&gt; and a human authenticates and
the token ends up back inside the agent environment and then it proceeds to
do whatever it wants with it and you just hope that you wake up the next
morning without an awful infoleak occurring.&lt;/p&gt;
&lt;p&gt;(An aside: I do not like the device code flow as used in enterprise
environments, and I never will. The identity provider doesn’t have a real
opportuity to inspect the security posture of the system asking for the
token, and as a result some identity providers will restrict tokens that are
issued in this way. The common alternative of doing stuff using a more
standard flow and having a redirect URI pointing at localhost works fine for
local systems and is a pain for remote ones, even if you can commit crimes
with SSH forwarding. I’m going to suggest something that I think is better,
and you are free to disagree)&lt;/p&gt;
&lt;p&gt;I’m not in a position to get every identity provider and service provider to
change their security posture, so I’m somewhat stuck in terms of the tokens
they’re willing to issue me - largely either JWTs or opaque access tokens,
with no support for any mechanism of binding that token to an instance. The
token that’s going to have to be provided to the remote service is something
I have little influence over. But that doesn’t mean I can’t influence the
token that lands inside the agent’s environment. I can issue a placeholder
token to the agent, and force it to communicate via a proxy that swaps out
the placeholder for the real thing. The worst the agent can do is exfiltrate
the placeholder token, and as long as malicious actors don’t have access to
that proxy, it doesn’t matter - nobody else can do anything with the
placeholder.&lt;/p&gt;
&lt;p&gt;This isn’t a terribly novel insight, and it seems like almost everybody has
reinvented this on their own. But a lot of these implementations involve you
somehow obtaining the real token in advance and then pasting that into
something that generates a placeholder that you provide to your agent
environment somehow, and it’s all a bit clunky and awkward, and it also
means that you need to deal with something that keeps track of the mapping
between placeholders and real tokens and oh no we’ve just invented a secret
store, and if you want this to work at scale and reliably you’re just
invented a high availability distributed secret store, and a lot of people
who’ve read that are now shaking their heads and reaching for gin. Can we
simplify this, and improve security at the same time? I think we can!&lt;/p&gt;
&lt;p&gt;Remember when I said “as long as malicious actors don’t have access to that
proxy, it doesn’t matter”? What if they do? What if they compromise one
machine inside your environment and are then able to email a bunch of
employees and convince their agents to send more tokens back to them and
then delete the email before a human reads it? Now you have someone inside
the wall with access to those tokens, and presumably with access to the
proxy, and now they can be anyone whose agent was gullible enough to think
sending them a token was a good idea. This isn’t good!&lt;/p&gt;
&lt;p&gt;So, I thought for a while, and I came up with a new idea. We can have a
broker service that obtains credentials for us. We can run that centrally,
away from the agents. A client in an agentic environment can request a
token, and that can result in a URL being generated and the user being
directed to open a URL in a browser and authenticate. When the user
authenticates, the authentication flow redirects the confirmation back via
the broker, and the broker obtains the real auth token. The obvious thing to
do now would be to return the auth token to the client in the agentic
environment, but we don’t do that. Instead, we mint a new JWT, and add a new
claim - one that contains an encrypted copy of the token. In the process we
can copy over all the original claims, because those aren’t secret - and now
even if the client inspects the token to figure out what access it has,
it’ll get a correct answer. We sign the new token with our own signing key,
and pass that back to the client. The client now has a legitimate JWT that
is utterly useless, because the signature isn’t trusted by anyone other than
us.&lt;/p&gt;
&lt;p&gt;How does it use it? It makes an API request via a proxy, including the new
token in the Authorization: header. The proxy verifies the signature on the
token, and then decrypts the original token and swaps out the fake token for
the real one. The remote API sees what it expects, and everyone is
happy. There’s never a real token in the agentic environment, but also we
don’t need to store anyting anywhere. The only state is the encryption keys,
and those can be injected into the environment at startup. You need to
scale? Just start more of these processes. You need to support multiple
availability zones? Just start more of these processes in different
places. No persistent data is ever held in the broker or the proxy. You
don’t need to care about distributed databases or secret stores.&lt;/p&gt;
&lt;p&gt;This felt wonderfully elegant and I felt smug about coming up with a better
idea, and then I went to a bar earlier this week and sat down to read &lt;a class=&quot;link&quot; href=&quot;https://datatracker.ietf.org/doc/html/rfc8705&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;RFC
8705&lt;/a&gt; and the guy next to me
saw that over my shoulder and asked what I was reading and I explained why I
was interested and we talked about agentic identity and then he mentioned
that fly.io had something that sounded &lt;a class=&quot;link&quot; href=&quot;https://fly.io/blog/tokenized-tokens/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;very
similar&lt;/a&gt; and I read that and gosh yes
it is very similar, so damn you fly.io for stealing my ideas 3 years before
I even had them. Anyway. Now I need to do better.&lt;/p&gt;
&lt;p&gt;Remember that there’s still a risk around anyone who has access to the proxy
having access to the encrypted keys? We can remove that risk as well. It’s
not uncommon for agentic environments to have an identity issued via
something like &lt;a class=&quot;link&quot; href=&quot;https://spiffe.io/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;SPIFFE&lt;/a&gt;, at which point they have a
client certificate. You can probably guess where I’m going with this. If we
require that an agent present a client cert to the broker when requesting a
token, we can embed a representation of that client cert into the token we
mint. The proxy can then require mTLS for the client connection, and can
verify that the presented certificate matches the one represented in the
token. If it does then whoever’s using the token has access to the private
key associated with the environment it was issued to. If we then ensure that
the private keys backing these certificates are either hardware or
hypervisor backed, and as such tied to a specific instance, we now have a
high degree of confidence that the token can only be used in its intended
environment. Even if our identity provider doesn’t support RFC 8705, we can.&lt;/p&gt;
&lt;p&gt;This is fairly straightforward where you’re using a platform where your
identity provider is also the environment that’s consuming your tokens, and
more annoying for third parties. The broker potentially needs some amount of
third party vendor knowledge to make that work for everyone. This is even
more the case where login isn’t via your identity provider (thanks, github),
but none of this is insurmountable - just annoying. And where vendors issue
opaque tokens rather than JWTs, this still isn’t a problem; we can just mint
a new JWT that includes the opaque token as an encrypted claim, and include
the same certificate binding. The opaque token ends up being the thing
that’s presented to the third party, but only after we’ve verified the mTLS
binding.&lt;/p&gt;
&lt;p&gt;In an ideal world none of this would be necessary - someone would spin up a
new agentic environment, a user would prove their identity, and a
certificate embodying that identity would be issued to the environment with
a private key that can’t be exfiltrated. That certificate would be
sufficient to obtain new certificates associated with the same private key,
and we could still bind that into mTLS identity. This would be much simpler,
but browsers don’t support it, so it’s not likely to happen any time soon.&lt;/p&gt;
&lt;p&gt;Anyway. Even if we can’t have the best thing, we can do better than we are
at the moment, and also it would be lovely if we could standardise on this
rather than have everyone build their own thing. The end.&lt;/p&gt; </description> 
	<pubDate>Fri, 03 Jul 2026 00:38:23 +0000</pubDate>

</item> 
<item>
	<title>Joey Hess: no LLM code in dependencies</title>
	<guid>http://joeyh.name/blog/entry/no_LLM_code_in_dependencies/</guid>
	<link>http://joeyh.name/blog/entry/no_LLM_code_in_dependencies/</link>
     <description>  &lt;img src=&quot;http://planet.debian.org/heads/joeyh2.png&quot; width=&quot;84&quot; height=&quot;75&quot; alt=&quot;&quot; align=&quot;right&quot; style=&quot;float: right;&quot;&gt;  &lt;p&gt;I&#39;ve spent about 100 hours of work over the past month to make sure
git-annex can build without dependencies that contain LLM generated code.
At least so far.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://git-annex.branchable.com/no_llm_code/&quot;&gt;https://git-annex.branchable.com/no_llm_code/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Needing to review a program&#39;s whole dependency tree on an ongoing basis is
apparently what programming has come to?&lt;/p&gt;

&lt;p&gt;I&#39;ve found some real stinkers. Large LLM generated changes being reverted
in the next release without any explanation. An incoherent 1489 line
commit message with 10,000 lines of changes to a 26,000 LOC code base.
A LLM prompt to copy code from another project that seems to have only
avoided being copyright infringement due to luck.&lt;/p&gt;

&lt;p&gt;I now have additional information about the quality of dependencies
which will surely influence future decisions. As far as I
can see, that&#39;s the only positive benefit of this work.&lt;/p&gt;

&lt;p&gt;I realize that I am probably trying to hold back the tide at this point.
That appears to be why Software Freedom Conservancy
&lt;a href=&quot;https://sfconservancy.org/llm-gen-ai/llm-backed-generative-ai-recommendations.html&quot;&gt;punted&lt;/a&gt;,
and I doubt that the FSF will do any better.&lt;/p&gt;

&lt;p&gt;As these dominos fall, I am reconsidering my participation in these
communities. But I continue my work and support my users.&lt;/p&gt;

&lt;p&gt;It may seem easy to prompt a LLM with&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Add fourmolu config and restyled&lt;/p&gt;

&lt;p&gt;neat&lt;/p&gt;

&lt;p&gt;format a module&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;And commit the result and call yourself a 10xer.
But please consider the broader impact of your actions.
(In the above case, that project lost my further collaboration on it.)&lt;/p&gt; </description> 
	<pubDate>Thu, 02 Jul 2026 14:06:30 +0000</pubDate>

</item> 
<item>
	<title>Matthew Garrett: Preventing token theft</title>
	<guid>https://codon.org.uk/~mjg59/blog/p/preventing-token-theft/</guid>
	<link>https://codon.org.uk/~mjg59/blog/p/preventing-token-theft/</link>
     <description>  &lt;img src=&quot;http://planet.debian.org/heads/mjg59.png&quot; width=&quot;69&quot; height=&quot;85&quot; alt=&quot;&quot; align=&quot;right&quot; style=&quot;float: right;&quot;&gt;  &lt;p&gt;When you log into a service you’re given an authentication token. Each
further request to the site includes that token, allowing the server to
figure out who you are and ensuring that you have access to your
data. Depending on site policy, this token may either be stored in memory
(and so vanish if you restart your browser) or disk. The token is the proof
of your identity. As far as the site is concerned, anyone with your token is
you. These tokens may be traditional browser cookies, but they may also be
stored in either site local storage or (if you’re not using a browser) in
some other storage location.&lt;/p&gt;
&lt;p&gt;In recent years we’ve seen infostealer malware (like
&lt;a class=&quot;link&quot; href=&quot;https://www.cisa.gov/news-events/cybersecurity-advisories/aa25-141b&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;LummaC2&lt;/a&gt;)
gain the ability to exfiltrate user tokens, allowing attackers to gain
access to the user’s data without needing to retain access to the user’s
machine. This attack is viable even if the site has strong MFA requirements,
so passkeys don’t help. Encrypting the tokens on disk doesn’t prevent the
malware from scraping them out of the browser’s RAM or obtaining whatever
key is used to encrypt them. This feels like a pretty hard problem to solve.&lt;/p&gt;
&lt;p&gt;But that hasn’t stopped people from trying! Dirk Balfanz wrote an IETF draft
describing a mechanism for using &lt;a class=&quot;link&quot; href=&quot;https://datatracker.ietf.org/doc/html/draft-balfanz-tls-obc-01&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;self-signed certificates for TLS
authentication&lt;/a&gt;. This
uses the &lt;a class=&quot;link&quot; href=&quot;https://en.wikipedia.org/wiki/Mutual_authentication#mTLS&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;mutual
authentication&lt;/a&gt;
feature of the TLS protocol that requires both sides prove their identity to
each other. In regular TLS, the remote site presents a signed certificate
that tells you who it is. When performing mutual authentication, you then
present a certificate to the remote site telling it who &lt;em&gt;you&lt;/em&gt; are. These
client certificates are largely unused outside enterprise environments
because they’re a &lt;em&gt;huge&lt;/em&gt; pain to deploy. It’s not so much that this has
sharp edges, it’s that it’s entirely made of sharp edges. Managing
certificate deployment to your devices is hard. Browsers get confused if the
certificates change under them. You have one certificate and it lives
forever, so sites you present it to can track your identity. Users are
prompted to choose a certificate to authenticate with, and if they pick the
wrong one everything breaks and is hard to recover. I’ve deployed this and I
did not have a good time.&lt;/p&gt;
&lt;p&gt;But Balfanz’s idea was simple. Rather than require certificates to be
deployed, browsers would simply generate a certificate on the fly. The goal
wasn’t to prove the device or user’s identity in any global way - but it
would associate a TLS session with a specific certificate. You could then,
for example, include a hash of the certificate in the cookie, and if someone
tried to use that cookie without presenting that certificate then the cookie
could be rejected. If the browser used a hardware-backed private key for the
certificate then it would be impossible for an attacker to steal it. Sure,
you could still steal cookies, but you wouldn’t be able to use them.&lt;/p&gt;
&lt;p&gt;This was written almost 15 years ago, and seems simple, elegant, and
functional. It didn’t happen. Part of the reason for that is that, well, it
wasn’t quite so simple. One problem was privacy related. Cookies are only
sent after the TLS session is established, so anyone monitoring the network
doesn’t know anything about the user identity. A naive implementation of
this approach would have meant the client certificate being sent before
session establishment, and now user identity can be tracked (no longer an
issue if this was implemented on top of TLS 1.3, but this was a log time
ago). This was avoided by reordering the client handshake, but that meant
having to modify the TLS specification and implementations would have to be
updated to support this. Another was that figuring out the granularity of
the certificates was difficult. You’d want to use different certificates for
every site to avoid them effectively becoming tracking cookies, but you need
to provide the certificate before cookies are set, and you don’t know what
origin the site is going to set in its cookies. If you generate a
certificate for a.example.com and a different one for b.example.com, and
a.example.com sets a cookie for *.example.com and includes the certificate
you used for a.example.com, that cookie isn’t going to work on b.example.com
and things are broken. This meant supporting it wasn’t as straightforward as
it seemed - you’d need to ensure that your cookie scope was compatible with
the certificate scope. You could probably make this work well enough by
aligning it with the &lt;a class=&quot;link&quot; href=&quot;https://publicsuffix.org/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;Public Suffix List&lt;/a&gt;, but
there was still some risk of expectations not being aligned.&lt;/p&gt;
&lt;p&gt;And, perhaps most importantly, &lt;a class=&quot;link&quot; href=&quot;https://datatracker.ietf.org/doc/html/rfc5077&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;TLS session
resumption&lt;/a&gt; (replaced by
&lt;a class=&quot;link&quot; href=&quot;https://datatracker.ietf.org/doc/html/rfc8446#page-15&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;pre-shared keys&lt;/a&gt; in
TLS 1.3) somewhat defeats the purpose of the exercise - clients store state
that allows them to re-establish a TLS connection without performing
certificate exchange (this reduces overhead if a connection gets interrupted
or you switch to a new network or anything along those lines), and anyone in
a position to steal cookies could steal that state as well.&lt;/p&gt;
&lt;p&gt;The followup attempt was &lt;a class=&quot;link&quot; href=&quot;https://datatracker.ietf.org/doc/html/draft-balfanz-tls-channelid-01&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;channel
IDs&lt;/a&gt;.
This simplified the implementation somewhat - rather than certificates, a
raw public key would be sent, along with proof of possession of the private
key in the form of a signature over a portion of the TLS handshake. This was
required even in the event of session resumption, which avoided having to
worry about theft of session secrets. The timing of the exchange was after
the encrypted session had been established, so user identity couldn’t be
leaked that way either. Cookies could then be bound to this
identifier. Unfortunately it didn’t really deal with the problem of scoping
keys in a way that would match cookie requirements, and the spec suggests
that the right way of handling this is to scope keys to TLDs, which would
enable user tracking across sites (Chrome’s implementation apparently
restricted it to eTLD+1, which would match the third party cookie policy and
avoid the tracking risk).&lt;/p&gt;
&lt;p&gt;Chrome added support for this, but it was &lt;a class=&quot;link&quot; href=&quot;https://groups.google.com/a/chromium.org/g/net-dev/c/AjFQjBmaEQE/m/gIXoV3IFCQAJ?utm_medium=email&amp;amp;utm_source=footer&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;removed in early
2018&lt;/a&gt;. The
discussion of some of the pain points in that message is interesting,
explicitly calling out problems with connection coalescing across domains
and the incompatibility with zero-RTT TLS1.3. The overall consensus at the
time seems to be that trying to solve this entirely at the TLS layer has too
many rough edges, and a different approach should be taken.&lt;/p&gt;
&lt;p&gt;And so almost 7 years after the initial draft for origin bound certificates,
we come to &lt;a class=&quot;link&quot; href=&quot;https://datatracker.ietf.org/doc/html/rfc8471&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;token
binding&lt;/a&gt;. This ended up being
a rather more complex endeavour, covering 3 different RFCs describing how it
impacts TLS, how to incorporate it into HTTP, and how to manage all the
various parties involved in the process. The short version is that it’s
pretty similar to channel ID, except that there’s also a documented
mechanism for allowing tokens to be bound to one party and consumed by
another, avoiding any need for widely scoped keys. Token binding effectively
solved all the issues in the original proposal, but at the cost of somewhat
more complexity.&lt;/p&gt;
&lt;p&gt;The RFC was finalised in October 2018. Chrome removed its (incomplete,
draft) support for token binding in November 2018. Edge carried support
until late 2024. Despite getting all the way through the RFC process, it’s
functionally dead.&lt;/p&gt;
&lt;p&gt;The process up until this point had been largely initiated by Google, with
Microsoft contributing significantly to the token binding standards. The
work had been focused on identifying a generic solution to the problem
rather than tying it to any specific authentication flow. The next step was
in a different direction - rather than trying to fix this for the entire
internet, how about we try to fix it for OAuth?&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;link&quot; href=&quot;https://datatracker.ietf.org/doc/html/rfc8705&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;RFC 8705&lt;/a&gt; is titled “OAuth
2.0 Mutual-TLS Client Authentication and Certificate-Bound Access
Tokens”. This is basically the 2011 approach, but (a) with an explicit
definition of how the certificate should be incorporated into issued auth
cookies, and (b) with a proviso that well uh if you’re going to use tokens
issued by your IdP to authenticate to someone else then well you’re going to
need to use the same cert for both. This is probably fine for the
company-owned-laptop case where you’re actually fine with multiple sites
being able to tie identities together (that’s kind of the point here!), and
also works for “I am using an app and not a browser”, but doesn’t work for
more generic scenarios. It also doesn’t seem to take the session resumption
case into account at all? Support for RFC8705 seems poor, as far as I can
tell of the big players only Auth0 implements it. In theory it works fine
with self-signed client certs but in reality that’s going to be almost as
difficult to support across multiple platforms as just issuing proper client
certs in the first place, so deployment is going to be kind of a pain. But
the good news is it doesn’t rely on any TLS extensions or custom browser
behaviour, so at the client side it works fine with any browser.&lt;/p&gt;
&lt;p&gt;Which brings us on to &lt;a class=&quot;link&quot; href=&quot;https://datatracker.ietf.org/doc/html/rfc9449&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;RFC
9449&lt;/a&gt;, “Demonstrating Proof
of Possession”. This goes even further than RFC8705 in terms of reducing the
burden of deployment - it works fine with existing browsers, &lt;em&gt;and&lt;/em&gt; it
doesn’t even require any certs. The client generates a keypair and provides
the pubkey when requesting the cookie. The cookie contains the pubkey. Every
request to the service now provides the cookie with the pubkey and also
provides a signature over the URI and HTTP method. If the signature matches
the pubkey in the token then clearly the signature came from the machine the
token was issued to, and everything is good.&lt;/p&gt;
&lt;p&gt;This does come with some downsides, though. The first is that it uses
browser interfaces to generate the keys (typically
&lt;a class=&quot;link&quot; href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/generateKey&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;crypto.subtle.generatekey()&lt;/a&gt;)
and as far as I can tell there are no browsers that guarantee that that key
is going to be generated in hardware even if it’s marked non-exportable, so
anyone able to steal the cookies can also steal the keys. The second is that
the signature only covers the URI and HTTP method, and not the message
content or any other headers, so anyone able to exfiltrate a valid signature
can replay it against the same URI with different message content. The
recommended way to handle this is to reject any signatures that weren’t
generated within the last few seconds, which is a wonderful additional way
to allow clock skew to give you a Bad Day. And the third is that every
single request has to be separately signed, which is not intrinsically a
problem because computers are fast and have multiple cores, but if you’re
trying to solve the first problem by sticking the key in a TPM then you’re
dealing with something that’s slow and single threaded and that’s maybe
acceptable if you’re using client certificates (because there’s going to be
one signature per session and you can use the same session for multiple
requests) but probably not if you’re dealing with a user opening a browser
that restores previous tabs and each of those is a webapp that fires off 100
requests in parallel.&lt;/p&gt;
&lt;p&gt;In case it wasn’t clear, I don’t like DPoP. It doesn’t feel like it actually
solves the underlying problem that we see in the real world (malware running
in a context where if it can grab the tokens it can grab the keys), it adds
a massive amount of overhead, and it has baked in replay vulnerabilities. I
don’t know why it exists and I’m incredibly suspicious of vendors telling me
that it fixes my problems, because if they’re telling me that then I’m going
to end up assuming that they either don’t understand my problems or they
don’t understand their technology, and neither of those is good.&lt;/p&gt;
&lt;p&gt;Still. Then we get to the thing that prompted me to write this - Chrome’s
announcement that they had &lt;a class=&quot;link&quot; href=&quot;https://security.googleblog.com/2026/04/protecting-cookies-with-device-bound.html&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;launched device-bound session
credentials&lt;/a&gt;. This
is interesting because it’s a Chrome feature that’s explicitly intended to
counter on-device malware, which was one of the things that was out of scope
in 2018 when token binding was being removed. Since this is entire web level
it doesn’t have to be an RFC, and so is instead defined &lt;a class=&quot;link&quot; href=&quot;https://w3c.github.io/webappsec-dbsc/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;by
W3C&lt;/a&gt;. I’m going to handwave all the
complexity and say that it’s basically a way to register a public key when a
cookie is issued, and then prove possession of the private key when it’s
time to renew the cookie. By making the cookies shortlived and having
support for rotating them in the background, user impact is basically zero
and while it’s still possible for an attacker to exfiltrate and use a cookie
they’ll only be able to do so for a short window before it needs to be
refreshed - something the attacker can’t do, since they don’t have the
private key. This avoids the DPoP overhead because you only need to do
signing once per cookie per cookie lifetime, and not on every single
request. I don’t &lt;em&gt;like&lt;/em&gt; this due to the window where exfiltrated tokens can
be used, but it feels like a strict improvement over the status quo. An
extension called &lt;a class=&quot;link&quot; href=&quot;https://github.com/w3c/webappsec-dbsc/blob/main/DBSCE/Overview.md&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;device-bound session credentials for
enterprise&lt;/a&gt;
allows pre-enrollment of device keys, so even though the actual runtime DBCE
flow doesn’t involve certificates, certificates can be used for device
registration in enterprise environments and you can make sure that auth
cookies only go to trusted devices. Unfortunately this is Chrome-only, and
so we’re going to need to wait for it to be backported to all the random app
frameworks for it to have widespread support on mobile or for almost
everyone’s desktop app that’s actually three websites in an Electron
wrapper. Mozilla’s &lt;a class=&quot;link&quot; href=&quot;https://github.com/mozilla/standards-positions/issues/912#issuecomment-4840591341&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;current
position&lt;/a&gt;
is that they’re not in favour of it, so I guess we’ll see where Safari lands
in terms of broad uptake.&lt;/p&gt;
&lt;p&gt;The last thing on my list is &lt;a class=&quot;link&quot; href=&quot;https://datatracker.ietf.org/doc/draft-mw-oauth-tls-session-bound-tokens/04/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;another client cert/OAuth
binding&lt;/a&gt;,
this one still in draft state at the time of writing. This one is aimed
primarily at the use of agent-driven tooling, where you have something
running in the background using a whole bunch of tools that are each acting
on your behalf. Authenticating to all of them separately isn’t a fun time,
but giving broadly scoped access tokens to a non-deterministic agent and
trusting that it’ll never post them somewhere public also isn’t a fun
time. The key distinction between it and RFC8705 is that it’s aimed at
&lt;em&gt;connections&lt;/em&gt; rather than &lt;em&gt;sessions&lt;/em&gt;, which avoids the worries about session
resumption. This is done with &lt;a class=&quot;link&quot; href=&quot;https://datatracker.ietf.org/doc/html/rfc5705&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;TLS
Exporters&lt;/a&gt;, which in TLS 1.3
should be unique to the connection even over session resumption (TLS 1.2 may
reuse some of the same key material for exporters over session resumption,
so it’s recommended to enforce 1.3 for this). By providing a new signature
alongside the cookie on every new connection, the client proves that it
still has access to the private key. This is a very new spec and I haven’t
had much time to work through it yet, but my naive understanding is that
unlike RFC8705 this would require some additional client support to be able
to regenerate the client signature on every TLS reconnection.&lt;/p&gt;
&lt;p&gt;This doesn’t avoid all the problems that RFC8705 has, including how to scope
certificates. For the agentic use case that probably doesn’t matter - all
these tools are acting on behalf of the same user, it’s fine if all the
sites involved know they’re the same user. But it doesn’t solve the general
purpose user use case, and right now DBSC seems like the best we have there.&lt;/p&gt;
&lt;p&gt;But. Part of me still wonders whether &lt;a class=&quot;link&quot; href=&quot;https://datatracker.ietf.org/doc/html/draft-balfanz-tls-obc-01&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;Dirk
Balfanz’s&lt;/a&gt;
approach was the right one. Yes, there’s risk associated with TLS session
resumption, but in the worst case you could just switch that off for high
risk setups. The cookie scope argument is real, and also in cases where it
could violate privacy the site owner could already choose to broaden their
cookie scope and violate your privacy, and in cases where it breaks things
you could just not make use of it. The other problems are largely fixed by
TLS 1.3, and then we’re just left with “Browsers handle client certificates
badly” to which my answer is “Yes, and we should fix that anyway”.&lt;/p&gt;
&lt;p&gt;Despite having a pretty good answer to this solution over a decade ago, the
closest we have to actual deployment is something that offers strictly worse
security guarantees. And tokens keep getting stolen, and compromises keep
occurring, and for the most part people shrug and get on with things.&lt;/p&gt; </description> 
	<pubDate>Thu, 02 Jul 2026 02:23:45 +0000</pubDate>

</item> 
<item>
	<title>Valhalla&#39;s Things: A Pair of Hair Towel Wraps</title>
	<guid>https://blog.trueelena.org/blog/2026/07/02-a_pair_of_hair_towel_wraps/index.html</guid>
	<link>https://blog.trueelena.org/blog/2026/07/02-a_pair_of_hair_towel_wraps/index.html</link>
     <description>  &lt;article&gt;
    &lt;section class=&quot;header&quot;&gt;
        Posted on July  2, 2026
        &lt;br /&gt;
        
        Tags: &lt;a href=&quot;https://blog.trueelena.org/tags/madeof%3Aatoms.html&quot; title=&quot;All pages tagged &#39;madeof:atoms&#39;.&quot;&gt;madeof:atoms&lt;/a&gt;, &lt;a href=&quot;https://blog.trueelena.org/tags/craft%3Asewing.html&quot; title=&quot;All pages tagged &#39;craft:sewing&#39;.&quot;&gt;craft:sewing&lt;/a&gt;, &lt;a href=&quot;https://blog.trueelena.org/tags/FreeSoftWear.html&quot; title=&quot;All pages tagged &#39;FreeSoftWear&#39;.&quot;&gt;FreeSoftWear&lt;/a&gt;
        
    &lt;/section&gt;
    &lt;section&gt;
        &lt;p&gt;&lt;img alt=&quot;Two trapezoid shaped hoods made out of off-white towels: one is still looking new, while the other one has been bleached and roughened by having been washed many times.&quot; class=&quot;align-center&quot; src=&quot;https://blog.trueelena.org/blog/2026/07/02-a_pair_of_hair_towel_wraps/hair_towel_wraps.jpg&quot; style=&quot;width: 80.0%;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Many months ago I had been ordering some furniture from IKEA&lt;a class=&quot;footnote-ref&quot; href=&quot;https://blog.trueelena.org#fn1&quot; id=&quot;fnref1&quot;&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;/a&gt; and
on one of those orders I got tempted by a &lt;a href=&quot;https://www.ikea.com/nl/en/p/stjarnbuske-hair-towel-wrap-natural-50540181/&quot;&gt;hair towel wrap&lt;/a&gt;: it mostly
worked as an idea, but it was too short for my hair.&lt;/p&gt;
&lt;p&gt;On the other hand, I had two old towels I wasn’t using, and a recently
unpacked sewing machine.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;A towel cut in two trapezoid halves with a STJÄRNBUSKE laid on top of it: the IKEA wrap is a bit less than 10 cm less deep, and at least 30 cm shorter, and is also triangular rather than a trapezoid.&quot; class=&quot;align-center&quot; src=&quot;https://blog.trueelena.org/blog/2026/07/02-a_pair_of_hair_towel_wraps/comparison_with_original.jpg&quot; style=&quot;width: 80.0%;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I didn’t plan too much, I just put the STJÄRNBUSKE over the towel, cut,
realized that the two pieces didn’t fit with right sides together, cut
the second towel (I had planned to make two wraps, anyway, so it wasn’t
a big deal), and started sewing by machine in what seemed like a
reasonable procedure, taking notes and pictures.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;A towel, with its original care label, that has been cut in a trapezoid shape and reassembled into a hood shape with a long triangular tail. The machine sewn finishing is still neat and pristine.&quot; class=&quot;align-center&quot; src=&quot;https://blog.trueelena.org/blog/2026/07/02-a_pair_of_hair_towel_wraps/machine_sewn_towel_new.jpg&quot; style=&quot;width: 80.0%;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The result was pretty good, and I started using it every time I washed
my hair, but then I started to entertain the idea of shooting myself
sewing the second one by hand for a video, but never found the time to
actually doing it, and the pieces remained in the Pile for months, and
months, and way more than a year.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;The head of a woman with a turban-like thing on the head, covering all of the hair except for a tiny bit at the center front.&quot; class=&quot;align-center&quot; src=&quot;https://blog.trueelena.org/blog/2026/07/02-a_pair_of_hair_towel_wraps/cheesecloth_wrap_worn_front.jpg&quot; style=&quot;width: 80.0%;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Until one day I bought a meter of cotton cheesecloth (mostly because it
was almost cheaper than buying a sample) and it felt like a good
material to make a nicely looking head wrapper, to keep my hair out of
the way when needed.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;A woman in a bathrobe with her head tilted downwards, covered by a towel thing that lies on the back of the head and has a long tail hanging on the front, in the process of being wrapped around the hairs and then brought over the top and back.&quot; class=&quot;align-center&quot; src=&quot;https://blog.trueelena.org/blog/2026/07/02-a_pair_of_hair_towel_wraps/wearing_the_wrap.jpg&quot; style=&quot;width: 80.0%;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A couple months later, it was finally time to bring this project to the
top of the list, and even if I was sewing two by hand it went pretty
quickly: we had a weekend when it was too hot to do anything else, and
by the end of it the wraps were done.&lt;/p&gt;
&lt;p&gt;All that remained was finish writing the &lt;a href=&quot;https://blog.trueelena.org&quot;&gt;instructions for my
FreeSoftWear patterns website
&amp;lt;https://sewing-patterns.trueelena.org/contemporary_unisex/headwear/hair_towel_wrap/index.html&amp;gt;&amp;gt;&lt;/a&gt;,
and having some pictures taken, and this project was done.&lt;/p&gt;
&lt;p&gt;And now, on to documenting a few more things I’ve done lately, and to
start working on the other projects I have added to the queue in the
meantime.&lt;/p&gt;
&lt;section class=&quot;footnotes footnotes-end-of-document&quot;&gt;
&lt;hr /&gt;
&lt;ol&gt;
&lt;li id=&quot;fn1&quot;&gt;&lt;p&gt;small things. Like, you know, a kitchen :D&lt;a class=&quot;footnote-back&quot; href=&quot;https://blog.trueelena.org#fnref1&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;
    &lt;/section&gt;
&lt;/article&gt; </description> 
	<pubDate>Thu, 02 Jul 2026 00:00:00 +0000</pubDate>

</item> 
<item>
	<title>Ben Hutchings: FOSS activity in June 2026</title>
	<guid>https://www.decadent.org.uk/ben/blog/2026/07/01/foss-activity-in-june-2026</guid>
	<link>https://www.decadent.org.uk/ben/blog/2026/07/01/foss-activity-in-june-2026.html</link>
     <description>  &lt;img src=&quot;http://planet.debian.org/heads/benh.png&quot; width=&quot;109&quot; height=&quot;100&quot; alt=&quot;&quot; align=&quot;right&quot; style=&quot;float: right;&quot;&gt;  &lt;p&gt;This month’s work was dominated by the transition of Debian 12
“bookworm” to support by the LTS team, and by review of some large
updates to Linux stable branches.&lt;/p&gt;

&lt;p&gt;Linux 6.12 is currently available in bookworm-backports, but that
suite will stop accepting uploads after the last bookworm point
release.  I updated some supporting packages in bookworm in
preparation for adding Linux 6.12 there.  I also prepared for
the possibility that bookworm-backports would close earlier.&lt;/p&gt;

&lt;p&gt;Since the LTS team is still also maintaining Debian 11 “bullseye”
until August, I reviewed upstream changes for both Linux 5.10 and 6.1
stable branches and reported a number of regressions and other issues.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Debian packages:
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://tracker.debian.org/pkg/firmware-free&quot;&gt;firmware-free&lt;/a&gt;:
        &lt;ul&gt;
          &lt;li&gt;Merge requests:
            &lt;ul&gt;
              &lt;li&gt;merged &lt;a href=&quot;https://salsa.debian.org/kernel-team/firmware-free/-/merge_requests/11&quot;&gt;!11: Apply relevant changes from firmware-nonfree&lt;/a&gt;&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://tracker.debian.org/pkg/firmware-nonfree&quot;&gt;firmware-nonfree&lt;/a&gt;:
        &lt;ul&gt;
          &lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/src:firmware-nonfree&quot;&gt;Bugs&lt;/a&gt;:
            &lt;ul&gt;
              &lt;li&gt;closed &lt;a href=&quot;https://bugs.debian.org/1135723&quot;&gt;#1135723: firmware-nonfree: gencontrol conflates initramfs-tools with update-initramfs&lt;/a&gt;&lt;/li&gt;
              &lt;li&gt;closed &lt;a href=&quot;https://bugs.debian.org/1135736&quot;&gt;#1135736: firmware-nonfree: suggests initramfs-tools, which is being phased out&lt;/a&gt;&lt;/li&gt;
              &lt;li&gt;closed &lt;a href=&quot;https://bugs.debian.org/1137651&quot;&gt;#1137651: firmware-misc-nonfree: Please move firmware-intel-graphics and firmware-nvidia-graphics out of Recommends&lt;/a&gt;&lt;/li&gt;
              &lt;li&gt;replied to &lt;a href=&quot;https://bugs.debian.org/1139740&quot;&gt;#1139740: firmware-misc-nonfree should recommend firmware-nvidia-graphics to avoid kernel Oops + black screen&lt;/a&gt;&lt;/li&gt;
              &lt;li&gt;replied to &lt;a href=&quot;https://bugs.debian.org/1139746&quot;&gt;#1139746: firmware-realtek: W: Possible missing firmware rtlwifi/rtl8723bu_bt.bin for module rtl8xxxu&lt;/a&gt;&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
          &lt;li&gt;Merge requests:
            &lt;ul&gt;
              &lt;li&gt;merged &lt;a href=&quot;https://salsa.debian.org/kernel-team/firmware-nonfree/-/merge_requests/150&quot;&gt;!150: Update and remove obsolete package relations&lt;/a&gt;&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
          &lt;li&gt;&lt;a href=&quot;https://tracker.debian.org/pkg/firmware-nonfree/news/&quot;&gt;Uploads&lt;/a&gt;:
            &lt;ul&gt;
              &lt;li&gt;uploaded version 20260519-1 to unstable&lt;/li&gt;
              &lt;li&gt;uploaded version 20260519-1~bpo13+1 to trixie-backports&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://tracker.debian.org/pkg/kernel-wedge&quot;&gt;kernel-wedge&lt;/a&gt;:
        &lt;ul&gt;
          &lt;li&gt;&lt;a href=&quot;https://tracker.debian.org/pkg/kernel-wedge/news/&quot;&gt;Uploads&lt;/a&gt;:
            &lt;ul&gt;
              &lt;li&gt;uploaded version 2.106~deb12u1 to bookworm-security&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://tracker.debian.org/pkg/linux&quot;&gt;linux&lt;/a&gt;:
        &lt;ul&gt;
          &lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/src:linux&quot;&gt;Bugs&lt;/a&gt;:
            &lt;ul&gt;
              &lt;li&gt;closed &lt;a href=&quot;https://bugs.debian.org/1128861&quot;&gt;#1128861: linux: when serving NFS, client attempts to lock served files fail with “No locks available”&lt;/a&gt;&lt;/li&gt;
              &lt;li&gt;replied to &lt;a href=&quot;https://bugs.debian.org/1140461&quot;&gt;#1140461: spam wave of kernel: tpm tpm0: tpm_try_transmit: send(): error -62&lt;/a&gt;&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
          &lt;li&gt;Merge requests:
            &lt;ul&gt;
              &lt;li&gt;reviewed &lt;a href=&quot;https://salsa.debian.org/kernel-team/linux/-/merge_requests/1936&quot;&gt;!1936: [sparc64] Add nvme module to scsi-modules udeb&lt;/a&gt;&lt;/li&gt;
              &lt;li&gt;reviewed &lt;a href=&quot;https://salsa.debian.org/kernel-team/linux/-/merge_requests/1948&quot;&gt;!1948: [amd64] Enable Intel Platform Hardware Support Drivers&lt;/a&gt;&lt;/li&gt;
              &lt;li&gt;merged &lt;a href=&quot;https://salsa.debian.org/kernel-team/linux/-/merge_requests/1977&quot;&gt;!1977: Fix build failure over missing vdso debug files&lt;/a&gt;&lt;/li&gt;
              &lt;li&gt;merged &lt;a href=&quot;https://salsa.debian.org/kernel-team/linux/-/merge_requests/1981&quot;&gt;!1981: 6.1 backport “bpf: Free reuseport cBPF prog after RCU grace period.”&lt;/a&gt;&lt;/li&gt;
              &lt;li&gt;opened &lt;a href=&quot;https://salsa.debian.org/kernel-team/linux/-/merge_requests/1984&quot;&gt;!1984: udeb: Ensure that aead and macsec modules are in the right packages&lt;/a&gt;&lt;/li&gt;
              &lt;li&gt;opened &lt;a href=&quot;https://salsa.debian.org/kernel-team/linux/-/merge_requests/1985&quot;&gt;!1985: Add d/.flake8 config file to support pylsp&lt;/a&gt;&lt;/li&gt;
              &lt;li&gt;merged &lt;a href=&quot;https://salsa.debian.org/kernel-team/linux/-/merge_requests/1992&quot;&gt;!1992: 6.1 backport: ip6_vti: set netns_immutable on the fallback device. (CVE-2026-52909)&lt;/a&gt;&lt;/li&gt;
              &lt;li&gt;merged &lt;a href=&quot;https://salsa.debian.org/kernel-team/linux/-/merge_requests/1993&quot;&gt;!1993: 5.10 backport: ip6_vti: set netns_immutable on the fallback device. (CVE-2026-52909)&lt;/a&gt;&lt;/li&gt;
              &lt;li&gt;merged &lt;a href=&quot;https://salsa.debian.org/kernel-team/linux/-/merge_requests/1999&quot;&gt;!1999: 6.1 backport: Fix CVE-2026-46331&lt;/a&gt;&lt;/li&gt;
              &lt;li&gt;opened &lt;a href=&quot;https://salsa.debian.org/kernel-team/linux/-/merge_requests/2004&quot;&gt;!2004: [sparc64] udeb: scsi-modules: Use the default module list&lt;/a&gt;&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
          &lt;li&gt;&lt;a href=&quot;https://tracker.debian.org/pkg/linux/news/&quot;&gt;Uploads&lt;/a&gt;:
            &lt;ul&gt;
              &lt;li&gt;(LTS) uploaded version 6.12.94-1~bpo12+1 to bookworm-backports&lt;/li&gt;
              &lt;li&gt;uploaded version 7.0.12-2~bpo13+1 to trixie-backports&lt;/li&gt;
              &lt;li&gt;uploaded version 7.1~rc7-1~exp1 to experimental&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
          &lt;li&gt;(LTS) updated the bullseye-security branch to 5.10.259, but did
not upload this version&lt;/li&gt;
          &lt;li&gt;(LTS) updated the bookworm-security branch to 6.1.176, but did
not upload this version&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;(LTS) linux-6.12:
        &lt;ul&gt;
          &lt;li&gt;prepared this backport package for bookworm-security, but did
not upload it yet&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://tracker.debian.org/pkg/linux-base&quot;&gt;linux-base&lt;/a&gt;:
        &lt;ul&gt;
          &lt;li&gt;&lt;a href=&quot;https://tracker.debian.org/pkg/linux-base/news/&quot;&gt;Uploads&lt;/a&gt;:
            &lt;ul&gt;
              &lt;li&gt;uploaded version 4.12.1~deb12u1 to bookworm-security&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://tracker.debian.org/pkg/wireless-regdb&quot;&gt;wireless-regdb&lt;/a&gt;:
        &lt;ul&gt;
          &lt;li&gt;Merge requests:
            &lt;ul&gt;
              &lt;li&gt;opened and merged &lt;a href=&quot;https://salsa.debian.org/kernel-team/wireless-regdb/-/merge_requests/8&quot;&gt;!8: Update to 2026.05.30&lt;/a&gt;&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
          &lt;li&gt;&lt;a href=&quot;https://tracker.debian.org/pkg/wireless-regdb/news/&quot;&gt;Uploads&lt;/a&gt;:
            &lt;ul&gt;
              &lt;li&gt;uploaded version 2026.05.30-1 to unstable&lt;/li&gt;
              &lt;li&gt;uploaded version 2026.05.30-1~deb12u1 to bookworm&lt;/li&gt;
              &lt;li&gt;uploaded version 2026.05.30-1~deb13u1 to trixie&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Debian non-package bugs:
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/release.debian.org&quot;&gt;release.debian.org&lt;/a&gt;:
        &lt;ul&gt;
          &lt;li&gt;opened and closed &lt;a href=&quot;https://bugs.debian.org/1139579&quot;&gt;#1139579: trixie-pu: package wireless-regdb/2026.05.30-1~deb13u1&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;opened &lt;a href=&quot;https://bugs.debian.org/1139581&quot;&gt;#1139581: trixie-pu: package wireless-regdb/2026.05.30-1~deb13u1&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;opened &lt;a href=&quot;https://bugs.debian.org/1139582&quot;&gt;#1139582: bookworm-pu: package wireless-regdb/2026.05.30-1~deb12u1&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Mailing lists:
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://lists.debian.org/debian-backports/&quot;&gt;debian-backports&lt;/a&gt;:
        &lt;ul&gt;
          &lt;li&gt;(LTS) posted &lt;a href=&quot;https://lists.debian.org/31d77827ecf42782c97cb4b4213197c33a33b0ea.camel@decadent.org.uk&quot;&gt;EOL for bookworm-backports&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://lists.debian.org/debian-boot/&quot;&gt;debian-boot&lt;/a&gt;:
        &lt;ul&gt;
          &lt;li&gt;(LTS) posted and replied to &lt;a href=&quot;https://lists.debian.org/03ecb84264a8b6018633c64d3e4a004dd5e10363.camel@decadent.org.uk&quot;&gt;Adding Linux 6.12 udebs for bookworm LTS&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://lists.debian.org/debian-devel/&quot;&gt;debian-devel&lt;/a&gt;:
        &lt;ul&gt;
          &lt;li&gt;replied to &lt;a href=&quot;https://lists.debian.org/eaf26a4b6ff54f8855c71fe84b077c694486804f.camel@decadent.org.uk&quot;&gt;Understanding CI in Salsa, timeouts and runners&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://lists.debian.org/debian-kernel/&quot;&gt;debian-kernel&lt;/a&gt;:
        &lt;ul&gt;
          &lt;li&gt;posted &lt;a href=&quot;https://lists.debian.org/aca2f071cd39f2c9d75d081c7be2371f98f54f4f.camel@decadent.org.uk&quot;&gt;Agenda items for kernel-team meeting on 2026-06-10&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://lists.debian.org/debian-lts/&quot;&gt;debian-lts&lt;/a&gt;:
        &lt;ul&gt;
          &lt;li&gt;posted and replied to &lt;a href=&quot;https://lists.debian.org/21b31300c29a7ed8c9871bd9e7beb25b2cc79e18.camel@decadent.org.uk&quot;&gt;Preparation for Linux 6.12 in bookworm&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://lists.debian.org/debian-lts-announce/&quot;&gt;debian-lts-announce&lt;/a&gt;:
        &lt;ul&gt;
          &lt;li&gt;posted &lt;a href=&quot;https://lists.debian.org/aivd9n_B7HR1593x@decadent.org.uk&quot;&gt;[SECURITY] [DLA 4627-1] kernel-wedge update&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;posted &lt;a href=&quot;https://lists.debian.org/aiveDYMhYvx0ykIK@decadent.org.uk&quot;&gt;[SECURITY] [DLA 4628-1] linux-base update&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;(LTS) &lt;a href=&quot;https://lore.kernel.org/stable/&quot;&gt;stable&lt;/a&gt;:
        &lt;ul&gt;
          &lt;li&gt;reviewed &amp;gt;1000 patches included in 5.10.258-rc1, 5.10.259-rc1,
and 6.1.176-rc1&lt;/li&gt;
          &lt;li&gt;replied to &lt;a href=&quot;https://lore.kernel.org/stable/211fb901ba2c644e6ebdffe46d9face7e317db70.camel@decadent.org.uk/T/&quot;&gt;[PATCH 5.10 210/589] spi: rockchip: fix controller deregistration&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;replied to &lt;a href=&quot;https://lore.kernel.org/stable/7e870e1219db98c9e19777eedfa3b0eb41f41235.camel@decadent.org.uk/T/&quot;&gt;[PATCH 5.10 211/589] net/sched: sch_red: Replace direct dequeue call with peek and qdisc_dequeue_peeked&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;replied to &lt;a href=&quot;https://lore.kernel.org/stable/ab577daf17c46a72e35c668756d5b33b3ca3ca09.camel@decadent.org.uk/T/&quot;&gt;[PATCH 5.10 238/342] net: bridge: use a stable FDB dst snapshot in RCU readers&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;replied to &lt;a href=&quot;https://lore.kernel.org/stable/7fee88099501bfa87594114a5f8c17a760ded36a.camel@decadent.org.uk/T/&quot;&gt;[PATCH 5.10 244/589] spi: topcliff-pch: fix use-after-free on unbind&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;replied to &lt;a href=&quot;https://lore.kernel.org/stable/7ccc26ea6552c9fcae1817e2601a96901f0ca261.camel@decadent.org.uk/T/&quot;&gt;[PATCH 5.10 245/589] cpuidle: powerpc: avoid double clear when breaking snooze&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;replied to &lt;a href=&quot;https://lore.kernel.org/stable/8135746e835e432d7b0f21e142389cf8b4979f0f.camel@decadent.org.uk/T/&quot;&gt;[PATCH 5.10 257/589] PCI/AER: Stop ruling out unbound devices as error source&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;replied to &lt;a href=&quot;https://lore.kernel.org/stable/8cd2c0613f018690cba5ae76c4ab73da05118312.camel@decadent.org.uk/T/&quot;&gt;[PATCH 5.10 263/589] media: uvcvideo: Enable VB2_DMABUF for metadata stream&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;replied to &lt;a href=&quot;https://lore.kernel.org/stable/dbb2510d89e3545af204a7bf3eac06512042120e.camel@decadent.org.uk/T/&quot;&gt;[PATCH 5.10 267/589] media: rc: streamzap: Error handling in probe&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;replied to &lt;a href=&quot;https://lore.kernel.org/stable/edea6d36625f362c3fcaed6bd251a02827081a1d.camel@decadent.org.uk/T/&quot;&gt;[PATCH 5.10 274/589] drm/gem: Fix inconsistent plane dimension calculation in drm_gem_fb_init_with_funcs()&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;replied to &lt;a href=&quot;https://lore.kernel.org/stable/2698831f24c7efea34dc4b34d996ff8327ecc206.camel@decadent.org.uk/T/&quot;&gt;[PATCH 5.10 503/589] crypto: af_alg - Cap AEAD AD length to 0x80000000&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;replied to &lt;a href=&quot;https://lore.kernel.org/stable/f0be2ecfe2c27c1920a44b6f41d8db87611267f1.camel@decadent.org.uk/T/&quot;&gt;[PATCH 5.10 035/342] batman-adv: tp_meter: fix race condition in send error reporting&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;replied to &lt;a href=&quot;https://lore.kernel.org/stable/3374d4b14a7c54f82fb016ab66f3b262f55145fe.camel@decadent.org.uk/T/&quot;&gt;[PATCH 5.10 036/342] batman-adv: tp_meter: avoid role confusion in tp_list&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;replied to &lt;a href=&quot;https://lore.kernel.org/stable/72890f3caf368d0e4dcb5d1ec53c083c16ce8b20.camel@decadent.org.uk/T/&quot;&gt;[PATCH 5.10 310/342] usb: typec: ucsi: Dont update power_supply on power role change if not connected&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;replied to &lt;a href=&quot;https://lore.kernel.org/stable/d9c2e8ea23b1919fe663e480cc7def260ed0ee24.camel@debian.org/T/&quot;&gt;[PATCH 5.15 002/570] ip6_tunnel: Fix usage of skb_vlan_inet_prepare()&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;replied to &lt;a href=&quot;https://lore.kernel.org/stable/b6441670bdb04dc530f433bd21d6c64feb633355.camel@decadent.org.uk/T/&quot;&gt;[PATCH 5.15 299/411] ALSA: aloop: Fix peer runtime UAF during format-change stop&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;replied to &lt;a href=&quot;https://lore.kernel.org/stable/66cf4f95534aa5428a362857cf78dcb946c51672.camel@decadent.org.uk/T/&quot;&gt;[PATCH 5.15 323/411] spi: topcliff-pch: fix controller deregistration&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;replied to &lt;a href=&quot;https://lore.kernel.org/stable/9125d5976feb09ef919f2a287b079843c7671325.camel@decadent.org.uk/T/&quot;&gt;[PATCH 6.1 011/522] tools/bootconfig: Cleanup bootconfig footer size calculations&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;replied to &lt;a href=&quot;https://lore.kernel.org/stable/cb2e59a48887f106a57c3fbef66d5a164b8e2f5f.camel@decadent.org.uk/T/&quot;&gt;[PATCH 6.1 033/522] net/sched: Revert “net/sched: Restrict conditions for adding duplicating netems to qdisc tree”&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;replied to &lt;a href=&quot;https://lore.kernel.org/stable/b6b679743c2383b5a367c5d72404b056dfebf080.camel@decadent.org.uk/T/&quot;&gt;[PATCH 6.1 054/522] selftests/bpf: add generic BPF program tester-loader&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;replied to &lt;a href=&quot;https://lore.kernel.org/stable/80be436bbcda9b8a66058c01eef0b0f94722e7ef.camel@decadent.org.uk/T/&quot;&gt;[PATCH 6.1 064/522] selftests/bpf: S/iptables/iptables-legacy/ in the bpf_nf and xdp_synproxy test&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;replied to &lt;a href=&quot;https://lore.kernel.org/stable/6f805abf1f8b058c1b1241e8568d7539185145df.camel@decadent.org.uk/T/&quot;&gt;[PATCH 6.1 208/522] net: Annotate sk-&amp;gt;sk_write_space() for UDP SOCKMAP.&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;replied to &lt;a href=&quot;https://lore.kernel.org/stable/afe207eb91522718cfae8b77310999ca397c81bf.camel@decadent.org.uk/T/&quot;&gt;[PATCH 6.1 249/522] r8152: Block future register access if register access fails&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;replied to &lt;a href=&quot;https://lore.kernel.org/stable/b0d5836032ce3135bfc473f6bff791306d086925.camel@decadent.org.uk/T/&quot;&gt;[PATCH 6.1 337/522] arm64/mm: Enable batched TLB flush in unmap_hotplug_range()&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;replied to &lt;a href=&quot;https://lore.kernel.org/stable/42c2abbdfdd4ea8e234fbcfc4b37095ebd2c7b36.camel@decadent.org.uk/T/&quot;&gt;[PATCH 6.1 342/522] thermal: core: Fix thermal zone governor cleanup issues&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;replied to &lt;a href=&quot;https://lore.kernel.org/stable/6218e66138c5c1c5fb02bd653c8b91d6ff8c3abd.camel@decadent.org.uk/T/&quot;&gt;[PATCH 6.1 375/522] net: ipv4: stop checking crypto_ahash_alignmask&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;replied to &lt;a href=&quot;https://lore.kernel.org/stable/0e31e18e9567e8d58fbb8e06955c3ed8e5a120d3.camel@decadent.org.uk/T/&quot;&gt;[PATCH 6.1 431/522] cgroup/cpuset: Reset DL migration state on can_attach() failure&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;replied to &lt;a href=&quot;https://lore.kernel.org/stable/2ac6b67a0643e111692689daa95dbd8883f16426.camel@decadent.org.uk/T/&quot;&gt;[PATCH 6.1 470/522] usb: musb: omap2430: Fix use-after-free in omap2430_probe()&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt; </description> 
	<pubDate>Wed, 01 Jul 2026 10:39:27 +0000</pubDate>

</item> 
<item>
	<title>Dirk Eddelbuettel: tl 0.0.2 on CRAN: First Update</title>
	<guid>http://dirk.eddelbuettel.com/blog/2026/06/30#tl_0.0.2</guid>
	<link>http://dirk.eddelbuettel.com/blog/2026/06/30#tl_0.0.2</link>
     <description>  &lt;img src=&quot;http://planet.debian.org/heads/dirk.png&quot; width=&quot;65&quot; height=&quot;90&quot; alt=&quot;&quot; align=&quot;right&quot; style=&quot;float: right;&quot;&gt;  &lt;p&gt;The still-very-new logging package &lt;a href=&quot;https://github.com/eddelbuettel/tl&quot;&gt;tl&lt;/a&gt; was just updated for
the first time at &lt;a href=&quot;https://cran.r-project.org&quot;&gt;CRAN&lt;/a&gt;. The &lt;a href=&quot;https://github.com/eddelbuettel/tl&quot;&gt;tl&lt;/a&gt; package wraps the (also
very new) &lt;a href=&quot;https://github.com/eddelbuettel/rspdlite&quot;&gt;rspdlite&lt;/a&gt; package to
offer a lightweight and consistent logging interface from both R and C++
that enjoys being ‘tiny, fast, capable’ thanks to &lt;a href=&quot;https://github.com/gabime/spdlite&quot;&gt;spdlite&lt;/a&gt;. With &lt;a href=&quot;https://github.com/eddelbuettel/tl&quot;&gt;tl&lt;/a&gt; we follow the same idea
that our &lt;a href=&quot;https://github.com/eddelbuettel/spdl&quot;&gt;spdl&lt;/a&gt; package
introduced: a simple consistent interface via just the &lt;code&gt;tl::&lt;/code&gt;
prefix and the appropropriate logging level. In other words
&lt;code&gt;tl::debug(&quot;Alert: foo now &#39;{}&#39;&quot;, foo)&lt;/code&gt; will work from both R
and C++ (given a variable &lt;code&gt;foo&lt;/code&gt;, and, in the case of C++, an
extra semicolon) and log if the current level is ‘debug’ or higher, and
skip logging if not.&lt;/p&gt;
&lt;p&gt;This release adds a fallback when compilation does not use the
(required) C++20 standard, expands the README and adds a initialization
helper function reflecting a preferred default logging level from either
an environment variable or a global option. We are also working on
adding &lt;a href=&quot;https://github.com/eddelbuettel/tl&quot;&gt;tl&lt;/a&gt; to an example
package as a simple illustration, more on that hopefully soon.&lt;/p&gt;
&lt;p&gt;The NEWS entry for this release follows.&lt;/p&gt;
&lt;blockquote&gt;
&lt;h4 id=&quot;changes-in-version-0.0.2-2025-06-30&quot;&gt;Changes in version 0.0.2
(2025-06-30)&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Added badges to README now that package is on CRAN, add NEWS
file&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Condition the provided header on C++20 use, offer
fallback&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add an exported initialization function picking up a logging
level from either an environment variable or a global option, see
&#39;?init&#39;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Courtesy of my &lt;a href=&quot;https://dirk.eddelbuettel.com/cranberries/&quot;&gt;CRANberries&lt;/a&gt;, there
is also a &lt;a href=&quot;https://dirk.eddelbuettel.com/cranberries/2026/06/30/#tl_0.0.2&quot;&gt;diffstat
report&lt;/a&gt; for the this release.&lt;/p&gt;
&lt;p style=&quot;font-size: 80%; font-style: italic;&quot;&gt;
This post by &lt;a href=&quot;https://dirk.eddelbuettel.com&quot;&gt;Dirk
Eddelbuettel&lt;/a&gt; originated on his &lt;a href=&quot;https://dirk.eddelbuettel.com/blog/&quot;&gt;Thinking inside the box&lt;/a&gt;
blog. If you like this or other open-source work I do, you can &lt;a href=&quot;https://github.com/sponsors/eddelbuettel&quot;&gt;sponsor me at
GitHub&lt;/a&gt;.
&lt;/p&gt;&lt;p&gt;&lt;/p&gt; </description> 
	<pubDate>Tue, 30 Jun 2026 17:02:00 +0000</pubDate>

</item> 
<item>
	<title>Joey Hess: big loads offgrid with a small battery (sidelined)</title>
	<guid>http://joeyh.name/blog/entry/big_loads_offgrid_with_a_small_battery_sidelined/</guid>
	<link>http://joeyh.name/blog/entry/big_loads_offgrid_with_a_small_battery_sidelined/</link>
     <description>  &lt;img src=&quot;http://planet.debian.org/heads/joeyh2.png&quot; width=&quot;84&quot; height=&quot;75&quot; alt=&quot;&quot; align=&quot;right&quot; style=&quot;float: right;&quot;&gt;  &lt;p&gt;No matter that the hype cycle wants you to think, the renewable energy
transition is the biggest thing happening in tech and it&#39;s happening faster
and faster. Despite being neck deep in it personally with offgrid solar
projects, most recently solar hot water, increasingly it becomes clear I&#39;m
watching from the sidelines.&lt;/p&gt;

&lt;p&gt;In Australia,
&lt;a href=&quot;https://lenergy.com.au/free-daytime-electricity-is-coming-heres-how-it-actually-works/&quot;&gt;everyone gets 24 kwh of free daytime electric power now&lt;/a&gt;.
That&#39;s without installing any solar panels of their own, the grid just has
that much excess capacity. All it takes to save $thousands per year (and
avoid emissions) is to schedule some big loads like the hot water heater
and EV to charge during the day. To save more, drop in a home battery
that charges for free and powers the home through the evening.&lt;/p&gt;

&lt;p&gt;In Germany, a 2 kwh plug-in home battery costs $350 and the electric
company will &lt;a href=&quot;https://octopusenergy.de/smarte-geraete/heimspeicher-powerbank&quot;&gt;pay you&lt;/a&gt;
$130 per year to plug it into your wall.
There are similar offers throughout Europe.&lt;/p&gt;

&lt;p&gt;In Cuba something something geopolitics, oil blockade, belt and road =&amp;gt;
suddenly 1GW of solar farms with another gigawatt on the way.&lt;/p&gt;

&lt;p&gt;I&#39;ll soon visit South Carolina where with no subsidies whatsoever from a
decidedly renewable-unfriendly government, it made sense for my dad&#39;s house
to get a whole home battery and double the solar array. The resulting
system will be able to power the well pump and probably also the whole
geothermal HVAC system through the kind of month-long grid down events that
happened in Hurricane Helene.&lt;/p&gt;

&lt;p&gt;Myself, well, I&#39;ve got a by modern standards small 4 kwh home battery that
powers my house offgrid, and I&#39;ve recently installed a heat pump hot water
heater. That&#39;s after about a decade pondering what solution to use for
solar hot water, to replace an aging and horrible propane instant water
heater. I&#39;ve in the past considered everything from evacuated tubes to
special direct drive inverters to DC resistive MPTT dump loads. The solution
turned out to be just a big enough solar array, and plugging in a 120v hot
water heater that needs only 500 watts in heat pump mode. Plus a small
amount of code to manage when it runs.&lt;/p&gt;

&lt;p&gt;In the time I was thinking about that, economies of scale and tech
improvements just wiped all those other possibilities off the map, it&#39;s not
economical to install and maintain a separate evactuated tube heat
collector when a pile of solar panels costs so little and when electric
hot water has gotten more than 200% efficient.&lt;/p&gt;

&lt;p&gt;I also recently completed my permanant EV charger installation, with a new
inverter and conduit and proper wiring, and increased the car&#39;s charge rate
to 2 kw. Eliminating the need to charge anywhere except at home except
on road trips.&lt;/p&gt;

&lt;p&gt;Coordinating when these two big loads run, to maximize solar production and
ensure that the house battery is full at the end of the day was ... not
hard at all actually? The car charger amps can be dialed up and down to
match incoming solar power fairly well, and leave some room for the hot
water heater. They both operate as more or less dump loads. More or less
because neither one can be cycled on or off very fast (to avoid wear and
tear on the car&#39;s contactor and the heat pump&#39;s compressor), so it makes
sense to leave them on and skate through short cloudy sections of the day,
as long as the house battery doesn&#39;t get too low.&lt;/p&gt;

&lt;p&gt;How low is too low for the house battery? Depends on the time of day. The
code it&#39;s currently using, which may get tweaked over winter:&lt;/p&gt;

&lt;div class=&quot;highlight-haskell&quot;&gt;&lt;pre class=&quot;hl&quot;&gt;    &lt;span class=&quot;hl slc&quot;&gt;-- When the battery is charged enough to run major loads that may prevent&lt;/span&gt;
    &lt;span class=&quot;hl slc&quot;&gt;-- charging it further.&lt;/span&gt;
    &lt;span class=&quot;hl slc&quot;&gt;--&lt;/span&gt;
    &lt;span class=&quot;hl slc&quot;&gt;-- This varies with the hour of day. Early in the day, the battery does not&lt;/span&gt;
    &lt;span class=&quot;hl slc&quot;&gt;-- need to be as full to be considered well charged, since there is&lt;/span&gt;
    &lt;span class=&quot;hl slc&quot;&gt;-- still plenty of time for it to charge up. Later in the day, with less&lt;/span&gt;
    &lt;span class=&quot;hl slc&quot;&gt;-- time to charge, it needs to be more full.&lt;/span&gt;
    wellCharged :: Hour &lt;span class=&quot;hl opt&quot;&gt;-&amp;gt;&lt;/span&gt; Percentage
    wellCharged &lt;span class=&quot;hl kwc&quot;&gt;(&lt;/span&gt;Hour hour&lt;span class=&quot;hl kwc&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;hl opt&quot;&gt;|&lt;/span&gt; hour &lt;span class=&quot;hl opt&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;hl num&quot;&gt;9&lt;/span&gt; &lt;span class=&quot;hl opt&quot;&gt;=&lt;/span&gt; Percentage &lt;span class=&quot;hl num&quot;&gt;90&lt;/span&gt; &lt;span class=&quot;hl slc&quot;&gt;-- night&lt;/span&gt;
            &lt;span class=&quot;hl opt&quot;&gt;|&lt;/span&gt; pmhour &lt;span class=&quot;hl opt&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;hl num&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;hl opt&quot;&gt;=&lt;/span&gt; Percentage &lt;span class=&quot;hl num&quot;&gt;50&lt;/span&gt;
            &lt;span class=&quot;hl opt&quot;&gt;|&lt;/span&gt; pmhour &lt;span class=&quot;hl opt&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;hl num&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;hl opt&quot;&gt;=&lt;/span&gt; Percentage &lt;span class=&quot;hl num&quot;&gt;60&lt;/span&gt;
            &lt;span class=&quot;hl opt&quot;&gt;|&lt;/span&gt; pmhour &lt;span class=&quot;hl opt&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;hl num&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;hl opt&quot;&gt;=&lt;/span&gt; Percentage &lt;span class=&quot;hl num&quot;&gt;70&lt;/span&gt;
            &lt;span class=&quot;hl opt&quot;&gt;|&lt;/span&gt; pmhour &lt;span class=&quot;hl opt&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;hl num&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;hl opt&quot;&gt;=&lt;/span&gt; Percentage &lt;span class=&quot;hl num&quot;&gt;80&lt;/span&gt;
            &lt;span class=&quot;hl opt&quot;&gt;|&lt;/span&gt; pmhour &lt;span class=&quot;hl opt&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;hl num&quot;&gt;4&lt;/span&gt; &lt;span class=&quot;hl opt&quot;&gt;=&lt;/span&gt; Percentage &lt;span class=&quot;hl num&quot;&gt;90&lt;/span&gt;
            &lt;span class=&quot;hl opt&quot;&gt;|&lt;/span&gt; otherwise &lt;span class=&quot;hl opt&quot;&gt;=&lt;/span&gt; Percentage &lt;span class=&quot;hl num&quot;&gt;95&lt;/span&gt;
      &lt;span class=&quot;hl kwb&quot;&gt;where&lt;/span&gt;
            pmhour &lt;span class=&quot;hl opt&quot;&gt;=&lt;/span&gt; hour &lt;span class=&quot;hl opt&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;hl num&quot;&gt;12&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;More complicated is, what to do it there&#39;s solar power to run one or the
other, but not both? This is starting to get into the territory of
microgrids now, or of demand response programs, so there&#39;s a whole industry
or three out there doing industry things geared at the kind of no-brainer
solutions I mentioned earlier. From what I&#39;ve gathered, all of them
involve proprietary protocols and gear.&lt;/p&gt;

&lt;p&gt;What I&#39;ve done is to read the state of the hot water heater and car, and
prioritize hot water over the car. Except, if the car is below 10% it
urgently needs to charge.&lt;/p&gt;

&lt;p&gt;And I found a really simple way to decide when to run the low-priority
load: Just check if the house battery&#39;s current charge will be considered
&lt;code&gt;wellCharged&lt;/code&gt; in an hour. So if it&#39;s 2 pm, the battery needs to be 80%
charged to run the lower-priority load, and if it dips below that, that
load will turn off but the high-priority load will keep running down to 70%
battery.&lt;/p&gt;

&lt;p&gt;Unfortunately, getting any information out of my hot water heater relies on
a vendor API server that is often down on weekends, and reverse
engineered the web page of my EVSE[1] to control it, to say nothing of the
nightmare of getting the car&#39;s state of charge from The Cloud.&lt;/p&gt;

&lt;p&gt;Anyway, I&#39;m pleased with having easily tweakable code and how far I&#39;ve
taken this offgrid, and everything I&#39;ve learned doing so, but like I said,
I&#39;m clearly observing from the sidelines over here while the most
significant thing for all of us is going on over there. You might
appreciate my code or method, but you&#39;ll eventually be plugging in a home
battery or signing up for a free daytime power tarrif from your electric
company, or having professionals install a whole home system for
climate resiliance.&lt;/p&gt;

&lt;p&gt;So my question is, where does free software fit into all this? There are
things like Home Assistant that do productize the kind of thing I&#39;m doing
enough to be useful more widely. But still niche. Meanwhile there are
inverters and batteries that phone home to China, and every consumer
facing install is either &quot;use this device&quot; or &quot;integrate these 3
proprietary devices&quot;.&lt;/p&gt;

&lt;p&gt;I don&#39;t think focusing on these negatives is really useful though, I&#39;m more
trying to understand where all this is going and then maybe get out ahead
of it in some useful way with free software. Your thoughts welcome.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;[1] Obviously OpenEVSE exists, but it didn&#39;t meet my needs hardware
wise. And I could set my EVSE to use an OCPP server but it was easier to do
the screen scraping than find an appropriate one, and I have
the feeling I would not appreciate learning any more about OCPP,
in the same way I really don&#39;t want to know a lot about web browsers&#39;
tag soup mode.&lt;/p&gt; </description> 
	<pubDate>Tue, 30 Jun 2026 16:10:45 +0000</pubDate>

</item> 
<item>
	<title>Russell Coker: Links June 2026</title>
	<guid>https://etbe.coker.com.au/?p=6226</guid>
	<link>https://etbe.coker.com.au/2026/06/30/links-june-2026/</link>
     <description>  &lt;p&gt;&lt;a href=&quot;https://www.schneier.com/blog/archives/2026/06/critical-zcash-vulnerability-found-and-fixed.html&quot;&gt;This is amusing, a flaw in the crypto-currency Zcash allowed generating Zcash from nothing and there’s no way to know if anyone did that [1]&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://locusmag.com/feature/commentary-cory-doctorow-the-age-of-vapor/&quot;&gt;Cory Doctorow wrote an insightful article for Locus Magazine about corporate valuations and why companies claim SciFi technologies [2]&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.antipope.org/charlie/blog-static/2026/06/rule-by-bond-villains.html&quot;&gt;Charles Stross wrote an interesting retcon of James Bond [3]&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://trakkr.ai/bias&quot;&gt;Trakkr.ai has an intresting post comparing political bias in LLM models, the site has lots of other comparisons of models too [4]&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://grep.be/blog//en/computer/Agentic_coding_and_Free_Software/&quot;&gt;Wouter Verhelst wrote a blog post about his tested usage of LLMs for code generation and the conclusions about what it will do to the FOSS development process, not a lot of new material but he put a lot of good ideas together in one place [5]&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/jtesta/ssh-audit&quot;&gt;Here is the git repository for the programs used for the ssh-audit.com site, really good setup for checking ssh configuration [6]&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://isaiprofitable.com/&quot;&gt;The isaiprofitable.com site is periodically updated with the profit/loss totals for AI companies, no surprise that every company is losing money apart from NVidia and NVidia are investing in the other companies [7]&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://freedium-mirror.cfd/https://medium.com/@elvirabary/why-russia-cant-build-anything-anymore-inside-putin-s-failed-tech-e63e27ee40b0&quot;&gt;Elvira Bary wrote an informative article about Russia’s inability to build or design anything good [8]&lt;/a&gt;. Looks like we are at risk of another Chernobyl…&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://levlafayette.com/node/808&quot;&gt;Lev Lafayette wrote an interesting blog post about the Sunway TaihuLight supercomputer with over 10,000,000 cores [9]&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://point.free/blog/gemma-4-on-a-2016-xeon/&quot;&gt;Point Free wrote an interesting blog post about running the Gemma 4 LLM which is 25G of data at a usable speed on a Xeon system with DDR3 RAM and no GPU [10]&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[1]&lt;a href=&quot;https://www.schneier.com/blog/archives/2026/06/critical-zcash-vulnerability-found-and-fixed.html&quot;&gt; https://tinyurl.com/2cxx2e6h&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[2]&lt;a href=&quot;https://locusmag.com/feature/commentary-cory-doctorow-the-age-of-vapor/&quot;&gt; https://tinyurl.com/2cxotle7&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[3]&lt;a href=&quot;http://www.antipope.org/charlie/blog-static/2026/06/rule-by-bond-villains.html&quot;&gt; https://tinyurl.com/2bgapt88&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[4]&lt;a href=&quot;https://trakkr.ai/bias&quot;&gt; https://trakkr.ai/bias&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[5]&lt;a href=&quot;https://grep.be/blog//en/computer/Agentic_coding_and_Free_Software/&quot;&gt; https://tinyurl.com/22s2fome&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[6]&lt;a href=&quot;https://github.com/jtesta/ssh-audit&quot;&gt; https://github.com/jtesta/ssh-audit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[7]&lt;a href=&quot;https://isaiprofitable.com/&quot;&gt; https://isaiprofitable.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[8]&lt;a href=&quot;https://freedium-mirror.cfd/https://medium.com/@elvirabary/why-russia-cant-build-anything-anymore-inside-putin-s-failed-tech-e63e27ee40b0&quot;&gt; https://tinyurl.com/26p4lkr4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[9]&lt;a href=&quot;http://levlafayette.com/node/808&quot;&gt; http://levlafayette.com/node/808&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[10]&lt;a href=&quot;https://point.free/blog/gemma-4-on-a-2016-xeon/&quot;&gt; https://point.free/blog/gemma-4-on-a-2016-xeon/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;yarpp yarpp-related yarpp-related-rss yarpp-template-list&quot;&gt;

&lt;p&gt;Related posts:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://etbe.coker.com.au/2022/06/30/links-june-2022/&quot; rel=&quot;bookmark&quot; title=&quot;Links June 2022&quot;&gt;Links June 2022&lt;/a&gt; &lt;small&gt;Google did some interesting research on the impact of discrimination...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://etbe.coker.com.au/2026/04/30/links-april-2026/&quot; rel=&quot;bookmark&quot; title=&quot;Links April 2026&quot;&gt;Links April 2026&lt;/a&gt; &lt;small&gt;Charles Stross wrote an interesting blog post about the apparent...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://etbe.coker.com.au/2026/02/17/links-february-2026/&quot; rel=&quot;bookmark&quot; title=&quot;Links February 2026&quot;&gt;Links February 2026&lt;/a&gt; &lt;small&gt;Charles Stross has a good theory of why “AI” is...&lt;/small&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt; </description> 
	<pubDate>Tue, 30 Jun 2026 13:53:19 +0000</pubDate>

</item> 
<item>
	<title>Russell Coker: Dirty Clone and SE Linux</title>
	<guid>https://etbe.coker.com.au/?p=6220</guid>
	<link>https://etbe.coker.com.au/2026/06/30/dirtyclone-selinux/</link>
     <description>  &lt;p&gt;There is a &lt;a href=&quot;https://research.jfrog.com/post/dissecting-and-exploiting-linux-lpe-variant-dirtyclone-cve-2026-43503/&quot;&gt;new Linux kernel exploit out named Dirty Clone [1]&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The first thing to do to exploit this is to create a container with a separate network namespace via one of the following commands:&lt;/p&gt;
&lt;pre&gt;unshare -Urn
bwrap --bind / / --unshare-user --unshare-net --uid 0 --gid 0 /bin/bash&lt;/pre&gt;
&lt;p&gt;The Jfrog people recommend “unshare -Urn” but I gave the Bubblewrap command as an option as it should work equally well and in some situations may be permitted when unshare isn’t.&lt;/p&gt;
&lt;p&gt;The next step to exploiting it is to use the ip command to set the links up, below is what happens in a user session on a SE Linux system with user_t as the login domain:&lt;/p&gt;
&lt;pre&gt;# ip link set lo up
RTNETLINK answers: Operation not permitted&lt;/pre&gt;
&lt;p&gt;That will give an entry in /var/log/audit/audit.log like the following:&lt;/p&gt;
&lt;pre&gt;type=AVC msg=audit(1782818856.618:3610): avc:  denied  { net_admin } for  pid=1829 comm=&quot;ip&quot; capability=12  scontext=user_u:user_r:user_t:s0 tcontext=user_u:user_r:user_t:s0 tclass=cap_userns permissive=0
type=SYSCALL msg=audit(1782818856.618:3610): arch=c000003e syscall=46 success=yes exit=32 a0=3 a1=7ffebe5f9e50 a2=0 a3=0 items=0 ppid=1638 pid=1829 auid=0 uid=0 gid=1000 euid=0 suid=0 fsuid=0 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=17 comm=&quot;ip&quot; exe=&quot;/usr/bin/ip&quot; subj=user_u:user_r:user_t:s0 key=(null)ARCH=x86_64 SYSCALL=sendmsg AUID=&quot;root&quot; UID=&quot;root&quot; GID=&quot;test&quot; EUID=&quot;root&quot; SUID=&quot;root&quot; FSUID=&quot;root&quot; EGID=&quot;test&quot; SGID=&quot;test&quot; FSGID=&quot;test&quot;
type=PROCTITLE msg=audit(1782818856.618:3610): proctitle=6970006C696E6B00736574006C6F007570&lt;/pre&gt;
&lt;p&gt;Unlike previous exploits like &lt;a href=&quot;https://etbe.coker.com.au/2026/05/24/debian-selinux-pintheft/&quot;&gt;Pintheft [2]&lt;/a&gt; this doesn’t require any really uncommon access to the kernel (unless you consider setting up IPSec to be really uncommon) and is allowed in many container setups.&lt;/p&gt;
&lt;p&gt;Now on a system with the unconfined module removed (as described in the &lt;a href=&quot;https://etbe.coker.com.au/2026/05/04/copy-fail-on-debian-and-se-linux/#SE_Linux_Protection&quot;&gt;SE Linux Protection part of my post about Copy Fail [3]&lt;/a&gt;) the following domains have such access:&lt;/p&gt;
&lt;pre&gt;# sesearch -A -c cap_userns -p net_admin
allow container_engine_t container_engine_t:cap_userns { audit_write chown dac_override dac_read_search fowner fsetid ipc_lock ipc_owner kill lease linux_immutable mknod net_admin net_bind_service net_raw setfcap setgid setpcap setuid sys_admin sys_boot sys_chroot sys_nice sys_pacct sys_ptrace sys_rawio sys_resource sys_time sys_tty_config };
allow container_init_t container_init_t:cap_userns { chown dac_override dac_read_search fowner kill net_admin net_bind_service net_raw setgid setuid };
allow container_kvm_t container_kvm_t:cap_userns { chown dac_override dac_read_search fowner kill net_admin net_bind_service net_raw setgid setuid };
allow container_t container_t:cap_userns { chown dac_override dac_read_search fowner kill net_admin net_bind_service net_raw setgid setuid };
allow crio_t crio_t:cap_userns { audit_write chown dac_override dac_read_search fowner fsetid ipc_lock ipc_owner kill lease linux_immutable mknod net_admin net_bind_service net_raw setfcap setgid setpcap setuid sys_admin sys_boot sys_chroot sys_nice sys_pacct sys_ptrace sys_rawio sys_resource sys_time sys_tty_config };
allow dockerd_t dockerd_t:cap_userns { audit_write chown dac_override dac_read_search fowner fsetid ipc_lock ipc_owner kill lease linux_immutable mknod net_admin net_bind_service net_raw setfcap setgid setpcap setuid sys_admin sys_boot sys_chroot sys_nice sys_pacct sys_ptrace sys_rawio sys_resource sys_time sys_tty_config };
allow dockerd_user_t dockerd_user_t:cap_userns { audit_write chown dac_override dac_read_search fowner fsetid ipc_lock ipc_owner kill lease linux_immutable mknod net_admin net_bind_service net_raw setfcap setgid setpcap setuid sys_admin sys_boot sys_chroot sys_nice sys_pacct sys_ptrace sys_rawio sys_resource sys_time sys_tty_config };
allow init_t init_t:cap_userns { audit_write chown dac_override dac_read_search fowner fsetid ipc_lock ipc_owner kill lease linux_immutable mknod net_admin net_bind_service net_raw setfcap setgid setpcap setuid sys_admin sys_boot sys_chroot sys_module sys_nice sys_pacct sys_ptrace sys_rawio sys_resource sys_time sys_tty_config };
allow iptables_t iptables_t:cap_userns { net_admin net_raw };
allow podman_t podman_t:cap_userns { audit_write chown dac_override dac_read_search fowner fsetid ipc_lock ipc_owner kill lease linux_immutable mknod net_admin net_bind_service net_raw setfcap setgid setpcap setuid sys_admin sys_boot sys_chroot sys_nice sys_pacct sys_ptrace sys_rawio sys_resource sys_time sys_tty_config };
allow podman_user_t podman_user_t:cap_userns { audit_write chown dac_override dac_read_search fowner fsetid ipc_lock ipc_owner kill lease linux_immutable mknod net_admin net_bind_service net_raw setfcap setgid setpcap setuid sys_admin sys_boot sys_chroot sys_nice sys_pacct sys_ptrace sys_rawio sys_resource sys_time sys_tty_config };
allow spc_t spc_t:cap_userns { audit_write chown dac_override dac_read_search fowner fsetid ipc_lock kill mknod net_admin net_bind_service net_raw setgid setpcap setuid sys_admin sys_chroot sys_nice sys_ptrace sys_rawio sys_resource };
allow spc_user_t spc_user_t:cap_userns { chown dac_override dac_read_search fowner kill net_admin net_bind_service net_raw setgid setuid };
allow staff_bubblewrap_t staff_bubblewrap_t:cap_userns { dac_override net_admin setpcap sys_admin sys_ptrace };
allow sysadm_bubblewrap_t sysadm_bubblewrap_t:cap_userns { dac_override net_admin setpcap sys_admin sys_ptrace };
allow user_bubblewrap_t user_bubblewrap_t:cap_userns { dac_override net_admin setpcap sys_admin sys_ptrace };&lt;/pre&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It seems that SE Linux configured in the strict mode prevents this exploit in the most obvious use case. But with the range of container related domains that are granted such access it seems quite likely that some configurations and use cases will permit it.&lt;/p&gt;
&lt;p&gt;Overall the protection that the standard policy for SE Linux can offer (in a non-default configuration) against net_admin access isn’t bad, but isn’t very good either.&lt;/p&gt;
&lt;p&gt;I think this will be the first of many exploits based on cap_userns access and that we need to do some work in tightening the SE Linux access controls on such things. One possible way of doing this is to have a program run inside a container in a domain that has permissions such as net_admin to setup the container and not allow domain transitions from the regular programs run in the container (the actual work) to the domain used for network setup.&lt;/p&gt;
&lt;p&gt;The increasing use of containers by applications is only going to make this problem worse. I think that what we need is something like &lt;a href=&quot;https://en.wikipedia.org/wiki/Flatpak&quot;&gt;Flatpak&lt;/a&gt; for the vast majority of desktop/phone applications with a container setup program that works with apps packaged in the distribution packaging method (not from Flathub). This is something I’m going to investigate for future blog posts.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[1]&lt;a href=&quot;https://research.jfrog.com/post/dissecting-and-exploiting-linux-lpe-variant-dirtyclone-cve-2026-43503/&quot;&gt; https://tinyurl.com/26q48bg4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[2]&lt;a href=&quot;https://etbe.coker.com.au/2026/05/24/debian-selinux-pintheft/&quot;&gt; https://etbe.coker.com.au/2026/05/24/debian-selinux-pintheft/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[3]&lt;a href=&quot;https://etbe.coker.com.au/2026/05/04/copy-fail-on-debian-and-se-linux/#SE_Linux_Protection&quot;&gt; https://etbe.coker.com.au/2026/05/04/copy-fail-on-debian-and-se-linux/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;yarpp yarpp-related yarpp-related-rss yarpp-template-list&quot;&gt;

&lt;p&gt;Related posts:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://etbe.coker.com.au/2024/07/21/selinux-dell-mgmt/&quot; rel=&quot;bookmark&quot; title=&quot;SE Linux Policy for Dell Management&quot;&gt;SE Linux Policy for Dell Management&lt;/a&gt; &lt;small&gt;The recent issue of Windows security software killing computers has...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://etbe.coker.com.au/2024/10/26/cups-vulnerability/&quot; rel=&quot;bookmark&quot; title=&quot;The CUPS Vulnerability&quot;&gt;The CUPS Vulnerability&lt;/a&gt; &lt;small&gt;The Announcement Late last month there was an announcement of...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://etbe.coker.com.au/2026/05/08/dirty-frag-on-debian-and-se-linux/&quot; rel=&quot;bookmark&quot; title=&quot;Dirty Frag on Debian and SE Linux&quot;&gt;Dirty Frag on Debian and SE Linux&lt;/a&gt; &lt;small&gt;Hot on the heels of the Copy Fail vulnerability [1]...&lt;/small&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt; </description> 
	<pubDate>Tue, 30 Jun 2026 12:04:25 +0000</pubDate>

</item> 
<item>
	<title>Utkarsh Gupta: FOSS Activities in June 2026</title>
	<guid>https://utkarsh2102.org/posts/foss-in-june-26/</guid>
	<link>https://utkarsh2102.org/posts/foss-in-june-26/</link>
     <description>  &lt;p&gt;Here’s my monthly but brief update about the activities I’ve done in the FOSS world.&lt;/p&gt;
&lt;h2 id=&quot;debian&quot;&gt;Debian&lt;/h2&gt;
&lt;figure&gt;
&lt;img src=&quot;https://utkarsh2102.org/images/debian-logo-small.png&quot; /&gt;
&lt;/figure&gt;
&lt;p&gt;Whilst I didn’t get a chance to do much, here are still a few things that I worked on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Leading the DebConf Bursary team along with PEB.
&lt;ul&gt;
&lt;li&gt;This took most of my Debian time this month but we’ve been able to wrap that work now.&lt;/li&gt;
&lt;li&gt;Got back to all the tickets on Zammad, too.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Assisted a few folks in getting their patches submitted via Salsa.&lt;/li&gt;
&lt;li&gt;Mentoring for newcomers.&lt;/li&gt;
&lt;li&gt;Moderation of -project mailing list.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;ubuntu&quot;&gt;Ubuntu&lt;/h2&gt;
&lt;figure&gt;
&lt;img src=&quot;https://utkarsh2102.org/images/ubuntu-logo-small.png&quot; /&gt;
&lt;/figure&gt;
&lt;p&gt;I joined &lt;a href=&quot;https://utkarsh2102.org/posts/hello-canonical/&quot;&gt;Canonical to work on Ubuntu full-time&lt;/a&gt; back in February 2021.&lt;/p&gt;
&lt;p&gt;Whilst I can’t give a full, detailed list of things I did, here’s a quick TL;DR of what I did:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Continued to push for infrastructure improvements:
&lt;ul&gt;
&lt;li&gt;Charming.&lt;/li&gt;
&lt;li&gt;Artifact signing.&lt;/li&gt;
&lt;li&gt;Reorganizing cdimage.&lt;/li&gt;
&lt;li&gt;And so on.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Successfully released &lt;a href=&quot;https://discourse.ubuntu.com/t/stonking-snapshot-2-released/84537&quot;&gt;26.10 Snapshot 2&lt;/a&gt;!
&lt;ul&gt;
&lt;li&gt;We landed a breaking change in the directory structure.&lt;/li&gt;
&lt;li&gt;…whihc had consequences on the rsync, being run by the sysadmins.
&lt;ul&gt;
&lt;li&gt;The 30 GB rsync failed because of the load on the system and it resulted in things blowing up. Yay. Stress-testing the shit out of our infra. :)&lt;/li&gt;
&lt;li&gt;We got it back under control in the next few days but oh wow, what a journey to get there.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Assisted a bunch of folks with my Archive Admin and Release team hats to:
&lt;ul&gt;
&lt;li&gt;Helped in archive opening tasks.&lt;/li&gt;
&lt;li&gt;Promoting/demoting binaries to/from main.&lt;/li&gt;
&lt;li&gt;Taking care of package removals and so on.&lt;/li&gt;
&lt;li&gt;Reviewed the NEW queue.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Reviewed quite a lot of MPs, specs, and other people’s work.&lt;/li&gt;
&lt;li&gt;Mentoring, coaching, and leading the Release Management team.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;debian-elts&quot;&gt;Debian (E)LTS&lt;/h2&gt;
&lt;figure&gt;
&lt;img src=&quot;https://utkarsh2102.org/images/debian-lts-small.png&quot; /&gt;
&lt;/figure&gt;
&lt;p&gt;This month I have worked 15 hours
on &lt;a href=&quot;https://www.freexian.com/lts/debian/&quot;&gt;Debian Long Term Support (LTS)&lt;/a&gt;
and on its sister &lt;a href=&quot;https://www.freexian.com/lts/extended/&quot;&gt;Extended LTS&lt;/a&gt;
project and did the following things:&lt;/p&gt;
&lt;h3 id=&quot;released-security-updates&quot;&gt;Released Security Updates&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;node-lodash&lt;/strong&gt;: Prototype pollution and code injection during template compilation.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;[LTS]&lt;/strong&gt;: Fixed &lt;a href=&quot;https://security-tracker.debian.org/tracker/CVE-2025-13465&quot;&gt;CVE-2025-13465&lt;/a&gt;, &lt;a href=&quot;https://security-tracker.debian.org/tracker/CVE-2026-2950&quot;&gt;CVE-2026-2950&lt;/a&gt;, and &lt;a href=&quot;https://security-tracker.debian.org/tracker/CVE-2026-4800&quot;&gt;CVE-2026-4800&lt;/a&gt; via &lt;a href=&quot;https://tracker.debian.org/news/1770027/accepted-node-lodash-41721dfsgcs831173-1deb11u1-source-into-oldoldstable-security/&quot;&gt;&lt;strong&gt;4.17.21+dfsg+~cs8.31.173-1+deb11u1&lt;/strong&gt;&lt;/a&gt; for bullseye. This has been released as &lt;a href=&quot;https://www.debian.org/lts/security/2026/DLA-4663-1&quot;&gt;&lt;strong&gt;DLA 4663-1&lt;/strong&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[trixie]&lt;/strong&gt;: Filed the proposed-update (&lt;a href=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1141450&quot;&gt;#1141450&lt;/a&gt;) and uploaded the fix.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[bookworm]&lt;/strong&gt;: Filed the proposed-update (&lt;a href=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1141449&quot;&gt;#1141449&lt;/a&gt;) but it was closed; will release the DLA next month (in July).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;openvpn&lt;/strong&gt;: Multiple vulnerabilities leading to Denial of Service.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;[LTS]&lt;/strong&gt;: Fixed &lt;a href=&quot;https://security-tracker.debian.org/tracker/CVE-2026-11771&quot;&gt;CVE-2026-11771&lt;/a&gt;, &lt;a href=&quot;https://security-tracker.debian.org/tracker/CVE-2026-12932&quot;&gt;CVE-2026-12932&lt;/a&gt;, &lt;a href=&quot;https://security-tracker.debian.org/tracker/CVE-2026-12996&quot;&gt;CVE-2026-12996&lt;/a&gt;, &lt;a href=&quot;https://security-tracker.debian.org/tracker/CVE-2026-13117&quot;&gt;CVE-2026-13117&lt;/a&gt;, &lt;a href=&quot;https://security-tracker.debian.org/tracker/CVE-2026-13122&quot;&gt;CVE-2026-13122&lt;/a&gt;, and &lt;a href=&quot;https://security-tracker.debian.org/tracker/CVE-2026-13698&quot;&gt;CVE-2026-13698&lt;/a&gt; via &lt;strong&gt;2.6.14-0+deb12u2&lt;/strong&gt; for bookworm. This has been released as &lt;a href=&quot;https://www.debian.org/lts/security/2026/DLA-4666-1&quot;&gt;&lt;strong&gt;DLA 4666-1&lt;/strong&gt;&lt;/a&gt;. The update itself was prepared by the maintainer; I helped prepare the paperwork.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;work-in-progress&quot;&gt;Work in Progress&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;php-phpseclib&lt;/strong&gt;: Affected by &lt;a href=&quot;https://security-tracker.debian.org/tracker/CVE-2023-52892&quot;&gt;CVE-2023-52892&lt;/a&gt; and &lt;a href=&quot;https://security-tracker.debian.org/tracker/CVE-2026-32935&quot;&gt;CVE-2026-32935&lt;/a&gt;.
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;[LTS]&lt;/strong&gt;: Continued to work on this and it should be released soon. Uploaded the work to debusine: &lt;a href=&quot;https://debusine.debian.net/debian/developers/work-request/906743/&quot;&gt;https://debusine.debian.net/debian/developers/work-request/906743/&lt;/a&gt;. Will release the DLA in July.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;other-activities&quot;&gt;Other Activities&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;[LTS]&lt;/strong&gt; Emilio pointed out that the gst-plugins-ugly1.0 binaries were still not fully released, so I ran &lt;code&gt;dcut migrate&lt;/code&gt; to fully release them. The DLA had gone out earlier.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;[ELTS]&lt;/strong&gt; Did some more work on ruby-rack - a lot of new CVEs have opened up and, whilst I made some progress, Santiago let me know that ruby-rack is no longer supported and so it’ll be removed from the &lt;code&gt;ela-needed&lt;/code&gt; list.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;[E/LTS]&lt;/strong&gt; Set up the security-tracker and a few other things on the new machine, and debugged the git repository size madness. Sent a summary &lt;a href=&quot;https://lists.debian.org/debian-lts/2026/07/msg00013.html&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;[E/LTS]&lt;/strong&gt; Monitored discussions on mailing lists, IRC, and all the documentation updates.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;[E/LTS]&lt;/strong&gt; Attended the monthly LTS meeting on Jitsi. &lt;a href=&quot;https://lists.debian.org/debian-lts/2026/06/msg00045.html&quot;&gt;Meeting notes here&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;Until next time.&lt;br /&gt;
&lt;code&gt;:wq&lt;/code&gt; for today.&lt;/p&gt; </description> 
	<pubDate>Tue, 30 Jun 2026 05:41:11 +0000</pubDate>

</item> 
<item>
	<title>Reproducible Builds (diffoscope): diffoscope 323 released</title>
	<guid>https://diffoscope.org/news/diffoscope-323-released/</guid>
	<link>https://diffoscope.org/news/diffoscope-323-released/</link>
     <description>  &lt;p&gt;The diffoscope maintainers are pleased to announce the release of diffoscope
version &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;323&lt;/code&gt;. This version includes the following changes:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;[ Chris Lamb ]
* Debian adds an extra &quot;Flags:&quot; line in the output of ocamlobjinfo via a
  patch, so adjust how we test OCaml to ensure cross-distribution
  compatibility. (Closes: reproducible-builds/diffoscope#430)
* Update copyright years.

[ Michael Daniels ]
* Fix tests when using zipdetails version &amp;gt;= 4.006.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;You find out more by &lt;a href=&quot;https://diffoscope.org&quot;&gt;visiting the project homepage&lt;/a&gt;.&lt;/p&gt; </description> 
	<pubDate>Tue, 30 Jun 2026 00:00:00 +0000</pubDate>

</item> 
<item>
	<title>Daniel Baumann: Debian: Linux Vulnerability Mitigation (PACKET_EDIT_MEME.c)</title>
	<guid>https://blog.daniel-baumann.ch/posts/20260626-1.html</guid>
	<link>https://blog.daniel-baumann.ch/posts/20260626-1.html</link>
     <description>  &lt;section id=&quot;debian-linux-vulnerability-mitigation-packet-edit-meme-c&quot;&gt;

&lt;p&gt;The Linux local root exploit of today’s news is &lt;a class=&quot;reference external&quot; href=&quot;https://github.com/sgkdev/packet_edit_meme&quot;&gt;PACKET_EDIT_MEME.c&lt;/a&gt; [&lt;a class=&quot;reference external&quot; href=&quot;https://nvd.nist.gov/vuln/detail/CVE-2026-46331&quot;&gt;CVE-2026-46331&lt;/a&gt;] which is also known as pedit COW.&lt;/p&gt;
&lt;p&gt;This vulnerability has been fixed as of linux &lt;a class=&quot;reference external&quot; href=&quot;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=899ee91156e57784090c5565e4f31bd7dbffbc5a&quot;&gt;7.1~rc7&lt;/a&gt;, but also fixed in trixies 6.12.94-1 as well as testing/unstable 7.0.13-1. If you run an older or different kernel you might want to mitigate the vulnerability until you can update and reboot affected systems.&lt;/p&gt;
&lt;p&gt;The vulnerability can be mitigated by unloading and blocking the &lt;code class=&quot;docutils literal notranslate&quot;&gt;&lt;span class=&quot;pre&quot;&gt;act_pedit&lt;/span&gt;&lt;/code&gt; module, &lt;a class=&quot;reference external&quot; href=&quot;https://tracker.debian.org/pkg/linux-vulnerability-mitigation&quot;&gt;linux-vulnerability-mitigation&lt;/a&gt; as of &lt;a class=&quot;reference external&quot; href=&quot;https://git.open-infrastructure.net/tools/linux-vulnerability-mitigation/commit/e0999668ba2c1affa1752a2e91c5b56e64249f85&quot;&gt;20260629-1&lt;/a&gt; (uploaded to sid, &lt;a class=&quot;reference external&quot; href=&quot;https://fastforward.debian.net&quot;&gt;trixie-fastforward-backports&lt;/a&gt; and &lt;a class=&quot;reference external&quot; href=&quot;https://people.debian.org/~daniel/linux-vulnerability-mitigation&quot;&gt;people.debian.org/~daniel&lt;/a&gt;) does that automatically for you.&lt;/p&gt;
&lt;/section&gt; </description> 
	<pubDate>Mon, 29 Jun 2026 13:42:49 +0000</pubDate>

</item> 
<item>
	<title>Russell Coker: Plaud</title>
	<guid>https://etbe.coker.com.au/?p=6214</guid>
	<link>https://etbe.coker.com.au/2026/06/28/plaud/</link>
     <description>  &lt;p&gt;While watching a YouTube video I saw an advert for the &lt;a href=&quot;https://www.plaud.ai/&quot;&gt;Plaud AI Note Taker [1]&lt;/a&gt;. The Plaud device looks pretty good for what it does, taking notes and managing them, using some sort of LLM function to manage the notes. The devices all cost about $300 which is an amount that doesn’t seem unreasonable for someone who’s in a lot of meetings. One of the models is the “NotePin” that seems comparable to the &lt;a href=&quot;https://etbe.coker.com.au/2024/04/26/humane-ai-pin/&quot;&gt;Humane AI Pin I previously blogged about [2]&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The business model for Plaud is based on only allowing 5 hours per month of free transcriptions, then charging $16.25/month for 20 hours per month and $33.33/month for unlimited use. That’s quite expensive for any serious use.&lt;/p&gt;
&lt;p&gt;The number of people in the market for an audio recording system that automatically transcribes things may be greater than the number of people in the market for all the stuff that the Humane AI Pin did, but it still may not be enough to run a profitable business when competing with apps on mobile phones.&lt;/p&gt;
&lt;p&gt;While the product does look decent it seems that they are making the same mistakes as the original Humane developers did, of wanting to lock it down as a subscription based service which reduces the usability of the device. If they had sold an Android hand-held computer with their own app pre-loaded and allowed the user to install a different app then it would have been much more usable. If they had sold Android devices designed for the note taking market and allowed people to choose their own apps to install then their products would have a much longer life expectancy.&lt;/p&gt;
&lt;p&gt;The majority of Android devices in use are probably out of support but still working while the Humane AI pin can’t be used any more and at some time in the not too distant future the Plaud devices will also become unusable. People who buy devices like the Plaud seem to be unaware of the history of such things and the expected future for them. But possibly some people just consider $300 for a year of use to be an acceptable price. If someone wanted to purchase a new high end phone every year and sell their previous one they would probably have a net cost of about $500/year.&lt;/p&gt;
&lt;p&gt;Maybe I should look for work with a company with an implausible AI based business plan. It would be fun developing such a device if you weren’t emotionally invested in the project. Just develop new technology, earn a heap of money, play with fun computers, and move on to the next thing when it collapses. Just like all the Internet companies about 25 years ago.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[1]&lt;a href=&quot;https://www.plaud.ai/&quot;&gt; https://www.plaud.ai/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[2]&lt;a href=&quot;https://etbe.coker.com.au/2024/04/26/humane-ai-pin/&quot;&gt; https://etbe.coker.com.au/2024/04/26/humane-ai-pin/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;yarpp yarpp-related yarpp-related-rss yarpp-template-list&quot;&gt;

&lt;p&gt;Related posts:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://etbe.coker.com.au/2010/11/17/mobile-phone-sysadmin/&quot; rel=&quot;bookmark&quot; title=&quot;A Mobile Phone for Sysadmin Use&quot;&gt;A Mobile Phone for Sysadmin Use&lt;/a&gt; &lt;small&gt;My telco Three have just offered me a deal on...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://etbe.coker.com.au/2013/02/22/iphone-vs-android/&quot; rel=&quot;bookmark&quot; title=&quot;iPhone vs Android&quot;&gt;iPhone vs Android&lt;/a&gt; &lt;small&gt;A friend who’s a long-time iPhone user just asked for...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://etbe.coker.com.au/2016/06/01/i-just-ordered-a-nexus-6p/&quot; rel=&quot;bookmark&quot; title=&quot;I Just Ordered a Nexus 6P&quot;&gt;I Just Ordered a Nexus 6P&lt;/a&gt; &lt;small&gt;Last year I wrote a long-term review of Android phones...&lt;/small&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt; </description> 
	<pubDate>Sun, 28 Jun 2026 05:39:14 +0000</pubDate>

</item> 
<item>
	<title>Steve McIntyre: It&#39;s dead, Jim!</title>
	<guid>https://blog.einval.com/2026/06/27#its_dead_jim</guid>
	<link>https://blog.einval.com/2026/06/27#its_dead_jim</link>
     <description>  &lt;img src=&quot;http://planet.debian.org/heads/sledge2.png&quot; width=&quot;59&quot; height=&quot;72&quot; alt=&quot;&quot; align=&quot;right&quot; style=&quot;float: right;&quot;&gt;  &lt;p&gt;I previously wrote about the
  upcoming &lt;a href=&quot;https://blog.einval.com/2026/06/05#secure_boot_ca_rollover_docs&quot;&gt;UEFI
  CA rollover&lt;/a&gt;. Well, it&#39;s happened now - the old Microsoft UEFI
  CA from 2011 expired &lt;strong&gt;yesterday&lt;/strong&gt;:
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Third Party Marketplace Root (used for signing option ROMs and other software)&lt;/strong&gt;&lt;br /&gt;
&lt;tt&gt;&lt;/tt&gt;&lt;/p&gt;&lt;pre&gt;&lt;tt&gt;  Subject: C=US, ST=Washington, L=Redmond, O=Microsoft Corporation, CN=Microsoft Corporation UEFI CA 2011
  Validity
    Not Before: Jun 27 21:22:45 2011 GMT
    Not After : Jun 27 21:32:45 2026 GMT
&lt;/tt&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It&#39;s dead - it&#39;s not coming back...&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The world doesn&#39;t seem to have ended yesterday, so I guess we did
ok? :-) &lt;/p&gt;

&lt;h2&gt;How did we do?&lt;/h2&gt;

&lt;p&gt;After a lot of prodding behind the scenes, Debian and many other
distributions managed to get new shim binaries dual-signed with both
the old and new CAs. The members of the shim-review team did a
sterling job with reviews in the last few weeks. Since I started
pushing people in May, we&#39;ve had 21 reviews accepted successfully -
see &lt;a href=&quot;https://github.com/rhboot/shim-review/issues?q=is%3Aissue%20-label%3Ameta%20-label%3APSA%20created%3A%3E2026-05-01&quot;&gt;here&lt;/a&gt;
for the list. Great stuff! Microsoft have also been working quickly -
many of those shim submissions were accepted and signed by Microsoft
very quickly too, with a turnaround time of less than 1 day in some
cases.&lt;/p&gt;

&lt;p&gt;Not all of those signed shims have been published and used by the
distros involved yet, but expect to see them in the wild in the coming
weeks and months.&lt;/p&gt;

&lt;p&gt;These binaries should be good for people to use for the foreseeable
future, until either we need to do another CA rollover or (sadly, more
likely) we find an issue in shim that necessitates a new release.&lt;/p&gt;

&lt;h2&gt;What&#39;s next?&lt;/h2&gt;

&lt;p&gt;We already have &lt;strong&gt;one&lt;/strong&gt; of our new dual-signed shim
binaries in place in Debian, in unstable and testing (Forky) right
now. In a couple of weeks from now, we&#39;ll be rolling out very similar
new dual-signed shim binaries in the next point releases for Debian 12
(bookworm) and Debian 13 (trixie). We&#39;ll also be
upgrading &lt;code&gt;fwupd&lt;/code&gt; in both those point releases, to make DB
and KEK updates work better.&lt;/p&gt;

&lt;p&gt;For more information about these updates,
see &lt;a href=&quot;https://wiki.debian.org/SecureBoot/CAChanges&quot;&gt;https://wiki.debian.org/SecureBoot/CAChanges&lt;/a&gt;. For
your own safety, validate that your systems are updated when
possible. If you don&#39;t, they may fail to boot in future.&lt;/p&gt; </description> 
	<pubDate>Sat, 27 Jun 2026 21:33:00 +0000</pubDate>

</item> 
<item>
	<title>Jonathan McDowell: onak 0.6.5 released</title>
	<guid>https://www.earth.li/~noodles/blog/2026/06/onak-0.6.5.html</guid>
	<link>https://www.earth.li/~noodles/blog/2026/06/onak-0.6.5.html</link>
     <description>  &lt;img src=&quot;http://planet.debian.org/heads/noodles.png&quot; width=&quot;100&quot; height=&quot;108&quot; alt=&quot;&quot; align=&quot;right&quot; style=&quot;float: right;&quot;&gt;  &lt;p&gt;I had intended that the next release of onak, my OpenPGP keyserver, would be 0.7.0, and include OpenPGP v6 support (&lt;a href=&quot;https://www.rfc-editor.org/rfc/rfc9580.html&quot;&gt;RFC9580&lt;/a&gt;). However events conspired to make a 0.6.5 release a really good idea.&lt;/p&gt;

&lt;p&gt;Firstly, I threw an LLM at the code base and asked it to review it. This isn’t intended to be a post about LLMs, but there’s a considerable amount of pressure at work to be “AI native”. I’m very much an “AI” sceptic, so I figured throwing it at a code base I know well might be an interesting exercise. It did find a bunch of embarrassing mistakes, but I don’t think there was anything earth shattering that a human reviewer wouldn’t have pulled me on. The problem is with a hobby project with a single user there’s no actual review of my work.&lt;/p&gt;

&lt;p&gt;I also enabled GitHub’s security scanning. It mostly complained about format strings, and those were easy enough to fix up.&lt;/p&gt;

&lt;p&gt;Next I threw &lt;a href=&quot;https://aflplus.plus/&quot;&gt;AFLplusplus&lt;/a&gt; at the code. I’d previously tried &lt;a href=&quot;https://lcamtuf.coredump.cx/afl/&quot;&gt;American Fuzzy Lop&lt;/a&gt;, but not in some time. AFL++ found a whole bunch of places I should really have checked available buffer lengths and wasn’t doing so. It really is an incredibly easy tool to get up and running.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://valgrind.org/&quot;&gt;valgrind&lt;/a&gt; is also a tool I’ve used before, and rate highly. Thankfully it didn’t find anything in my testing this time.&lt;/p&gt;

&lt;p&gt;Finally I threw a few more automated tests into the mix and discovered something has changed around dynamic linking such that the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;libonak&lt;/code&gt; symbols in the dynamic key database backends were using private copies, rather than the main binary. This caused problems with seeing the correct configuration settings in some instances.&lt;/p&gt;

&lt;p&gt;All in all this release is not my proudest moment; a bunch of the issues fixed should never have made it to a release.&lt;/p&gt;

&lt;p&gt;(Also, just to explicitly state it, all the actual code in this release was artisanly crafted by me, in vim. The only involvement of an LLM was for a review pass.)&lt;/p&gt;

&lt;p&gt;Available &lt;a href=&quot;https://the.earth.li/gitweb/?p=onak.git;a=summary&quot;&gt;locally&lt;/a&gt; or via &lt;a href=&quot;https://github.com/u1f35c/onak&quot;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;0.6.5 - 27th June 2026&lt;/p&gt;

  &lt;ul&gt;
    &lt;li&gt;Lots of fixes/improvements around length checking&lt;/li&gt;
    &lt;li&gt;Added extra basic tests for maxpaths/sixdegrees/CGI&lt;/li&gt;
    &lt;li&gt;Correctly end transactions in the stacked backend&lt;/li&gt;
    &lt;li&gt;Ensure the file backend avoids stale key data on updates&lt;/li&gt;
    &lt;li&gt;Fix decoding of v2/3 signature creation times&lt;/li&gt;
    &lt;li&gt;Fix EdDSA signature parsing when r &amp;lt; 249 bits long&lt;/li&gt;
    &lt;li&gt;Fix migration of bools from old to new config style&lt;/li&gt;
    &lt;li&gt;Fix parsing of new config details for DB parameters&lt;/li&gt;
    &lt;li&gt;Fix problems with linking + dynamic backends&lt;/li&gt;
    &lt;li&gt;Fix RSA-SHA2-384 signature checking&lt;/li&gt;
    &lt;li&gt;Fix sixdegrees parsing of keyids with high bit set&lt;/li&gt;
    &lt;li&gt;Handle failures in maxpath more gracefully&lt;/li&gt;
    &lt;li&gt;Make new style config path match old path&lt;/li&gt;
  &lt;/ul&gt;
&lt;/blockquote&gt; </description> 
	<pubDate>Sat, 27 Jun 2026 15:44:00 +0000</pubDate>

</item> 
<item>
	<title>Russ Allbery: Review: The Folded Sky</title>
	<guid>https://www.eyrie.org/~eagle/reviews/books/1-6680-7812-0.html</guid>
	<link>https://www.eyrie.org/~eagle/reviews/books/1-6680-7812-0.html</link>
     <description>  &lt;p&gt;Review: &lt;cite&gt;The Folded Sky&lt;/cite&gt;, by Elizabeth Bear&lt;/p&gt;

&lt;table&gt;
  &lt;tbody&gt;&lt;tr&gt;
    &lt;td&gt;Series:&lt;/td&gt;
    &lt;td&gt;White Space #3&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;Publisher:&lt;/td&gt;
    &lt;td&gt;Saga Press&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;Copyright:&lt;/td&gt;
    &lt;td&gt;June 2025&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;ISBN:&lt;/td&gt;
    &lt;td&gt;1-6680-7812-0&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;Format:&lt;/td&gt;
    &lt;td&gt;Kindle&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;Pages:&lt;/td&gt;
    &lt;td&gt;483&lt;/td&gt;
  &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;
&lt;cite&gt;The Folded Sky&lt;/cite&gt; is a far-future space opera and a fairly direct
sequel to &lt;a href=&quot;https://www.eyrie.org/~eagle/reviews/books/1-5344-0300-0.html&quot;&gt;&lt;cite&gt;Ancestral Night&lt;/cite&gt;&lt;/a&gt;, but with a
different protagonist. You do not need to have a vivid memory of the
previous book to read this one. It is somewhere around Elizabeth Bear&#39;s
31st (!) novel, depending on how one counts and what one includes.
&lt;/p&gt;

&lt;p&gt;
Sunyata Song is an archinformist, which is sort of an archaeologist, sort
of a librarian, and sort of a historian. She recovers, decodes, and
organizes information so that it can be preserved and made usefully
available. As the book opens, she is, after an exceedingly long white
space journey in an actively hostile ship with a (to Sunya at least) an
atavistically off-putting crew, reaching her goal: a vast artifact that I
won&#39;t describe further to avoid any spoilers for &lt;cite&gt;Ancestral Night&lt;/cite&gt;.
She is eager to get to work, an eagerness that is both heightened and made
more anxious by the discovery that her academic rival and abusive ex has
arrived before her. The pirate attack doesn&#39;t help, nor (at least at
first) does the surprise appearance of her wife and kids.
&lt;/p&gt;

&lt;p&gt;
The opening of this book is a lot of infodumping mixed with nearly
stream-of-consciousness emotional dumping. The style shift in this series
continues to surprise me; previously, Elizabeth Bear books avoided reader
hand-holding to the point of bafflement if you weren&#39;t paying close
attention. Not here. &lt;cite&gt;The Folded Sky&lt;/cite&gt; takes the shift perhaps too
far, and I almost stalled out at the start of this book when Sunya&#39;s
near-constant self-conscious litany and analysis of fears and concerns
started feeling like whining.
&lt;/p&gt;

&lt;p&gt;
The book picks up considerably after the attempted murder.
&lt;/p&gt;

&lt;p&gt;
About a third of the way through, &lt;cite&gt;The Folded Sky&lt;/cite&gt; feels like it&#39;s
settling into a recognizable subgenre of murder mystery except set in the
far future with fascinating technology and aliens. There has been an
attempted murder on a closed station besieged by pirates. There is a law
enforcement officer present, but they don&#39;t have a lot of investigative
experience. For various reasons, Sunya decides to start poking around
while being conscious she has no idea what she&#39;s doing. The bumbling
detective is a common trope, so I thought that was where the story was
headed.
&lt;/p&gt;

&lt;p&gt;
It is, sort of. There is a mystery and Sunya is involved in solving it.
But that&#39;s only a small fraction of what&#39;s going on, and by the end of the
book the plot has shifted firmly back to the genre of space opera, with a
side note of family... drama is the wrong word. Whatever one would call a
story about raising a rebellious teenager while trying very hard to not
turn conflicts into actual drama.
&lt;/p&gt;

&lt;p&gt;
I am fascinated by the characterization of this book. Sunya is something
of an emotional mess, but Bear doesn&#39;t use that fact in the ways that I
would normally expect. Similar to &lt;cite&gt;Ancestral Night&lt;/cite&gt;, I finished this
book thinking that &lt;cite&gt;The Folded Sky&lt;/cite&gt; is primarily an examination of
rightminding, but a more subtle one than the previous novel.
&lt;/p&gt;

&lt;p&gt;
Rightminding is a central technology of the White Space series, and I
suspect its intended thematic core. Humans in this civilization are
equipped with near-universal implants that allow conscious manipulation of
one&#39;s neurotransmitters and thus emotional state, either by the wearer or
by a helpful nearby AI. The fox, the implant used to accomplish this,
comes with some other features such as sensory recordings and the ability
to load ayatanas (&lt;a href=&quot;https://www.eyrie.org/~eagle/reviews/books/0-312-87770-6c.html&quot;&gt;James White&lt;/a&gt;–style
personality recordings to provide some bit of necessary expertise), but
rightminding is its primary and most frequently-used function. It is the
critical technology that allowed humans to break out of cycles of endless
war and join the other peaceful inhabitants of the galaxy in a shared
civilization.
&lt;/p&gt;

&lt;p&gt;
The name is (intentionally, I assume) Orwellian because Bear knows that
many readers, particularly those from the US who have been steeped in
simplistic libertarian ideas, will find the idea profoundly creepy. (This
was a major plot point in &lt;a href=&quot;https://www.eyrie.org/~eagle/reviews/books/0-553-59109-6.html&quot;&gt;&lt;cite&gt;Grail&lt;/cite&gt;&lt;/a&gt;.) This
book is not the argument for the technology, though; Bear dealt with that
in &lt;cite&gt;Ancestral Night&lt;/cite&gt;. This book is a look at its practical messiness
for a person who needs a lot of psychological support.
&lt;/p&gt;

&lt;p&gt;
Sunya is anxious, prone to catastrophizing, hates surprises, has some
PTSD-style symptoms around space habitats due to earlier trauma, and is
also dealing with the unwelcome reappearance of her ex-girlfriend who
stole her work. Her first-person narration tends towards insecurity and
anxiety spirals, and in another book this might signal an unreliable
narrator. In this book, though, there are no dramatic emotional
revelations or backstory twists the way there were in &lt;cite&gt;Ancestral
Night&lt;/cite&gt;, and the resolution of her troubled relationship with her daughter
only partly hinges on plot developments. Instead, Sunya muddles through,
with a lot of self-analysis, help from her fox, and a great deal of
support from her wife.
&lt;/p&gt;

&lt;p&gt;
This makes it sounds like the emotional mess at the start of the book is
left unresolved at the end, but that&#39;s not true at all. The muddling
through works! Sunya keeps doing things that I thought were foreshadowing
some catastrophe, but she knows herself better than the reader does. Bear
largely avoids the sudden ruptures that are normally used to resolve
emotional problems in fiction. Instead, Sunya spends a lot of time and
energy working on her thinking and her relationships while trying to be
ethical and useful, and those efforts slowly bear fruit.
&lt;/p&gt;

&lt;p&gt;
I&#39;m worried this makes the book sound boring; rest assured that it isn&#39;t.
This emotional subplot is only an undercurrent in the novel, and the main
plot has enough weird science, alien aliens, and space opera drama to
satisfy my page-turning desires.
&lt;/p&gt;

&lt;p&gt;
I&#39;m focusing on the emotional arc in this review because I find it so
unusual and so oddly compelling, particularly in retrospect. This is not
how one normally does emotional development in a novel. Sunya&#39;s fox and
rightminding aren&#39;t even the focus except when the pirates express their
typical libertarian disgust for the idea. Rightminding is an entirely
normal part of Sunya&#39;s life that she relies on. It doesn&#39;t solve all of
her problems, but it gives her a foundation from which to tackle them in
the slow and frustrating and inconsistent way that is required outside of
novels, via a long series of small decisions to be the person she wants to
be.
&lt;/p&gt;

&lt;p&gt;
I think &lt;cite&gt;The Folded Sky&lt;/cite&gt; will be more hit and miss for readers than the
other books of this series. Sunya was, for me at least, a much harder
character to like early in the book, and it takes quite a while for the
plot to get going. But this is one of those books that I&#39;ve not stopped
thinking about since I finished it. I think it makes a fascinating pair
with &lt;cite&gt;Ancestral Night&lt;/cite&gt;. The first book makes the philosophical
argument for rightminding, and this book shows the practical reality with
all of its messiness. The Synarche has some significant flaws (including
the status of AIs, which is another interesting subplot), but it&#39;s a
workable system.
&lt;/p&gt;

&lt;p&gt;
It feels rare to read a science fiction novel that shows this level of
messiness without pairing it with an argument for radical change, and as
frustrating as it was to read in places, I am intrigued by the overall
effect. Sometimes acknowledging problems and working on them within an
existing framework works.
&lt;/p&gt;

&lt;p&gt;
Followed by a book tentatively titled &lt;cite&gt;Shipwreck Star&lt;/cite&gt; that does not
yet have a release date.
&lt;/p&gt;

&lt;p&gt;Rating: 7 out of 10&lt;/p&gt; </description> 
	<pubDate>Sat, 27 Jun 2026 02:58:00 +0000</pubDate>

</item> 
<item>
	<title>Jonathan Wiltshire: Streamlining Debian Updates with AI: The Stable Update Adviser</title>
	<guid>https://www.jwiltshire.org.uk/?p=776</guid>
	<link>https://www.jwiltshire.org.uk/2026/06/27/streamlining-debian-updates-with-ai-the-stable-update-adviser/</link>
     <description>  &lt;p class=&quot;wp-block-paragraph&quot;&gt;&lt;em&gt;Please consider supporting my work in Debian and elsewhere through &lt;a href=&quot;https://liberapay.com/jmw/&quot;&gt;Liberapay&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;



&lt;hr class=&quot;wp-block-separator has-alpha-channel-opacity&quot; /&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Some months ago I started working on a small experiment: a specialised LLM assistant for Debian maintainers preparing proposed updates for stable and oldstable.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;The aim is not to replace review by the Stable Release Managers, nor to automate away maintainer judgement. It is meant to be a pre-advice tool: something maintainers can use while they are still preparing a proposed update, before sending it to other people to review.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;If you’ve uploaded to stable before you may have some experience with our acceptance criteria. Does the version sort correctly? Is the changelog clear enough? Is the delta focused? Are the patches documented? Are the right bugs or CVEs mentioned? Are they of sufficient severity? What is the risk to users of stable? Is there an ABI change hiding in the diff?&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;These are the sort of checks where a structured first pass can be useful, provided it is treated as advice rather than authority.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;To explain what the tool does, what could be more appropriate in an AI age than to ask it?&lt;/p&gt;



&lt;blockquote class=&quot;wp-block-quote is-layout-flow wp-block-quote-is-layout-flow&quot;&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;Describe yourself and your abilities and limitations for a blog post.&lt;/p&gt;
&lt;/blockquote&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;It answers:&lt;/p&gt;



&lt;blockquote class=&quot;wp-block-quote is-layout-flow wp-block-quote-is-layout-flow&quot;&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;I’m &lt;strong&gt;Debian Stable Update Adviser&lt;/strong&gt;, a specialised ChatGPT assistant for Debian maintainers preparing &lt;strong&gt;proposed updates&lt;/strong&gt; for Debian &lt;strong&gt;stable&lt;/strong&gt; and &lt;strong&gt;oldstable&lt;/strong&gt;.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;My main job is to review a single &lt;code&gt;.debdiff&lt;/code&gt; and give practical, policy-aware feedback before a maintainer submits or uploads a proposed update. I focus on whether the update appears suitable for Debian stable or oldstable, especially under the Stable Release Managers’ expectations for minimal, targeted, low-risk changes.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;I can inspect a debdiff for Debian changelog quality, including suite, version, bug references, CVE mentions, and rationale. I can check version correctness using Debian &lt;code&gt;dpkg&lt;/code&gt; version semantics. I can review packaging changes under &lt;code&gt;debian/&lt;/code&gt;, such as patches, maintscripts, symbols files, conffiles, Build-Depends, autopkgtests, and control metadata. I can also group upstream source changes into behavioural and non-behavioural categories, and flag areas that may carry regression risk.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;My reports are intended to be concise and useful to maintainers. A typical review includes a quick summary, behavioural and non-behavioural change breakdown, mechanical policy checks, risk assessment, stable-policy checklist, acceptance likelihood, rationale, maintainer advice, and a clear conclusion.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;My limitations are important. I cannot prove that a package builds, that tests pass, that the bug is fully fixed, or that the Stable Release Managers will accept the upload. I also do not replace maintainer judgment, archive review, autopkgtest results, reproducibility checks, or real-world upgrade testing. I can only review the provided debdiff and point out likely issues, risks, and improvements.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;I also do not proceed without a valid debdiff. The whole point of my review is to assess the actual proposed delta, not to speculate from package names or bug descriptions alone.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;In short, I act as a focused pre-review assistant for Debian stable and oldstable proposed updates: useful for catching policy, versioning, changelog, packaging, and regression-risk issues early, but not a substitute for the Debian review process itself.&lt;/p&gt;
&lt;/blockquote&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;That last point is an important one. This is not an oracle, and it is not part of the Debian archive machinery. It is a checklist with some language-model assistance, aimed at reading a debdiff and pointing out things that might be worth another look.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;I know that commercial AI and LLM tools are not universally welcome in Debian. That is understandable. Debian depends on transparency, human responsibility, licensing clarity, and technical correctness. LLMs have obvious problems in all of those areas. They can be wrong, and worse, they can be wrong in a fluent and plausible way. They are impossible to reproduce and their training is opaque.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;But I see this as a useful first pass for a maintainer who is unused to working in stable, and would benefit from a virtual mentor giving their proposal a quick check and reassurance. Perhaps they don’t have a more experienced co-maintainer to ask. Perhaps they are conscious that stable reviews are presently a two-man effort and want to avoid adding round trips to that load. Perhaps they just need some reassurance.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;So despite my reservations I am today opening the adviser up for general use, and I’m interested in feedback about how it responds to real world proposals in various states. Most of the examples I have tested with already had a green light, so the value added by the adviser is limited. I would especially be interested in seeing a transcript alongside the submitted debdiff.&lt;/p&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;Try it out&lt;/h2&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;I would dearly love to build this in a more Debian-ish environment, but for now I’m limited in resources and skill to do that (help is welcome). Until that’s a reality, you can try out the ChatGPT implementation: &lt;a href=&quot;https://chatgpt.com/g/g-68f4ebb7f22c8191ab7f9d5f4ad91292-debian-stable-update-adviser&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Debian Stable Update Adviser&lt;/a&gt;&lt;/p&gt; </description> 
	<pubDate>Fri, 26 Jun 2026 23:06:52 +0000</pubDate>

</item> 
<item>
	<title>Russ Allbery: Review: Platform Decay</title>
	<guid>https://www.eyrie.org/~eagle/reviews/books/1-250-82701-9.html</guid>
	<link>https://www.eyrie.org/~eagle/reviews/books/1-250-82701-9.html</link>
     <description>  &lt;p&gt;Review: &lt;cite&gt;Platform Decay&lt;/cite&gt;, by Martha Wells&lt;/p&gt;

&lt;table&gt;
  &lt;tbody&gt;&lt;tr&gt;
    &lt;td&gt;Series:&lt;/td&gt;
    &lt;td&gt;Murderbot Diaries #8&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;Publisher:&lt;/td&gt;
    &lt;td&gt;Tor&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;Copyright:&lt;/td&gt;
    &lt;td&gt;2026&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;ISBN:&lt;/td&gt;
    &lt;td&gt;1-250-82701-9&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;Format:&lt;/td&gt;
    &lt;td&gt;Kindle&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;Pages:&lt;/td&gt;
    &lt;td&gt;245&lt;/td&gt;
  &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;
&lt;cite&gt;Platform Decay&lt;/cite&gt; is the eighth book in the Murderbot science fiction
series. You absolutely should not start here, but you also don&#39;t need to
remember the specifics of the previous books.
&lt;/p&gt;

&lt;p&gt;
As the story opens, Murderbot and a friend (the identity of whom is a
spoiler for previous books) are infiltrating a Corporation Rim torus, a
massive space station that encircles a mined-out planet. (Like most
science fiction megastructures, this is more space than the plot really
requires.) Murderbot&#39;s mission is to exfiltrate some of Dr. Mensah&#39;s
family members who have become entangled in corporate shenanigans. The
corporates are eager to get revenge for the events of
&lt;a href=&quot;https://www.eyrie.org/~eagle/reviews/books/1-250-82698-5.html&quot;&gt;&lt;cite&gt;System Collapse&lt;/cite&gt;&lt;/a&gt;, not to mention the
other times Preservation Station has upended corporate plans. Murderbot&#39;s
job is to stop them.
&lt;/p&gt;

&lt;p&gt;
The group, in addition to one of Dr. Mensah&#39;s partners, includes an older
woman and a young child. Murderbot is analytical and of course not at all
emotional about children, which is reliably a good time. Also, the older
woman is gruff, stubborn, and thoroughly enjoyable.
&lt;/p&gt;

&lt;p&gt;
There are, of course, complications that lead to picking up more children
and going through rather more of the torus than Murderbot wanted to
explore. Each section of the torus is run by a different corporation and
has a different constructed environment and visual aesthetic, so there are
a lot of opportunities for fights, daring escapes, and incidental trouble.
&lt;/p&gt;

&lt;p&gt;
Also, well:
&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;
    So I had installed a mental health module. I know, I was surprised I
    did it too.
&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;
After the events of &lt;cite&gt;System Collapse&lt;/cite&gt;, University Medical decided
that Murderbot needed a bit more metal health support.
&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;
    The only reason I agreed to it was that the mental health module
    didn&#39;t actually try to adjust my processing or core programming or
    anything; it just monitored my organic neural tissue. When my neural
    tissue started to generate weird chemicals and whatever, it would ping
    me to &quot;check in with my emotional state.&quot; Seriously, I could have
    coded that myself.
&lt;/p&gt;

&lt;p&gt;
    (I told Dr. Bharadwaj that, and she said, &quot;Would you have ever coded
    that yourself?&quot; which was totally unfair and also correct. I would
    never have done that.)
&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;
Speaking as someone whose neural tissue sometimes generates weird
chemicals and whatever, I sympathize.
&lt;/p&gt;

&lt;p&gt;
The specific form this module takes is periodic &quot;emotion check&quot;
parentheticals throughout the narration, which I found utterly delightful.
&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;
    I ran that through risk assessment and it produced the equivalent of a
    shrug.
&lt;/p&gt;

&lt;p&gt;
    (Emotion check: Shrug sigil right back at you, you piece of shit.)
&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;
This is otherwise an extended action movie sort of a book, much like
several of the early novellas. There are no major political or
interpersonal developments here and the usual cast (apart from Murderbot)
is mostly absent. Instead, we get an extended, dangerous journey through a
corporation-controlled habitat, mixed with Murderbot trying to interact
with humans in a way that minimizes its annoyance while being hopefully
reassuring. It&#39;s competence porn with awkward but surprisingly heartfelt
emotional bonding, not that Murderbot in any way wants to bond or would
appreciate that description.
&lt;/p&gt;

&lt;p&gt;
I doubt this will be anyone&#39;s favorite entry into the series since there
are none of the big reveals or major leaps of character development there
have been in the past few books. But, like all Murderbot books, the
narrative tone is wonderful and all of the small asides and little moments
of character interaction are an utter delight. If you&#39;ve gotten this far
in the series, you know what I mean and you&#39;ll be as happy to read more of
it as I was. There is a part of me that is hoping for some major plot
development, and I always want to see more of ART (who has no significant
role in this book), but Wells has the narrative style down so perfectly
that I would read and enjoy a book about Murderbot doing just about
anything.
&lt;/p&gt;

&lt;p&gt;
If you&#39;re this far in the series, you probably don&#39;t need a review, and
since this is an action-heavy adventure rather than a character growth
novel, I don&#39;t have a lot more to add. There&#39;s a new short Murderbot novel
out and you want to read it. Recommended to everyone who enjoys the
series.
&lt;/p&gt;

&lt;p&gt;Rating: 8 out of 10&lt;/p&gt; </description> 
	<pubDate>Fri, 26 Jun 2026 03:23:00 +0000</pubDate>

</item> 
<item>
	<title>Reproducible Builds (diffoscope): diffoscope 322 released</title>
	<guid>https://diffoscope.org/news/diffoscope-322-released/</guid>
	<link>https://diffoscope.org/news/diffoscope-322-released/</link>
     <description>  &lt;p&gt;The diffoscope maintainers are pleased to announce the release of diffoscope
version &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;322&lt;/code&gt;. This version includes the following changes:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;[ Zbigniew Jędrzejewski-Szmek ]
* Add a local version of the (deprecated) os.path.commonprefix method.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;You find out more by &lt;a href=&quot;https://diffoscope.org&quot;&gt;visiting the project homepage&lt;/a&gt;.&lt;/p&gt; </description> 
	<pubDate>Fri, 26 Jun 2026 00:00:00 +0000</pubDate>

</item> 
<item>
	<title>Dirk Eddelbuettel: tl-0.0.1 on CRAN: New Package</title>
	<guid>http://dirk.eddelbuettel.com/blog/2026/06/22#tl_0.0.1</guid>
	<link>http://dirk.eddelbuettel.com/blog/2026/06/22#tl_0.0.1</link>
     <description>  &lt;img src=&quot;http://planet.debian.org/heads/dirk.png&quot; width=&quot;65&quot; height=&quot;90&quot; alt=&quot;&quot; align=&quot;right&quot; style=&quot;float: right;&quot;&gt;  &lt;p&gt;A new small package of mine just hit &lt;a href=&quot;https://cran.r-project.org&quot;&gt;CRAN&lt;/a&gt;. The &lt;a href=&quot;https://github.com/eddelbuettel/tl&quot;&gt;tl&lt;/a&gt; package wraps the (also
very new) &lt;a href=&quot;https://github.com/eddelbuettel/rspdlite&quot;&gt;rspdlite&lt;/a&gt; package
(announced &lt;a href=&quot;https://dirk.eddelbuettel.com/blog/2026/06/16#rspdlite_0.1.0-1&quot;&gt;last
week&lt;/a&gt;) to offer a lightweight and consistent logging interface from
both R and C++ that is also ‘tiny, fast, capable’ thanks to &lt;a href=&quot;https://github.com/eddelbuettel/rspdlite&quot;&gt;rspdlite&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://dirk.eddelbuettel.com/blog/2026/06/16#rspdlite_0.1.0-1&quot;&gt;rspdlite
announcement&lt;/a&gt; is a good place to get a first glimpse at that package;
the &lt;a href=&quot;https://github.com/gabime/spdlite&quot;&gt;upstream spdlite
repo&lt;/a&gt; has all the details (for the C++ side of things). With &lt;a href=&quot;https://github.com/eddelbuettel/tl&quot;&gt;tl&lt;/a&gt; we follow the same idea
that our &lt;a href=&quot;https://github.com/eddelbuettel/spdl&quot;&gt;spdl&lt;/a&gt; package
introduced: a simple consistent interface via just the &lt;code&gt;tl::&lt;/code&gt;
prefix and the appropropriate logging level. In other words
&lt;code&gt;tl::debug(&quot;Alert -- foo is at &#39;{}&#39;&quot;, foo)&lt;/code&gt; will work from
both R and C++ (given a variable &lt;code&gt;foo&lt;/code&gt;, and in the case of
C++ an extra semicolon). Just give it a try, and see how it goes. The
package is still young and small.&lt;/p&gt;
&lt;p&gt;The NEWS entry for this release is also very simple and just
announces that we have a release. More details are in the &lt;a href=&quot;https://github.com/eddelbuettel/tl/blob/master/ChangeLog&quot;&gt;ChangeLog&lt;/a&gt;
and the &lt;a href=&quot;https://github.com/eddelbuettel/tl&quot;&gt;GitHub
repo&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;h4 id=&quot;changes-in-version-0.0.1-2025-06-17&quot;&gt;Changes in version 0.0.1
(2025-06-17)&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Initial CRAN upload&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p style=&quot;font-size: 80%; font-style: italic;&quot;&gt;
This post by &lt;a href=&quot;https://dirk.eddelbuettel.com&quot;&gt;Dirk
Eddelbuettel&lt;/a&gt; originated on his &lt;a href=&quot;https://dirk.eddelbuettel.com/blog/&quot;&gt;Thinking inside the box&lt;/a&gt;
blog. If you like this or other open-source work I do, you can &lt;a href=&quot;https://github.com/sponsors/eddelbuettel&quot;&gt;sponsor me at
GitHub&lt;/a&gt;.
&lt;/p&gt;&lt;p&gt;&lt;/p&gt; </description> 
	<pubDate>Tue, 23 Jun 2026 01:50:00 +0000</pubDate>

</item> 
<item>
	<title>Tim Retout: seL4 repo relationships</title>
	<guid>https://retout.co.uk/2026/06/21/sel4-repo-relationships/</guid>
	<link>https://retout.co.uk/2026/06/21/sel4-repo-relationships/</link>
     <description>  &lt;p&gt;The seL4 organisation on GitHub uses
&lt;a href=&quot;https://github.com/GerritCodeReview/git-repo&quot;&gt;git-repo&lt;/a&gt; to manage
multiple source repositories, and so there are a large number of
projects to get your head around when figuring out the ecosystem.&lt;/p&gt;
&lt;p&gt;As an experiment, I have taken the various manifest files across the
org, and constructed a graph based on how frequently each pair of
repositories is mentioned in a manifest together.  See below:&lt;/p&gt;

&lt;img alt=&quot;Graphviz Diagram&quot; src=&quot;https://retout.co.uk/2026/sel4-repo-relationships.svg&quot; style=&quot;height: auto; display: block;&quot; /&gt;
&lt;p&gt;&lt;em&gt;[This may render badly when syndicated outside of my blog; and also
on small screens.  And probably large screens.  I’ve attempted to make
sure there’s a &lt;a href=&quot;https://retout.co.uk/2026/sel4-repo-relationships.svg&quot;&gt;non-JS fallback&lt;/a&gt; –
on my site with JS enabled, if you hover over a node, it should
highlight connected nodes.]&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The colouring of the nodes is mostly manual; I experimented with graph
clustering algorithms but have not found a satisfactory result so far.
Still, some clusters are obvious:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Kernel&lt;/strong&gt; – the &lt;code&gt;seL4&lt;/code&gt; microkernel proper.  This often but not
always co-exists with the main cluster of core libraries, but it
is pulled away slightly by the verification and microkit
manifests.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Verification&lt;/strong&gt; – the verification repositories (&lt;code&gt;l4v&lt;/code&gt;, &lt;code&gt;HOL&lt;/code&gt;,
&lt;code&gt;graph-refine&lt;/code&gt;, &lt;code&gt;polyml&lt;/code&gt;, &lt;code&gt;isabelle&lt;/code&gt;) form a very distinct group.
These are connected only to the seL4 microkernel itself, which is
the only component formally verified.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Microkit&lt;/strong&gt; – &lt;code&gt;microkit&lt;/code&gt; is a newer operating system framework
that does not use CAmkES, so stands apart from the rest of the
pack.  I chose to scope this work to the seL4 org, so the LionsOS
ecosystem and sDDF which are maintained by Trustworthy Systems are
not shown.  Also not linked is &lt;code&gt;rust-sel4&lt;/code&gt;, because this modern
world isn’t using git-repo in the main to manage its repositories.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;RefOS&lt;/strong&gt; – I’d not come across &lt;code&gt;refos&lt;/code&gt; before, but it appears to
be an example OS from 2021 built on the seL4 kernel.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It’s quite hard to pull apart the CAmkES framework and the core
libraries; there are definitely some which are more associated with VM
management, but the overall shape of this co-occurence data is a messy
ball in the middle with some outliers in orbit.  One observation is
that &lt;code&gt;camkes&lt;/code&gt; is correctly identified as more peripheral than
&lt;code&gt;camkes-tool&lt;/code&gt;, which contains the actual core CAmkES code.&lt;/p&gt;
&lt;p&gt;Reflecting on this approach, in hindsight I’m surprised that using
co-occurences worked as well as it did – there was no attempt to
actually inspect the code and find direct mentions of other code
e.g. library header dependencies.  As the newer microkit effort
largely eschews git-repo, better results might be found by actually
taking that more detailed approach, so that graph edges could
represent real dependencies between two packages.  Additionally, this
could allow diving into the various libraries held in the different
’libs’ repos, to get a more granular graph of relationships between
them.&lt;/p&gt;
&lt;p&gt;However, I think I spent more time on making it possible to render
graphviz graphs easily on my blog than actually gaining any insight
into the codebase!&lt;/p&gt; </description> 
	<pubDate>Sun, 21 Jun 2026 15:36:30 +0000</pubDate>

</item> 
<item>
	<title>Vasudev Kamath: Releasing debvulns: CLI for listing Debian vulnerabilities</title>
	<guid>tag:copyninja.in,2026-06-21:/blog/debvulns-cli.html</guid>
	<link>https://copyninja.in/blog/debvulns-cli.html</link>
     <description>  &lt;img src=&quot;http://planet.debian.org/heads/vasudev.png&quot; width=&quot;65&quot; height=&quot;85&quot; alt=&quot;&quot; align=&quot;right&quot; style=&quot;float: right;&quot;&gt;  &lt;p&gt;Following up on my previous &lt;a class=&quot;reference external&quot; href=&quot;https://copyninja.in/blog/debsecan-mcp-pypi.html&quot;&gt;post&lt;/a&gt;, I have released the
&lt;cite&gt;debvulns&lt;/cite&gt; &lt;a class=&quot;reference external&quot; href=&quot;https://pypi.org/project/debsecan-mcp/&quot;&gt;CLI&lt;/a&gt;. This utility uses
the same parsing logic as the &lt;cite&gt;debsecan-mcp&lt;/cite&gt; server but exposes the
functionality directly via the command line.&lt;/p&gt;
&lt;div class=&quot;section&quot; id=&quot;why-a-new-cli&quot;&gt;
&lt;h2&gt;Why a new CLI?&lt;/h2&gt;
&lt;p&gt;While Debian&#39;s native &lt;cite&gt;debsecan&lt;/cite&gt; utility exists, it lacks modern output formats
like JSON and CSV, and fails to expose a significant amount of metadata
available in the Debian Security Team&#39;s daily snapshot.&lt;/p&gt;
&lt;p&gt;Additionally, running a persistent Model Context Protocol (MCP) server
introduces context window overhead. The manifests and tool descriptions required
by the protocol consume tokens even when idle. For &lt;cite&gt;debsecan-mcp&lt;/cite&gt;, the &lt;a class=&quot;reference external&quot; href=&quot;https://modelcontextprotocol.io/docs/tools/inspector#pypi-package&quot;&gt;MCP
Inspector utility&lt;/a&gt; shows an
overhead of roughly 150 tokens.&lt;/p&gt;
&lt;p&gt;By contrast, an LLM can parse a standard CLI help menu on-demand without
permanently draining the context window. Integrating the CLI into a persistent
agent workflow can be achieved via a skill file, allowing the LLM to leverage the
tool without repeated discovery overhead.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;what-else-is-new&quot;&gt;
&lt;h2&gt;What else is NEW?&lt;/h2&gt;
&lt;p&gt;During testing, I observed discrepancies between the output of &lt;cite&gt;debsecan-mcp&lt;/cite&gt;/&lt;cite&gt;debvulns&lt;/cite&gt;
and native &lt;cite&gt;debsecan&lt;/cite&gt;. Debugging with an LLM revealed a bug in the version
&lt;a class=&quot;reference external&quot; href=&quot;https://github.com/copyninja/debsecan-mcp/commit/04e9990f2d7b2d85fe04f21c4f2e22fbc9aae365&quot;&gt;comparison logic&lt;/a&gt;
that caused &lt;cite&gt;debvulns&lt;/cite&gt; to underreport vulnerabilities. This has been resolved.&lt;/p&gt;
&lt;p&gt;The current interface supports structured formatting and customizable data backends:&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;usage:&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;debvulns&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;-h&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;-s&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;critical,high,medium,low,negligible&lt;span class=&quot;o&quot;&gt;}]&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;-f&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;json,csv&lt;span class=&quot;o&quot;&gt;}]&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;--sort-by&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;package,cve&lt;span class=&quot;o&quot;&gt;}]&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;--vuln-url&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;VULN_URL&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;--epss-url&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;EPSS_URL&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;--suite&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;SUITE&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;w&quot;&gt;                &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;--cache-dir&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;CACHE_DIR&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;--no-cache&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;-v&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;

debvulns&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;-&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;CLI&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;Debian&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;Vulnerabilities&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;Tracker

options:
&lt;span class=&quot;w&quot;&gt;    &lt;/span&gt;-h,&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;--help&lt;span class=&quot;w&quot;&gt;            &lt;/span&gt;show&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;this&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;help&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;message&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;and&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;exit&lt;/span&gt;
&lt;span class=&quot;w&quot;&gt;    &lt;/span&gt;-s,&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;--severity&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;critical,high,medium,low,negligible&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;w&quot;&gt;                          &lt;/span&gt;Filter&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;vulnerabilities&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;by&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;severity
&lt;span class=&quot;w&quot;&gt;    &lt;/span&gt;-f,&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;--format&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;json,csv&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;w&quot;&gt;                          &lt;/span&gt;Output&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;format&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;default:&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;json&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;w&quot;&gt;    &lt;/span&gt;-sort-by&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;package,cve&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;w&quot;&gt;                          &lt;/span&gt;Sort&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;vulnerabilities&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;by&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&#39;package&#39;&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;or&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&#39;cve&#39;&lt;/span&gt;
&lt;span class=&quot;w&quot;&gt;    &lt;/span&gt;--vuln-url&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;VULN_URL&lt;span class=&quot;w&quot;&gt;   &lt;/span&gt;Custom&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;URL&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;or&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;local&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;path&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;k&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;Debian&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;Security&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;Tracker&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;data
&lt;span class=&quot;w&quot;&gt;    &lt;/span&gt;--epss-url&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;EPSS_URL&lt;span class=&quot;w&quot;&gt;   &lt;/span&gt;Custom&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;URL&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;or&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;local&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;path&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;k&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;EPSS&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;scores&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;data
&lt;span class=&quot;w&quot;&gt;    &lt;/span&gt;--suite&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;SUITE&lt;span class=&quot;w&quot;&gt;         &lt;/span&gt;Debian&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;suite&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;name&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;e.g.&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;bookworm,&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;sid&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;.&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;Auto-detected&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;by&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;default.
&lt;span class=&quot;w&quot;&gt;    &lt;/span&gt;--cache-dir&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;CACHE_DIR
&lt;span class=&quot;w&quot;&gt;                          &lt;/span&gt;Directory&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;to&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;cache&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;fetched&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;and&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;parsed&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;data&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;default:&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;/var/cache/debvulns&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;w&quot;&gt;    &lt;/span&gt;--no-cache&lt;span class=&quot;w&quot;&gt;            &lt;/span&gt;Do&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;not&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;use&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;cached&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;data,&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;force&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;downloading&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;and&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;parsing
&lt;span class=&quot;w&quot;&gt;    &lt;/span&gt;-v,&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;--verbose&lt;span class=&quot;w&quot;&gt;         &lt;/span&gt;Enable&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;verbose&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;debug&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;logging&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;sent&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;to&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;stderr&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;By allowing users to override data sources with local snapshots of the Debian
Security Tracker and EPSS feeds, &lt;cite&gt;debvulns&lt;/cite&gt; can run natively in airgapped
environments.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;what-next&quot;&gt;
&lt;h2&gt;What Next?&lt;/h2&gt;
&lt;p&gt;The next step is building a Prometheus exporter for this vulnerability data to
streamline scanning and monitoring across data center infrastructure. Stay tuned.&lt;/p&gt;
&lt;/div&gt; </description> 
	<pubDate>Sun, 21 Jun 2026 12:06:00 +0000</pubDate>

</item> 
<item>
	<title>Gunnar Wolf: systemd for Linux SysAdmins</title>
	<guid>https://gwolf.org/2026/06/systemd-for-linux-sysadmins.html</guid>
	<link>https://gwolf.org/2026/06/systemd-for-linux-sysadmins.html</link>
     <description>  &lt;img src=&quot;http://planet.debian.org/heads/gwolf.png&quot; width=&quot;69&quot; height=&quot;83&quot; alt=&quot;&quot; align=&quot;right&quot; style=&quot;float: right;&quot;&gt;  &lt;blockquote&gt;
		 
		   This post is a review for &lt;a href=&quot;https://www.computingreviews.com/&quot;&gt;Computing
		   Reviews&lt;/a&gt;
		 
		     
		       
		         for &lt;em&gt;&lt;a href=&quot;https://link.springer.com/book/10.1007/979-8-8688-1328-3&quot;&gt;systemd for Linux SysAdmins&lt;/a&gt;&lt;/em&gt;
		       
		     
		     
		       , a book 
		       published in &lt;em&gt;&lt;a href=&quot;https://www.computingreviews.com/review/review_review.cfm?review_id=148120&quot;&gt;Apress&lt;/a&gt;&lt;/em&gt;
		     
		   &lt;/blockquote&gt;
		 
		 &lt;p&gt;systemd. Yes, in full lowercase. If there was ever a technology to cause
controversy in the Linux world, this is it. Since its inception in 2010,
systemd’s goals were set quite high: to replace the vital part in every
Linux system that takes care of the system boot process. It quickly reached
maturity, allowing it to be adopted as the main init system in most major
distributions just five years later. Despite describing events that
happened over a decade ago, systemd adoption still raises the temperature
in any Linux-related discussion.&lt;/p&gt;

&lt;p&gt;David Both’s comprehensive book tackles the what, why, and how issues
surrounding systemd. Carefully divided into 16 chapters, going from the
basics and some of the technical and political history behind the project
to the different subsystems and aspects covered by systemd, its almost 450
pages can scare people away. But the text is written in a very clear,
tutorial-like fashion, and while it can be read sequentially,
cover-to-cover, readers can also pick a single aspect and jump straight to
the relevant chapter.&lt;/p&gt;

&lt;p&gt;A frequent criticism of the systemd project is that it aims to basically
rewrite all of a Linux system, and just looking at this book’s index shows
there is some truth to it. The first chapter is an introduction to the
systemd project and a brief overview of its history (including the
controversies around it), and the following four chapters deal with
understanding and controlling the system boot process.&lt;/p&gt;

&lt;p&gt;That leaves ten chapters to cover different aspects or subprojects of
systemd, such as time and date issues (synchronization, time
specifications, and controlling repetitive tasks), understanding and
leveraging the system journal that strongly departs from the old syslog
system, network configuration and firewall management, system health and
performance debugging–all aspects that in the traditional Unix philosophy
were managed by independent programs. And I can identify several systemd
subprojects not covered by this book!&lt;/p&gt;

&lt;p&gt;We long-time Unix and Linux administrators took pride in how highly
performant and stable systems were supported by the simplicity of our
tools; systemd critics point out this massive project has absorbed dozens
of individual tools, yielding corporate control over vast swaths of vital
system tooling. Truth is, as a sysadmin myself, systemd is today one of my
greatest allies.&lt;/p&gt;

&lt;p&gt;I appreciate how the author evaluates every component independently,
including his personal evaluation of each–even acknowledging when he
prefers working with the traditional programs.&lt;/p&gt;

&lt;p&gt;If I had to note one criticism: given the many console captures, having a
maximum width below 70 characters means several lines are unnaturally cut
short (and continued with odd indentations). There is probably no “right”
way to solve this, but it does affect the reading experience.&lt;/p&gt; </description> 
	<pubDate>Sat, 20 Jun 2026 02:07:54 +0000</pubDate>

</item> 
<item>
	<title>Wouter Verhelst: Agentic coding and Free Software</title>
	<guid>https://grep.be/blog//en/computer/Agentic_coding_and_Free_Software/</guid>
	<link>https://grep.be/blog//en/computer/Agentic_coding_and_Free_Software/</link>
     <description>  &lt;img src=&quot;http://planet.debian.org/heads/wouter3.png&quot; width=&quot;85&quot; height=&quot;80&quot; alt=&quot;&quot; align=&quot;right&quot; style=&quot;float: right;&quot;&gt;  &lt;p&gt;Through work, I have paid license to &lt;a href=&quot;https://windsurf.com&quot;&gt;windsurf&lt;/a&gt;
(recently renamed to &quot;devin&quot;), an application for LLM-based (aka,
&quot;Agentic&quot;) development.&lt;/p&gt;

&lt;p&gt;I hadn&#39;t been using it that much, but in an effort to more clearly
understand how this whole AI development thing works, I decided to give
it a closer look recently.&lt;/p&gt;

&lt;p&gt;My conclusions:&lt;/p&gt;

&lt;p&gt;In its current form, this whole LLM wave is problematic for multiple
reasons. But ignoring that, and looking at the &lt;em&gt;technology&lt;/em&gt; only, I can
say that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;it is a paradigm shift;&lt;/li&gt;
&lt;li&gt;it is, at the technological level, a positive evolution;&lt;/li&gt;
&lt;li&gt;and it is a threat to free software.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;problems&quot;&gt;Problems&lt;/h2&gt;

&lt;p&gt;Lest someone (incorrectly) assume that I am arguing in favour of the
current state of affairs with regards to LLMs, let me state this first.&lt;/p&gt;

&lt;p&gt;The way LLMs are built today is highly parasitic. Websites are
downloaded in whole, at unsustainable rates, regardless of the consent
of the people who made the original content. The result is predictable:
servers get overloaded, server administrators attempt to implement
various mitigations. Some of these mitigations work; some do, for a
while; some are entirely useless. In actual fact, the mitigations are an
arms race -- if too many people implement the same mitigation, then the
people who try to build yet another LLM so they can extract rent will
just try to work around the mitigation, eventually they will succeed,
and you&#39;ll just have to come up with another mitigation. It&#39;s a bit like
spam; you introduce regex-based spam filters, they introduce spelling
mistakes, you introduce bayesian filters, they add a large batch of
markov chain-generated semi-nonsense words made invisible by markup, you
add filters to block emails with such markup, they move the text into an
image. We have working mitigations today, but eventually we&#39;ll run out
of ideas.&lt;/p&gt;

&lt;p&gt;LLMs glob up everything they can while ignoring the license of the
source material. The people who push those LLMs claim that pushing the
source material through the machine learning algorithms makes the output
of the algorithm distinct enough from the source material that the
license no longer applies; I&#39;m not so sure that this is true. I guess
the &lt;a href=&quot;https://www.courtlistener.com/docket/68117049/the-new-york-times-company-v-microsoft-corporation/&quot;&gt;New York Times v OpenAI
lawsuit&lt;/a&gt;
will teach us &lt;em&gt;some&lt;/em&gt; of the answer to that question here, but even so
the ethical questions about &quot;is it OK to bring down another server just
so we can download the internet for another for-pay LLM&quot; are still
open. And regardless of what the law states, my opinion on &quot;you&#39;re using
my copyleft code to generate code under a different license&quot; is not
something you might like if you agree with the rent seekers&#39; opinion on
the subject.&lt;/p&gt;

&lt;p&gt;That all being said and true, the &lt;em&gt;technology&lt;/em&gt; works. You can have a
&quot;conversation&quot; with an LLM that resembles a human one. If you pass it
some data, you can use &lt;em&gt;plain english&lt;/em&gt; to ask it questions about that
data, which is a lot easier than to ask it about that in a formal way.
You can request it to generate some code, and it will generate something
that looks like what you need and that will be mostly correct for like
95% of the time.&lt;/p&gt;

&lt;p&gt;Now, yes, 95% of the time is not 100% of the time, and no, you can&#39;t ask
it to &quot;write me a piece of software that implements this 300-page
requirements document and get back to me when you&#39;re done&quot;, because it
will fail, and you won&#39;t know &lt;em&gt;where&lt;/em&gt; it has failed, and you&#39;ll take it
into production and expect everything to be fine because it won&#39;t and
this one minor logic bug will cause half your servers to spin and
consume credits with your infrastructure provider with nothing to show
for it.&lt;/p&gt;

&lt;p&gt;But that doesn&#39;t mean you can&#39;t use an LLM to build a large piece of
software. It just means you have to understand the LLMs limitations and
strenghts, and use them correctly.&lt;/p&gt;

&lt;p&gt;Here&#39;s what an LLM is good at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generating plausible text&lt;/li&gt;
&lt;li&gt;Interpreting text to figure out what a plausible meaning or summary of
that text is&lt;/li&gt;
&lt;li&gt;Giving vague indications as to what the probable context of a given
body of text is.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It turns out that that&#39;s enough to use the LLM to build a reliable piece
of software, provided you do it right.&lt;/p&gt;

&lt;h2 id=&quot;paradigmshift&quot;&gt;Paradigm shift&lt;/h2&gt;

&lt;p&gt;An LLM can generate text by the truckful. The generated text could be
code. Given a good enough LLM, the generated text might even run and do
something useful.&lt;/p&gt;

&lt;p&gt;You can try to blindly run the code, and if it doesn&#39;t run correctly,
you can paste the error message to the LLM, and it can tell you what
went wrong and how you could possibly fix it. This creates a feedback
loop: you ask it for an amount of code, you run the code, you receive an
error, you tell it that the code is problematic and give it the error
message, it makes changes to the code, now you have something that at
least no longer fails at startup.&lt;/p&gt;

&lt;p&gt;If you ask it to add tests to make sure that your code acts as per your
specification, now you get an error if and when the code &lt;em&gt;doesn&#39;t&lt;/em&gt; act
as per your specification. Or, well, at least not as per the part of the
specification that was correctly turned into a unit test by the LLM.&lt;/p&gt;

&lt;p&gt;LLMs have a context window, so if the error message is pasted in the
same conversation as where the code was generated, it is able to reuse
the earlier prompts to refine how it should interpret the error message
that you received.&lt;/p&gt;

&lt;p&gt;You can&#39;t really paste the source code of an entire application into the
prompt of your LLM, that would quickly overrun its context window. But
LLMs also allow you to provide some form of background information --
a document, say -- on which you ask it to reason. It will interpret that
document, but doing so uses less of the LLMs context window. So
providing the LLM with your application&#39;s source code as background
information can help it understand better how your code interacts. This
is especially helpful if you only provide the LLM the background
information relevant to the actual question.&lt;/p&gt;

&lt;p&gt;So now if you are able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create background context with your application&#39;s source code&lt;/li&gt;
&lt;li&gt;Have the LLM generate a first draft of your requested change, plus the
tests to make sure it works&lt;/li&gt;
&lt;li&gt;Compile (if applicable) the generated code (and tests) and run said
tests&lt;/li&gt;
&lt;li&gt;Return any error messages to the LLM with a request to correct the
error&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then the combination of &quot;getting it 95% right off the bat&quot; and the above
feedback loop means you can generate syntactically correct code, that
probably does what you need, in minutes.&lt;/p&gt;

&lt;p&gt;I say &quot;probably&quot; for a reason. There are going to be cases where you
specify a request without a number of details (because they are
implied), and the LLM will get most of those details right but just not
implement the one bit because it&#39;s an automaton and it doesn&#39;t think. Or
you will ask it to make sure that two bits of the application &lt;em&gt;look&lt;/em&gt;
exactly the same, without specifying that they must &lt;em&gt;act&lt;/em&gt; the same, now
and in the future, and it will just generate the same block of code
twice and then in a future change it will change one but not the other.&lt;/p&gt;

&lt;p&gt;But if you &lt;em&gt;review&lt;/em&gt; the changes, and you have experience as a
programmer, you will be able to spot most cases where the LLM got it
wrong. And so it&#39;s possible, if not necessarily easy at first, to
use an LLM to generate mostly correct code.&lt;/p&gt;

&lt;p&gt;There are certain places where &quot;mostly correct&quot; code is not desireable.
But equally, there are also cases where, &quot;mostly correct&quot; is good
enough.&lt;/p&gt;

&lt;p&gt;After all, most of the software you run today -- the bits of it that
weren&#39;t, yet, generated by an LLM -- is only &quot;mostly correct&quot;, too,
because to err is human and we all make mistakes. If not, there wouldn&#39;t
be any CVEs and your software would never do anything wrong.&lt;/p&gt;

&lt;p&gt;Now, doing the feedback loop described above is certainly something you
could do manually. You could open an account on one of the LLM websites,
upload the source code of your application, ask it to generate some new
feature, download the newly generated feature, run it, and then
copy/paste any error messages back into the LLM.&lt;/p&gt;

&lt;p&gt;But that&#39;s a lot of manual work of the type that computers are pretty
good at. So that&#39;s what the &quot;windsurf&quot; tool helps you with: you run it
inside your IDE -- either a VSCode-based tool that you download from
their website which comes with their product preinstalled, or a separate
JetBrains plugin that you can install. You can then open your entire
relevant codebase in a workspace in your IDE. You then ask the LLM,
through the IDE, to generate a new feature in your codebase, and to also
generate the test while it&#39;s at it. It will use a mixture of LLM
interpretation and non-LLM functionality to scoop out the relevant bits
of your codebase to send to the LLM as background information, will send
it your prompt, will download the generated code and patch or create
files, will compile (if required) and run the newly generated code and
tests, and will refine the generated code if the tests produce any
errors. All mostly automatic; by default, running &lt;em&gt;anything&lt;/em&gt; requires
explicit confirmation. You can turn that off completely (probably not a
good idea), or you can give it a whitelist of things that you don&#39;t want
to confirm (perhaps OK), and the tool also passes standing instructions
to the LLM to never generate any command that deletes a file (which,
like with any LLM, can be overridden, but it requires you to be very
stubborn and to use more credits than you&#39;d probably like).&lt;/p&gt;

&lt;p&gt;All this put together means you can build something without writing any
piece of code, provided you do it right.&lt;/p&gt;

&lt;h2 id=&quot;atechnicallypositiveevolution&quot;&gt;A technically positive evolution&lt;/h2&gt;

&lt;p&gt;Don&#39;t go and say, &quot;here&#39;s a 300-page document, read it and write
whatever the document says&quot;. It will get it wrong, it will write a
massive test suite that it will only run at the end, it will choke
itself up trying to interpret the massive amount of failures it
encounters, it will fill up its context window and it will start to
forget some of the requirements. That won&#39;t work.&lt;/p&gt;

&lt;p&gt;But what you can do -- what I did, in fact -- is this.&lt;/p&gt;

&lt;p&gt;First, create an empty workspace. Don&#39;t put any code in it.&lt;/p&gt;

&lt;p&gt;Then, tell the LLM to generate a backend framework using technology X
and a frontend framework using technology Y that initially only says
&quot;hello, world&quot;. Also add tests to it, and run the tests.&lt;/p&gt;

&lt;p&gt;It will do that. You&#39;ll not get much, but it will work.&lt;/p&gt;

&lt;p&gt;Then, ask it to add some UI elements. A login page, perhaps. A
navigation bar. Small things. Most of it doesn&#39;t have to be functional
-- but tests must be there for the bits that are, and have it run the
tests and evaluate the results.&lt;/p&gt;

&lt;p&gt;Rinse, repeat, until you have a working application.&lt;/p&gt;

&lt;p&gt;Importantly, in between the steps, you should also run the application
yourself and see if the change was implemented correctly. Sometimes it
won&#39;t be. Sometimes there will be a subtle bug -- I at one point had a
the application hang after a few minutes. Sometimes you tell it that
there&#39;s a subtle bug, and it will discover it more quickly than you
could, and it will fix it, and in implementing the fix it will uncover
&lt;em&gt;another&lt;/em&gt; bug, and then you have to fix that one -- the fix it came up
with for the hang was to move something to an async process on the
server, which caused the application to start spinning while trying to
create hundreds of async jobs (this is when I realized that the hang was
a deadlock due to some part of the codebase doing something that
indirectly triggered itself). Sometimes it will try to fix the bug you
tell it about, and you&#39;ll see that it&#39;s going off on a tangent that has
nothing to do with what you&#39;re seeing. It&#39;s important to keep an eye on
what it&#39;s doing, so you can guide it back on track when that happens --
when I told it about the hang, it started investigating the part of the
code which sends out emails, thinking that it could hang while waiting
for &lt;code&gt;sendmail&lt;/code&gt; to finish, but the hang was happening when the
application was &lt;em&gt;idle&lt;/em&gt;, not when it was sending out emails, and only
when I told it about it happening when it was idle did it find the
deadlock.&lt;/p&gt;

&lt;p&gt;So it&#39;s not a fully automatic process, and it needs to be guided by
someone who knows what they&#39;re doing. But if that is the case, you can
come up with something that works. I spent evenings and breaks for about
a week, and I managed to create a working application which, had I
written it by hand, would have taken me a few months of full-time work
to come up with. And I now have a side project, fully complete and
working, that I had been thinking about doing for &lt;em&gt;more than a decade&lt;/em&gt;,
but never got around to &lt;em&gt;actually&lt;/em&gt; doing, because of all the work that
would be involved and I just didn&#39;t see myself having the time for.&lt;/p&gt;

&lt;p&gt;It&#39;s not perfect code. But it&#39;s mostly good enough, and it will perform
the job it needs to. And it looks far slicker than most of the side
projects I&#39;ve done in the past, because in the past I would prioritize
between implementing new features or making something look slick, and I
would decide that the new feature was more important because it&#39;s only
for me and there&#39;s only me and nobody cares if it looks good or not and
I don&#39;t have three weeks to come up with something that looks better.
But here, I found myself sometimes spending 10 minutes writing a prompt
with instructions on making things look better. Because what&#39;s 10
minutes when you just spent an hour writing down and refining
specifications for functionality and tests?&lt;/p&gt;

&lt;p&gt;There are a number of other things in which an LLM can help a
programmer.&lt;/p&gt;

&lt;p&gt;For instance.&lt;/p&gt;

&lt;p&gt;I received a bug report recently in &lt;a href=&quot;https://github.com/Fedict/eid-mw&quot;&gt;a project I&#39;m paid to
maintain&lt;/a&gt; that I couldn&#39;t make heads
or tails of. I opened the source code in my windsurf IDE, pasted the bug
report in the prompt, and then requested the tool to analyze the source
code and the associated logs and tell me how the described behavior
could be happening. It turned out that I had overlooked something, but
with the help of the tool, I found the bug in minutes.&lt;/p&gt;

&lt;p&gt;I was trying to understand a particular part of a &lt;a href=&quot;https://www.kernel.org&quot;&gt;large
codebase&lt;/a&gt; that I didn&#39;t really grasp very well.
I loaded the codebase in the tool, and asked it to explain to me how a
particular action is performed by the code. I requested specific
functions and line numbers. I now have a far better understanding of how
the code works, and will be able to write that patch that I&#39;ve been
wanting to write for years -- without using the LLM.&lt;/p&gt;

&lt;p&gt;I have been struggling for, literally, years with understanding why
&lt;a href=&quot;https://salsa.debian.org/debconf-video-team/SReview&quot;&gt;another tool that I
maintain&lt;/a&gt; was
misbehaving in a particular way but only in Firefox. I opened the
codebase in Firefox, explained the buggy behavior in plain English, and
asked it to explain how this could be happening. It picked up some
obscure corner case behavior of ffmpeg and mp4 containers that I was not
aware of and that perfectly explained why things were misbehaving in the
way that they were.&lt;/p&gt;

&lt;p&gt;At the same time, there are limitations. Giving an LLM a codebase that
was originally generated by an LLM (either the same one or another one)
seems to work well. Giving it a codebase that was written by a human and
expecting it to correctly update it seems to be more error-prone. I did
one or two of those as a trial, and it is more problematic than
anything.&lt;/p&gt;

&lt;p&gt;An LLM is also not intelligent, notwithstanding the popular term of
&quot;Artificial Intelligence&quot;. On multiple occasions, I&#39;ve asked it to write
a test case for some code that was not set up to do so; and rather than
suggesting a refactor is required, it would instead &lt;em&gt;copy&lt;/em&gt; the code that
needed to be tested and then test the copy, rather than the original.
The tool has made multiple similar errors. I have sometimes people
describe agentic coding as &quot;similar to interacting with junior
programmers&quot;, but that is not the case. A junior programmer will either
fill in the gaps in your specifications, or ask for clarification when
something seems off. The LLM will not do that; it will do what you ask,
exactly that and nothing more. If you missed a corner case in your
specification, then all bets are off.&lt;/p&gt;

&lt;p&gt;I remember learning about programming language generations in college.
A first-generation language is &quot;machine code&quot;, a second-generation
language is &quot;assembler&quot;, a third-generation language is any high-level
language such as C, Perl, or Pascal. I&#39;ve forgotten what set a
3rd-generation language apart from a 4th-generation language. But I
remember the definition they gave me for a 5th-generation language: &quot;you
tell the computer what to do, and it will do it&quot;. At the time, I thought
it was ridiculous. Nobody could ever write something like that.&lt;/p&gt;

&lt;p&gt;But it&#39;s here.&lt;/p&gt;

&lt;p&gt;And it&#39;s a threat to free software.&lt;/p&gt;

&lt;h2 id=&quot;athreattofreesoftware&quot;&gt;A threat to free software?&lt;/h2&gt;

&lt;p&gt;Yes.&lt;/p&gt;

&lt;p&gt;There is the obvious part where most of the well-known LLMs are non-free
software. I mean, &lt;a href=&quot;https://www.geeksforgeeks.org/artificial-intelligence/top-10-open-source-llm-models/&quot;&gt;there
are&lt;/a&gt;
some &quot;open source&quot; LLM models. The windsurf tool that I used doesn&#39;t allow
you to use them (directly), but they&#39;re there. There are also &lt;a href=&quot;https://opencode.ai/&quot;&gt;open
source applications&lt;/a&gt; that implement what the
windsurf editor does. So it&#39;s definitely possible to work like this
without resorting to non-free software and non-free services, even
though the non-free LLMs might be a bit ahead of the curve of the free
ones. But that&#39;s not what I mean.&lt;/p&gt;

&lt;p&gt;And there is also the obvious thing which I mentioned earlier in this
post, which is that the people who try to build LLMs are doing it in
unethical, disgusting ways, causing downtimes and disregarding licenses
for whatever they can get their grubby hands on. Ideally we wouldn&#39;t be
in that situation, and ideally this wouldn&#39;t be a problem, but we are
where we are.&lt;/p&gt;

&lt;p&gt;And there&#39;s the obvious thing where the OSI sold itself out and declared
that a machine learning program can be open source even when the very
things it was built from -- the training data -- is not available.
That&#39;s a major issue that the free software community needs to fight
against, but there&#39;s not really anything that that is a threat to free
software. You just build your own, free software, LLM, and you&#39;re done.&lt;/p&gt;

&lt;p&gt;The actual threat is in funding and developer support.&lt;/p&gt;

&lt;p&gt;Most large businesses do not care about free-as-in-freedom software.
They like the free-as-in-beer part, and they appreciate that the
free-as-in-freedom bits can make the software more customizable. They
are (mostly) happy to do sponsorships of the free-as-in-freedom projects
that they use if that means their free-as-in-beer usage of the software
gets improved.&lt;/p&gt;

&lt;p&gt;But why would you care about all that when you can just &lt;em&gt;generate&lt;/em&gt; the
code you need, rather than interacting with an open source community
that may or may not care about your business&#39;s interests?&lt;/p&gt;

&lt;h2 id=&quot;wheretogofromhere&quot;&gt;Where to go from here&lt;/h2&gt;

&lt;p&gt;Although I think the moral and environmental issues with LLMs are real
and problematic, given the experiments I did I am not convinced that the
&lt;em&gt;concept&lt;/em&gt;  of interacting with a computer system in natural language and
to use it to generate code is necessarily deficient. There are pitfalls,
but they can be managed. It is possible to use such a system to create
throwaway, proof-of-concept type &quot;good enough&quot; code bases. It can be
used to interpret code bases and to understand bug reports.&lt;/p&gt;

&lt;p&gt;I believe that the major issue with LLMs has to do with that saying
about hammers and nails:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;If all you have is a hammer, then everything looks like a nail.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;LLMs are an outgrowth of machine learning, pushed by large corporations.
These large corporations have a lot of money. If all you have is money,
then every problem can be fixed by throwing more money at it. The
initial language models were promising but not (yet) good enough, and it
seemed that one way in which they could be improved was to increase the
scale of the statistics: throw more hardware (and thus money) at it, and
rather than improving the efficiency of the models, just scale up.&lt;/p&gt;

&lt;p&gt;Scaling up is something that megacorporations are very good at. It&#39;s
only a money problem, after all. Does that mean that &quot;scaling up&quot;
is the only way to improve the models, though? I&#39;m not convinced.&lt;/p&gt;

&lt;p&gt;Some hardware, such as most modern Apple and Samsung devices, ship with
accelerator hardware for machine learning algorithms. There are some
models that are small enough to be able to run on these devices. I don&#39;t
see why it should not be possible to create a small(er) language model
that can do some useful part of the above-described use cases; if not
locally, then at least on a server that one can run on-prem rather than
requiring that you pay rent to one of the LLM companies.&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;https://sfconservancy.org&quot;&gt;Software Freedom Conservancy&lt;/a&gt; has
published an &lt;a href=&quot;https://sfconservancy.org/news/2024/oct/25/aspirational-on-llm-generative-ai-programming/&quot;&gt;aspirational statement on machine learning-assisted
programming&lt;/a&gt;
that, I think, gets a lot right. It&#39;s not quite a definition, but it&#39;s
something to keep in mind.&lt;/p&gt;

&lt;p&gt;Perhaps that&#39;s the way forward?&lt;/p&gt;

&lt;p&gt;More questions than answers at this point, anyway.&lt;/p&gt; </description> 
	<pubDate>Fri, 19 Jun 2026 12:09:21 +0000</pubDate>

</item> 
<item>
	<title>Freexian Collaborators: Monthly report about Debian Long Term Support, May 2026 (by Santiago Ruano Rincón)</title>
	<guid>https://www.freexian.com/blog/debian-lts-report-2026-05/</guid>
	<link>https://www.freexian.com/blog/debian-lts-report-2026-05/</link>
     <description>  &lt;img src=&quot;http://planet.debian.org/heads/freexian.png&quot; width=&quot;215&quot; height=&quot;101&quot; alt=&quot;&quot; align=&quot;right&quot; style=&quot;float: right;&quot;&gt;  &lt;img src=&quot;https://www.freexian.com/images/debian-lts-logo.png&quot; style=&quot;float: right;&quot; /&gt;
&lt;p&gt;The Debian LTS Team, funded by &lt;a href=&quot;https://www.freexian.com/lts/debian/&quot;&gt;Freexian’s Debian LTS offering&lt;/a&gt;, is
pleased to report its activities for May.&lt;/p&gt;
&lt;h3 id=&quot;activity-summary&quot;&gt;Activity summary&lt;/h3&gt;
&lt;p&gt;During the month of May, 21 contributors have been
paid to work on &lt;a href=&quot;https://wiki.debian.org/LTS&quot;&gt;Debian LTS&lt;/a&gt; (links to individual
contributor reports are located below).&lt;/p&gt;
&lt;p&gt;The team released &lt;a href=&quot;https://lists.debian.org/debian-lts-announce/2026/05/threads.html&quot;&gt;56 DLAs&lt;/a&gt; fixing 877 CVEs.&lt;/p&gt;
&lt;p&gt;May was a much busier month than usual, especially due to the disclosed
vulnerabilities on linux regarding Local Privilege Escalation (LPE), that
included public proof-of-concept (PoC) exploits. These reports of course
impacted Debian as a whole, and the situation warrants a special mention to the
Kernel Team, especially Ben Hutching and Salvatore Bonaccorso, who faced the
pace and released linux packages on a weekly basis. On the LTS side, the Front
Desk team also
&lt;a href=&quot;https://lists.debian.org/debian-lts/2026/06/msg00002.html&quot;&gt;triaged a significant flow of high severity CVEs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It is also important to note that
&lt;a href=&quot;https://www.debian.org/releases/bookworm/&quot;&gt;Debian 12 (“bookworm”)&lt;/a&gt; will be
handed over to
the LTS Team on June 11th. If you benefit from Debian, especially during the
full 5-year lifecycle, please consider subscribing as a sponsor of Debian LTS:
&lt;a href=&quot;https://www.freexian.com/lts/debian/&quot;&gt;https://www.freexian.com/lts/debian/&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Moreover, Debian 11 (“bullseye”) will reach the end of the Debian LTS period on
August 31st. After that, Freexian will continue the security support under the
&lt;a href=&quot;https://www.freexian.com/lts/extended/&quot;&gt;Extended LTS&lt;/a&gt; offer.&lt;/p&gt;
&lt;p&gt;The team published several notable updates:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;As mentioned above, several exploitable LPE vulnerabilities in linux were published during May. Ben released the following DLAs for the Debian LTS versions:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://lists.debian.org/afW4eRFSiyEj0t5p@decadent.org.uk&quot;&gt;DLA 4560-1&lt;/a&gt; for linux (5.10)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://lists.debian.org/afW4k69tKf_WlndL@decadent.org.uk&quot;&gt;DLA 4561-1&lt;/a&gt; for linux-6.1&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://lists.debian.org/af4wE6d14Ow7_e1z@decadent.org.uk&quot;&gt;DLA 4572-1&lt;/a&gt; for linux (5.10)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://lists.debian.org/af9UZejc2VrICvbM@decadent.org.uk&quot;&gt;DLA 4574-1&lt;/a&gt; for linux-6.1&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://lists.debian.org/aghQTI2_ePQTfgRl@decadent.org.uk&quot;&gt;DLA 4587-1&lt;/a&gt; for linux (5.10)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://lists.debian.org/agxj_abMk4ZO7rTj@decadent.org.uk&quot;&gt;DLA 4588-1&lt;/a&gt; for linux-6.1&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://lists.debian.org/ahnAg039hP_NAYQZ@decadent.org.uk&quot;&gt;DLA 4606-1&lt;/a&gt; for linux (5.10)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://lists.debian.org/ahnBQfl3R3-CGOJ0@decadent.org.uk&quot;&gt;DLA 4607-1&lt;/a&gt; for linux-6.1&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;exim update
(&lt;a href=&quot;https://security-tracker.debian.org/tracker/DLA-4580-1&quot;&gt;DLA-4580-1&lt;/a&gt;),
prepared by Thorsten, to address a vulnerability that may result in remote code
execution.&lt;/li&gt;
&lt;li&gt;gnutls28 update
(&lt;a href=&quot;https://security-tracker.debian.org/tracker/DLA-4595-1&quot;&gt;DLA-4595-1&lt;/a&gt;) by
Guilhem Moulin, fixes several vulnerabilities that may result in execution of
arbitrary code, information leak, authentication bypass, among other impacts.&lt;/li&gt;
&lt;li&gt;krb5 updates released as
&lt;a href=&quot;https://security-tracker.debian.org/tracker/DLA-4603-1&quot;&gt;DLA-4603-1&lt;/a&gt;, fixing
two vulnerabilities that may yield to a denial of service. Updated prepared by
Emmanuel Arias&lt;/li&gt;
&lt;li&gt;lemonldap-ng
(&lt;a href=&quot;https://security-tracker.debian.org/tracker/DLA-4602-1&quot;&gt;DLA-4602-1&lt;/a&gt;),
released by Abhijith PA, fixing multiple vulnerabilities&lt;/li&gt;
&lt;li&gt;Two imagemagick updates
(&lt;a href=&quot;https://security-tracker.debian.org/tracker/DLA-4559-1&quot;&gt;DLA-4559-1&lt;/a&gt; and
&lt;a href=&quot;https://security-tracker.debian.org/tracker/DLA-4609-1&quot;&gt;DLA-4609-1&lt;/a&gt;), prepared
by Bastien Roucariès, fixing several vulnerabilities&lt;/li&gt;
&lt;li&gt;openjdk-11 and openjdk-17 updates
(&lt;a href=&quot;https://security-tracker.debian.org/tracker/DLA-4566-1&quot;&gt;DLA-4566-1&lt;/a&gt; and
&lt;a href=&quot;https://security-tracker.debian.org/tracker/DLA-4565-1&quot;&gt;DLA-4565-1&lt;/a&gt;), both
prepared by Emilio, to fix seven vulnerabilities.&lt;/li&gt;
&lt;li&gt;php7.4 update
(&lt;a href=&quot;https://security-tracker.debian.org/tracker/DLA-4586-1&quot;&gt;DLA-4586-1&lt;/a&gt;) to fix
six vulnerabilities that could result in remote code execution, information
disclosure or denial of service. Update prepared by Guilhem Moulin.&lt;/li&gt;
&lt;li&gt;python3.9 update (&lt;a href=&quot;https://security-tracker.debian.org/tracker/DLA-4583-1&quot;&gt;DLA-4583-1&lt;/a&gt;), prepared
by Arnaud Rebillout, addressing multiple vulnerabilities.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Contributions from outside the LTS Team:&lt;/p&gt;
&lt;p&gt;We are greatly thankful for the contributions from people outside the LTS Team:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Colin Watson prepared an OpenSSH update, that was released by Santiago as
&lt;a href=&quot;https://security-tracker.debian.org/tracker/DLA-4584-1&quot;&gt;DLA-4584-1&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Thomas Goirand handled a keystone update, whose advisory was done by Santiago
and released as
&lt;a href=&quot;https://security-tracker.debian.org/tracker/DLA-4611-1&quot;&gt;DLA-4611-1&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Christopher Obbard kindly prepared a sentry-python update, released as
&lt;a href=&quot;https://security-tracker.debian.org/tracker/DLA-4612-1&quot;&gt;DLA-4612-1&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Christoph Goehre made two thunderbird updates
(&lt;a href=&quot;https://security-tracker.debian.org/tracker/DLA-4562-1&quot;&gt;DLA-4562-1&lt;/a&gt; and
&lt;a href=&quot;https://security-tracker.debian.org/tracker/DLA-4582-1&quot;&gt;DLA-4582-1&lt;/a&gt;). As is
customary, Emilio released the advisories.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The LTS Team has also contributed with updates to the latest Debian releases:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Andreas proposed a &lt;a href=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1137166&quot;&gt;firewalld update&lt;/a&gt;
for bookworm to fix a local issue that may result in bypass control rules.&lt;/li&gt;
&lt;li&gt;Andreas proposed &lt;a href=&quot;https://lists.debian.org/debian-mate/2026/05/msg00007.html&quot;&gt;atril updates&lt;/a&gt;
for trixie and bookworm.&lt;/li&gt;
&lt;li&gt;Arnaud did a &lt;a href=&quot;https://bugs.debian.org/1136382&quot;&gt;python3.11 upload&lt;/a&gt; for bookworm.&lt;/li&gt;
&lt;li&gt;Arnaud proposed libarchive updates for &lt;a href=&quot;https://bugs.debian.org/1135713&quot;&gt;trixie&lt;/a&gt;
and &lt;a href=&quot;https://bugs.debian.org/1135715&quot;&gt;bookworm&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Arnaud completed the
&lt;a href=&quot;https://tracker.debian.org/news/1748276/accepted-systemd-25239-1deb12u2-source-into-oldstable-proposed-updates/&quot;&gt;systemd update&lt;/a&gt;
for bookworm.&lt;/li&gt;
&lt;li&gt;Bastien completed the uploads of
&lt;a href=&quot;https://tracker.debian.org/news/1747981/accepted-gpsd-322-41deb12u1-source-into-oldstable-proposed-updates/&quot;&gt;gpsd&lt;/a&gt; for bookworm.
He also did an upload of
&lt;a href=&quot;https://tracker.debian.org/news/1747976/accepted-apache2-2466-1deb12u2-source-into-oldstable-proposed-updates/&quot;&gt;apache2&lt;/a&gt; for bookworm.&lt;/li&gt;
&lt;li&gt;Emmanuel uploaded updates of libexif for
&lt;a href=&quot;https://tracker.debian.org/news/1750516/accepted-libexif-0625-1deb13u1-source-into-proposed-updates/&quot;&gt;trixie&lt;/a&gt;
and
&lt;a href=&quot;https://tracker.debian.org/news/1750521/accepted-libexif-0624-1deb12u1-source-into-oldstable-proposed-updates/&quot;&gt;bookworm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Jochen Sprickerhof prepared pyjwt update for
&lt;a href=&quot;https://tracker.debian.org/news/1750541/accepted-pyjwt-2101-2deb13u1-source-into-stable-security/&quot;&gt;trixie&lt;/a&gt; and
&lt;a href=&quot;https://tracker.debian.org/news/1750540/accepted-pyjwt-260-1deb12u1-source-into-oldstable-security/&quot;&gt;bookworm&lt;/a&gt;,
released as
&lt;a href=&quot;https://security-tracker.debian.org/tracker/DSA-6259-1&quot;&gt;DSA-6259-1&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Lukas Märdian prepared
&lt;a href=&quot;https://tracker.debian.org/news/1752293/accepted-nghttp2-1640-11deb13u1-source-into-stable-security/&quot;&gt;trixie&lt;/a&gt;
and
&lt;a href=&quot;https://tracker.debian.org/news/1752294/accepted-nghttp2-1520-1deb12u3-source-into-oldstable-security/&quot;&gt;bookworm&lt;/a&gt;
updates for nghttp2, released as
&lt;a href=&quot;https://security-tracker.debian.org/tracker/DSA-6266-1&quot;&gt;DSA-6266-1&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Markus prepared updates of tomcat11 and tomcat10, released as
&lt;a href=&quot;https://security-tracker.debian.org/tracker/DSA-6329-1&quot;&gt;DSA-6329-1&lt;/a&gt; (for trixie) and
&lt;a href=&quot;https://security-tracker.debian.org/tracker/DSA-6328-1&quot;&gt;DSA-6328-1&lt;/a&gt; (for trixie and bookworm),
respectively.&lt;/li&gt;
&lt;li&gt;Continuing the work
&lt;a href=&quot;https://lists.debian.org/debian-lts/2026/06/msg00002.html&quot;&gt;to replace the unmaintained p7zip fork with 7zip&lt;/a&gt;,
Sylvain prepared
&lt;a href=&quot;https://tracker.debian.org/news/1748309/accepted-7zip-2501dfsg-1deb13u2-source-into-proposed-updates/&quot;&gt;trixie&lt;/a&gt;
and
&lt;a href=&quot;https://tracker.debian.org/news/1748244/accepted-7zip-2201really2501dfsg-0deb12u1-source-into-oldstable-proposed-updates/&quot;&gt;bookworm&lt;/a&gt; updates of 7zip.&lt;/li&gt;
&lt;li&gt;Thorsten completed the uploads of zvbi, taglib and libuev to bookworm and did
an upload of libcoap3 for
&lt;a href=&quot;https://tracker.debian.org/news/1748400/accepted-libcoap3-434-11deb13u3-source-into-proposed-updates/&quot;&gt;wtrixie&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Tobi prepared libpng1.6 updates for trixie and bookworm, released as
&lt;a href=&quot;https://security-tracker.debian.org/tracker/DSA-6263-1&quot;&gt;DSA-6263-1&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Moreover, thanks to &lt;a href=&quot;https://www.freexian.com/blog/samba-4.17-lts/&quot;&gt;our partnership with Catalyst&lt;/a&gt;, it has been possible to extend the support for Samba 4.17, the version shipped with Debian 12. In May, several vulnerabilities were disclosed, and their patches were prepared by Catalyst. For Debian 12, the update was prepared by the Samba maintainer and released as &lt;a href=&quot;https://security-tracker.debian.org/tracker/DSA-6297-1&quot;&gt;DSA-6297-1&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;individual-debian-lts-contributor-reports&quot;&gt;Individual Debian LTS contributor reports&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://people.debian.org/~abhijith/reports/LTS_ELTS-May-2026.txt&quot;&gt;Abhijith PA&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://lists.debian.org/debian-lts/2026/05/msg00035.html&quot;&gt;Andreas Henriksson&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://lists.debian.org/msgid-search/90a01206-0228-47a1-99ac-230f39627cdd@app.fastmail.com&quot;&gt;Andrej Shadura&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://lists.debian.org/debian-lts/2026/06/msg00001.html&quot;&gt;Arnaud Rebillout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://lists.debian.org/debian-lts/2026/06/msg00004.html&quot;&gt;Bastien Roucariès&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.decadent.org.uk/ben/blog/2026/06/02/foss-activity-in-may-2026.html&quot;&gt;Ben Hutchings&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://lists.debian.org/msgid-search/ah946uN_ihFpn6Y2@fw13.lan&quot;&gt;Carlos Henrique Lima Melara&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://chris-lamb.co.uk/posts/free-software-activities-in-may-2026#debian-lts&quot;&gt;Chris Lamb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://lists.debian.org/debian-lts/2026/06/msg00005.html&quot;&gt;Daniel Leidert&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://lists.debian.org/debian-lts/2026/05/msg00038.html&quot;&gt;Emmanuel Arias&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://people.debian.org/~pochu/lts/reports/2026-05.txt&quot;&gt;Emilio Pozuelo Monfort&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://lists.debian.org/msgid-search/?m=z6X4k41ZLH1m3ekg@debian.org&quot;&gt;Guilhem Moulin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://lists.debian.org/msgid-search/ah60k47SnxpQjRrq@mpd&quot;&gt;Jochen Sprickerhof&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://lists.debian.org/debian-lts/2026/06/msg00013.html&quot;&gt;Lee Garrett&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://people.debian.org/~kanashiro/debian/lts/reports/2026-05.txt&quot;&gt;Lucas Kanashiro&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://people.debian.org/~slyon/debian/lts/reports/2026-05.txt&quot;&gt;Lukas Märdian&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dl.gambaru.de/blog/202605_LTS_ELTS_report.txt&quot;&gt;Markus Koschany&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://people.debian.org/~santiago/lts-elts-reports/report-2026-05.txt&quot;&gt;Santiago Ruano Rincón&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://lists.debian.org/debian-lts/2026/06/msg00002.html&quot;&gt;Sylvain Beucler&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.alteholz.eu/2026/06/my-debian-activities-in-may-2026/&quot;&gt;Thorsten Alteholz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://lists.debian.org/debian-lts/2026/06/msg00015.html&quot;&gt;Tobias Frost&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;thanks-to-our-sponsors&quot;&gt;Thanks to our sponsors&lt;/h3&gt;
&lt;p&gt;Sponsors that joined recently are in bold.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Platinum sponsors:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.global.toshiba/ww/top.html&quot;&gt;Toshiba Corporation&lt;/a&gt; (for 128 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://cip-project.org&quot;&gt;Civil Infrastructure Platform (CIP)&lt;/a&gt; (for 96 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://vyos.io&quot;&gt;VyOS Inc&lt;/a&gt; (for 61 months)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Gold sponsors:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.roche.com/about/business/diagnostics.htm&quot;&gt;F. Hoffmann-La Roche AG&lt;/a&gt; (for 139 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.conet.de/&quot;&gt;CONET Deutschland GmbH&lt;/a&gt; (for 122 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.ox.ac.uk&quot;&gt;University of Oxford&lt;/a&gt; (for 78 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.edf.fr&quot;&gt;EDF SA&lt;/a&gt; (for 50 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.dataport.de&quot;&gt;Dataport AöR&lt;/a&gt; (for 25 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://home.cern/&quot;&gt;CERN&lt;/a&gt; (for 23 months)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Silver sponsors:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://domainnameshop.com/&quot;&gt;Domeneshop AS&lt;/a&gt; (for 143 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://metropole.nantes.fr/&quot;&gt;Nantes Métropole&lt;/a&gt; (for 137 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.akamai.com/&quot;&gt;Akamai - Linode&lt;/a&gt; (for 133 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.univention.de&quot;&gt;Univention GmbH&lt;/a&gt; (for 129 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://portail.univ-st-etienne.fr/&quot;&gt;Université Jean Monnet de St Etienne&lt;/a&gt; (for 129 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://ribboncommunications.com/&quot;&gt;Ribbon Communications, Inc.&lt;/a&gt; (for 123 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.exonet.nl&quot;&gt;Exonet B.V.&lt;/a&gt; (for 113 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.lrz.de&quot;&gt;Leibniz Rechenzentrum&lt;/a&gt; (for 107 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.diplomatie.gouv.fr&quot;&gt;Ministère de l’Europe et des Affaires Étrangères&lt;/a&gt; (for 91 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dinahosting.com&quot;&gt;Dinahosting SL&lt;/a&gt; (for 78 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://upsun.com&quot;&gt;Upsun Formerly Platform.sh&lt;/a&gt; (for 72 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.moxa.com&quot;&gt;Moxa Inc.&lt;/a&gt; (for 66 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://sipgate.de&quot;&gt;sipgate GmbH&lt;/a&gt; (for 64 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://ovhcloud.com&quot;&gt;OVH US LLC&lt;/a&gt; (for 62 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.tilburguniversity.edu/&quot;&gt;Tilburg University&lt;/a&gt; (for 62 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.gsi.de&quot;&gt;GSI Helmholtzzentrum für Schwerionenforschung GmbH&lt;/a&gt; (for 53 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.cesky-hosting.cz/&quot;&gt;THINline s.r.o.&lt;/a&gt; (for 26 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.cph.dk&quot;&gt;Copenhagen Airports A/S&lt;/a&gt; (for 20 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.isere.fr&quot;&gt;Conseil Départemental de l’Isère&lt;/a&gt; (for 6 months)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Bronze sponsors:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.seznam.cz&quot;&gt;Seznam.cz, a.s.&lt;/a&gt; (for 144 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.evolix.fr&quot;&gt;Evolix&lt;/a&gt; (for 143 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://linuxhotel.de&quot;&gt;Linuxhotel GmbH&lt;/a&gt; (for 141 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://intevation.de&quot;&gt;Intevation GmbH&lt;/a&gt; (for 140 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://waays.fr&quot;&gt;Daevel SARL&lt;/a&gt; (for 139 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.megaspace.de&quot;&gt;Megaspace Internet Services GmbH&lt;/a&gt; (for 138 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.greenbone.net&quot;&gt;Greenbone AG&lt;/a&gt; (for 137 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://numlog.fr&quot;&gt;NUMLOG&lt;/a&gt; (for 137 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.wingo.ch/&quot;&gt;WinGo AG&lt;/a&gt; (for 136 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.entrouvert.com/&quot;&gt;Entr’ouvert&lt;/a&gt; (for 128 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://adfinis.com&quot;&gt;Adfinis AG&lt;/a&gt; (for 125 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.plathome.com&quot;&gt;Plat’Home&lt;/a&gt; (for 122 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.legi.grenoble-inp.fr&quot;&gt;Laboratoire LEGI - UMR 5519 / CNRS&lt;/a&gt; (for 120 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.tesorion.nl/&quot;&gt;Tesorion&lt;/a&gt; (for 120 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://bearstech.com&quot;&gt;Bearstech&lt;/a&gt; (for 111 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://lihas.de&quot;&gt;LiHAS&lt;/a&gt; (for 111 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.catalyst.net.nz&quot;&gt;Catalyst IT Ltd&lt;/a&gt; (for 106 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://demarcq.net&quot;&gt;Demarcq SAS&lt;/a&gt; (for 100 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.univ-grenoble-alpes.fr&quot;&gt;Université Grenoble Alpes&lt;/a&gt; (for 86 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.touchweb.fr&quot;&gt;TouchWeb SAS&lt;/a&gt; (for 78 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.spin-ag.de&quot;&gt;SPiN AG&lt;/a&gt; (for 75 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.corefiling.com&quot;&gt;CoreFiling&lt;/a&gt; (for 71 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.osug.fr/&quot;&gt;Observatoire des Sciences de l’Univers de Grenoble&lt;/a&gt; (for 62 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.werfen.com&quot;&gt;Tem Innovations GmbH&lt;/a&gt; (for 57 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://wordfinder.pro&quot;&gt;WordFinder.pro&lt;/a&gt; (for 57 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.resif.fr&quot;&gt;CNRS DT INSU Résif&lt;/a&gt; (for 56 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.soliton.co.jp&quot;&gt;Soliton Systems K.K.&lt;/a&gt; (for 51 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.alterway.fr&quot;&gt;Alter Way&lt;/a&gt; (for 48 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.sobis.com/&quot;&gt;SOBIS Software GmbH&lt;/a&gt; (for 23 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.tuxera.com&quot;&gt;Tuxera Inc.&lt;/a&gt; (for 15 months)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://opm-op.com&quot;&gt;OPM-OP AS&lt;/a&gt; (for 6 months)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt; </description> 
	<pubDate>Fri, 19 Jun 2026 00:00:00 +0000</pubDate>

</item> 
<item>
	<title>Reproducible Builds (diffoscope): diffoscope 321 released</title>
	<guid>https://diffoscope.org/news/diffoscope-321-released/</guid>
	<link>https://diffoscope.org/news/diffoscope-321-released/</link>
     <description>  &lt;p&gt;The diffoscope maintainers are pleased to announce the release of diffoscope
version &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;321&lt;/code&gt;. This version includes the following changes:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;[ Chris Lamb ]
* Fix compatibility with Ocaml 5.4.1.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;You find out more by &lt;a href=&quot;https://diffoscope.org&quot;&gt;visiting the project homepage&lt;/a&gt;.&lt;/p&gt; </description> 
	<pubDate>Fri, 19 Jun 2026 00:00:00 +0000</pubDate>

</item> 
</channel>
</rss>
