@prologic@twtxt.net In all seriousness: Don’t worry, I’m not going to host some Fediverse thingy at the moment, probably never will. 😅
But I do use it quite a lot. Although, I don’t really use it as a social network (as in: following people). I follow some tags like #retrocomputing, which fills my timeline with interesting content. If there was a traditional web forum or mailing list or even a usenet group that covered this topic, I’d use that instead. But that’s all (mostly) dead by now. ☹️
@movq@www.uninformativ.de I see, fair point, yeah.
about:compat
in Firefox.
@movq@www.uninformativ.de Yikes! I didn’t know about about:compat
. Crazy!
@xuu@txt.sour.is Wow, that’s a giant graveyard. In my new database I have 16,428 messages as of now. Archive feed support is not yet available, so it’s just the sum of all the 36 main feeds.
Thank you @python_valencia@twtxt.python-valencia.es for letting me show you the secrets of a decentralised plain text social network like twtxt.
I hope you enjoyed the talk! ❤️🐍
#python #twtxt
I want to present the twtxt feed from Python Valencia: https://twtxt.python-valencia.es/
Technical curiosity: It is generated using n8n, using the official rss.
#welcome
@bender@twtxt.net That … was better than expected. 😂
The Mastodon admins say that it’s probably because of the size of my account (~600 MB), so the export process times out. And I understand that. Here on twtxt, I always use auto-expiring links when I post images or videos. It just gets too much data otherwise. I think I’ll just set my Mastodon account to auto-delete posts after ~180 days or something like that. Nobody cares about old posts anyway.
@lyse@lyse.isobeef.org @bender@twtxt.net It already is a tiling window manager, but some windows can’t be tiled in a meaningful way. I admit that I’m mostly thinking about QEMU or Wine here: They run at a fixed size and can’t be tiled, but I still want to put them in “full screen” mode (i.e., hide anything else).
@movq@www.uninformativ.de let’s host yarnd! Or maybe wait until @prologic@twtxt.net return activitypub support which deleted in this commit
tt
reimplementation that I already followed with the old Python tt
. Previously, I just had a few feeds for testing purposes in my new config. While transfering, I "dropped" heaps of feeds that appeared to be inactive.
Thanks, @movq@www.uninformativ.de!
My backing SQLite database with indices is 8.7 MiB in size right now.
The twtxt
cache is 7.6 MiB, it uses Python’s pickle
module. And next to it there is a 16.0 MiB second database with all the read statuses for the old tt
. Wow, super inefficient, it shouldn’t contain anything else, it’s a giant, pickled {"$hash": {"read": True/False}, …}
. What the heck, why is it so big?! O_o
@movq@www.uninformativ.de You could also just use a tiling window manager. :-) As a bonus, it doesn’t waste dead space, the window utilizes the entire screen. To also get rid of panels and stuff, put the window in fullscreen mode.
@kat@yarn.girlonthemoon.xyz I have just opened the GIMP bug tracker (hosted at gitlab.gnome.org) and, I kid you not, they have deployed Anubis in front of it:
Oof.
tt
reimplementation that I already followed with the old Python tt
. Previously, I just had a few feeds for testing purposes in my new config. While transfering, I "dropped" heaps of feeds that appeared to be inactive.
@lyse@lyse.isobeef.org I’m glad to hear that! Yay for more clients. 😊
@lyse@lyse.isobeef.org Interesting, thanks for that list. 🤔
@david@collantes.us @prologic@twtxt.net Sorry! https://cascii.app/
… yeah, okay, I don’t think I’ll do that. 😅 Anything but twtxt is just too much effort.
@lyse@lyse.isobeef.org Bad boy! 😂 Remember, it is an extension
@movq@www.uninformativ.de Yeah, most of the graphical applications are actually KDE programs:
- KMail – e-mail client
- Okular – PDF viewer
- Gwenview – image viewer
- Dolphin – file browser
- KWallet – password manager (I want to check out
pass
one day. The most annoying thing is that when I copy a password, it says that the password has been modified and asks me whether I want to save the changes. I never do, because the password is still the same. I don’t get it.)
- KPatience – card game
- Kdenlive – video editor
- Kleopatra – certificate manager
Qt:
- VLC – video player
- Psi – Jabber client (I happily used Kopete in the past, but that is not supported anymore or so. I don’t remember.)
- sqlitebrowser – SQLite browser
Gtk:
- Firefox – web browser
- Quod Libet – music player (I should look for a better alternative. Can’t remember why I had to move away from Amarok, was it dead? There was a fork Clementine or so, but I had to drop that for some unknown reason, too.)
- Audacity – audio editor
- GIMP – image editor
These are the things that are open right now or that I could think of. Most other stuff I actually do in the terminal.
In the past™, I used the Python KDE4 bindings. That was really nice. I could pass most stuff directly in the constructor and didn’t have to call gazillions of setters improving the experience significantly. If I ever wanted to do GUI programming again, I’d definitely go that route. There are also great Qt bindings for Python if one wanted to avoid the KDE stuff on top. The vast majority I do for myself, though, is either CLI or maybe TUI. A few web shit things, but no GUIs anymore. :-)
Although, most software I use is decentish in that regard.
Is that because you mostly use Qt programs? 🤔
I wish Qt had a C API. Programming in C++ is pain. 😢
@movq@www.uninformativ.de Oh, right, a type would be good to have! :-D
@movq@www.uninformativ.de Where can I join your club? Although, most software I use is decentish in that regard.
I just noted today that JetBrains improv^Wcompletely fucked up their new commit dialog. There’s no diff anymore where I would also be able to select which changes to stage. I guess from now on I’m going to exclusively commit from only the shell. No bloody git integration anymore. >:-( This is so useless now, unbelievable.
@doesnm@doesnm.p.psf.lt 💯 👏👏👏👏👏👏
@lyse@lyse.isobeef.org (I think of pointers as “memory location + type”, but I have done so much C and Assembler by now that the whole thing feels almost trivial to me. And I would have trouble explaining these concepts, I guess. 😅 Maybe I’ll cover this topic with our new Azubis/trainees some day …)
@prologic@twtxt.net What is “ciwtuau”? I don’t understand, sorry haha
@prologic@twtxt.net So it seems!
yes @lyse@lyse.isobeef.org 😅
I am working on this: https://dm-echo.andros.dev/
More news coming soon.
#twtxt
@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.
@andros@twtxt.andros.dev @prologic@twtxt.net Exactly. The screenshots of the last few days show it in action. But I do not consider it ready for the world yet. @doesnm@doesnm.p.psf.lt appears to have a high pain tolerance, though. :-)
@andros@twtxt.andros.dev You use your real name as login name, too?
@prologic@twtxt.net I see this with the scouts. Luckily, not at work. But at work, I’m surrounded by techies.
@movq@www.uninformativ.de Oh my goodness! I’m so glad that I don’t have to deal with that in my family. But yeah, I guess you’re onto something with your theory. This article is also quite horrific. O_o
@movq@www.uninformativ.de Wooaah, that is cool! \o/
@lyse@lyse.isobeef.org Maybe it’s a lyrebird. 😏
@prologic@twtxt.net Yes, it was one of those. 95, 98, and Me were all built on top of DOS, as far as I know.
@lyse@lyse.isobeef.org I guess the thing is that usernames are no longer needed for many popular things, like WhatsApp. “Just install the app”, done. When I ran my Matrix server for our family, this was the first thing that people were bummed out about: “Oh, this needs a username and a password? Why doesn’t it just work? That’s annoying.”
People are less and less exposed to “low-level” details like this. There was also this story in 2021 about the concept of a “file”: https://www.theverge.com/22684730/students-file-folder-directory-structure-education-gen-z
In a couple of days I’ll be giving a talk about #twtxt https://www.meetup.com/es-ES/python-valencia-meetup/events/306769708/
@doesnm@doesnm.p.psf.lt What is tt2?
@lyse@lyse.isobeef.org I had no idea. However, I think we’re losing our sense of anonymity. I even started using my real name!
@doesnm@doesnm.p.psf.lt Heck yeah! Worky, worky! \o/
Ctrl+Left
to jump a word left, I get 1;5D
in my tt2 message text. My TERM
is set to rxvt-unicode-256color
. In tt
, it works just fine. When I change to TERM=xterm-256color
, it also works in tt2
. I have to read up on that. Maybe even try to capture these sequences and rewrite them.
@movq@www.uninformativ.de Hahaha, that name is certainly fitting! :-D
Yeah, I should revert that and try to figure out which programs misbehaved. But that’s something for future Lyse. 8-) Right now, I just redefine TERM
in my Makefile when the USER
happens to be me.
@prologic@twtxt.net Yeah and I don’t get why … There’s no copyrighted music in it, no ads (at least I don’t see any) … Just weird. 🥴
@prologic@twtxt.net Lol, I give up. 🥴
Ctrl+Left
to jump a word left, I get 1;5D
in my tt2 message text. My TERM
is set to rxvt-unicode-256color
. In tt
, it works just fine. When I change to TERM=xterm-256color
, it also works in tt2
. I have to read up on that. Maybe even try to capture these sequences and rewrite them.
@lyse@lyse.isobeef.org There’s a reason it’s called “(n)curses”. 😏 The only advice I can give is to never fiddle with reassigning control sequences and $TERM
variables. Leave $TERM
at whatever value the terminal itself sets and use an appropriate terminfo file for it. If there are programs misbehaving, they probably blindly assume XTerm and should be fixed (or have XTerm as a hard requirement). If you try to fix this on your end, it’ll likely just break other programs. 🥴
@david@collantes.us Ah, I just went to bed, great to see you figured it out. 😅 I probably would have ended up with something similar (but I’m not a Vimscript guru). 🤔
Chapter 14:
Epilogue:
Chapter 12:
Chapter 13:
@david@collantes.us Tada, the reply context is now also shown above. It’s slowly coming together and reaching a state where I can actually use this as my daily driver I think. :-)
@david@collantes.us Thanks, yes, absolutely! ;-)
I now notice that I should also show the original message(s) to which I reply. That was super useful in the original tt
. But one after the other. The mentions are now automatically filled in. \o/
@david@collantes.us While you’re typing? I guess this could be used as a starting point (doesn’t work on the very first line):
inoremap <CR> <Esc>:r!date +"\%F \%T"<CR>A
What’s the end goal here? 😅
@movq@www.uninformativ.de hahahah i for one hate sleeping and need to be busy 24/7 or else i go insane so server stuff is awesome for my ADHD ass!!!
IaaS does seem kinda interesting to me, i think i could vibe with that more than full on cloud stuff
i hope i can be one of those people who does the barebones stuff bc i am a rare sicko who finds it fun and cloud stuff scares me LMAOOOO
@lyse@lyse.isobeef.org oh yeah i use the CLI sometimes it’s fun af
@kat@yarn.girlonthemoon.xyz Allegedly, there’s at least a CLI for that, yarnc
. I neither used nor looked at it, though.
@movq@www.uninformativ.de Oh for sure, I fully agree!
@eapl.me@eapl.me Cool!
Proposal 3 (https://git.mills.io/yarnsocial/twtxt.dev/issues/18#issuecomment-19215) has the “advantage”, that you do not have to “mention” the original author if the thread slightly diverges. It seems to be a thing here that conversations are typically very flat instead of trees. Hence, and despite being a tree hugger, I voted for 3 being my favorite one, then 2, 1 and finally 4.
All proposals still need more work to clarify the details and edge cases in my opinion before they can be implemented.
@arne@uplegger.eu I AM THE KING OF AGE OF EMPIRES!!1elf 👑
@kat@yarn.girlonthemoon.xyz Using full-blown Cloud services is good for old people like me who don’t want to do on-call duty when a disk fails. 😂 I like sleep! 😂
Jokes aside, I like IaaS as a middle ground. There are IaaS hosters who allow you to spin up VMs as you wish and connect them in a network as you wish. You get direct access to all those Linux boxes and to a layer 2 network, so you can do all the fun networking stuff like BGP, VRRP, IPSec/Wireguard, whatever. And you never have to worry about failing disks, server racks getting full, cable management, all that. 😅
I’m confident that we will always need people who do bare-bones or “low-level” stuff instead of just click some Cloud service. I guess that smaller companies don’t use Cloud services very often (because it’s way too expensive for them).
@prologic@twtxt.net yesss ty for listening and engaging with my kpop nonsense it’s really beautiful!
@prologic@twtxt.net i have seen some posts on this! that’s definitely reassuring. i don’t know cloud stuff at all and don’t want to. servers forever….
@kat@yarn.girlonthemoon.xyz UPDATE I DID IT!!!!!!! you will now see a cute anime girl that is behind the scenes testing if you are a bot or not in a matter of seconds before being redirected to the site :) https://superlove.sayitditto.net/
@kat@yarn.girlonthemoon.xyz think i’ll wait and see if the caddy module proposal gets anywhere bc that sounds like it’d make my life easier lol
@prologic@twtxt.net oh yeah it’s absolutely epic i love how fast it is. it would be extra peak if it sent a message to every bot that it denies access to that just says “get fucked” or something idk
@david@collantes.us You are right! I need to check this problem. Thank you very much!
well, I assume by syntax you mean Gemtext (which I like a lot, my personal blog is built on top of it), so I think it might work for twtxt clients…
I knew of twtxt in Gemini Antenna, so at least the 2017 spec might work on that protocol. I think the main issue with extensions is that they weren’t designed with many URLs and protocols in mind.
Also I have to admit that the Gemini community significantly reduced in the last few years. I don’t know how worth it is to add support for Gemini now.
@bender@twtxt.net Yeah, as you mentioned in the other thread, @andros@twtxt.andros.dev’s hashes appear to be not quite right. 🤔
@kat@yarn.girlonthemoon.xyz I guess we all whish we were jobless. Not moneyless, just jobless. 😅
@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.
$
@kat@yarn.girlonthemoon.xyz i could build that myself but also i can’t because i don’t know code!!!!!!!!! her ass only knows ruby on rails!!!!!!!!!
@movq@www.uninformativ.de I have no doubt that you’re not seeing the images correctly 😀. It’s just that it’s broken when viewing them, in my case, and analyzing the URLs, I’ve seen everything I mentioned.
Regarding the hash, you’re right. I’ll have to investigate what’s going on. I’m having a hard time getting the hash generation to work properly.
@movq@www.uninformativ.de ancient……. i love old linux it’s so janky
@movq@www.uninformativ.de me being the one jobless bitch on here is not helping my case LOL
@andros@twtxt.andros.dev Hm, looks correct to me. The image to be displayed is a thumbnail and this links to the full-sized image. The thumbnail (JPG) is auto-generated from the full image (PNG), hence the two extensions.
What does look strange, though, is that your client came up with the hash pqsmcka
, while it should have been te5quba
. 🤔
@prologic@twtxt.net Can we add a table in twtxt.dev with features of each client?
- Is active?
- Extensions compatibility
- Language
- Multiaccount.
- Mutiuser
And so on…
@movq@www.uninformativ.de The urls of the images are strange! My client crashes to display them, and when I tried some urls, I found a redirect. Ah! And the images had two extensions.
@eapl.me@eapl.me I agree. The syntax is weird inside Gemini and twtxt is made with the http protocol in mind and Gemini doesn’t work with some extensions.
@kat@yarn.girlonthemoon.xyz Asleep or at work, I guess. 😅
Timeline and twtxt-php, don’t support Gemini, only HTTP/S, as a design choice (although originally it was intended to work on Gemtext, it was a niche inside a niche, so it was discarded very soon).
At the moment of building the engine there weren’t many Gemini URLs supporting twtxt 1.1 (with twtxt.dev extensions).
Also User-Agent won’t work there, and many Gemini URLs are a mirror of the HTTP one, so I think is not strictly necessary.
my 2c
@kat@yarn.girlonthemoon.xyz i’m just winging it with fail2ban and robots.txt tbh it’s a miracle the poor server hasn’t fallen over yet from the scrapers lol. like i run this whole thing off a macbook i’m not even joking https://superlove.sayitditto.net/
@lyse@lyse.isobeef.org interesting! yeah i figured it was some parsing stuff going on
@kat@yarn.girlonthemoon.xyz It’s there, but yarnd’s markdown library probably thinks that it’s some broken HTML and swallows it, not sure.
@thecanine@twtxt.net Yeah, nobody will ever find that setting.
@movq@www.uninformativ.de ]:-> Ah, just that one line scrolls horizontally, not the entire screen.
@kat@yarn.girlonthemoon.xyz nooo my little heart got dropped from the post
@andros@twtxt.andros.dev jenny can and, IIRC, Yarn also supports it. 🤔
What is twtxt for me? It is a community of users sharing plain text following a specification that can be readable by both humans and machines.
For some it is a microblogging platform, for others it is a social network, others see it as an enhanced RSS feed and a few consider it a hacker’s toy. I use it as a learning platform. And as collateral damage, I’m meeting some very interesting people.
And for you?
Chapter 7:
Chapter 8:
@movq@www.uninformativ.de nice!!! i wanna try snac it looks sooo fun
@kat@yarn.girlonthemoon.xyz Oh, yes, it’s probably going to be something like gotosocial or snac. It’s got to be as lightweight as possible. (I call this whole thing “Mastodon”, but you’re right, that’s not quite correct. 😅)
I have released new updates to the twtxt.el client.
- New feature: Notifications.
- Updated: Improved user interface for new posts.
- Updated: Documentation.
- Updated: Some UI elements and included information about shortcuts in each buffer.
- Minor fixes.
Source code: https://codeberg.org/deadblackclover/twtxt-el
In the next version: You will be able to send direct messages.
Enjoy!
#emacs #twtxt #twtxtel
@movq@www.uninformativ.de mastodon is probably the worst fedi software to self host tbh, you might wanna check out gotosocial? not to like pull you in another direction but idk masto is just suuuuper heavy lol
@lyse@lyse.isobeef.org Doing the devil’s work:
https://movq.de/v/b895c14411/los86-shell-cursor-history.mp4
Better than nothing. 😅
@thecanine@twtxt.net It suits your site very well, but I find this font hard to read. In any case, keep on pixeling.
@movq@www.uninformativ.de Haha! Yeah, I really don’t know if that’s the best translation.
@prologic@twtxt.net @andros@twtxt.andros.dev
more examples:
2020 Jan1 New Year's Day @yearly
2020 jan 3Mon Dr. Martin Luther King, Jr Day @yearly
2020 feb 3Mon President's Day @yearly
2020 may -1Mon Memorial Day @yearly
2020 jun19 Juneteenth @yearly
2020 jul1 Independence Day @yearly
2020 jul24 Pioneer Day @yearly
2020 sept 1Mon Labor Day @yearly
2020 oct 2Mon Columbus Day @yearly
2020 nov11 Veteran's Day @yearly
2020 nov 4Thur Thanksgiving Day @yearly
2020 dec25 Christmas Day @yearly
2025-01 Fri [ ] Take out Trash @weekly
2024-10-17 Thu [x] (A) Did this and that completed:2024-10-18
2025-10-18
[ ] (A) Submit important papers
[ ] (B) Work on +ProjectB
- some note
2024-10-21
- some notes about things to remember for Monday
[ ] Do that
[ ] Travel the stars
@prologic@twtxt.net Chapter 6:
@prologic@twtxt.net chapter 5:
@prologic@twtxt.net SUUUPER CATCHY it’s been stuck in my head all day
@lyse@lyse.isobeef.org Ha, “imps”, when I read imps, I think of these guys: https://dungeonkeeper.fandom.com/wiki/Imp 😂