Gootosocial to a Pleroma one. While GTS is kinda cute (lightweight and easy to manage) of a software, the inability to fetch/scroll through people's past toots when visiting a profile or having access to a federated timeline and a proper search functionality ...etc felt like handicap for the past N months.
@bender@twtxt.net yeah, Iāve been reading through the documentation last night and it felt overwhelming for a minute⦠+1 point goes to GTSās docs. but hey, Iāll be taking the easy route: podman-compose up -d they provide both a container image and an example compose file in a separate git repo but Iām wondering why that is not mentioned anywhere in the docs, (unless it is and I havenāt seen it yet)
config.yaml, and 4 lines Caddyfile, and you will see how easy it is.
@prologic@twtxt.net I am telling you that is extremely easy: https://docs.gotosocial.org/en/latest/advanced/host-account-domain/. Now, if you are putting into account your rather⦠unique setup, then thatās another story.
@prologic@twtxt.net The main thing that I tought of is that whomever is abusing your services must be a well known actor (by range/set of IPs) that got reported by other Crowdsec users. So to my simpletonās understanding, your reverse-proxy/web server passes the requests by crowdsec for processing, they get banned for $N hours if the source has already been blacklisted by the community or violates any of a set of behavior base rules (and even more hours for repeat offenders); otherwise the requests/responses go as per usual. Not sure if I got things right but this might help paint a better picture of the process.
FTR, I see one (two) issues with PyQt6, sadly:
- The PyQt6 docs appear to be mostly auto-generated from the C++ docs. And they contain many errors or broken examples (due to the auto-conversion). I found this relatively unpleasent to work with.
- (Until Python finally gets rid of the Global Interpreter Lock properly, itās not really suited for GUI programs anyway ā in my opinion. You canāt offload anything to a second thread, because the whole program is still single-threaded. This would have made my fractal rendering program impossible, for example.)
I used Gemini (the Google AI) twice at work today, asking about Google Workspace configuration and Google Cloud CLI usage (because we use those a lot). Youād think that itād be well-suited for those topics. It answered very confidently, yet completely wrong. Just wrong. Made-up CLI arguments, whatever. It took me a while to notice, though, because itās so convincing and, well, you implicitly and subconsciously trust the results of the Google AI when asking about Google topics, donāt you?
Will it get better over time? Maybe. But what I really want is this:
- Good, well-structured, easy-to-read, proper documentation. Google isnāt doing too bad in this regard, actually, itās just that they have so much stuff that itās hard to find what youāre looking for. Hence ā¦
- ⦠I want a good search function. Just give me a good fuzzy search for your docs. Thatās it.
I just donāt have the time or energy to constantly second-guess this stuff. Give me something reliable. Something that is designed to do the right thing, not toy around with probabilities. āAI for everythingā is just the wrong approach.
I canāt disable a bloody loud beep from my Lenovo laptop ākeyboard panic, you canāt type right nowā. Online docs mention a UEFI setting that is just not there.This š© makes me so angry.
@movq@www.uninformativ.de Yeah, give it a shot. At worst you know that you have to continue your quest. :-)
Fun fact, during a semester break I was actually a little bored, so I just started reading the Qt documentation. I didnāt plan on using Qt for anything, though. I only looked at the docs because they were on my bucket list for some reason. Qt was probably recommended to me and coming from KDE myself, that was motivation enough to look at the docs just for fun.
The more I read, the more hooked I got. The documentation was extremely well written, something Iāve never seen before. The structure was very well thought out and I got the impression that I understood what the people thought when they actually designed Qt.
A few days in I decided to actually give it a real try. Having never done anything in C++ before, I quickly realized that this endeavor wonāt succeed. I simply couldnāt get it going. But I found the Qt bindings for Python, so that was a new boost. And quickly after, I discovered that there were even KDE bindings for Python in my package manager, so I immediately switched to them as that integrated into my KDE desktop even nicer.
I used the Python KDE bindings for one larger project, a planning software for a summer camp that we used several years. Itās main feature was to see who is available to do an activity. In the past, that was done on a large sheet of paper, but people got assigned two activities at the same time or werenāt assigned at all. So, by showing people in yellow (free), green (one activity assigned) and red (overbooked), this sped up and improved the planning process.
Another core feature was to generate personalized time tables (just like back in school) and a dedicated view for the morning meeting on site.
It was extended over the years with all sorts of stuff. E.g. I then implemented a warning if all the custodians of an activitiy with kids were underage to satisfy new the guidelines that there should be somebody of age.
Just before the pandemic I started to even add support for personalized live views on phones or tablets during the planning process (with web sockets, though). This way, people could see their own schedule or independently check at which day an activity takes place etc. For these side quests, they donāt have to check the large matrix on the projector. But the project died there.
Hereās a screenshot from one of the main views: https://lyse.isobeef.org/tmp/k3man.png
This Python+Qt rewrite replaced and improved the Java+Swing predecessor.
Actually. Looking at the template and the BeerCSS docs, I think Iām just using the wrong elements and doing the wrong thing in the template/partial structure itself š¤ Probably need to wrap text in something else other than a plain āol <p>
āI cried every dayā: Victoria Beckham tells of fashion woes in new Netflix doc
The former Spice Girlās new Netflix documentary has landed - under the shadow of a reported family feud. ā Read more
Notes from the 2025 Git Contributorās Summit
Taylor Blau has posted an\āØextensive set of notes from the recently concluded Git Contributorās
Summit. Covered topics include the SHA-256 transition, Rust, Change-ID
headers, GitĀ 3.0, and many more. The note are also available on\āØGoogle Docs for those who prefer that format. ā Read more
[$] Fedora floats AI-assisted contributions policy
The Fedora \āØCouncil began a process to create a policy on AI-assisted
contributions in 2024, starting with a survey to ask the community
its opinions about AI and using AI technologies in Fedora. On
SeptemberĀ 25, Jason Brooks published
a draft policy for discussion; so far, in keeping with the spirit of
compromise, it has something ⦠ā Read more
[$] Linting Rust code in the kernel
Klint is a Rust compiler extension
developed by Gary Guo to run some
kernel-specific lint rules, which may also be useful for embedded system
development. He spoke about his
recent work on the project at
Kangrejos 2025. The next day, Alejandra GonzƔlez
led a discussion about Rustās normal linter,
Clippy. The two tools ⦠ā Read more
@prologic@twtxt.net No, this is a Linux manpage from the man-pages project: https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/man/man7/ascii.7
I do have an idea whatās going on. Could be an unfortunate interaction between the table preprocessor tbl and the man macro package. š¤
Dear dev.alessandrocutolo.it, do you really need to fetch my twtxt feed every 20-30 seconds? š
Not that itās posing a problem, but I feel like this could be optimized. For example, how about using the if-modified-since request header: https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/If-Modified-Since
apt manpage of Ubuntu recently, which, for some reason, uses blue text in one place:
Ah, so apparently they donāt like writing manpages anymore and instead use XML:
https://salsa.debian.org/apt-team/apt/-/blob/main/doc/apt.8.xml
And then they use XSLT on top and what not:
https://salsa.debian.org/apt-team/apt/-/blob/main/doc/manpage-style.xsl.cmake.in
Itās not even explicitly blue:
https://salsa.debian.org/apt-team/apt/-/blob/main/doc/apt.ent?ref_type=heads#L17
Abstractions upon abstractions upon abstractions.
Look at that, a mate just told me: What if YAML had even more security issues!? YAMLScript! https://yamlscript.org/doc/cheat/
Hereās an example of X11/Xlib being old and archaic.
X11 knows the data type ācardinalā. For example, the window property _NET_WM_ICON (which holds image data for icons) is an array of ācardinalā. I am already not really familiar with that word and Iām assuming that it comes from mathematics:
https://en.wikipedia.org/wiki/Cardinal_number
(It could also be a bird, but probably not: https://en.wikipedia.org/wiki/Cardinalidae)
We would probably call this an āintegerā today.
EWMH says that icons are arrays of cardinals and that theyāre 32-bit numbers:
https://specifications.freedesktop.org/wm-spec/latest-single/#id-1.6.13
So itās something like 0x11223344 with 0x11 being the alpha channel, 0x22 is red, and so on.
You would assume that, when you retrieve such an array from the X11 server, youād get an array of uint32_t, right?
Nope.
Xlib is so old, they use char for 8-bit stuff, short int for 16-bit, and long int for 32-bit:
That is congruent with the general C data types, so it does make sense:
https://en.wikipedia.org/wiki/C_data_types
Now the funny thing is, on modern x86_64, the type long int is actually 64 bits wide.
The result is that every pixel in a Pixmap, for example, is twice as large in memory as it would need to be. Just because Xlib uses long int, because uint32_t didnāt exist, yet.
And this is something that I wouldnāt know how to fix without breaking clients.
@lyse@lyse.isobeef.org @kat@yarn.girlonthemoon.xyz I spent so much time in the past figuring out if something is a dict or a list in YAML, for example.
What are the types in this example?
items:
- part_no: A4786
descrip: Water Bucket (Filled)
price: 1.47
quantity: 4
- part_no: E1628
descrip: High Heeled "Ruby" Slippers
size: 8
price: 133.7
quantity: 1
items is a dict containing ⦠a list of two other dicts? Right?
It is quite hard for me to grasp the structure of YAML docs. š¢
The big advantage of YAML (and JSON and TOML) is that itās much easier to write code for those formats, than it is with XML. json.loads() and youāre done.
After many weeks and probably at least a hundred hours of research, discussions and in-person viewing, I think Iāve finally come up with my Final Choices (shortlist) of a Hybrid Camper / Caravan that I think will suit my family and that Iāll enjoy (far less work for me to setup and teardown). The one at the top of the list Iām leaning towards os the SWAG SCT16 Family 4B
#Camping #CampersHTTP referrers are quite broken, arenāt they?
Because of that recent storm on my blog, I had a peek at them. Thereās a lot of garbage in there. For example, https://docs.freebsd.org/en/books/handbook/disks-virtual.html is supposed to refer to one of my blog posts ā¦
Whatās going on here?
Been spending a lot of time researching campers as I want to / plan to upgrade our current Camper Trailoer (forward fold) Stoney Creek XL-FF6 to a slightly larger Hybrid Camper/Caravan with ensuite, internal kitchenette, external full hitchen, pop-top roof and twin bunks.
This is the summary and whittling down of my research so far: https://wiki.mills.io/s/1103bc9c-dd75-4a98-b64b-8dadc5b0e51f/doc/comparision-Ln03Moiibq
I did a ālectureā/āworkshopā about this at work today. 16-bit DOS, real mode. š¾ Pretty cool and the audience (devs and sysadmins) seemed quite interested. š„³
- People used the Intel docs to figure out the instruction encodings.
- Then they wrote a little DOS program that exits with a return code and they used uhex in DOSBox to do that. Yes, we wrote a COM file manually, no Assembler involved. (Many of them had never used DOS before.)
- DEBUG from FreeDOS was used to single-step through the program, showing what it does.
- This gets tedious rather quickly, so we switched to SVED from SvarDOS for writing the rest of the program in Assembly language. nasm worked great for us.
- At the end, we switched to BIOS calls instead of DOS syscalls to demonstrate that the same binary COM file works on another OS. Also a good opportunity to talk about bootloaders a little bit.
- (I think they even understood the basics of segmentation in the end.)
The 8086 / 16-bit real-mode DOS is a great platform to explain a lot of the fundamentals without having to deal with OS semantics or executable file formats.
Now that was a lot of fun. š„³ Itās very rare that we do something like this, sadly. I love doing this kind of low-level stuff.
Okay, hereās a thing I like about Rust: Returning things as Option and error handling. (Or the more complex Result, but itās easier to explain with Option.)
fn mydiv(num: f64, denom: f64) -> Option<f64> {
// (Letās ignore precision issues for a second.)
if denom == 0.0 {
return None;
} else {
return Some(num / denom);
}
}
fn main() {
// Explicit, verbose version:
let num: f64 = 123.0;
let denom: f64 = 456.0;
let wrapped_res = mydiv(num, denom);
if wrapped_res.is_some() {
println!("Unwrapped result: {}", wrapped_res.unwrap());
}
// Shorter version using "if let":
if let Some(res) = mydiv(123.0, 456.0) {
println!("Hereās a result: {}", res);
}
if let Some(res) = mydiv(123.0, 0.0) {
println!("Huh, we divided by zero? This never happens. {}", res);
}
}
You canāt divide by zero, so the function returns an āerrorā in that case. (Option isnāt really used for errors, IIUC, but the basic idea is the same for Result.)
Option is an enum. It can have the value Some or None. In the case of Some, you can attach additional data to the enum. In this case, we are attaching a floating point value.
The caller then has to decide: Is the value None or Some? Did the function succeed or not? If it is Some, the caller can do .unwrap() on this enum to get the inner value (the floating point value). If you do .unwrap() on a None value, the program will panic and die.
The if let version using destructuring is much shorter and, once you got used to it, actually quite nice.
Now the trick is that you must somehow handle these two cases. You must either call something like .unwrap() or do destructuring or something, otherwise you canāt access the attached value at all. As I understand it, it is impossible to just completely ignore error cases. And the compiler enforces it.
(In case of Result, the compiler would warn you if you ignore the return value entirely. So something like doing write() and then ignoring the return value would be caught as well.)
@prologic@twtxt.net Iām trying to call some libc functions (because the Rust stdlib does not have an equivalent for getpeername(), for example, so I donāt have a choice), so I have to do some FFI stuff and deal with raw pointers and all that, which is very gnarly in Rust ā because youāre not supposed to do this. Things like that are trivial in C or even Assembler, but I have not yet understood what Rust does under the hood. How and when does it allocate or free memory ⦠is the pointer that I get even still valid by the time I do the libc call? Stuff like that.
I hope that I eventually learn this over time ⦠but I get slapped in the face at every step. Itās very frustrating and Iām always this š¤ close to giving up (only to try again a year later).
Oh, yeah, yeah, I guess I could ājustā use some 3rd party library for this. socket2 gets mentioned a lot in this context. But I donāt want to. I literally need one getpeername() call during the lifetime of my program, I donāt even do the socket(), bind(), listen(), accept() dance, I already have a fully functional file descriptor. Using a library for that is total overkill and Iād rather do it myself. (And look at the version number: 0.5.10. The library is 6 years old but theyāre still saying: āNah, weāre not 1.0 yet, we reserve the right to make breaking changes with every new release.ā So many Rust libs are still unstable ā¦)
⦠and I could go on and on and on ⦠š¤£
fn sub(foo: &String) {
println!("We got this string: [{}]", foo);
}
fn main() {
// "Hello", 0x00, 0x00, "!"
let buf: [u8; 8] = [0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x00, 0x00, 0x21];
// Create a string from the byte array above, interpret as UTF-8, ignore decoding errors.
let lossy_unicode = String::from_utf8_lossy(&buf).to_string();
sub(&lossy_unicode);
}
Create a string from a byte array, but the result isnāt a string, itās a cow š®, so you need another to_string() to convert your āstringā into a string.
- https://doc.rust-lang.org/std/string/struct.String.html#method.from_utf8_lossy
- https://doc.rust-lang.org/std/borrow/enum.Cow.html
I still have a lot to learn.
(into_owned() instead of to_string() also works and makes more sense to me, itās just that the compiler suggested to_string() first, which led to this funny example.)
@lyse@lyse.isobeef.org Rust is so different and, at the same time, so complex ā itās not far fetched to assume that I simply donāt understand whatās going on here. The docs appear to be clear, but alas ⦠is it a bugs in the docs? Is it a lack of experience on my part? Who knows.
By the way, looks like there was a bit of a discussion regarding that name:
So I was using this function in Rust:
https://doc.rust-lang.org/std/path/struct.Path.html#method.display
Note the little 1.0.0 in the top right corner, which means that this function has been āstable since Rust version 1.0.0ā. Weāre at 1.87 now, so weāre good.
Then I compiled my program on OpenBSD with Rust 1.86, i.e. just one version behind, but well ahead of 1.0.0.
The compiler said that I was using an unstable library feature.
Turns out, that function internally uses this:
https://doc.rust-lang.org/std/ffi/struct.OsStr.html#method.display
And that is only available since Rust 1.87.
How was I supposed to know this? š¤Øš«©
@prologic@twtxt.net Yeah, itās difficult, you often donāt get what youād expect. They also make heavy use of 3rd party libraries. IIUC, for random numbers, they refer to this library. Iāve read many times that the Rust stdlib is intentionally minimalistic (to make it easier to maintain and port and all that).
Iām struggling with this, using 3rd party libs for so many things isnāt really my cup of tea. Iāll probably make my own tiny little āstandard libraryā. Itās silly, but I donāt see any other options. š¤·
Which one does it handle? Vim:tw=50: at the foot of doc or :set tw=78? ā Read more
[$] Improving Fedoraās documentation
At Flock,
Fedoraās annual developer conference, held in Prague from JuneĀ 5
to JuneĀ 8, two members of the Fedora\āØdocumentation team, Petr BokoÄ and Peter Boy, led a\āØsession on the state of Fedora documentation. The pair covered a
brief history of the projectās documentation since the days of [FedoraĀ CoreĀ 1](https://lwn.net/Articles/56036/ ⦠ā Read more
Dr Martens goes from punk beginnings to clinging on
Dr Martens, known for its punk roots, released its financial forecast on Friday amid concerns the brand may be on the brink. ā Read more
Go cryptography security audit (The Go Blog)
Roland Shoemaker has published a blog post about a
recent security audit of the cryptography packages shipped as part of
the Go standard library. The audit, performed by the Trail of Bits security firm,
uncovered one low-severity vulnerability in the legacy Go+BoringCrypto
integration, as well as a handful of informational findings.
During the review, there were ⦠ā Read more
āA Huge Scandalā: Internal Doc Exposes Trump-Musk Hunt for Social Security Fraud as a Sham
Jake Johnson, Ā Senior Editor and WriterĀ - Ā Common Dreams
_Stephan:Ā I see all of this disruption of federal government agencies as part of a scheme to cause chaos, confusion, and create misdirection of the attention of the American people. Meanwhile, a coup is being carried out to turn the United States from the democratic republic the Founders des ⦠ā Read more
Podman 5.5.0 released
Version\āØ5.5.0 of the Podman container-management tool has been
released. Notable features include the addition of a podmanĀ machineĀ cp command to copy files into a running Podman\āØVM, a podmanĀ artifactĀ extract command to copy
contents of an OCI\āØartifact to disk, and a --mount=artifa ... ā [Read more](https://lwn.net/Articles/1021217/)
Documentation done right: A developerās guide
Learn why and how you should write docs for your project with the DiƔtaxis framework.
The post Documentation done right: A developerās guide appeared first on The GitHub Blog. ā Read more
Thanks, @movq@www.uninformativ.de! That seems to be much easier. Itās already implemented in the Python docs as examples of recvmsg(ā¦) and sendmsg(ā¦):
- https://docs.python.org/3/library/socket.html#socket.socket.recvmsg
- https://docs.python.org/3/library/socket.html#socket.socket.sendmsg
I looked at them sooo many times in order to figure out why my SCM_CREDENTIALS sending code didnāt work. :-D
[$] Debianās AWKward essential set
The Debian project has the concept of essential\āØpackages, which provide the bare minimum functionality considered
absolutely necessary (or āessentialā) for a system to
function. Packages tagged as essential, and the packages that are
required by the set of essential packages, are always installed as
part of a Debian system. However, Debianās packaging rules do not
require developers to explicitly declare dependencies on t ⦠ā Read more
[$] Filtering fanotify events with BPF
Linux systems can have large filesystems; trying to keep up with the
stream of
fanotify filesystem-monitoring notifications for them can be a struggle.
Fanotify is one of a few ways to monitor accesses to filesystems provided by the kernel.
Song Liu led a discussion
on how to improve in-kernel filtering of fanotify events to a joint
session of the filesystem and BPF tracks at the 2025 Linux Storage, Filesystem,
Memo ⦠ā Read more
@movq@www.uninformativ.de @kat@yarn.girlonthemoon.xyz @quark@ferengi.one In 2014 one person created protocol ii. Later it forked in IDEC. Why i said this? Because itās simple āfederatedā forum-like protocol where from your station fetch another every 5-10 minutes. Stations has topic-based channels like idec.talks, linux.16, haiku.os, zx.spectrum. In short itās FIDO but.. more modern? Documentation: https://github.com/idec-net/new-docs (mostly Russian, but you can use translator, also protocol already translated to english)
Confession:
Iāve never found microblogging like twtxt or the Fediverse or any other āmodernā social media to be truly fulfilling/satisfying.
The reason is that it is focused so much on people. You follow this or that person, everybody spends time making a nice profile page, the posts are all very āego-centricā. Seriously, it feels like everybody is on an ego-trip all the time (this is much worse on the Fediverse, not so much here on twtxt).
I miss the days of topic-based forums/groups. A Linux forum here, a forum about programming there, another one about a certain game. Stuff like that. That was really great ā and it didnāt even suffer from the need to federate.
Sadly, most of these forums are dead now. Especially the nerds spend a lot of time on the Fediverse now and have abandoned forums almost completely.
On Mastodon, you can follow hashtags, which somewhat emulates a topic-based experience. But itās not that great and the protocol isnāt meant to be used that way (just read the snac2 docs on this issue). And the concept of ālikesā has eliminated lots of the actual user interaction. ā¹ļø
[$] Better debugging information for inlined kernel functions
Modern compilers perform a lot of optimizations, which can complicate debugging.
Song Liu and Thierry Treyer spoke about a potential improvement to
BPF Type Format (BTF) debugging information that could partially combat that
problem at the 2025 Linux Storage, Filesystem,
Memory-Management, and BPF Summit.
They want to add information on selectively inlined functions to BTF in order to
better support tracing tools.
Trey ⦠ā Read more
Nobody writes emails by hand using RFC 5322 anymore, nor do we manually send them through telnet and SMTP commands. The days of crafting emails in raw format and dialing into servers are long gone. Modern email clients and services handle it all seamlessly in the background, making email easier than ever to send and receiveāwithout needing to understand the protocols or formats behind it! #Email #SMTP #RFC #Automation
Another war story: the hardest bug I ever debugged
I recently stumbled on Jacob Voytkoās Google Docs bug story and it reminded me of the weirdest bug I ever chased.
It started with a user reporting their webcam was rotated by 90° ā but only sometimes. This turned into a wild hunt across browsers, OS quirks, WebRTC, and even HTTP redirects.
Erlang Solutions: Reduce, Reuse⦠Refactor: Clearer Elixir with the Enum Module
āWhen an operation cannot be expressed by any of the functions in the Enum module, developers will most likely resort to reduce/3.ā
From the docs for Enum.reduce/3
In many Elixir applications, I find
Enum.reduceis used frequently.Enum.reducecan do anything, but that doesnāt mean it should. In many cases, otherEnumfunctions are more readable, practically as fast, and easier ⦠ā Read more
[$] DMA addresses for UIO
The Userspace\āØI/O (UIO) subsystem was first added to the kernel by
Hans J. Koch for the 2.6.32 release in 2007. Its purpose is to facilitate
the writing of drivers (mostly) in user space; to that end, it provides
access to a number of resources that user-space code normally cannot touch.
One piece that is missing, though, is DMA addresses. [A proposal to\āØfill that gap](https://lwn.net/ml/all/20250410-uio-dma-v ⦠ā Read more
@kat@yarn.girlonthemoon.xyz I skimmed through the gamja docs and they say you need an āIRC WebSocket serverā ā no idea what that is. Does gamja not speak IRC directly but essentially āIRC over HTTPā? Curious. š¤
7k words of docs on deploying a livejournal folk. you absolutely want to read 7 thousand words of me forcing dreamwidth into production shape in docker https://stash.4-walls.net/selfhostdw/
si4er3q. See https://twtxt.dev/exts/twt-hash.html, a timezone offset of +00:00 or -00:00 must be replaced by Z.
just a note that we are doing that on PHP: https://github.com/eapl-gemugami/twtxt-php/blob/master/docs/03-hash-extension.md#php-72
That PHP snippet could be merged into https://twtxt.dev/exts/twt-hash.html
Security updates for Thursday
Security updates have been issued by Debian (chromium and libapache2-mod-auth-openidc), Oracle (expat, freetype, glibc, grub2, gvisor-tap-vsock, and kernel), Red Hat (grub2 and webkit2gtk3), and SUSE (apache2-mod_auth_openidc, cosign, gitoxide, govulncheck-vulndb, GraphicsMagick, haproxy, hauler, mozjs52, oci-cli, pam, perl-Data-Entropy, poppler, python-lxml-doc, python311-aiohttp, rekor, rubygem-rexml, and webkit2gtk3). ā Read more
Pinta 3.0 released
Version\āØ3.0 of the Pinta
image editor has been released. The most notable change in this
release is that Pinta has been ported to GTKĀ 4.0 and libadwaita. It
also includes a number of improvements, new effects, and bug fixes. ā Read more
[$] Preparing DAMON for future memory-management problems
The Data Access\āØMONitor (DAMON) subsystem provides access to detailed memory-management
statistics, along with a set of tools for implementing policies based on
those statistics. An update on DAMON by its primary author, SeongJae Park,
has been a fixture of the Linux Storage, Filesystem, Memory-Management, and
BPF Summit for some years. The 2025 Summit was no exception; Park led two
sessions on recent and future DAMON developme ⦠ā Read more
[$] Two approaches to better kernel samepage merging
The kernel\āØsamepage merging (KSM) subsystem works by finding pages in memory with
the same contents, then replacing the duplicated copies with a single,
shared copy. KSM can improve memory utilization in a system, but has some
problems as well. In two memory-management-track sessions at the 2025
Linux Storage, Filesystem, Memory-Management, and BPF Summit, Mathieu
Desnoyers and Sourav Panda proposed improvements to KSM to
make it ⦠ā Read more
OpenSSH 10.0 released
OpenSSH\āØ10.0 has been released. Support for the DSA signature algorithm,
which was disabled by default beginning in 2015, has been
removed. Other notable changes include using the post-quantum algorithm mlkem768x25519-sha256
for key agreement by default, support for systemd-style socket
activation in Portable OpenSSH ⦠ā Read more
OpenSSL 3.5.0 released
Version\āØ3.5.0 of OpenSSL has been released. This release adds support for
server-side QUIC ( RFC 9000), a
new configuration option ( no-tls-deprecated-ec) that disables
support for TLS groups deprecated in RFC 8422, and more. ā Read more
@thecanine@twtxt.net I found it! This looks like colored easter eggs when squinting.
Neovim 0.11 released
Version\āØ0.11 of the Neovim text editor has been released. Notable changes
in this release include simpler Language Server Protocol (LSP) client
setup, improved tree-sitter performance, better emoji support, and
enhancements for Neovimās embedded terminal emulator. See the release notes for
a full list of changes. ā Read more
Hi! For anyone following the Request for Comments on an improved syntax for replies and threads, Iāve made a comparative spreadsheet with the 4 proposals so far. It shows a syntax example, and top pros and cons Iāve found:
https://docs.google.com/spreadsheets/d/1KOUqJ2rNl_jZ4KBVTsR-4QmG1zAdKNo7QXJS1uogQVo/edit?gid=0#gid=0
Feel free to propose another collaborative platform (for those without a G account), and also share your comments and analysis in the spreadsheet or in Gitea.
Itās been a long time since Iāve seen a project on Hacker News with 1300 votes (every few days something comes up with 600).
https://github.com/suitenumerique/docs
How to Upload Documents to ChatGPT
ChatGPT allows you to upload documents, which you can then describe, analyze, summarize, explain, or even get assistance with that particular document. ChatGPT works with just about any document type that you might be working with or come across in the world of tech and computers, including .pdf, .doc, .docx, .txt, .rtf, .xls, .xlsx, .csv, ⦠Read More ā Read more
The Firefox āTerms of Useā Backlash Threatens to Destroy Whatās Left of Mozilla
Mozilla accidentally shares internal Google Doc with Lunduke (for one minute). ā Read more
I want to propose my own counter-proposal to the discussion thatās ongoing with Go and error handling.
Here it is: https://docs.mills.io/ix4qDHMnQUSPxZ5tXz12Vg?view
Itās very rough and needs much more work, but essentially I want to propose the following change to the languageās grammar:
f := os.Open("foo.txt") or (e error) {
log.Fatal("error opening file; %s", e)
}
@prologic@twtxt.net I believe @andros@twtxt.andros.dev is referring to the one on the original twtxt docs . Iāve been meaning to contribute to the discussion on the git but Iām just lazy š
amma throw in a little something in a minute Poke a bee hive and run away style š
here are a few ideas you might take into consideration when designing a secure IM https://developer.virgilsecurity.com/docs/e3kit/fundamentals/secure-instant-messaging/
Obviously if youāve worked on something similar, you already know it, he
Wow, GtS keeps getting better! Re: https://docs.gotosocial.org/en/latest/admin/domain_permission_subscriptions/#fun-stuff-to-do-with-domain-permission-subscriptions
@bender@twtxt.net oh yeah i remember that part of the docs lol! honestly yeah i think sqlite is fine for the number of users i have which is like, 5 including me, and active users is just⦠me, but if i were to have more active users i could always spin up a separate instance as jank as that is
The fact that the official Python docs donāt clearly state what a function returns, grinds my gears. This has cost me so much time over the years. You always have to read through a huge block of text.
You could at least put a list of possible return values in there (always at the same location, please!), hereās a mockup:
asciinema is really cool. thought about self hosting my own upload site which they have docs for but i donāt need to host everything even if itād be a fun project. the default/main site is fine enough for me when i wonāt be uploading a whole lot.
@eapl.me@eapl.me A way to have a more blueskyāish handles in twtxt could be to take inspiration from Bridgy Fed and say: If NICK = DOMAIN then only show @DOMAIN
So instead of @eapl.me@eapl.me it will just be @eapl.me
And it event seem that it will not break webfinger lookup: https://webfinger.net/lookup/?resource=%40darch.dk (at least not for how Iāve implemented webfinger on my sever for a single user;)
Cyrix126 releases Gupaxx v1.5.4
Cyrix1261 has released Gupaxx 2 version 1.5.43 with lots of UI improvements and various bugfixes:
[UI] Use fixed size of fonts, do not resize them
[UI] Rework Top/Bottom bar
[UI] Rework widgets/fonts
[UI] Status: human friendly display of hashrate with right metrics
[Internal] Bundle: bump version of XMRig to 6.22.2
[Internal] deprecate support for mac os 12
[Docs] improve grammar and syntax of various doc files
[Fix] when n ... ā [Read more](https://monero.observer/cyrix126-releases-gupaxx-v1.5.4/)
Canāt Open Microsoft Office Files in MacOS Sequoia? Fix Microsoft Word, Excel, Office File Associations
Some Mac users have noticed that Microsoft Office files and documents, whether thatās Word docs, Excel spreadsheets, Powerpoint presentations, or otherwise, are not opening in the intended apps, or properly associating with the relevant Microsoft Office app, after updating their Mac to MacOS Sequoia. To make matters worse, some ⦠ā Read more
Iām looking to develop a static site for twtxt.dev ā A domain I own and have wanted to use for developer and specification docs for Twtxt.
Can anyone recommend a few Hugo themes you like?
All of the dev.twtxt.net content would move over as well.
Using an AI Assistant to Read Tool Documentation
Explore how to use Docker and LLMs to streamline workflows for command-line tools to enhance the process of reading docs, troubleshooting errors, and running commands. ā Read more
Okay folks, Iāve spent all day on this today, and I think its in āgood enoughā⢠shape to share:
Twtxt v2:
- Specification: https://docs.mills.io/uJXuisaYTRWYDrl8A2jADg?both
- implementation: https://gist.mills.io/prologic/afdec15443da4d7aa898f383f171ec1b

LOl š Not only have a tried to write up a full Twtxt v2 specification, Iāve also written a Bash shell script that implements the new spec š
@quark@ferengi.one It looks like the part about traditional topics has been removed from that page. Here is an old version that mentions it: https://web.archive.org/web/20221211165458/https://dev.twtxt.net/doc/twtsubjectextension.html . Still, I donāt see any description of what is actually allowed between the parentheses. May be worth noting that twtxt.net is displaying the twts with the subject stripped, so some piece of code is recognizing it as a subject (or, at least, something to be removed).
@falsifian@www.falsifian.org based on Twt Subject Extension, your subject is invalid. You can have custom subjects, that is, not a valid hash, but you simply canāt put anything, and expect it to be treated as a TwtSubject, me thinks.
HTTPS is supposed to do [verification] anyway.
TLS provides verification that nobody is tampering with or snooping on your connection to a server. It doesnāt, for example, verify that a file downloaded from server A is from the same entity as the one from server B.
I was confused by this response for a while, but now I think I understand what youāre getting at. You are pointing out that with signed feeds, I can verify the authenticity of a feed without accessing the original server, whereas with HTTPS I canāt verify a feed unless I download it myself from the origin server. Is that right?
I.e. if the HTTPS origin server is online and I donāt mind taking the time and bandwidth to contact it, then perhaps signed feeds offer no advantage, but if the origin server might not be online, or I want to download a big archive of lots of feeds at once without contacting each server individually, then I need signed feeds.
feed locations [being] URLs gives some flexibility
It does give flexibility, but perhaps we should have made them URIs instead for even more flexibility. Then, you could use a tag URI,
urn:uuid:*, or a regular old URL if you wanted to. The spec seems to indicate that theurltag should be a working URL that clients can use to find a copy of the feed, optionally at multiple locations. Iām not very familiar with IP{F,N}S but if it ensures you own an identifier forever and that identifier points to a current copy of your feed, it could be a great way to fix it on an individual basis without breaking any specs :)
Iām also not very familiar with IPFS or IPNS.
I havenāt been following the other twts about signatures carefully. I just hope whatever you smart people come up with will be backwards-compatible so it still works if Iām too lazy to change how I publish my feed :-)
Apple Loses Major Tax Dispute in Europe, Must Pay Ireland ā¬13 Billion
The European Unionās Court of Justice today said it has confirmed the European Commissionās 2016 decision that Ireland had given illegal tax benefits worth ā¬13 billion to Apple from 1991 to 2014. This is a final ruling, so Ireland is now required to recove ⦠ā Read more
@bender@twtxt.net Yes, they do 𤣠Implicitly, or threading would never work at all š Nor lookups 𤣠They are used as keys. Think of them like a primary key in a database or index. I totally get where youāre coming from, but there are trade-offs with using Message/Thread Ids as opposed to Content Addressing (like we do) and I believe we would just encounter other problems by doing so.
My money is on extending the Twt Subject extension to support more (optional) advanced āsubjectsā; i.e: indicating you edited a Twt you already published in your feed as @falsifian@www.falsifian.org indicated š
Then we have a secondary (bure much rarer) problem of the āidentityā of a feed in the first place. Using the URL you fetch the feed from as @lyse@lyse.isobeef.org ās client tt seems to do or using the # url = metadata field as every other client does (according to the spec) is problematic when you decide to change where you host your feed. In fact the spec says:
Users are advised to not change the first one of their urls. If they move their feed to a new URL, they should add this new URL as a new url field.
See Choosing the Feed URL ā This is one of our longest debates and challenges, and I think (_I suspect along with @xuu@txt.sour.is _) that the right way to solve this is to use public/private key(s) where you actually have a public key fingerprint as your feedās unique identity that never changes.
I just manually followed the steps at https://dev.twtxt.net/doc/twthashextension.html and got 6mdqxrq. I wonder what happened. Did @cuaxolo@sunshinegardens.org edit the twt in some subtle way after twtxt.net downloaded it? I couldnāt spot a diff, other than ā appearing as ā on yarn.social, which I assume is a transformation done by twtxt.net.
@prologic@twtxt.net Yes, fetching the twt by hash from some service could be a good alternative, in case the twt I have does not @-mention the source. (Besides yarnd, maybe this should be part of the registry API? I donāt see fetch-by-hash in the registry API docs.)
Ignite Realtime Blog: Openfire 4.8.2 Release
Openfire 4.8.2 has landed!
This release addresses a number of issues in the real time collaboration server created by the Ignite Realtime Community that aim to reduce bugs and increase stability and performance.
Interested in getting started? You can [download installers of Openfire here](https://igniterealtime.org/downloads/#op ⦠ā Read more
Docker Documentation Gets an AI-Powered Assistant
Learn about the Docker Docs AI, a documentation assistant designed to provide instant, accurate answers directly from the Docker docs pages. ā Read more
ProcessOne: ejabberd Docs now using MkDocs
The ejabberd Docs website did just get a major rework: new content management system, reorganized navigation, improved markdown, and several improvements!
Brief documentation timelineejabberd started in November 2002 (see a timeline in the ejabberd turns 20 bl ⦠ā Read more
ProcessOne: ejabberd Docs now using MkDocs
The ejabberd Docs website did just get a major rework: new content management system, reorganized navigation, improved markdown, and several improvements!
ejabberd started in November 2002 (see a timeline in the ejabberd turns 20 blog post). And the first documentation was published in January 2003, using LaTeX, see [Ejabberd Installation and Op ⦠ā Read more
Empower Your Development: Dive into Dockerās Comprehensive Learning Ecosystem
Find out about Dockerās multifaceted approach to developer education, including partnerships with platforms like Udemy and LinkedIn Learning, official docs and use-cases, and content created by Docker Captains and the developer community. ā Read more
Hey @sorenpeter@darch.dk, Iām sorry to tell you, but the prev field in your feedās headers is invalid. š
First, it doesnāt include the hash of the last twt in the archive. Second, and thatās probably more important, it forms an infinite loop: The prev field of your main feed specifies http://darch.dk/twtxt-archive.txt and that file then again specifies http://darch.dk/twtxt-archive.txt. Some clients might choke on this, mine for example. š Iāll push a fix soon, though.
For reference, the prev field is described here: https://dev.twtxt.net/doc/archivefeedsextension.html
Thanks @prologic@twtxt.net, I also just manage to get my own version of webmentions working. Please have a read at Webmentions vs. Custom Mentions Spec for Twtxt/Yarn - HedgeDoc and User Lookup for Twtxt/Yarn - Webfinger or Decentralized Identifiers (DIDs) - HedgeDoc for how it sorta works
Did another write up on #webfinger and DIDs for twtxt/yarn that you can read and edit/comment in: User lookup for twtxt/yarn - Webfinger or Decentralized Identifiers (DIDs) - HedgeDoc
Iāve gathers my ideas about mentions for twtxt/yarn here: Webmentions vs. custom mentions spec for twtxt/yarn - HedgeDoc
You are welcome to edit and comment in the doc, so our ideas are not fragment into a bunch of treads
Ignite Realtime Blog: Openfire 4.8.1 Release
The Ignite Realtime Community is pleased to announce the release of Openfire 4.8.1. This release addresses a number of issues found with the major 4.8.0 release a few months back.
Interested in getting started? You can download installers of Openfire here. Our documentation contains an [upgrade guide](https://download.igniterealtime ⦠ā Read more
ProcessOne: Automatic schema update in ejabberd
ejabberd 23.10 has a new feature that is currently in beta testing:
Automatic relational schema creation and update.
Previously, if you were using ejabberd with an external relational database, you might have to manually apply some schema changes that come with new features when you upgrade to a new ejabberd release. ejabberd can now handle this schema upgrade automat ⦠ā Read more