Fark me again with the bots. This time DDoS-style crawling from hundreds of IPs and dozens of ASN(s) wtf?!
Iâve had to disale the Ingress to my Git instance for the time being,
i need to sleep and I canât fight this :/
yakumo.dev is finally done for, November 26, 2025 in UTC time.
So long⌠I wonât be missing it though
@movq@www.uninformativ.de Seems fine to me! Plenty of time to get our shit⢠in order! đ
twtxt.net) was being hammered by something at a request rate of 30 req/s (there are global rate limits in place, but still...). The culprit? Turned out to be a particular IP 43.134.51.191 and after looking into who own s that IP I discovered it was yet-another-bad-customer-or-whatever from Tencent, so that entire network (ASN) is now blocked from my Edge:
@prologic@twtxt.net Time to make a new internet. Maybe one that intentionally doesnât âscaleâ and remains slow (on both ends) so itâs harder to overload in this manner, harder to abuse for tracking your every move, ⌠Got any of those 56k modems left?
(Iâm half-joking. âMake The Internet Expensive Againâ like it was in the 1990ies and some of these problems might go away. Disclaimer: I didnât have my coffee yet. đ )
Fark me đ¤Śââď¸ I woke up quite late today (after a long night helping/assisting with a Mainframe migration last night fork work) to abusive traffic and my alerts going off. The impact? My pod (twtxt.net) was being hammered by something at a request rate of 30 req/s (there are global rate limits in place, but stillâŚ). The culprit? Turned out to be a particular IP 43.134.51.191 and after looking into who own s that IP I discovered it was yet-another-bad-customer-or-whatever from Tencent, so that entire network (ASN) is now blocked from my Edge:
+# Who: Tentcent
+# Why: Bad Bots
+132203
Total damage?
$ caddy-log-formatter twtxt.net.log | cut -f 1 -d ' ' | sort | uniq -c | sort -r -n -k 1 | head -n 5
61371 43.134.51.191
402 159.196.9.199
121 45.77.238.240
8 106.200.1.116
6 104.250.53.138
61k reqs over an hour or so (before I noticed), bunch of CPU time burned, and useless waste of my fucking time.
All my newly added test cases failed, that movq thankfully provided in https://git.mills.io/yarnsocial/twtxt.dev/pulls/28#issuecomment-20801 for the draft of the twt hash v2 extension. The first error was easy to see in the diff. The hashes were way too long. Youâve already guessed it, I had cut the hash from the twelfth character towards the end instead of taking the first twelve characters: hash[12:] instead of hash[:12].
After fixing this rookie mistake, the tests still all failed. Hmmm. Did I still cut the wrong twelve characters? :-? I even checked the Go reference implementation in the document itself. But it read basically the same as mine. Strange, what the heck is going on here?
Turns out that my vim replacements to transform the Python code into Go code butchered all the URLs. ;-) The order of operations matters. I first replaced the equals with colons for the subtest struct fields and then wanted to transform the RFC 3339 timestamp strings to time.Date(âŚ) calls. So, I replaced the colons in the time with commas and spaces. Hence, my URLs then also all read https, //example.com/twtxt.txt.
But that was it. All test green. \o/
Geologic Core Sample
â Read more
@lyse@lyse.isobeef.org @bender@twtxt.net Pfft, they want folks to relocate to Sydney. Fuck that 𤣠Sydney is a bit like San Francisco, Iâm not actually sure which is worse. Fuckân expensive as hell, the only palce youâd be able to afford to buy or rent is at least ~2hrs out of the city by public transport (i.e: train) and by that time youâve just pissed your life down the toilet, because youâd be expected ot work a 9-10hr day + 2-3hrs of travel each way, buy the time you factor in having to wake up super early to get ready to travel in to work, you basically have zero time for anything else, let alone your ufamily,
Fuck that.
@prologic@twtxt.net I couldnât have phrased it any better than @bender@twtxt.net. :-)
Twice or three times the money as before sounds a bit suspicious to me. Of course, I could be wrong, but I always was under the impression, that your last jobs werenât all that badly salaried. If the new offer is really paid this highly, it might be a shit job. For me, money isnât everything, Iâd rather opt for a lower income where the job is fun than hating to go to work every day. But if the new job ticks all boxes, go for it. :-)
Also: Consult your pillow, donât rush it.
I had no meetings this arvo, so I made an appointment with the woods in my extended lunch break. The 6°C warm sun was out all day long and there was only a very light breeze. So, a very nice autumn day.
When I stopped to take a photo in the forest, a deer behind me took off into the woodland. I didnât see it before. Also, I came across one or the other clearing. Sadly, itâs all commercial timberland here. Luckily, in a year or so, when nature slowly took over and reclaimed some spots, the apocalyptic sites are then looking a bit more decent again.
Cleaning of the ruin walls on my backyard mountain slowly takes shape. They made some progress and moved on to the other section. The flag on top is halfway disintegrated again, all the yellow half is completely gone. Iâm wondering if they just stop replacing it at some point in time. But probably not.
@lyse@lyse.isobeef.org @bender@twtxt.net thatâs also what Yarn.socialâs logo is, and just happens to be the yarnd default. Hmmm figured times for a change? đ¤
I know its been a long time, but I did come about around to howl a bit recently https://git.gay/xjix/howl needs a ton of work to be usable, but I think itll be a fun way to browse the twtxtverse.
@movq@www.uninformativ.de I think I now remember having similar problems back then. Iâm pretty sure I typically consulted the Qt C++ documentation and only very rarely looked at the Python one. It was easy enough to translate the C++ code to Python.
Yeah, the GIL can be problematic at times. Iâm glad it wasnât an issue for my application.
@prologic@twtxt.net Hm, same startup delay. (Go is not an option for me anyway.)
Itâs hard to tell why all this is so slow. Maybe in this particular case it has something to do with fonts: strace shows the program loading the fontconfig configs several times, and that takes up a bulk of the startup time. đ¤ (Qt6 or Java donât do that, but theyâre still slow to start up â for other reasons, apparently.)
To be fair, itâs âjustâ the initial program startup (with warm I/O caches). Once itâs running, itâs fine. All toolkits Iâve tried are. But I donât want to accept such delays, not in the year 2025. đ Imagine every terminal window needing half a second to appear on the screen ⌠nah, man.
I like to read through old RPG books and zines for inspiration for my games, and lately Iâve been enjoying the Arduin Grimoire (https://en.wikipedia.org/wiki/Arduin), one of the earliest 3rd-party zines (coming out during the initial run of OD&D). Itâs filled with a bunch of unique ideas (some better than others), entirely too many charts, and is very much a product of its time, but thereâs something about its ârawâ-ness (and its variety) that I still find appealing.
Be it Java with Swing or PyQt6, it takes ~300 ms until a basic window with a treeview and a listbox appears. That is a very noticeable delay.
Is it unrealistic to expect faster startup times these days? đ¤
Once the program is running, a new second window (in the same process) appears very quickly. So itâs all just the initialization stuff that takes so long. I could, of course, do what âfatâ programs have done for ages: Pre-launch the process during boot, windowless. But I was hoping that this wasnât needed. đ (And itâs a bad model anyway. When the main process crashes, all windows crash with it.)
Man, @quark@ferengi.one has an absolute gold mine. Having dealt again with different clocks and all sorts of strange time things at work today, this made my day! https://netbros.com/1755172401/ :â-D
Work has been a lot lately. Iâm looking forward to the weekend and taking time for personal projects.
@bender@twtxt.net Twtxt <-> ActivityPub (2nd timeâs the charm? đ¤Ł)
This looks like a botnet, to be honest. The IPs are all over the place. Ethopia, Brazil, Kenya, Lebanon, Netherlands, ⌠I mean, thatâs the logical thing to do, isnât it? Do your web crawling on infected PCs. Nobody will block those, because those are the same IP ranges as legitimate requests. And obviously you donât have to pay for computing time.
⌠and they all send invalid HTTP requests, all answered with HTTP 400 ⌠How silly.
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.
@bender@twtxt.net Of course, I didnât do anything yet at all. Maybe I will find some time next weekend. Letâs see.
Android shopping list apps disappointed me too many times, so I went back to writing these lists by hand a while ago.
Hereâs whatâs more fun: Write them in Vim and then print them on the dotmatrix printer. đĽł
And, because I can, I use my own font for that, i.e. ImageMagick renders an image file and then a little tool converts that to ESC/P so I can dump it to /dev/usb/lp0.
(I have so much scrap paper from mail spam lying around that I donât feel too bad about this. All these sheets would go straight to the bin otherwise.)

I just spent too much time trying to pick a terminal colors theme.
Thank you for the encouragement and love and kind words, @lyse@lyse.isobeef.org @movq@www.uninformativ.de @bender@twtxt.net @doesnm@doesnm.p.psf.lt and others along the way Iâm not sure of their feed uris đ Iâll keep at it, but for the time being I will keep my distance, mostly off IRC, because I donât have the energy to spare in that kind of engagement (what//if the worst happens, itâs so draining). I need to remember what I ever did any of this for, it was back in ~2020 and I wanted really to build small interconnected communities that any non âtech savvyâ person (more or less) could also benefit from ane enjoy. Even if there are aspects of the specs weâve built/extended over time that arenât âperfectââ˘, theyâre âgood enoughâ⢠that theyâve last 5+ years (I believe this is 6 years running now). I want to spend a bit of time going back to why I did any of this in the the first place, and get a little micro-SaaS offering going (barely covering running costs) so encourage more folks to run pods, and thus twtxt feeds and grow the community ever so slightly. Other than that, I plan to get the specs âin orderâ to a point (with @movq@www.uninformativ.de and @lyse@lyse.isobeef.orgâs help) where I hope theyâll stand the test of time â like SMTP.
Thank you all ! đ
Welcome to the party, @threatcat@tilde.club! I reckon itâs totally fine what youâre doing. Over time, message counts naturally drop anyway. :-D And this is fine, too.
@quark@ferengi.one Very sad indeed! :-(
@eldersnake@we.loveprivacy.club Unfortunately, itâs back down again. But my hopes are high as it is a 503 this time and not a connection error anymore. :-)
@prologic@twtxt.net nothing to be sorry about. It gave me time to watch TV with kids! đ¤
Double congrats, @thecanine@twtxt.net! \o/
Iâm not a fan of the gemtext limits. This being only a single page (which probably doesnât get updated a whole lot), the efforts of having two dedicates files are not all that big, or so Iâd at least naively imagine.
I always recommend checking the W3C validator results, even though Iâm very guilty of not doing that myself. It just doesnât occur to me in the heat of the moment. I reckon if I were writing HTML on a more regular basis, I would pick up on making that a real habit. Anyway, your HTML being generated, you probably canât address the findings, though. So, might not be even worth the time heading over to the validator.
From a privacy point of view, personally, I would definitely host the CSS myself. Other than that, nice link collection. :-)
@eldersnake@we.loveprivacy.club What version are you running btw? Itâs probably time you upgraded and time I released a new version finally đ If youâre running a version thatâs pre-SQLite-cache, then yeah Iâm not surprised. The SQLite cache version is honestly much better đ¤Ł
@prologic@twtxt.net Heâll be probably back in a few days or weeks I reckon. Itâs not the first time that his raspi (or what hardware does he use again?) is down. :-)
⌠and now I just read @bender@twtxt.netâs other post that said the Gemini text was a shortened version, so I might have criticized things that werenât true for the full version. Okay, sorry, Iâm out. (And I wonât play that game, either. Donât send me another AI output, possibly tweaked to address my criticism. That is besides the point and not worth my time.)
@prologic@twtxt.net Letâs go through it one by one. Hereâs a wall of text that took me over 1.5 hours to write.
The criticism of AI as untrustworthy is a problem of misapplication, not capability.This section says AI should not be treated as an authority. This is actually just what I said, except the AI phrased/framed it like it was a counter-argument.
The AI also said that users must develop âAI literacyâ, again phrasing/framing it like a counter-argument. Well, that is also just what I said. I said you should treat AI output like a random blog and you should verify the sources, yadda yadda. That is âAI literacyâ, isnât it?
My text went one step further, though: I said that when you take this requirement of âAI literacyâ into account, you basically end up with a fancy search engine, with extra overhead that costs time. The AI missed/ignored this in its reply.
Okay, so, the AI also said that you should use AI tools just for drafting and brainstorming. Granted, a very rough draft of something will probably be doable. But then you have to diligently verify every little detail of this draft â okay, fine, a draft is a draft, itâs fine if it contains errors. The thing is, though, that you really must do this verification. And I claim that many people will not do it, because AI outputs look sooooo convincing, they donât feel like a draft that needs editing.
Can you, as an expert, still use an AI draft as a basis/foundation? Yeah, probably. But hereâs the kicker: You did not create that draft. You were not involved in the âthought processâ behind it. When you, a human being, make a draft, you often think something like: âOkay, I want to draw a picture of a landscape and thereâs going to be a little house, but for now, Iâll just put in a rough sketch of the house and add the details later.â You are aware of what you left out. When the AI did the draft, you are not aware of whatâs missing â even more so when every AI output already looks like a final product. For me, personally, this makes it much harder and slower to verify such a draft, and I mentioned this in my text.
Skill Erosion vs. Skill EvolutionYou, @prologic@twtxt.net, also mentioned this in your car tyre example.
In my text, I gave two analogies: The gym analogy and the Google Translate analogy. Your car tyre example falls in the same category, but Geminiâs calculator example is different (and, again, gaslight-y, see below).
What I meant in my text: A person wants to be a programmer. To me, a programmer is a person who writes code, understands code, maintains code, writes documentation, and so on. In your example, a person who changes a car tyre would be a mechanic. Now, if you use AI to write the code and documentation for you, are you still a programmer? If you have no understanding of said code, are you a programmer? A person who does not know how to change a car tyre, is that still a mechanic?
No, youâre something else. You should not be hired as a programmer or a mechanic.
Yes, that is âskill evolutionâ â which is pretty much my point! But the AI framed it like a counter-argument. It didnât understand my text.
(But what if thatâs our future? What if all programming will look like that in some years? I claim: Itâs not possible. If you donât know how to program, then you donât know how to read/understand code written by an AI. You are something else, but youâre not a programmer. It might be valid to be something else â but that wasnât my point, my point was that youâre not a bloody programmer.)
Geminiâs calculator example is garbage, I think. Crunching numbers and doing mathematics (i.e., âcomplex problem-solvingâ) are two different things. Just because you now have a calculator, doesnât mean itâll free you up to do mathematical proofs or whatever.
What would have worked is this: Letâs say youâre an accountant and you sum up spendings. Without a calculator, this takes a lot of time and is error prone. But when you have one, you can work faster. But once again, thereâs a little gaslight-y detail: A calculator is correct. Yes, it could have âbugsâ (hello Intel FDIV), but its design actually properly calculates numbers. AI, on the other hand, does not understand a thing (our current AI, that is), itâs just a statistical model. So, this modified example (âaccountant with a calculatorâ) would actually have to be phrased like this: Suppose thereâs an accountant and you give her a magic box that spits out the correct result in, what, I donât know, 70-90% of the time. The accountant couldnât rely on this box now, could she? Sheâd either have to double-check everything or accept possibly wrong results. And that is how I feel like when I work with AI tools.
Gemini has no idea that its calculator example doesnât make sense. It just spits out some generic âargumentâ that it picked up on some website.
3. The Technical and Legal Perspective (Scraping and Copyright)The AI makes two points here. The first one, I might actually agree with (âbad bot behavior is not the fault of AI itselfâ).
The second point is, once again, gaslighting, because it is phrased/framed like a counter-argument. It implies that I said something which I didnât. Like the AI, I said that you would have to adjust the copyright law! At the same time, the AI answer didnât even question whether itâs okay to break the current law or not. It just said âlol yeah, change the lawsâ. (I wonder in what way the laws would have to be changed in the AIâs âopinionâ, because some of these changes could kill some business opportunities â or the laws would have to have special AI clauses that only benefit the AI techbros. But I digress, that wasnât part of Geminiâs answer.)
tl;drExcept for one point, I donât accept any of Geminiâs âcriticismâ. It didnât pick up on lots of details, ignored arguments, and I can just instinctively tell that this thing does not understand anything it wrote (which is correct, itâs just a statistical model).
And it framed everything like a counter-argument, while actually repeating what I said. Thatâs gaslighting: When Alice says âthe sky is blueâ and Bob replies with âwhy do you say the sky is purple?!â
But it sure looks convincing, doesnât it?
Never againThis took so much of my time. I wonât do this again. đ
This brings a thought I had for a long time, why canât we upload arbitrary files to a twtxt? If not an image, make it simply a link. I could have used such feature to upload the text.
You do raise very good points though, but I donât think any of this is particularly new because there are many other examples of technology and evolution of change over time where people have forgotten certain skills like for example, changing a car tyre
Winning animations (TkSolâs timing is screwed up): https://movq.de/v/92d7758740
@movq@www.uninformativ.de Oh shit! :-( Time to switch companies. If you found something, please let me know. This hype train is derailing here as well.
Okay folks Iâm calling it. See yâall again next time. Hopefully more of you make it next time đ¤
@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.
@movq@www.uninformativ.de Uh, that actually looks not that terrible. Somehow, I remember Swing GUIs being way uglier.
As for Visual Basic, I only had to use VBA once in my life. That was in the beginning of my career when I inherited a project from a leaving coworker. Fuck me, was that awful. Just alone the damn compiler error dialog box popping up in my face all the time while editing and the compiler already trying to parse the unfinished and hence of course uncompilable code. Boy, that left a lasting impression on me. I ported everything to Java very quickly. Luckily, the code base wasnât all that large at that point in time. I had to add a bunch of new features after that, so I was very glad that I convinced my workmate/project manager to do that first. We didnât even need a GUI, the button in Excel was transformed to a command line program that just generated the large file.
But I cannot comment on the VB GUI designer, I never used that. Your screenshot looks very similar to the Delphi one, though. Only towards the end of my Delphi days I found out about the possibility to make the widgets snap to window edges and corners (I donât remember how that was called), so that resizing the windows was actually possible without messing up their entire contents.
Switching to Linux, Delphi wasnât an option anymore. For some reason I couldnât use Kylix. Maybe it was already dead by the time I changed OSes. Or I couldnât get it to run. I just donât remember. I just recall that the unavailability of Delphi was the reason it took me a while to actually settle on Linux. I then fully switched to Java. The GridBagLayout was my absolutely favorite Swing layout manager. I reckon I used it 98% of the time, because it was so powerful and made the windows resize properly, just as I had learned to do in Delphi shortly before.
Up until discovering Swing, I used Javaâs AWT for a short amount of time. That was very limited I think and I hit the limits fairly quickly. Later at uni, we had one project making use of SWT. Didnât convince me either. I could be wrong, but I think there was also a SWT GUI designer plugin for Eclipse. If there really was, that one wasnât in the same street as Delphiâs (there must be a reason I forgot about it ;-)).
@movq@www.uninformativ.de Donât you worry, this was meant as a joke. :-D
There was a time when I thought that Swing was actually really good. But having done some Qt/KDE later, I realized how much better that was. That were the late KDE 3 and early KDE 4 days, though. Not sure how it is today. But back then it felt Trolltech and the KDE folks put a hell lot more thought into their stuff. I was pleasantly surprised how natural it appeared and all the bits played together. Sure, there were the odd ends, but the overall design was a lot better in my opinion.
To be fair, I never used it from C++, always the Python bindings, which were considerably more comfortable (just alone the possibility to specify most attributes right away as kwargs in the constructor instead of calling tons of setters). And QtJambi, the Java binding, was also relatively nice. I never did a real project though, just played around with the latter.
And maybe I should go back to using GUI designers. Havenât used those since the Visual Basic days. đ¤ It wasnât pretty, but you got results very quickly and efficiently.
(When I switched to Linux, I quickly got stuck with GTK and that only had Glade, which wasnât super great at the time, so I didnât start using it ⌠and then I never questioned that decision âŚ)
Just typing twts directly into my twtxt file.
Details:
- Opening my twtxt file remotely using
vim scp://user@remote:port//path/to/twtxt.txt
- Inserting the date, time and tab part of the twt with
:.!echo "$(date -Is)\t"
- In case I need to add a new line I just
Ctrl+Shift+u, type in the2028and hitEnter
- In order to replay, you just steal a twt hash from your favorite Yarn instance.
It looks tedious, but itâs fun to know I can twt no matter where I am, as long as can ssh in.
@bender@twtxt.net Hm, are we talking about different dates or are there different timezone offsets for this timezone abbreviation? With EDT being UTC-4, 2025-11-02T12:00:00Z is Sunday at 8:00 in the morning local time for you. Or were did I mess up here? :-?
@prologic@twtxt.net You want me to submit a reply with âI probably wonât show upâ?
@lyse@lyse.isobeef.org then I blame @prologic@twtxt.net, and no one else. LOL. But yeah, it is Saturday around 06:00 my time (EDT).
@lyse@lyse.isobeef.org then I blame @prologic@twtxt.net, and no one else. LOL. But yeah, it is Saturday around 08:00 my time (EDT).
@bender@twtxt.net Thereâs a reason itâs in UTC time đ¤Ł
@movq@www.uninformativ.de Itâs way more expensive and time-consuming in the end. If only somebody had warned us!!1
The triangle reminds me of zalgo text: https://en.wikipedia.org/wiki/Zalgo_text
@lyse@lyse.isobeef.org Theyâre seriously telling us at work: âCan it be AIâd? Do it, donât waste time!â Shit like that is the result. (Whatâs this weird gray triangle in the bottom right corner?)