At 8 oâclock, we had chilly 10°C. My mate and I dashed up our backyard mountain in just a tad under an hour. And that wasnât the direct way. Our jumpers came off quick. It was really nice, because the sun was already warming and lighting up the landscape and everbody else still asleep. We had everything to our own.
Shortly after we were atop, the first two yoga women showed up with their mats. When we decended, a bunch more were on the way up. And then came the families with dogs and kids. Very glad to have missed all this hustle and bustle.
Now, Iâm really tired. But itâs a great feeling of exhaustion. Two and a half hours later, weâre at 17°C. Itâs supposed to hit an acceptable 23°C later on.
Unfortunately, no pics. I learned that charging via the docking station when the computer is turned off doesnât do shit at all. Oh well.
This cookie banner button uses âAbfallâ in the German translation for probably âRejectâ or âConfigureâ, I donât know, simply left the site. This literally means waste, garbage, rubbish, trash. Spot on! :-D

@david@daiwei.me I first thought that this is a real lake, but itâs just a lake of craziness. :-D A town owned by a company (or so it reads to me), thatâs insane.
Let me send you some nice 17°C.
I really think I should go back to Java.
Writing programs in Python is so exhausting. I want a compiler and I want static typing. No, linters and type checkers and IDEs are not good enough. Compilers catch way more errors in advance.
Rust is also exhausting. Theyâre constantly adding language features and, at the same time, the runtime library remains tiny and you need 3rd party libraries for everything. Many of those are still at version 0.x (SemVer!) and you canât rely on anything. Often times, you need the latest Rust nightly compiler.
Go is ⊠I donât like it. And huge binaries.
I like C as a language, but itâs too fragile. I want to have a proper HashMap every now and then.
None of the above have good GUI libraries, at least not on Linux.
And then thereâs Java. This is my fractal renderer that I wrote over 17 years ago:
https://movq.de/v/fcd3c4e557/vid-1784121825.mp4
Itâs fast. It has a GUI with custom widgets and those werenât even hard to make. It still works without changing a single line of code. The source code files have timestamps from 2009 and I just noticed that the JAR file Iâm using in the video was compiled in 2010.
Java as a language is relatively easy to learn and to master. There are few surprises. The source code organization with packages is good. Java API docs are clear and well written.
The JVM ramp-up times have improved considerably:
https://movq.de/v/e7314e521e/vid-1784121998.mp4
This isnât like the Dark Ages anymore. Might even be usable for some CLI tools.
The only thing where Java really sucks is anything close-ish to the kernel. Try issuing an ioctl() ⊠I couldnât have made my TUI framework in Java, but then again, I wouldnât have needed to because Swing already exists and it just works.
I will very likely add a way to delete your feed(s) from the search engine, because I do thing thatâs important. But as Art 17 points out, we canât really guaranteed deletion in everyoneâs caches around the planet haha đ
The only place where this would be an issue is the Twtxt Search Engine â But as the GDPR also points out:
Art. 17
The one place the âit propagated and I canât recall itâ problem is legally acknowledged is Art. 17(2), and it explicitly scales to whatâs technically feasible:
ââŠthe controller, taking account of available technology and the cost of implementation, shall take reasonable steps, including technical measures, to inform controllers which are processing the personal data that the data subject has requested the erasureâŠâ
Best-effort, given the technology. A decentralised, append-only, content-addressed feed is the available technology, and its limits are baked into the standard the law applies. Nobody â not the user, not you â is obliged to guarantee every cached copy vanishes.
So just because I enjoy this kind of thing (looking into laws and trying to understand themâŠ):
GDPR is about roles, not ownership
Thereâs no property right in personal data under GDPR. The whole regime hangs on three roles:
- Data subject â the person the data is about.
- Controller (Art. 4(7)) â âthe natural or legal person ⊠which, alone or jointly with others, determines the purposes and means of the processing of personal data.â
- The rights in Arts. 16 and 17 are exercised by a data subject against a controller. They compel a third party to rectify or erase. They are not self-executing duties that a piece of software must expose.
Thatâs the key. In your architecture, for a userâs own posts about themselves sitting in their own feed on their own device:
- the user is the data subject, and
- the user is also the only person âdetermining the purposes and meansâ of that data.
There is no third party controller to compel. The âright to erasureâ is a right to make someone else delete â and there is no someone else. It is satisfied the instant the user can change the file. A UI button is a convenience, not a legal requirement. Omitting it removes zero rights, because the data is a plain-text file the user can edit or delete by any means â editor, sed, git, their file manager. Full practical control is retained; nobody is being denied anything by anyone.
Nice product, I should probably buy it: 
@bender@twtxt.net No idea. I can only tell you that the correct hash would have been rwzz277nkyju for this line:
[2026-07-11 14:47:17+00:00] [(#5bpwpdcjnhcz) <a href="https://yarn.girlonthemoon.xyz/external?uri=https://daiwei.me/twtxt.txt">@david<em>@daiwei.me</em></a> (This thread is broken again on my end. Another bug or fix not released yet? đ
)]
Interesting, HTTPS is almost twice as slow as plain HTTP on my server (~72 ms vs. ~135 ms):
$ hyperfine -r 50 "curl -so /dev/null 'http://movq.de/blog/postings/2024-05-23/0/t/word11a.jpg.jpg'"
Benchmark 1: curl -so /dev/null 'http://movq.de/blog/postings/2024-05-23/0/t/word11a.jpg.jpg'
Time (mean ± Ï): 72.7 ms ± 17.2 ms [User: 6.2 ms, System: 4.8 ms]
Range (min ⊠max): 49.5 ms ⊠99.7 ms 50 runs
$ hyperfine -r 50 "curl -so /dev/null 'https://movq.de/blog/postings/2024-05-23/0/t/word11a.jpg.jpg'"
Benchmark 1: curl -so /dev/null 'https://movq.de/blog/postings/2024-05-23/0/t/word11a.jpg.jpg'
Time (mean ± Ï): 135.5 ms ± 28.9 ms [User: 17.8 ms, System: 5.6 ms]
Range (min ⊠max): 93.2 ms ⊠198.5 ms 50 runs
@lyse@lyse.isobeef.org Mhm, yeah, I also think I like date := time.Date(2026, time.June, 19, /**/ 17, 0, 0, 0, time.UTC) the most. đ€ (My only gripe with this is that it isnât obvious whether the third 0 is milli-, micro- or nanoseconds. These days itâs probably nanoseconds, but you never know.)
@movq@www.uninformativ.de Yeah, that would also be fine with me. I certainly do like the âarbitraryâ in your comment.
While writing the article, I also thought about something like that:
date := time.Date(2026, 6, 19,
17, 0, 0, 0, time.UTC)
Or possibly:
date := time.Date(
2026, 6, 19,
17, 0, 0, 0, time.UTC,
)
But itâs four lines for a damn timestamp. I also contemplated whether a comment acting as a separator is all thatâs needed:
date := time.Date(2026, 6, 19, /**/ 17, 0, 0, 0, time.UTC)
I might like that the most. Not entirely sure yet. It kinda feels like a hack, but still a little elegant. Add your comment on top and weâre golden. Maybe?
I deliberately excluded them as this only distracted from the points I wanted to make. And I also realized that this example was just not ideal at all. Perhaps I should add them nevertheless?
If I ever invented a programming language, a much more human readable timestamp representation of some sort, RFC 3339 or very close to that would be part of that language. Something along the lines of /pattern/ for regexes in certain languages.
@lyse@lyse.isobeef.org Oh wow, weâre talking about such a detailed level. đ€
I agree with most of what you said.
I probably would have written it like this:
// Arbitrary reference date.
// Y m d H M S nano
date := time.Date(2026, 6, 19, 17, 0, 0, 0, time.UTC)
Would this be better or worse? đ
Oh come on! Why such a stupid anti-feature!?
WARNING: Your yt-dlp version (2026.03.17) is older than 90 days!
It is strongly recommended to always use the latest version. You cannot update when running from source code; Use git to pull the latest changes. To suppress this warning, add --no-update to your command/config.
@bender@twtxt.net Hell yeah, weâve seen the first fireflies of the season! \o/ \o/ \o/ How cool! Maybe 50-70 in total. Gotta check every evening now. :-)
The sunset wasnât too bad when I left the house to pick up my mate: https://lyse.isobeef.org/abendhimmel-2026-06-17/
Itâs Venus over the moon. And Jupiter is further diagonally down between the clouds.
In Magic today, the Phyrexian Invasion failed in the first game, but the second game was EPIC!
I played my (unlisted) Dragons 2: Draconic Boogaloo deck, andâŠ
Turn 1: Nothing special
Turn 2: Miirym (when a dragon enters, copy it)
Turn 3: Tiamat (choose 5 dragons from deck, put in hand)
Turn 4: Klauth (when dragons attack, create mana equal to their total power)
I attacked with all 5 dragons, which made 28 mana x2 = 56(!) mana.
Then (still turn 4) I played Scourge of Valkas (when a dragon enters, deal damage to target equal to number of dragons) + 5 other dragons, dealing 6 + 2 x (7+8+9+10+11+12+13+14+15+16+17) = 270(!) direct damage (more than double enough to kill the other 3 players).
Damn fine win, if I do say so myself.
The weathermen just cannot be right with their 20°C today, it must have been more. It was awfully hot, the light breeze was not enough and even absent most of the time. In the shade, it was alright. Other than that, the walk to the dairy farm and back was really beautiful. Very lovely scenery.
Somebody spilled their paintbox at sunset. Unfortunately, I missed to reinsert the SD card into my camera, so I could not take more photos of Azabache and his new mate. They quickly disappeared. He even landed right next to my window, so that would have been a killer shot.
@prologic@twtxt.net Awwwwwwww! I love these stripes, very cool!
Oh, I bet these inclines are no joke. I also know one about 200 meters long terribly steep dirt path up a hill around here. Climbing that is super exhausting. I just looked it up on a map. And itâs just ~17° or ~30% incline. Okay, thatâs absolutely nothing compared to your adventure. :-D
But you got your exercises for the day then. Which will make for an even greater sleep tonight. ;-)
@itsericwoordward@itsericwoodward.com @bender@twtxt.net Well, even hard-reloading doesnât change anything. I also just noticed that hovering over the tab title makes it completely invisible. In contrast to the buttons, here, the text color is exactly the same as the background color:

