@zvava@twtxt.net yarnd fetches the feeds roughly every ten minutes:
grep twtxt.net www/logs/twtxt.log | cut -d ' ' -f1 | tail -n 20
2025-10-04T07:00:45+02:00
2025-10-04T07:10:26+02:00
2025-10-04T07:22:43+02:00
2025-10-04T07:30:45+02:00
2025-10-04T07:40:48+02:00
2025-10-04T07:52:59+02:00
2025-10-04T08:00:07+02:00
2025-10-04T08:13:33+02:00
2025-10-04T08:23:13+02:00
2025-10-04T08:31:22+02:00
2025-10-04T08:41:29+02:00
2025-10-04T08:53:25+02:00
2025-10-04T09:03:31+02:00
2025-10-04T09:11:42+02:00
2025-10-04T09:23:11+02:00
2025-10-04T09:29:49+02:00
2025-10-04T09:36:17+02:00
2025-10-04T09:46:33+02:00
2025-10-04T09:58:40+02:00
2025-10-04T10:06:54+02:00
I suspect that the timing was just right. Or wrong, depending on how you’re looking at it. ;-)
Each origin feed numbers new threads
(tno:N)
. Replies carry both (tno:N)
and (ofeed:<origin-url>)
. Thread identity = (ofeed, tno)
.
Example:
Alice starts thread href=”https://yarn.girlonthemoon.xyz/search?q=%2342:”>#42:**
2025-09-25T12:00:00Z (tno:42) Launching storage design review.
Bob replies:
2025-09-25T12:05:00Z (tno:42) (ofeed:https://alice.example/twtxt.txt
) I think compaction stalls under load.
Carol replies to Bob:
2025-09-25T12:08:00Z (tno:42) (ofeed:https://alice.example/twtxt.txt
) Token bucket sounds good.
One of the nicest things about Go is the language itself, comparing Go to other popular languages in terms of the complexity to learn to be proficient in:
- Go:
25
keywords (Stack Overflow); CSP-style concurrency (goroutines & channels)
- Python 2:
30
keywords (TutorialsPoint); GIL-bound threads & multiprocessing (Wikipedia)
- Python 3:
35
keywords (Initial Commit); GIL-bound threads,asyncio
& multiprocessing (Wikipedia, DEV Community)
- Java:
50
keywords (Stack Overflow); threads +java.util.concurrent
(Wikipedia)
- C++:
82
keywords (Stack Overflow);std::thread
, atomics & futures (en.cppreference.com)
- JavaScript:
38
keywords (Stack Overflow); single-threaded event loop &async/await
, Web Workers (Wikipedia)
- Ruby:
42
keywords (Stack Overflow); GIL-bound threads (MRI), fibers & processes (Wikipedia)
Blue95 Topanga released with Paint and Plus! clones
Only a few weeks ago we talked about Blue95, a Fedora-based distribution focused on bringing the Windows 95 look to the Linux world by integrating a set of existing Windows 95 Xfce themes. Since Fedora 42 has just been released, the Blue95 project also pushed out a new release, called Blue95 Topanga. It brings with it all the improvements from Fedora 42, but also goes a step further be integrating new applications to further add … ⌘ Read more
Fedora 42 released
Fedora 42 has been released, bringing with it a major policy change: the Fedora KDE version now has the same status as the GNOME version. This means that Fedora KDE will be getting the same promotion, website space, and potential blocker status as the GNOME version. For now, the naming is a bit weird – Fedora Workstation for GNOME, Fedora KDE Plasma Desktop for KDE – but they intend to fix this down the line. Feodra 42 also brings with it a brand new installation interface, which replaces the … ⌘ Read more
@kat@yarn.girlonthemoon.xyz Pointers can be a bit tricky. I know it took me also quite some time to wrap my head around them. Let my try to explain. It’s a pretty simple, yet very powerful concept with many facets to it.
A pointer is an indirection. At a lower level, when you have some chunk of memory, you can have some actual values sitting in there, ready for direct use. A pointer, on the other hand, points to some other location where to look for the values one’s actually after. Following that pointer is also called dereferencing the pointer.
I can’t come up with a good real-world example, so this poor comparison has to do. It’s a bit like you have a book (the real value that is being pointed to) and an ISBN referencing that book (the pointer). So, instead of sending you all these many pages from that book, I could give you just a small tag containing the ISBN. With that small piece of information, you’re able to locate the book. Probably a copy of that book and that’s where this analogy falls apart.
In contrast to that flawed comparision, it’s actually the other way around. Many different pointers can point to the same value. But there are many books (values) and just one ISBN (pointer).
The pointer’s target might actually be another pointer. You typically then would follow both of them. There are no limits on how long your pointer chains can become.
One important property of pointers is that they can also point into nothingness, signalling a dead end. This is typically called a null pointer. Following such a null pointer calls for big trouble, it typically crashes your program. Hence, you must never follow any null pointer.
Pointers are important for example in linked lists, trees or graphs. Let’s look at a doubly linked list. One entry could be a triple consisting of (actual value, pointer to next entry, pointer to previous entry).
_______________________
/ ________\_______________
↓ ↓ | \
+---+---+---+ +---+---+-|-+ +---+---+-|-+
| 7 | n | x | | 23| n | p | | 42| x | p |
+---+-|-+---+ +---+-|-+---+ +---+---+---+
| ↑ | ↑
\_______/ \_______/
The “x” indicates a null pointer. So, the first element of the doubly linked list with value 7 does not have any reference to a previous element. The same is true for the next element pointer in the last element with value 42.
In the middle element with value 23, both pointers to the next (labeled “n”) and previous (labeled “p”) elements are pointing to the respective elements.
You can also see that the middle element is pointed to by two pointers. By the “next” pointer in the first element and the “previous” pointer in the last element.
That’s it for now. There are heaps ;-) more things to tell about pointers. But it might help you a tiny bit.
@prologic@twtxt.net Of course you don’t notice it when yarnd only shows at most the last n messages of a feed. As an example, check out mckinley’s message from 2023-01-09T22:42:37Z. It has “[Scheduled][Scheduled][Scheduled]“… in it. This text in square brackets is repeated numerous times. If you search his feed for closing square bracket followed by an opening square bracket (][
) you will find a bunch more of these. It goes without question he never typed that in his feed. My client saves each twt hash I’ve explicitly marked read. A few days ago, I got plenty of apparently years old, yet suddenly unread messages. Each and every single one of them containing this repeated bracketed text thing. The only conclusion is that something messed up the feed again.
Recovery run: 3.11 miles, 00:11:42 average pace, 00:36:22 duration
Osceola County - 5 mile run at pace: 5.04 miles, 00:08:20 average pace, 00:42:04 duration
whoa, was not expecting it to be that hilly. nice and cold and kept the pace up pretty steady. HR was mainly aerobic which was surprising since going up the hills i was expecting more spikes.
my daughter did great at her gymnastics meet, too… all-in-all a good day.
#running
Pinellas County Cycling: 7.75 miles, 00:05:28 average pace, 00:42:22 duration
cross training
#cycling
Pinellas County - 4 x 5’ (hard) [1’]: 5.00 miles, 00:09:42 average pace, 00:48:26 duration
nothing to note.
#running
Pinellas County - Easy: 4.07 miles, 00:10:24 average pace, 00:42:20 duration
slow. oh so slow. it was painful even.
#running
Pinellas County Running: 4.42 miles, 00:10:54 average pace, 00:48:13 duration
more milton checks. talked to my sister about the recent rim-to-rim-to-rim of the grand canyon she just did. kept it pretty conversational.
#running
Hmm:
42 75 69 6C 64 20 77 68 61 74 20 6D 61 6B 65 73 20 79 6F 75 20 68 61 70 70 79 2E 20 4C 65 74 20 6D 69 73 65 72 61 62 6C 65 20 70 65 6F 70 6C 65 20 62 75 69 6C 64 20 74 68 65 20 72 65 73 74 2E
Something @anth@a.9srv.net said on ITC
17:42 I should also note in there that it doesn’t address the two things i really want it to: mandate utf-8 (which should be easy to fit in) and something for better @ mentions.
I actually agree with in both counts and it got me thinking…
@movq@www.uninformativ.de I figured it will be something like this, yet, you were able to reply just fine, and I wasn’t. Looking at your twtxt.txt
I see this line:
2024-09-16T17:37:14+00:00 (#o6dsrga) @<prologic https://twtxt.net/user/prologic/twtxt.txt>
@<quark https://ferengi.one/twtxt.txt> This is what I get. 🤔
Which is using the right hash. Mine, on the other hand, when I replied to the original, old style message (Message-Id: <o6dsrga>
), looks like this:
2024-09-16T16:42:27+00:00 (#o) @<prologic https://twtxt.net/user/prologic/twtxt.txt> this was your first twtxt. Cool! :-P
What did you do to make yours work? I simply went to the oldest @prologic@twtxt.net’s entry on my Maildir, and replied to it (jenny
set the reply-to
hash to #o
, even though the Message-Id
is o6dsrga
). Since jenny
can’t fetch archived twtxts, how could I go to re-fetch everything? And, most importantly, would re-fetching fix the Message-Id:
?
This is how my original message shows up on jenny
:
From: quark <quark>
Subject: (#o) @prologic this was your first twtxt. Cool! :-P
Date: Mon, 16 Sep 2024 12:42:27 -0400
Message-Id: <k7imvia@twtxt>
X-twtxt-feed-url: https://ferengi.one/twtxt.txt
(#o) @<prologic https://twtxt.net/user/prologic/twtxt.txt> this was your first twtxt. Cool! :-P
@prologic@twtxt.net There are a lot of logs being generated by yarnd
, which is something I haven’t seen before too:
Jul 25 14:32:42 buc yarnd[1911318]: [yarnd] 2024/07/25 14:32:42 (162.211.155.2) "GET /twt/ubhq33a HTTP/1.1" 404 29 643.251µs
Jul 25 14:32:43 buc yarnd[1911318]: [yarnd] 2024/07/25 14:32:43 (162.211.155.2) "GET /twt/112073211746755451 HTTP/1.1" 400 12 505.333µs
Jul 25 14:32:44 buc yarnd[1911318]: [yarnd] 2024/07/25 14:32:44 (111.119.213.103) "GET /twt/whau6pa HTTP/1.1" 200 37360 35.173255ms
Jul 25 14:32:44 buc yarnd[1911318]: [yarnd] 2024/07/25 14:32:44 (162.211.155.2) "GET /twt/112343305123858004 HTTP/1.1" 400 12 455.069µs
Jul 25 14:32:44 buc yarnd[1911318]: [yarnd] 2024/07/25 14:32:44 (168.199.225.19) "GET /external?nick=lovetocode999&uri=http%3A%2F%2Fwww.palapa.pl%2Fbaners.php%3Flink%3Dhttps%3A%2F%2Fwww.dwnewstoday.com HTTP/1.1" 200 36167 19.582077ms
Jul 25 14:32:44 buc yarnd[1911318]: [yarnd] 2024/07/25 14:32:44 (162.211.155.2) "GET /twt/112503061785024494 HTTP/1.1" 400 12 619.152µs
Jul 25 14:32:46 buc yarnd[1911318]: [yarnd] 2024/07/25 14:32:46 (162.211.155.2) "GET /twt/111863876118553837 HTTP/1.1" 400 12 817.678µs
Jul 25 14:32:46 buc yarnd[1911318]: [yarnd] 2024/07/25 14:32:46 (162.211.155.2) "GET /twt/112749994821704400 HTTP/1.1" 400 12 540.616µs
Jul 25 14:32:47 buc yarnd[1911318]: [yarnd] 2024/07/25 14:32:47 (103.204.109.150) "GET /external?nick=lovetocode999&uri=http%3A%2F%2Fampurify.com%2Fbbs%2Fboard.php%3Fbo_table%3Dfree%26wr_id%3D113858 HTTP/1.1" 200 36187 15.95329ms
I’ve seen that nick=lovetocode999
a bunch.
Base: 1.75 miles, 00:09:42 average pace, 00:16:58 duration
had to stop for code brown.
#running #treadmill
42km for 42 years: 26.26 miles, 00:11:50 average pace, 05:10:44 duration
crazy run… don’t have a lot of time so i’ll have to remember to complete the thread that i captured in my journal.
#running
42km for 42 years: 26.26 miles, 00:11:50 average pace, 05:10:44 duration
crazy run
#running
Pinellas County - Recovery: 4.22 miles, 00:09:59 average pace, 00:42:11 duration
little bit of pain but smooth.
#running
Pinellas County - Recovery: 4.06 miles, 00:10:24 average pace, 00:42:13 duration
slow. my body literally could not have gone quicker. it hurt too.
#running
Pinellas County - Tempo: 5.00 miles, 00:08:27 average pace, 00:42:16 duration
looks like my HR did it again… at about 2 miles in it went from 137 to 150. something must be wrong which sucks because now i cannot trust it. the run was pretty good and definitely felt like a tempo.
#running
Pinellas County - Easy: 4.83 miles, 00:08:46 average pace, 00:42:20 duration
went out easy. HR was around 149 until stopping for a traffic light. afterwards it was consistently mid- to high- 160’s. overall effort was still minimal, but maybe higher HR was due to the congestion i seem to have picked up the last couple of days?
#running
Pinellas County - Tempo: 5.16 miles, 00:08:42 average pace, 00:44:57 duration
knee felt better. definitely harder to breathe w/ the humidity.
#running
Pinellas County - 10 x 1km [30”]: 8.22 miles, 00:08:42 average pace, 01:11:36 duration
good session besides warning signs of code brown. kept the paces at around target pace of 8:30. i figure this may be close to maximum effort for the marathon so wanted to practice.
#running
Pinellas County - 1 mile [1’30”]: 5.34 miles, 00:08:42 average pace, 00:46:26 duration
another great run. i may have pushed it a bit too hard on the last interval towards the end because i noticed my breathing had become ragged.
#running
Pinellas County - Long run: 7.42 miles, 00:12:23 average pace, 01:31:51 duration
rough. still sick. hard to breathe and coughing fits.
#running
Recovery: 3.53 miles, 00:12:05 average pace, 00:42:38 duration
Recovery: 3.37 miles, 00:09:42 average pace, 00:32:42 duration
Pinellas County - 5 mile progression: 5.02 miles, 00:09:42 average pace, 00:48:41 duration
kept it easy since it was the first week. the first couple miles took a bit to keep locked on but the rest were fine.
#running
I just caught a bit flip in a tmpfs. The 42 MiB file only existed for about 3 minutes before the error was first detected by the FLAC decoder. Very unlikely.
$ xxd -b ../08.\ New\ World\ Rising.flac >old
$ xxd -b 08.\ New\ World\ Rising.flac >new
$ diff old new
2959577c2959577
< 010ef510: 11110011 01001010 11111010 10011111 11110011 00111011 .J...;
---
> 010ef510: 11110011 11001010 11111010 10011111 11110011 00111011 .....;
Winter Haven - Long run: 10.34 miles, 00:09:53 average pace, 01:42:09 duration
great weather. i did not sleep great but the body felt refreshed. hit all my paces i wanted and kept the heart rate where i needed to. stopped when i could have gone more but marathon training starts tomorrow.
#running
Pinellas County - Long Run: 13.18 miles, 00:10:13 average pace, 02:14:42 duration
mmm, enjoyed it. at 0100 this morning i woke up to my right calf seizing (not sure if that is the right term). when i finally got up at 0500-ish to prep for the run it was still tight (still is hours later) but stretching helped out a bunch. do not think it affected the run really though. that or i just did not care because i was enjoying the low humidity too much.
#running
user/bmallred/data/2023-07-19-09-46-42.fit: 00:41:28 duration
user/bmallred/data/2023-06-15-15-04-24.fit: 4.06 miles, 00:10:26 average pace, 00:42:25 duration
user/bmallred/data/2023-05-30-13-42-19.fit: 4.79 miles, 00:09:30 average pace, 00:45:30 duration
user/bmallred/data/2023-05-23-05-42-04.fit: 3.20 miles, 00:06:05 average pace, 00:19:30 duration
user/bmallred/data/2023-05-13-05-22-26.fit: 3.70 miles, 00:09:23 average pace, 00:34:42 duration
user/bmallred/data/2023-05-08-05-42-10.fit: 5.70 miles, 00:06:01 average pace, 00:34:18 duration
user/bmallred/data/2023-04-25-05-42-48.fit: 3.13 miles, 00:08:17 average pace, 00:25:59 duration
user/bmallred/data/2023-04-17-05-34-27.fit: 5.32 miles, 00:08:03 average pace, 00:42:50 duration
user/bmallred/data/2023-04-06-05-28-56.fit: 5.91 miles, 00:07:08 average pace, 00:42:11 duration
user/bmallred/data/2023-03-27-08-54-02.fit: 4.87 miles, 00:08:50 average pace, 00:42:57 duration
Pinellas County - Long run: 11.11 miles, 00:10:42 average pace, 01:58:57 duration
surprised i even got out there and did something after a day of drinking and dice with the family last night. not a great rest and worn out. the run went well and stayed out of zones 4 and 5. soaked at the end with the humidity.
#running
user/bmallred/data/2023-02-18-05-42-56.fit: 7.32 miles, 00:10:31 average pace, 01:16:57 duration
user/bmallred/data/2023-02-10-09-10-09.fit: 4.27 miles, 00:09:59 average pace, 00:42:39 duration
user/bmallred/data/2023-01-18-08-39-42.fit: 7.02 miles, 00:09:12 average pace, 01:04:34 duration