Scarlett Gately Moore: I love KDE too much to retire! Snap beta releases trickling in. Stay tuned.

KDE
Like my work? Consider a donation. Thank you!

KDE
Like my work? Consider a donation. Thank you!
A lot of the youtube channels I follow tend to involve somebody making
things, so of course one of the videos my SO and I watched a few days
ago was about walking around San Francisco Bay, and that recalled my
desire to go to places by foot. Now, for health-related reasons doing it
properly would be problematic, and thus I ve never trained for that, but
during this Christmas holiday-heavy time I suggested my very patient
SO the next best thing: instead of our usual 1.5 hours uphill walk in
the woods, a 2 hours and a bit mostly flat walk on paved streets, plus
some train, to a nearby town: Porto Ceresio, on the Italian side of Lake
Lugano.
I started to prepare for it on the day before, by deciding it was a good
time to upgrade my PinePhone, and wait, I m still on Trixie? I could
try Forky, what could possibly go wrong? And well, the phone was no
longer able to boot, and reinstalling from the latest weekly had a
system where the on-screen keyboard didn t appear, and I didn t want to
bother finding out why, so re-installed another time from the 13.0
image, and between that, and distracting myself with widelands while
waiting for the downloads and uploads and reboots etc., well, all of the
afternoon and the best part of the evening disappeared.
So, in a hurry, between the evening and the next morning I prepared a
nice healthy lunch, full of all the important nutrients such as sugar,
salt, mercury and arsenic. Tuna (mercury) soboro (sugar and salt) on
rice and since I was in a hurry I didn t prepare any vegetables, but
used pickles (more salt) and shio kombu (arsenic and various heavy
metals, sugar and salt). Plus a green tea mochi for dessert, in case
we felt low on sugar. :D
Then on the day of the walk we woke up a bit later than usual, and then
my body decided it was a good day for my belly to not exactly hurt, but
not not-hurt either, and there I took an executive decision to wear a
corset, because if something feels like it wants to burst open, wrapping
it in a steel reinforced cage will make it stop. (I m not joking. It
does. At least in those specific circumstances.)
This was followed by hurrying through the things I had to do before
leaving the house, having a brief anxiety attack and feeling feverish
(it wasn t fever), and finally being able to leave the house just half
an hour late.
And then, 10 minutes after we had left, realizing that I had written
down the password for the train website, since it was no longer saved on
the phone, but i had forgotten the bit of paper at home. We could have
gone back to take it, but decided not to bother, as we could also
hopefully buy paper-ish tickets at the train station (we could).
Later on, I also realized I had also forgotten my GPS tracker, so I have
no record of where we went exactly (but it s not hard to recognize it on
a map) nor on what the temperature was. It s a shame, but by that point
it was way too late to go back.
Anyway, that probably was when Murphy felt we had paid our respects, and
from then on everything went lovingly well!
Routing had been done on the OpenStreetMap website, with OSRM, and it
looked pretty easy to follow, but we also had access to an Android
phone, so we used OSMAnd to check that we were still on track. It tried
to lead us to the Statale (i.e. most important and most trafficked road)
a few times, but we ignored it, and after a few turns and a few changes
of the precise destination point we managed to get it to cooperate.
At one point a helpful person asked us if we needed help, having seen us
looking at the phone, and gave us indication for the next fork (that way
to Cuasso al Piano, that way to Porto Ceresio), but it was pretty easy,
since the way was clearly marked also for cars.
Then we started to notice red and white markings on poles and other
places, and on the next fork there was a signpost for hiking routes with
our destination and we decided to follow it instead of the sign for
cars. I knew that from our starting point to or destination there was
also a hiking route, uphill both ways :) , through the hills, about 5 or 6
hours instead of two, but the sign was pointing downhill and we were
past the point where we would expect too long of a detour.
And indeed, after a short while the paved road ended, but the path
continued on a wide and flat track, and was a welcome detour through
what looked like water works to prevent flood damage from a stream.
In a warmer season, with longer grass and ticks maybe the fact that I
was wearing a long skirt may have been an issue, but in winter it was
just fine.
And soon afterwards, we were in Porto Ceresio. I think I have been there
as a child, but I had no memory of it. On the other hand, it was about
as I expected: a tiny town with a lakeside street full of houses built
in the early 1900s when the area was an important tourism destination,
with older buildings a bit higher up on the hills (because streams
in this area will flood). And of course, getting there by foot rather
than by train we also saw the parts where real people live (but not
work: that s cross-border commuters country).
Soon after arriving in Porto Ceresio we stopped to eat our lunch on a
bench at the lakeside; up to then we had been pretty comfortable in the
clothing we had decided to wear: there was plenty of frost on the
ground, in the shade, but the sun was warm and the temperatures were
cleanly above freezing. Removing the gloves to eat, however, resulted in
quite cold hands, and we didn t want to stay still for longer than
strictly necessary.
So we spent another hour and a bit walking around Porto Ceresio like
proper tourists and taking pictures. There was an exhibition of nativity
scenes all around the streets, but to get a map one had to go to either
facebook or instagram, or wait for the opening hours of an office that
were later than the train we planned to get to go back home, so we only
saw maybe half of them, as we walked around: some were quite nice, some
were nativity scenes, and some showed that the school children must have
had some fun making them.
Another Christmas decoration were groups of creatures made of evergreen
branches that dotted the sidewalks around the lake: I took pictures of
the first couple of groups, and then after seeing a few more something
clicked in my brain, and I noticed that they were wrapped in green LED
strings, like chains, and they had a red ball that was supposed to be
the nose, but could just be around the mouth area, and suddenly I felt
the need to play a certain chord to release them,
but sadly I didn t have a weaponized guitar on me :D
Another thing that we noticed were some benches in the shape of books,
with book quotations on them; most were on reading-related topics, but
the one with the Constitution felt worth taking a picture of, especially
these days.
And then, our train was waiting at the station, and we had to go back
home for the afternoon; it was a nice outing, if a bit brief, and we
agreed to do it again, possibly with a bit of a detour to make the walk
a bit longer. And then maybe one day we ll train to do the whole 5-6
hour thing through the hills.
Note: I have not published blog posts about my academic papers over the past few years. To ensure that my blog contains a more comprehensive record of my published papers and to surface these for folks who missed them, I will be periodically (re)publishing blog posts about some older published projects. This particular post is closely based on a previously published post by Nate TeBlunthuis from the Community Data Science Blog.
Many online platforms are adopting AI and machine learning as a tool to maintain order and high-quality information in the face of massive influxes of user-generated content. Of course, AI algorithms can be inaccurate, biased, or unfair. How do signals from AI predictions shape the fairness of online content moderation? How can we measure an algorithmic flagging system s effects?
In our paper published at CSCW, Nate TeBlunthuis, together with myself and Aaron Halfaker, analyzed the RCFilters system: an add-on to Wikipedia that highlights and filters edits that a machine learning algorithm called ORES identifies as likely to be damaging to Wikipedia. This system has been deployed on large Wikipedia language editions and is similar to other algorithmic flagging systems that are becoming increasingly widespread. Our work measures the causal effect of being flagged in the RCFilters user interface.
Screenshot of Wikipedia edit metadata on Special:RecentChanges with RCFilters enabled. Highlighted edits with a colored circle to the left side of other metadata are flagged by ORES. Different circle and highlight colors (white, yellow, orange, and red in the figure) correspond to different levels of confidence that the edit is damaging. RCFilters does not specifically flag edits by new accounts or unregistered editors, but does support filtering changes by editor types.
Charts showing the probability that an edit will be reverted as a function of ORES scores in the neighborhood of the discontinuous threshold that triggers the RCfilters flag. The jump in the increase in reversion chances is larger for registered editors compared to unregistered editors at both thresholds.
The full citation for the paper is: TeBlunthuis, Nathan, Benjamin Mako Hill, and Aaron Halfaker. 2021. Effects of Algorithmic Flagging on Fairness: Quasi-Experimental Evidence from Wikipedia. Proceedings of the ACM on Human-Computer Interaction 5 (CSCW): 56:1-56:27. https://doi.org/10.1145/3449130.
We have also released replication materials for the paper, including all the data and code used to conduct the analysis and compile the paper itself.
| Series: | White Space #2 |
| Publisher: | Saga Press |
| Copyright: | October 2020 |
| ISBN: | 1-5344-0303-5 |
| Format: | Kindle |
| Pages: | 485 |
The most important thing in the universe is not, it turns out, a single, objective truth. It's not a hospital whose ideals you love, that treats all comers. It's not a lover; it's not a job. It's not friends and teammates. It's not even a child that rarely writes me back, and to be honest I probably earned that. I could have been there for her. I didn't know how to be there for anybody, though. Not even for me. The most important thing in the universe, it turns out, is a complex of subjective and individual approximations. Of tries and fails. Of ideals, and things we do to try to get close to those ideals. It's who we are when nobody is looking.Followed by The Folded Sky. Rating: 8 out of 10
My Remarkable tablet, displaying my 2025 planner.
Welcome to the report for November 2025 from the Reproducible Builds project!
These monthly reports outline what we ve been up to over the past month, highlighting items of news from elsewhere in the increasingly-important area of software supply-chain security. As always, if you are interested in contributing to the Reproducible Builds project, please see the Contribute page on our website.
In this report:
On Friday 8th November, Chris Lamb gave a talk called 10 years of Reproducible Builds at SeaGL in Seattle, WA.
Founded in 2013, SeaGL is a free, grassroots technical summit dedicated to spreading awareness and knowledge about free source software, hardware and culture. Chris talk:
[ ] introduces the concept of reproducible builds, its technical underpinnings and its potentially transformative impact on software security and transparency. It is aimed at developers, security professionals and policy-makers who are concerned with enhancing trust and accountability in our software. It also provides a history of the Reproducible Builds project, which is approximately ten years old. How are we getting on? What have we got left to do? Aren t all the builds reproducible now?
In Debian this month, Jochen Sprickerhof created a merge request to replace the use of reprotest in Debian s Salsa Continuous Integration (CI) pipeline with debrebuild. Jochen cites the advantages as being threefold: firstly, that only one extra build needed ; it uses the same sbuild and ccache tooling as the normal build ; and works for any Debian release . The merge request was merged by Emmanuel Arias and is now active.
kpcyrd posted to our mailing list announcing the initial release of repro-threshold, which implements an APT transport that defines a threshold of at least X of my N trusted rebuilders need to confirm they reproduced the binary before installing Debian packages. Configuration can be done through a config file, or through a curses-like user interface.
Holger then merged two commits by Jochen Sprickerhof in order to address a fakeroot-related reproducibility issue in the debian-installer, and J rg Jaspert deployed a patch by Ivo De Decker for a bug originally filed by Holger in February 2025 related to some Debian packages not being archived on snapshot.debian.org.
Elsewhere, Roland Clobus performed some analysis on the live Debian trixie images, which he determined were not reproducible. However, in a follow-up post, Roland happily reports that the issues have been handled. In addition, 145 reviews of Debian packages were added, 12 were updated and 15 were removed this month adding to our knowledge about identified issues.
Lastly, Jochen Sprickerhof filed a bug announcing their intention to binary NMU a very large number of the R programming language after a reproducibility-related toolchain bug was fixed.
Bernhard M. Wiedemann posted another openSUSE monthly update for their work there.
Julien Malka and Arnout Engelen launched the new hash collection
server for NixOS. Aside from improved reporting to help focus reproducible builds
efforts within NixOS, it collects build hashes as individually-signed attestations
from independent builders, laying the groundwork for further tooling.
307 was uploaded to Debian unstable (as well as version 309). These changes included further attempts to automatically attempt to deploy to PyPI by liaising with the PyPI developers/maintainers (with this experimental feature). [ ][ ][ ]
In addition, reprotest versions 0.7.31 and 0.7.32 were uploaded to Debian unstable by Holger Levsen, who also made the following changes:
debian/watch file, as Lintian now flags this as error for native Debian packages. [ ][ ]Standards-Version to 4.7.2, with no changes needed. [ ]Rules-Requires-Root header as it is no longer required.. [ ]
Once again, there were a number of improvements made to our website this month including:
SOURCE_DATE_EPOCH page to fix the Lisp example syntax. [ ]
CONFIG_MODULE_HASHES patchset for the Linux kernel, which aims to enable reproducible kernel packages for Linux distributions .
.rpms.
Via our mailing list, Martin Monperrus let us know about their recently-published page on the Software Supply Chain Security of Web3. The abstract of their paper is as follows:
Web3 applications, built on blockchain technology, manage billions of dollars in digital assets through decentralized applications (dApps) and smart contracts. These systems rely on complex, software supply chains that introduce significant security vulnerabilities. This paper examines the software supply chain security challenges unique to the Web3 ecosystem, where traditional Web2 software supply chain problems intersect with the immutable and high-stakes nature of blockchain technology. We analyze the threat landscape and propose mitigation strategies to strengthen the security posture of Web3 systems.Their paper lists reproducible builds as one of the mitigating strategies. A PDF of the full text is available to download.
SARndbox (race)clamav (rust toolchain)contrast/identity/loupe/mousai (need glib-macros update)cosmic (cosmic* HashMap)dealers-choice (nocheck)falcon (python-falcon date)FreeDoko (date)gnutls (FTBFS-CPU)gods-deluxe (jar mtimes)Kinect (date)libplasma6 (qmlcachegen race)llvm (rocm-omp date)rnp (FTBFS-2041)rocsolver (FTBFS-j1)switcheroo (FTBFS-j1)vdrift (date)ibus (parallelism)qmlcachegen (with Ulf Hermann)python-gffutils.python-biom-format.python-requests-cache.python-tld.smart-open.vanguards.pycifrw.golang-github-apptainer-container-library-client.python-ofxhome.python-lupa.mu-editor.python-spdx-tools.python-django-waffle.biosquid.dateparser.parsinsert.rdf2rml.python-et-xmlfile.deblur.ytcc.pgpainless.trillian.pywavelets.jsonpath-ng.presto.python-pyutil.python-os-apply-config.pydata-sphinx-theme.python-ciso8601.python-pymummer.qcat.tkgate.tkgate.ruby-gnuplot.python-nixio.python-altair.python-graphene.python-phabricator.python-slimmer.python-kafka.python-sshsig.python-babelgladeextractor.python-genson.flawfinder.crasm.insilicoseq.pychopper.pycparser.whipper.vt.pyxnat.golang-github-kshedden-statmodel.nim-hts.golang-github-emicklei-dot.golang-gonum-v1-plot.beangulp.virulencefinder.ansible-lint.entropybroker.namecheap.spopt.pyasn.python-pyvcf.python-pysaml2.#reproducible-builds on irc.oftc.net.
rb-general@lists.reproducible-builds.org
After cartridge pleating and honeycombing, I was still somewhat in the
mood for that kind of fabric manipulation, and directing my internet
searches in that vague direction, and I stumbled on this:
https://katafalk.wordpress.com/2012/06/26/patternmaking-for-the-kampfrau-hemd-chemise/
Now, do I want to ever make myself a 16th century German costume,
especially a kampfrau one? No! I m from lake Como! Those are the
enemies who come down the Alps pillaging and bringing the Black Death
with them!
Although I have to admit that at times during my day job I have found the
idea of leaving everything to go march with the J germonsters
attractive. You know, the exciting prospective of long days of march
spent knitting sturdy socks, punctuated by the excitement of settling
down in camp and having a chance of doing lots of laundry. Or something.
Sometimes being a programmer will make you think odd things.
Anyway, going back to the topic, no, I didn t need an historically
accurate hemd. But I did need a couple more shirts for daily wear, I did
want to try my hand at smocking, and this looked nice, and I was
intrigued by the way the shaping of the neck and shoulder worked, and
wondered how comfortable it would be.
And so, it had to be done.
I didn t have any suitable linen, but I did have quite a bit of cotton
voile, and since I wasn t aiming at historical accuracy it looked like a
good option for something where a lot of fabric had to go in a small
space.
At first I considered making it with a bit less fabric than the one in
the blog, but then the voile was quite thin, so I kept the original
measurement as is, only adapting the sleeve / sides seams to my size.
With the pieces being rectangles the width of the fabric, I was able to
have at least one side of selvedge on all seams, and took advantage of it
by finishing the seams by simply folding the allowances to one sides so
that the selvedge was on top, and hemstitching them down as I would have
done with a folded edge when felling.
Also, at first I wanted to make the smocking in white on white, but then
I thought about a few hanks of electric blue floss I had in my stash,
and decided to just go with it.
The initial seams were quickly made, then I started the smocking at the
neck, and at that time the project went on hold while I got ready to go
to DebConf. Then I came back and took some time to get back into a
sewing mood, but finally the smocking on the next was finished, and I
could go on with the main sewing, which, as I expected, went decently
fast for a handsewing project.
While doing the diagonal smocking on the collar I counted the stitches
to make each side the same length, which didn t completely work because
the gathers weren t that regular to start with, and started each line
from the two front opening going towards the center back, leaving a
triangle with a different size right in the middle. I think overall it
worked well enough.
Then there were a few more interruptions, but at last it was ready! just
as the weather turned cold-ish and puffy shirts were no longer in
season, but it will be there for me next spring.
I did manage to wear it a few times and I have to say that the neck
shaping is quite comfortable indeed: it doesn t pull in odd ways like
the classical historically accurate pirate shirt sometimes does, and the
heavy gathering at the neck makes it feel padded and soft.
I m not as happy with the cuffs: the way I did them with just
honeycombing means that they don t need a closure, and after washing and
a bit of steaming they lie nicely, but then they tend to relax in a
wider shape. The next time I think I ll leave a slit in the sleeves,
possibly make a different type of smocking (depending on whether I have
enough fabric) and then line them like the neck so that they are stable.
Because, yes, I think that there will be another time: I have a few more
project before that, and I want to spend maybe another year working from
my stash, but then I think I ll buy some soft linen and make at least
another one, maybe with white-on-white smocking so that it will be
easier to match with different garments.
About 95% of my Debian contributions this month were
sponsored by Freexian.
You can also support my work directly via
Liberapay or GitHub
Sponsors.
OpenSSH
OpenSSH upstream released
10.1p1 this month, so I
upgraded to that. In the process, I reverted a Debian patch that changed IP
quality-of-service defaults, which made sense at the
time but has since been reworked upstream
anyway, so it makes sense to find out whether we still have similar
problems. So far I haven t heard anything bad in this area.
10.1p1 caused a regression in the ssh-agent-filter package s tests, which I
bisected and chased up with
upstream.
10.1p1 also had a few other user-visible regressions
(#1117574,
#1117594,
#1117638,
#1117720); I upgraded to
10.2p1 which fixed some of
these, and contributed some upstream debugging
help to clear up the
rest. While I was there, I also fixed ssh-session-cleanup: fails due to
wrong $ssh_session_pattern in our packaging.
Finally, I got all this into trixie-backports, which I intend to keep up to
date throughout the forky development cycle.
Python packaging
For some time, ansible-core has had occasional autopkgtest failures that
usually go away before anyone has a chance to look into them properly. I
ran into these via openssh recently and decided to track them down. It
turns out that they only happened when the libpython3.13-stdlib package
had different versions in testing and unstable, because an integration test
setup script made a change that would be reverted if that package was ever
upgraded in the testbed, and one of the integration tests accidentally
failed to disable system apt sources comprehensively enough while testing
the behaviour of the ansible.builtin.apt module. I fixed this in
Debian
and contributed the relevant part
upstream.
We ve started working on enabling Python 3.14 as a supported version in
Debian. I fixed or helped to fix a number of packages for this:
nocheck build
profile, and I fixed several of
these (generally just a matter of adjusting build-dependencies):
/usr/bin/env: 'python': No such file or
directory| Series: | White Space #1 |
| Publisher: | Saga Press |
| Copyright: | 2019 |
| ISBN: | 1-5344-0300-0 |
| Format: | Kindle |
| Pages: | 501 |
Eventually, I realized that I was wasting my time, and if I wanted to hide from humanity in a bottle, I was better off making it a titanium one with a warp drive and a couple of carefully selected companions.Halmey does salvage: finding ships lost in white space and retrieving them. One of her partners is Connla, a pilot originally from a somewhat atavistic world called Spartacus. The other is their salvage tug.
The boat didn't have a name. He wasn't deemed significant enough to need a name by the authorities and registries that govern such things. He had a registration number 657-2929-04, Human/Terra and he had a class, salvage tug, but he didn't have a name. Officially. We called him Singer. If Singer had an opinion on the issue, he'd never registered it but he never complained. Singer was the shipmind as well as the ship or at least, he inhabited the ship's virtual spaces the same way we inhabited the physical ones but my partner Connla and I didn't own him. You can't own a sentience in civilized space.As Ancestral Night opens, the three of them are investigating a tip of a white space anomoly well off the beaten path. They thought it might be a lost ship that failed a transition. What they find instead is a dead Ativahika and a mysterious ship equipped with artificial gravity. The Ativahikas are a presumed sentient race of living ships that are on the most alien outskirts of the Synarche confederation. They don't communicate, at least so far as Halmey is aware. She also wasn't aware they died, but this one is thoroughly dead, next to an apparently abandoned ship of unknown origin with a piece of technology beyond the capabilities of the Synarche. The three salvagers get very little time to absorb this scene before they are attacked by pirates. I have always liked Bear's science fiction better than her fantasy, and this is no exception. This was great stuff. Halmey is a talkative, opinionated infodumper, which is a great first-person protagonist to have in a fictional universe this rich with delightful corners. There are some Big Dumb Object vibes (one of my favorite parts of salvage stories), solid character work, a mysterious past that has some satisfying heft once it's revealed, and a whole lot more moral philosophy than I was expecting from the setup. All of it is woven together with experienced skill, unsurprising given Bear's long and prolific career. And it's full of delightful world-building bits: Halmey's afthands (a surgical adaptation for zero gravity work) and grumpiness at the sheer amount of gravity she has to deal with over the course of this book, the Culture-style ship names, and a faster-than-light travel system that of course won't pass physics muster but provides a satisfying quantity of hooky bits for plot to attach to. The backbone of this book is an ancient artifact mystery crossed with a murder investigation. Who killed the Ativahika? Where did the gravity generator come from? Those are good questions with interesting answers. But the heart of the book is a philosophical conflict: What are the boundaries between identity and society? How much power should society have to reshape who we are? If you deny parts of yourself to fit in with society, is this necessarily a form of oppression? I wrote a couple of paragraphs of elaboration, and then deleted them; on further thought, I don't want to give any more details about what Bear is doing in this book. I will only say that I was not expecting this level of thoughtfulness about a notoriously complex and tricky philosophical topic in a full-throated adventure science fiction novel. I think some people may find the ending strange and disappointing. I loved it, and weeks after finishing this book I'm still thinking about it. Ancestral Night has some pacing problems. There is a long stretch in the middle of the book that felt repetitive and strained, where Bear holds the reader at a high level of alert and dread for long enough that I found it enervating. There are also a few political cheap shots where Bear picks the weakest form of an opposing argument instead of the strongest. (Some of the cheap shots are rather satisfying, though.) The dramatic arc of the book is... odd, in a way that I think was entirely intentional given how well it works with the thematic message, but which is also unsettling. You may not get the catharsis that you're expecting. But all of this serves a purpose, and I thought that purpose was interesting. Ancestral Night is one of those books that I liked more a week after I finished it than I did when I finished it.
Epiphanies are wonderful. I m really grateful that our brains do so much processing outside the line of sight of our consciousnesses. Can you imagine how downright boring thinking would be if you had to go through all that stuff line by line?Also, for once, I think Bear hit on exactly the right level of description rather than leaving me trying to piece together clues and hope I understood the plot. It helps that Halmey loves to explain things, so there are a lot of miniature infodumps, but I found them interesting and a satisfying throwback to an earlier style of science fiction that focused more on world-building than on interpersonal drama. There is drama, but most of it is internal, and I thought the balance was about right. This is solid, well-crafted work and a good addition to the genre. I am looking forward to the rest of the series. Followed by Machine, which shifts to a different protagonist. Rating: 8 out of 10
Since it's spooky season, let me present to you the FrankenKeyboard!
8bitdo retro keyboard
For some reason I can't fathom, I was persuaded into buying an
8bitdo retro mechanical keyboard.
It was very reasonably priced, and has a few nice fun features:
built-in bluetooth and 2.4GHz wireless (with the supplied dongle);
colour scheme inspired by the Nintendo Famicom; fun to use knobs
for volume control; some basic macro support; and funky oversized
mashable macro keys (which work really well as "Copy" and "Paste")
The 8bitdo keyboards come with switch-types I had not previously
experienced: Kailh Box White v2. I'm used to Cherry MX Reds, but
I loved the feel of the Box White v2s. The 8bitdo keyboards all
have hot-swappable key switches.
It's relatively compact (comes without a numpad), but still larger
than my TEX Shura, which (at home) is my daily driver. I also
miss the trackpoint mouse on the Shura. Finally, the 8bitdo model
I bought has American ANSI key layout, which I can tolerate but is
not as nice as ISO. I later learned that they have a limited range
of ISO-layout keyboards too, but not (yet) in the Famicom colour
scheme I'd bought.
DIY Shura
My existing Shura's key switches are soldered on and can't be swapped
out. But I really preferred the Kailh white switches.
I decided to buy a second Shura, this time as a "DIY kit" which
accepts hot-swappable switches. I then moved the Kailh Box White v2
switches over from the 8bitdo keyboard.
keycaps
Part of justifying buying the DIY kit was the possibility that I could sell on
my older Shura with the Cherry MX Red switches. My existing Shura's key caps
are for the ISO-GB layout and have their legends printed onto them. After three
years the legends have faded in a few places.
The DIY kit comes with a set of ABS "double-shot" key caps (where the
key legends are plastic rather than printed). They look a lot nicer, but
I don't look at my keys. I'm considering applying the new, pristine key
caps to the old Shura board, to make it more attractive to buyers. One
problem is I'm not sure the new set of caps includes the ISO-UK specific
ones. It might be that potential buyers might prefer to have used caps
with the correct legends rather than pristine ones which are mislabelled.
franken keyboard
Given I wasn't going to use the new key cap set, I borrowed most of the caps
from the 8bitdo keyboard. I had to retain the G, H and B keys from my older
Shura as they are specially molded to leave space for the trackpoint, and a
couple of the modifier keys which weren't the right size. Hence the odd look!
(It needs some tweaking. That left-ALT looks out of place. It may be that the
8bitdo caps are temporary. Left "cmd" is really Fn, and "Caps lock" is really
"Super". The right-hand red dot is a second "Super".)
Since taking the photo I've removed the "stabilisers" under the right-shift
and backspace keys, in order to squeeze a couple more keys in their place.
the new keycap set includes a regular-sized "BS" key, as the JIS keyboard
layout has a regular-sized backspace. (Everyone should have a BS key in my
opinion.)
I plan to map my new keys to "Copy" and "Paste" actions following the advice in
this article.
If you are like me that you are installing machines with testing and then go and flip them over to the current stable for a while using APT::Default-Release, you might not be receiving all relevant updates. In fact this setting is kind of discouraged in favor of more extensive pinning configuration.However, the field does support regexps, so instead of just specifying, say, "trixie", you can put this in place:
APT::Default-Release "/^trixie( -security -proposed-updates -updates)$/";That should bring the security and stable updates back in.It feels like we are recently learning a lot about the drawbacks of these overlays and how they need to be configured properly...
For quite some time, I have been thinking about trying a bit of
patchwork, and English Paper Piecing looked like a technique suited to
my tastes, with the handsewing involved and the fact of having a paper
pattern of sort and everything.
The problem is, most of the scraps of fabric I get from my sewing aren t
really suitable for quilting, with a lot of them being either too black
and too thick or too white and too thin.
On the other hand, my partner wears polo shirts at work, and while I
try to mend the holes that form, after a while the edges get worn, and
they just are no longer suitable for the office, even with some creative
mending, and they get downgraded to home wear. But then more office
shirts need to be bought, and the home ones accumulate, and there is
only so much room for polo shirts in the house, and the worst ones end
up in my creative reuse pile.
Some parts are worn out and they will end up as cabbage stuffing for
things, but some are still in decent enough conditions and could be used
as fabric.
But surely, for English Paper Piecing you d need woven fabric, not knit,
even if it s the dense piqu used in polo shirts, right? Especially if
it s your first attempt at the technique, right?
Well, probably it wouldn t work with complex shapes, but what about some
5-ish cm tall Standard Compliant bestagon? So I printed out some
hexagons on thick paper, printed some bigger hexagons with sewing
allowance as a cutting aid, found two shirts in the least me colours I
could find (and one in grey because it was the best match for the other
two) and decided to sacrifice them for the experiment.
And as long as the paper was still in the pieces, the work went nicely,
so I persevered while trying to postpone the Moment of Truth.
After a while I measured things out and saw that I could squeeze a 6.5
7 hexagon pattern into something resembling a square that was a multiple
of the 2.5 cm square on the back of my Piecepack tiles, and decided to
go for another Standard for the back (because of course I wasn t going
to buy new fabric for lining the work).
I kept the paper in the pieces until both sides were ready, and used it
to sew them right sides together, leaving the usual opening in the
middle of one side.
Then I pressed, removed the paper, turned everything inside out, pressed
again and. It worked!
The hexagons look like hexagons, the squares look like squares, the
whole thing feels soft and drapey, but structurally sound. And it s a
bit lumpy, but not enough to cause issues when using it as a soft
surface to put over a noisy wooden table to throw dice on.
I considered adding some lightweight batting in the middle, but there
was really no need for it, and wondered about how to quilt the piece in
a way that worked with the patterns on the two sides, but for something
this small it wasn t really required.
However, I decided to add a buttonhole stitch border on all edges, to
close the opening I had left and to reinforce especially the small
triangles on the hexagons side, as those had a smaller sewing allowance
and could use it.
And of course, the 11 11 squares side wasn t completely an accident,
but part of A Plan.
For this project there isn t really a pattern, but I did publish the
files I used to print the paper pieces
even if they were pretty trivial.
And there are more polo shirts in that pile, and while they won t be
suitable for anything complex, maybe I could try some rhombs, or even
kites and darts?
I have been using my Samsung Galaxy Tab A (2015) with PostmarketOS on and off since last year. It serves as a really good e-book reader with KOReader installed on it. Have tried phosh and plasma-mobile on it, works nicely but slows the device down heavily (2 GB RAM and old processor) so I use MATE Desktop environment on it.Lately I have started using this tablet along with my laptop as a second screen for work. And it has been working super nicely for that. The only issue being that I have to manually rotate the screen to landscape every time I reboot the device. It resets the screen orientation to portrait after a reboot. So I went through the pmOS wiki and a neat nice hack documented there worked very well for me. First we will test if the auto-rotate sensor works and if we can read values from it. So we install some basic necessary packages$ sudo apk add xrandr xinput inotify-tools iio-sensor-proxyEnable the service for iio-sensor-proxy sudo rc-update add iio-sensor-proxyReboot the device. Now in the device terminal start the sensor monitor-sensoruser@samsung-gt58 ~> monitor-sensor
Waiting for iio-sensor-proxy to appear
+++ iio-sensor-proxy appeared
=== Has accelerometer (orientation: normal, tilt: vertical)
=== Has ambient light sensor (value: 5.000000, unit: lux)
=== No proximity sensor
=== No compass
Light changed: 14.000000 (lux)
Accelerometer orientation changed: left-up
Tilt changed: tilted-down
Light changed: 12.000000 (lux)
Tilt changed: vertical
Light changed: 13.000000 (lux)
Light changed: 11.000000 (lux)
Light changed: 13.000000 (lux)
Accelerometer orientation changed: normal
Light changed: 5.000000 (lux)
Light changed: 6.000000 (lux)
Light changed: 5.000000 (lux)
Accelerometer orientation changed: right-up
Light changed: 3.000000 (lux)
Light changed: 4.000000 (lux)
Light changed: 5.000000 (lux)
Light changed: 12.000000 (lux)
Tilt changed: tilted-down
Light changed: 19.000000 (lux)
Accelerometer orientation changed: bottom-up
Tilt changed: vertical
Light changed: 1.000000 (lux)
Light changed: 2.000000 (lux)
Light changed: 4.000000 (lux)
Accelerometer orientation changed: right-up
Tilt changed: tilted-down
Light changed: 11.000000 (lux)
Accelerometer orientation changed: normal
Tilt changed: vertical
Tilt changed: tilted-down
Light changed: 18.000000 (lux)
Light changed: 21.000000 (lux)
Light changed: 22.000000 (lux)
Light changed: 19.000000 (lux)
Accelerometer orientation changed: left-up
Light changed: 17.000000 (lux)
Tilt changed: vertical
Light changed: 14.000000 (lux)
Tilt changed: tilted-down
Light changed: 16.000000 (lux)
Light changed: 18.000000 (lux)
Light changed: 17.000000 (lux)
Light changed: 18.000000 (lux)
Light changed: 17.000000 (lux)
Light changed: 18.000000 (lux)
Light changed: 17.000000 (lux)
Light changed: 18.000000 (lux)
Light changed: 17.000000 (lux)
As you can see we can read the rotation values from the sensor as I am rotating the tablet in different orientations. Now we just need to use a script which changes the screen orientation using xrandr according to the sensor value. #!/bin/sh
killall monitor-sensor
monitor-sensor > /dev/shm/sensor.log 2>&1 &
while inotifywait -e modify /dev/shm/sensor.log; do
ORIENTATION=$(tail /dev/shm/sensor.log grep &aposorientation&apos tail -1 grep -oE &apos[^ ]+$&apos)
case "$ORIENTATION" in
normal)
xrandr -o normal
xinput set-prop "Goodix Capacitive TouchScreen" "Coordinate Transformation Matrix" 1 0 0 0 1 0 0 0 1
;;
left-up)
xrandr -o left
xinput set-prop "Goodix Capacitive TouchScreen" "Coordinate Transformation Matrix" 0 -1 1 1 0 0 0 0 1
;;
bottom-up)
xrandr -o inverted
xinput set-prop "Goodix Capacitive TouchScreen" "Coordinate Transformation Matrix" -1 0 1 0 -1 1 0 0 1
;;
right-up)
xrandr -o right
xinput set-prop "Goodix Capacitive TouchScreen" "Coordinate Transformation Matrix" 0 1 0 -1 0 1 0 0 1
;;
esac
doneauto-rotate-screen.sh
xinput --list , make sure to type this on the device terminal. user@samsung-gt58 ~> xinput --list
* Virtual core pointer id=2 [master pointer (3)]
* * Virtual core XTEST pointer id=4 [slave pointer (2)]
* * Zinitix Capacitive TouchScreen id=10 [slave pointer (2)]
* * Toad One Plus id=12 [slave pointer (2)]
* Virtual core keyboard id=3 [master keyboard (2)]
* Virtual core XTEST keyboard id=5 [slave keyboard (3)]
* GPIO Buttons id=6 [slave keyboard (3)]
* pm8941_pwrkey id=7 [slave keyboard (3)]
* pm8941_resin id=8 [slave keyboard (3)]
* Zinitix Capacitive TouchScreen id=11 [slave keyboard (3)]
* samsung-a2015 Headset Jack id=9 [slave keyboard (3)]
In our script here we are using a Zinitix capacitive screen, it will be different for yours.Once your script is ready with the correct touchscreen name. Save and make the script executable. chmod +x auto-rotate-screen.sh Then test your script in your terminal ./auto-rotate.sh , stop the script using Ctrl + CNow we need add this script to auto-start. On MATE DE you can go to System > Control Center > Startup Applications, then click on Custom Add button, browse the script location, give it a name and then click on Add button. Now reboot the tablet/device, login and see the auto rotation working.
A bit more than a year ago, I had been thinking about making myself a
cartridge pleated skirt. For a number of reasons, one of which is the
historybounding potential, I ve been thinking pre-crinoline, so
somewhere around the 1840s, and that s a completely new era for me,
which means: new underwear.
Also, the 1840s are pre-sewing machine, and I was already in a position
where I had more chances to handsew than to machine sew, so I decided to
embrace the slowness and sew 100% by hand, not even using the machine
for straight seams.
If I remember correctly, I started with the corded petticoat, looking
around the internet for instructions, and then designing my own based on
the practicality of using modern wide fabric from my stash (and
specifically some DITTE from costumers favourite source of dirty cheap
cotton IKEA).
Around the same time I had also acquired a sashiko kit, and I used the
Japanese technique for sewing running stitches pushing the needle with a
thimble that covers the base of the middle finger, and I can confirm
that for this kind of things it s great!
I ve since worn the petticoat a few times for casual / historyBounding /
folkwearBounding reasons, during the summer, and I can confirm it s
comfortable to use; I guess that during the winter it could be nice to
add a flannel layer below it.
The book only provided measurements for one size (moderate), and my
fabric was a bit too narrow to make them that size (not that I have any
idea what hip circumference a person of moderate size was supposed to
have), so the result is just wide enough to be comfortably worn, but I
think that when I ll make another pair I ll try to make them a bit
wider. On the other hand they are a bit too long, but I think that I ll
fix it by adding a tuck or two. Not a big deal, anyway.
The shift gave me a bit more issues: I used the recommended gusset size,
and ended up with a shift that was way too wide at the top, so I had to
take a box pleat in the center front and back, which changed the look
and wear of the garment. I have adjusted the instructions to make
gussets wider, and in the future I ll make another shift following
those.
Even with the pleat, the narrow shoulder straps are set quite far to the
sides, and they tend to droop, and I suspect that this is to be expected
from the way this garment is made. The fact that there are buttonholes
on the shoulder straps to attach to the corset straps and prevent the
issue is probably a hint that this behaviour was to be expected.
On the other hand, I m really happy with how cute the short sleeves
look, and if2 I ll ever make the other cut of shift from the same
book, with the front flaps, I ll definitely use these pleated sleeves
rather than the straight ones that were also used at the time.
As usual, all of the patterns have been published on my website under a
Free license:
It appears that the fragile masculinity tech evangelists have identified Debian as a community with boundaries which exclude them from abusing its members and they re so angry about it! In response to posts such as this, and inspired by Dr. Conway s piece, I ve composed a poem which, hopefully, correctly addresses the feelings of that crowd.
I am the very model of a modern patriot online, My keyboard is my rifle and my noble cause is so divine. I didn't learn my knowledge in a dusty college lecture hall, But from the chans where bitter anonymity enthralls us all. I spend a dozen hours every day upon my sacred quest, To put the globo-homo narrative completely to the test. My arguments are peer-reviewed by fellas in the comments section, Which proves my every thesis is the model of complete perfection. I m steeped in righteous anger that the libs call 'white fragility,' For mocking their new pronouns and their lack of masculinity. I m master of the epic troll, the comeback, and the searing snark, A digital guerrilla who is fighting battles in the dark. I know the secret symbols and the dog-whistles historical, From Pepe the Frog to Let s Go Brandon, in order categorical; In short, for fighting culture wars with rhetoric rhetorical, I am the very model of a patriot polemical. *** I stand for true expression, for the comics and the edgy clown, Whose satire is too based for all the fragile folks in town. They say my speech is 'violence' while my spirit they are trampling, The way they try to silence me is really quite a startling sampling Of 1984, which I've not read but thoroughly understand, Is all about the tyranny that's gripping this once-blessed land. My humor is a weapon, it s a razor-bladed, sharp critique, (Though sensitive elites will call my masterpiece a form of hate speech ). They cannot comprehend my need for freedom from all consequence, They call it 'hate,' I call it 'jokes,' they just don't have a lick of sense. So when they call me bigot for the spicy memes I post pro bono, I tell them their the ones who're cancelled, I'm the victim here, you know! Then I can write a screed against the globalist cabal, you see, And tell you every detail of their vile conspiracy. In short, when I use logic that is flexible and personal, I am the very model of a patriot controversial. *** I'm very well acquainted with the scientific method, too, It's watching lengthy YouTube vids until my face is turning blue. I trust the heartfelt testimony of a tearful, blonde ex-nurse, But what a paid fact-checker says has no effect and is perverse. A PhD is proof that you've been brainwashed by the leftist mob, While my own research on a meme is how I really do my job. I know that masks will suffocate and vaccines are a devil's brew, I learned it from a podcast host who used to sell brain-boosting goo. He scorns the lamestream media, the CNNs and all the rest, Whose biased reporting I've put fully to a rigorous test By only reading headlines and confirming what I already knew, Then posting my analysis for other patriots to view. With every "study" that they cite from sources I can't stand to hear, My own profound conclusions become ever more precisely clear. In short, when I've debunked the experts with a confident "Says who?!", I am the very model of a researcher who sees right through you. *** But all these culture wars are just a sleight-of-hand, a clever feint, To hide the stolen ballots and to cover up the moral taint Of D.C. pizza parlors and of shipping crates from Wayfair, it s true, It's all connected in a plot against the likes of me and you! I've analyzed the satellite photography and watermarks, I understand the secret drops, the cryptic Qs, the coded sparks. The habbening is coming, friends, just give it two more weeks or three, When all the traitors face the trials for their wicked treachery. They say that nothing happened and the dates have all gone past, you see, But that's just disinformation from the globalist enemy! Their moving goalposts constantly, a tactic that is plain to see, To wear us down and make us doubt the coming, final victory! My mind can see the patterns that a simple sheep could never find, The hidden puppet-masters who are poisoning our heart and mind. In short, when I link drag queens to the price of gas and child-trafficking, I am the very model of a patriot whose brain is quickening! *** My pickup truck's a testament to everything that I hold dear, With vinyl decals saying things the liberals all hate and fear. The Gadsden flag is waving next to one that's blue and starkly thin, To show my deep respect for law, except the feds who're steeped in sin. There's Punisher and Molon Labe, so that everybody knows I'm not someone to trifle with when push to final shoving goes. I've got my tactical assault gear sitting ready in the den, Awaiting for the signal to restore our land with my fellow men. I practice clearing rooms at home when my mom goes out to the store, A modern Minuteman who's ready for a civil war. The neighbors give me funny looks, I see them whisper and take note, They'll see what's what when I'm the one who's guarding checkpoints by their throat. I am a peaceful man, of course, but I am also pre-prepared, To neutralize the threats of which the average citizen's unscared. In short, when my whole identity's a brand of tactical accessory, You'll say a better warrior has never graced a Cabela's registry. *** They say I have to tolerate a man who thinks he is a dame, While feminists and immigrants are putting out my vital flame! There taking all the jobs from us and giving them to folks who kneel, And "woke HR" says my best jokes are things I'm not allowed to feel! An Alpha Male is what I am, a lion, though I'm in this cubicle, My life's frustrations can be traced to policies Talmudical. They lecture me on privilege, I, who have to pay my bills and rent! While they give handouts to the lazy, worthless, and incompetent! My grandad fought the Nazis! Now I have to press a key for one To get a call-rep I can't understand beneath the blazing sun Of global, corporate tyranny that's crushing out the very soul Of men like me, who've lost their rightful, natural, and just control! So yes, I am resentful! And I'm angry! And I'm right to be! They've stolen all my heritage and my masculinity! In short, when my own failures are somebody else's evil plot, I am the very model of the truest patriot we've got! *** There putting chips inside of you! Their spraying things up in the sky! They want to make you EAT THE BUGS and watch your very spirit die! The towers for the 5G are a mind-control delivery tool! To keep you docile while the children suffer in a grooming school! The WEF, and Gates, and Soros have a plan they call the 'Great Reset,' You'll own no property and you'll be happy, or you'll be in debt To social credit overlords who'll track your every single deed! There sterilizing you with plastics that they've hidden in the feed! The world is flat! The moon is fake! The dinosaurs were just a lie! And every major tragedy's a hoax with actors paid to cry! I'M NOT INSANE! I SEE THE TRUTH! MY EYES ARE OPEN! CAN'T YOU SEE?! YOU'RE ALL ASLEEP! YOU'RE COWARDS! YOU'RE AFRAID OF BEING TRULY FREE! My heart is beating faster now, my breath is short, my vision's blurred, From all the shocking truth that's in each single, solitary word! I've sacrificed my life and friends to bring this message to the light, so... You'd better listen to me now with all your concentrated might, ho! *** For my heroic struggle, though it's cosmic and it's biblical, Is waged inside the comments of a post that's algorithm-ical. And still for all my knowledge that's both tactical and practical, My mom just wants the rent I owe and says I'm being dramatical.
About 90% of my Debian contributions this month were
sponsored by Freexian.
You can also support my work directly via
Liberapay or GitHub
Sponsors.
DebConf
I attended DebConf for the first time in 11 years (my last one was DebConf
14 in Portland). It was great! For once I had a conference where I had a
fairly light load of things I absolutely had to do, so I was able to spend
time catching up with old friends, making some new friends, and doing some
volunteering - a bit of Front Desk, and quite a lot of video team work where
I got to play with sound desks and such. Apparently one of the BoFs ( birds
of a feather , i.e. relatively open discussion sessions) where I was
talkmeister managed to break the automatic video cutting system by starting
and ending precisely on time, to the second, which I m told has never
happened before. I ll take that.
I gave a talk about
Debusine,
along with helping Enrico run a Debusine
BoF.
We still need to process some of the feedback from this, but are generally
pretty thrilled about the reception. My personal highlight was getting a
shout-out in a talk from
CERN
(in the slide starting at 32:55).
Other highlights for me included a Python team
BoF,
Ian s tag2upload
talk
and some very useful follow-up discussions, a session on archive-wide
testing,
a somewhat brain-melting whiteboard session about the multiarch interpreter
problem ,
several
useful
discussions
about salsa.debian.org, Matthew s talk on how Wikimedia automates their Debian package
builds,
and many others. I hope I can start attending regularly again!
OpenSSH
Towards the end of a release cycle, people tend to do more upgrade testing,
and this sometimes results in interesting problems. Manfred Stock reported
No new SSH connections possible during large part of upgrade to Debian
Trixie , and after a little testing in a
container I confirmed that this was a reproducible problem that would have
affected many people upgrading from Debian 12 (bookworm), with potentially
severe consequences for people upgrading remote systems. In fact, there
were two independent problems that each led to much the same symptom:
sshd listener process into two
pieces: a minimal network listener (still called sshd), and an
sshd-session process dealing with each individual session. (OpenSSH
10.0 further split sshd-session, adding an sshd-auth process that
deals with the user authentication phase of the protocol.) This hardens
the OpenSSH server by using different address spaces for privileged and
unprivileged code.
Before this change, when sshd received an incoming connection, it
forked and re-executed itself with some special parameters to deal with
it. After this change, it forks and executes sshd-session instead,
and sshd no longer accepts the parameters it used to accept for this.
Debian package upgrades happen in two phases: first we unpack the new
files onto disk, and then we run some package-specific configuration
steps which usually include things like restarting services. (I m
simplifying, but this is good enough for this post.) Normally this is
fine, and in fact desirable: the old service keeps on working, and this
approach often allows breaking what would otherwise be difficult cycles
by ensuring that the system is in a more coherent state before trying to
restart services. However, in this case, unpacking the new files onto
disk immediately means that new SSH connections no longer work: the old
sshd receives the connection and tries to hand it off to a
freshly-executed copy of the new sshd binary on disk, which no longer
supports this.
If you re just upgrading OpenSSH on its own or with a small number of
other packages, this isn t much of a problem as the listener will be
restarted quite soon; but if you re upgrading from bookworm to trixie,
there may be a long gap when you can t SSH to the system any more, and
if something fails in the middle of the upgrade then you could be in trouble.
So, what to do? I considered keeping a copy of the old sshd around
temporarily and patching the new sshd to re-execute it if it s being
run to handle an incoming connection, but that turned out to fail in my
first test: dependencies are normally only checked when configuring a
package, so it s possible to unpack openssh-server before unpacking a
newer libc6 that it depends on, at which point you can t execute the
new sshd at all. (That also means that the approach of restarting the
service at unpack time instead of configure time is a non-starter.) We
needed a different idea.
dpkg, the core Debian package manager, has a specialized facility
called diversions : you can tell it that when it s unpacking a
particular file it should put it somewhere else instead. This is
normally used by administrators when they want to install a
locally-modified version of a particular file at their own risk, or by
packages that knowingly override a file normally provided by some other
package. However, in this case it turns out to be useful for
openssh-server to temporarily divert one of its own files! When
upgrading from before 9.8, it now diverts /usr/sbin/sshd to
/usr/sbin/sshd.session-split before the new version is unpacked, then
removes the diversion and moves the new file into place once it s ready
to restart the service; this reduces the period when incoming
connections fail to a minimum. (We actually have to pretend that the
diversion is being performed on behalf of a slightly different package
since we re using dpkg-divert in a strange way here, but it all works.)
sshd, check for a compatible version
of the OpenSSL library when they start up. This check used to be very
picky, among other things requiring both the major and minor number to
match. OpenSSL 3 has a better versioning
policy,
and so OpenSSH 9.4p1 relaxed this
check.
Unfortunately, bookworm shipped with OpenSSH 9.2p1, which means that as
soon as you unpack the new libssl3 during an upgrade (actually
libssl3t64 due to the 64-bit time_t
transition), sshd
stops working. This couldn t be fixed by a change in trixie; we needed
to change bookworm in advance of the upgrade so that it would tolerate
newer versions of OpenSSL. And time was tight if we wanted to maximize
the chance that people would apply that stable update before upgrading
to trixie; there isn t going to be another point release of Debian 12
before the release of Debian 13.
Fortunately, there s a
stable-updates
mechanism for exactly this sort of thing, and the stable release
managers kindly accepted my proposal to fix this there.
stable-updates / bookworm-updates, which is enabled by default) before
starting the upgrade to trixie, everything should be fine. Many thanks to
Manfred for reporting this with just enough time to spare that we were able
to fix it before Debian 13 is released in a few days!
debmirror
I did my twice-yearly refresh of debmirror s mirror_size
documentation,
and applied a patch from Christoph Goehre
to improve mirroring of installer files.
madison-lite
I proposed renaming this project along
with the rmadison tool in devscripts, although I m not yet sure what a
good replacement name would be.
Python team
I upgraded python-expandvars, python-typing-extensions (in experimental),
and webtest to new upstream versions.
I backported fixes for some security vulnerabilities to unstable:
Severity: important:
There's a lovely device called a pistorm, an adapter board that glues a Raspberry Pi GPIO bus to a Motorola 68000 bus. The intended use case is that you plug it into a 68000 device and then run an emulator that reads instructions from hardware (ROM or RAM) and emulates them. You're still limited by the ~7MHz bus that the hardware is running at, but you can run the instructions as fast as you want.
Snapshot mirroring in Debian (and Ubuntu)
The use of snapshots has been routine in both Debian and Ubuntu for several years now or more than 15 years for Debian, to be precise. Snapshots have become not only very reliable, but also an increasingly important part of the Debian package archive.
This week, I encountered a problem at work that could be perfectly solved by correctly using the Snapshot service. However, while trying to figure it out, I ran into some shortcomings in the documentation. Until the docs are updated, I am publishing this blog post to make this information easier to find.
Problem 1: Ensure fully reproducible creation of Docker containers with the exact same packages installed, even years after the original images were generated.
Solution 1: Pin everything! Use a pinned source image in the FROM statement, such as debian:trixie-20250721-slim, and also pin the APT package sources to the "same" date - "20250722".
Hint: The APT packages need to be newer than the Docker image base. If the APT packages are a bit newer, that's not a problem, as APT can upgrade packages without issues. However, if your Docker image has a newer package than your APT package sources, you will have a big problem. For example, if you have "libbearssl0" version 0.6-2 installed in the Docker image, but your package sources only have the older version 0.6-1, you will fail when trying to install the "libbearssl-dev" package. This is because you only have version 0.6-1 of the "-dev" package available, which hard-depends on exactly version 0.6-1 of "libbearssl0", and APT will refuse to downgrade an already installed package to satisfy that dependency.
Problem 2: You are using a lot of images in a lot of executions and building tens of thousands of images per day. It would be a bad idea to put all this load on public Debian servers. Using local sources is also faster and adds extra security.
Solution 2: Use local (transparently caching) mirrors for both the Docker Hub repository and the APT package source.
At this point, I ran into another issue I could not easily figure out how to specify a local mirror for the snapshot part of the archive service.
First of all, snapshot support in both Ubuntu and Debian accepts both syntaxes described in the Debian and Ubuntu documentation above. The documentation on both sites presents different approaches and syntax examples, but both work.
The best approach nowadays is to use the "deb822" sources syntax. Remove /etc/apt/sources.list (if it still exists), delete all contents of the /etc/apt/sources.list.d directory, and instead create this file at /etc/apt/sources.list.d/debian.sources:
Types: deb URIs: https://common.mirror-proxy.local/ftp.debian.org/debian/ Suites: trixie Components: main non-free-firmware non-free contrib Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg Snapshot: 20250722
sudo apt update --print-uris, you will see that your configuration accesses your mirror, but does not actually use the snapshot.
Next, add the following to /etc/apt/apt.conf.d/80snapshots:
APT::Snapshot "20250722";
sudo apt update --print-uris again. I've got good news and bad news! The good news is that we are now actually using the snapshot we specified (twice). The bad news is that we are completely ignoring the mirror and going directly to snapshots.debian.org instead.
Finding the right information was a bit of a challenge, but after a few tries, this worked: to specify a custom local mirror of the Debian (or Ubuntu) snapshot service, simply add the following line to the same file, /etc/apt/apt.conf.d/80snapshots:
Acquire::Snapshots::URI::Override::Origin::debian "https://common.mirror-proxy.local/snapshot.debian.org/archive/debian/@SNAPSHOTID@/";
sudo apt update --print-uris, you will see that the requests go to your mirror and include the specified snapshot identifier. Success!
Now you can install any packages you want, and everything will be completely local and fully reproducible, even years later!
Get a list of current display outputs. You can also just check it in display settings of your DE/WM with wdisplaysrajudev@sanganak ~> swaymsg -t get_outputs
Output LVDS-1 &aposSeiko Epson Corporation 0x3047 Unknown&apos (focused)
Current mode: 1366x768 @ 60.002 Hz
Power: on
Position: 0,0
Scale factor: 1.000000
Scale filter: nearest
Subpixel hinting: rgb
Transform: normal
Workspace: 2
Max render time: off
Adaptive sync: disabled
Allow tearing: no
Available modes:
1366x768 @ 60.002 Hz
Single physical display of the laptopsway-vdctl . It is currently not available within Debian packages, so we need to install it manually. $ git clone https://github.com/odincat/sway-vdctl.git
$ cd sway-vdctl
$ cargo build --releaseThis will generate the binary with the name main under target/release . We can then copy this binary to our bin folder. $ sudo cp target/release/main /usr/local/bin/vdctlNow we have the vdctl command available. $ vdctl --help
Usage: vdctl [OPTIONS] <ACTION> [VALUE]
Arguments:
<ACTION>
Possible values:
- create: Create new output based on a preset
- kill: Terminate / unplug an active preset
- list: List out active presets
- next-number: Manually set the next output number, in case something breaks
- sync-number: Sync the next output number using &aposswaymsg -t get_outputs&apos
[VALUE]
Preset name to apply, alternatively a value
[default: ]
Options:
--novnc
do not launch a vnc server, just create the output
-h, --help
Print help (see a summary with &apos-h&apos)
Before creating the virtual display, we need to set it&aposs properties at .config/vdctl/config.json . I am using Xiaomi Pad 6 tablet as my external display. You can adjust the properties according to the device you want to use as a second display. $ (text-editor) .config/vdctl/config.json
"host": "0.0.0.0",
"presets": [
"name": "pad6",
"scale_factor": 2,
"port": 9901,
"resolution":
"width": 2800,
"height": 1800
]
In the JSON, you can set the display resolution according to your external device and other configurations. If you want to configure multiple displays, you can add another entry into the presets in the json file. You can refer to example json file into the git repository. Now we need to actually create the virtual monitor.$ vdctl create pad6
Created output, presumably &aposHEADLESS-1&apos
Set resolution of &aposHEADLESS-1&apos to 2800x1800
Set scale factor of &aposHEADLESS-1&apos to 2
Preset &apospad6&apos (&aposHEADLESS-1&apos: 2800x1800) is now active on port 9901Now if you will check the display outputs in your display settings or from command line, you will see two different displays. $ swaymsg -t get_outputs
Output LVDS-1 &aposSeiko Epson Corporation 0x3047 Unknown&apos
Current mode: 1366x768 @ 60.002 Hz
Power: on
Position: 0,0
Scale factor: 1.000000
Scale filter: nearest
Subpixel hinting: rgb
Transform: normal
Workspace: 2
Max render time: off
Adaptive sync: disabled
Allow tearing: no
Available modes:
1366x768 @ 60.002 Hz
Output HEADLESS-1 &aposUnknown Unknown Unknown&apos (focused)
Current mode: 2800x1800 @ 0.000 Hz
Power: on
Position: 1366,0
Scale factor: 2.000000
Scale filter: nearest
Subpixel hinting: unknown
Transform: normal
Workspace: 3
Max render time: off
Adaptive sync: disabled
Allow tearing: no
Also in the display settings.
Display settings on Wayland with physical and virtual monitor outputwayvnc but you can use any VNC server package. Install wayvnc$ sudo apt install wayvncNow we will serve our virtual display HEADLESS-1 with wayvnc. $ wayvnc -o HEADLESS-1 0.0.0.0 5900You can adjust the port number as per your need. The process from laptop side is done. Now install any VNC software on your tablet. I am using AVNC, which is available on F-Droid. In the VNC software interface, add a new connection with the IP address of your laptop and the port started by wayvnc. Remember, both your laptop and phone need to be on the same Wi-Fi network.
AVNC interface with the connection details to connect to the virtual monitor.Next.