Since I prefer the light theme, thatâs no big deal for me. 8-)
There was an endless coming and going of sun, clouds and rain. Not to forget about the wind. I called it quits a bit earlier and went into the woods.
Towards the end I was completeley surrounded by rain curtains in all directions. This looked super cool. I thought I might make it home just in time without having to use my umbrella, but the rain clouds were way quicker than I anticipated. Just after the rain hit me, I met an acquaintance who just started his walk. The wind picked up hard and rain hammered down, mixed with snow. Holding the umbrella was a workout. Shortly after I returned, the rain stopped again.
I didnât notice the kestrel sitting on the tree when I took the last photo. That was a nice surprise when I sorted through the nearly 300 pics.
My mate and I went on a hike earlier. Yesterday, we had lovely 12°C. But today, it was down to at most 4°C. Oh well. At least the sun was out and and there was just a tiny bit of wind. We knew upfont that scarf, beanie and gloves were mandatory. Especially at the more windy sections like up top the hills. The view was absolutely terrible, but we made the best of it.
With the sun shining on us during our lunch break at a forest edge bench, we still enjoyed the lookout in 01. I brought some old carpet scraps to sit on and was happily surprised that they isolated even better than I had hoped for. Some hot tea helped us staying warm.
After five hours we returned just after sunset. Iâm quite tired now, completely out of shape.
17, 21, and 22 are my favourites. Thank you for sharing! On 17, the pulley might be dangerously hanging, but if you manage to make it work, you will have a couple of nails to use! :-D
We had some gray soup with the occasional fine rain with strong wind gusts. Despite the bad forecast we took the train to Geislingen/Steige and strolled up to the Helfenstein castle ruin. All the colorful leaves were so beautiful, it didnât matter that the sun was behind thick layers of clouds.
We then continued to the Ădenturm (lit. boring tower). By then the wind had picked up by quite a bit, just as the weatherman predicted. We were very positively surprised that the Swabian Jura Association had opened up the tower. Between May and October, the tower is typically only manned on Sundays and holidays between 10 and 17 oâclock. But yesterday was Saturday and no holiday. The lovely lady up there told us that theyâre currently experimenting with opening up on Saturday, too, because there are some highly motivated members responsible for the tower.
We were the very first visitors on that day. Last Sunday, when the weather lived up to the weekdayâs name, they counted 128 people up in the tower. Very impressive.
The wind gusts were howling around the tower. Luckily, there are glass windows. So, it was quite pleasant up in the tower room. Chatting with the tower guard for a while, we got even luckier: the sun came out! That was really awesome. The photos donât do justice. As always, it looked way more stunning in person.
Thanks to all the volunteers who make it possible to enjoy the view from the thirty odd meters up there. That certainly made our day!
After signing the guestbook we climbed down the staircase and returned to the station and headed back. The train even arrived on time. What a great little trip!
https://lyse.isobeef.org/wanderung-auf-die-burgruine-helfenstein-und-den-oedenturm-2025-10-25/
Playing Troy Pierce - Tresor Berlin 3.3.17 at home.. just good music and #NixOS
@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. ;-)
@aelaraji@aelaraji.com, I mean to follow up here on the brief exchange we had on irc.mills.io, but I forgot. Never too late, so here it goes:
18:16 <aelaraji> quark đ much appreciated but it won't be necessary, since there isn't much to miss out on in most of where I hang out, so I could just disconnect and spare everyone else the noise
18:17 *** aelaraji (aelaraji@776014f5a3edd32f1ed19658b7b85c8c655945b0feacaedd92fe60e61a3c0ae2) has quit (/ME goes "yeeeeet..!")
18:18 <quark> No noise for me.
18:18 <quark> Itâs all good.
18:18 <quark> What would IRC be without on/offs?
18:19 <quark> Preeeety boring!
18:19 <quark> Ah, he was gone.
18:19 <quark> Well, I will twtxt this to him. LOL.
nicks? i remember reading somewhere whitespace should not be allowed, but i don't see it in the spec on twtxt.dev â in fact, are there any other resources on twtxt extensions outside of twtxt.dev?
@zvava@twtxt.net @movq@www.uninformativ.de Iâm not entirely sure about the spaces, but maybe they were omitted to simplify parsing of mentions in the form of @<nick url>. If the next token after the @<nick does not look like a URL, itâs not a mention but regular text. This is just wild guessing, though.
Looking at the regex and tests in the original twtxt reference implementation seems to confirm that theory in the sense as it relies on whitespace as the delimiter:

Another thing about nicks is that the original twtxt reference implementation converts nicks to all lowercase:

You probably know this already, the original twtxt file format specification can be found here: https://twtxt.readthedocs.io/en/latest/user/twtxtfile.html
As for extensions, I donât know of anything outside of twtxt.dev that has actually been (partially) implemented. However, there is also the issue tracker of the official reference implementation. You might wanna dig through that. For example, there is an alternative suggestions of multiline messages: https://github.com/buckket/twtxt/issues/157
@kat@yarn.girlonthemoon.xyz Ten stories or more are already very tall in my books. Not sure at which height I would start calling high rise buildings sky scrapers, but Wikipedia suggests around 150 meters, depending on region.
Oh, I just found
and this really does not look all that high. I thought that this would be at least 50 or 100 meters up. I was completely wrong. :-D
Good morning. Driving the dot matrix printer from my little real-mode toy OS. đšïž
(This is just a wrapper around BIOS INT 17. I love it nonetheless. đ )
A mate visted me and we went on a few hours long hike. We came across a mythical creature in its natural habitat:

pledge() and unveil() syscalls:
On todayâs research journey on pledge(âŠ)/unveil(âŠ)/landlock/capabilities I came across the great EWONTFIX blog, in particular this article here: https://ewontfix.com/17/ Super interesting.
Saw this on Mastodon:
https://racingbunny.com/@mookie/114718466149264471
18 rules of Software Engineering
- You will regret complexity when on-call
- Stop falling in love with your own code
- Everything is a trade-off. Thereâs no âbestâ 3. Every line of code you write is a liability 4. Document your decisions and designs
- Everyone hates code they didnât write
- Donât use unnecessary dependencies
- Coding standards prevent arguments
- Write meaningful commit messages
- Donât ever stop learning new things
- Code reviews spread knowledge
- Always build for maintainability
- Ask for help when youâre stuck
- Fix root causes, not symptoms
- Software is never completed
- Estimates are not promises
- Ship early, iterate often
- Keep. It. Simple.
Solid list, even though 14 is up for debate in my opinion: Software can be completed. You have a use case / problem, you solve that problem, done. Your software is completed now. There might still be bugs and they should be fixed â but this doesnât âaddâ to the program. Donât use âsoftware is never doneâ as an excuse to keep adding and adding stuff to your code.
this week im going to turn 17, thats a bad news.
this week im going to turn 17, thats a bad news.
SĂŁo da Universidade do Porto 29 das âMulheres na CiĂȘnciaâ 2025: https://noticias.up.pt/2025/04/17/sao-da-u-porto-29-das-mulheres-na-ciencia-de-2025/
@bender@twtxt.net Thanks! The rain rapidly cooled off the 17°C to just 10°C. I certainly appreciated that. The weather is coming from the west here, so I thought youâve sent it our way. Let me try to return it. :-)
@movq@www.uninformativ.de That is a good question, Iâve been on v0.17.3 for some time. In the past there has been one scheme update that I remember and the there was no issue. Maybe this next week I will try out v0.18 and post back.
I really donât mess with it being on a cron so tend to forget until I need it :-)
U.S.-born man from Georgia held for ICE under Floridaâs new anti-immigration law
Comments â Read more
Scientists: Protein IL-17 fights infection, acts on the brain, inducing anxiety
Comments â Read more
$ head -n 1 /var/log/pacman.log
[2015-10-16 17:08] [PACMAN] Running 'pacman -r /mnt -Sy --cachedir=/mnt/var/cache/pacman/pkg base base-devel'
Mine is 4,5 years behind!
This is a reminder to have a look to S.M.A.R.T. data I guess O:)
Test:
this is a code block
[2025-04-08 17:50:00] with a timestamp in brackets
The end.
@andros@twtxt.andros.dev Can you reproduce any of this outside of your client? I canât spot a mistake here:
$ curl -sI 'http://movq.de/v/8684c7d264/.html%2Dindex%2Dthumb%2Dgimp11%2D1.png.jpg'
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 2615
Content-Type: image/jpeg
Date: Wed, 19 Mar 2025 19:53:17 GMT
Last-Modified: Wed, 19 Mar 2025 17:34:08 GMT
Server: OpenBSD httpd
$ curl -sI 'https://movq.de/v/8684c7d264/gimp11%2D1.png'
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 131798
Content-Type: image/png
Date: Wed, 19 Mar 2025 19:53:19 GMT
Last-Modified: Wed, 19 Mar 2025 17:18:07 GMT
Server: OpenBSD httpd
$ telnet movq.de 80
Trying 185.162.249.140...
Connected to movq.de.
Escape character is '^]'.
HEAD /v/8684c7d264/.html%2Dindex%2Dthumb%2Dgimp11%2D1.png.jpg HTTP/1.1
Host: movq.de
Connection: close
HTTP/1.1 200 OK
Connection: close
Content-Length: 2615
Content-Type: image/jpeg
Date: Wed, 19 Mar 2025 19:53:31 GMT
Last-Modified: Wed, 19 Mar 2025 17:34:08 GMT
Server: OpenBSD httpd
Connection closed by foreign host.
$