@lyse@lyse.isobeef.org Commercial forest, I guess? (Are there any other forests?)
@lyse@lyse.isobeef.org I had that as my avatar/userprofile pic at work for a few years. š
@lyse@lyse.isobeef.org Luckily, yeah. Happens every now and then. Itās usually not even worth reporting, they often fix it in 30-90 minutes anyway.
@xuu@txt.sour.is Yeah, it will be delayed. Oh well. Thatās just the way it is. :-)
@movq@www.uninformativ.de Hahaha, that filename! :-D 100 times better than I could ever play.
@xuu@txt.sour.is If the unread counter becomes negative, wouldnāt that mean I have that many more read messages? :-D
@bender@twtxt.net Youāre spot on, itās important to not introduce classical bugs!
@movq@www.uninformativ.de Oh dear. :-( Have they fixed it?
@prologic@twtxt.net @movq@www.uninformativ.de I had a t-shirt with this one or the other decade ago. :-)
@prologic@twtxt.net š“š£
@eapl.me@eapl.me this ādirectoryā is actually named registry. You can see users at https://registry.twtxt.org/api/plain/users and his twts at https://registry.twtxt.org/api/plain/tweets
Twtxt was made for nerds, by nerds.
Iād like to change that. Itās by nerds/hackers, for nerds/hackers and friends of these. It doesnāt have to be hacky all the time, as you donāt need to be a nerd to have a blog.
But, for that to happen, someone has to build the tools to improve UX.by design there really is no way to easily discovers others
Yeah, I agree, and although there are directories of email addresses, usually you donāt want that, unless you are a āpublic figureā.
I couldnāt say that a microblogging is a āsocial networkā by default, as a blog is not either. At the same time, people would expect to find new people and conversations, as youād do in a forum.
I think of two features on top of the current spec:
- Clients showing a few posts of what your following are watching but you donāt, so perhaps you find something interesting to follow next. Or that feature of āYour āfollowingsā are following these accounts/peopleā. (Hard to explain in english, but I hope you get the idea)
- Sharing your .txt into some directory, saying āHey, I have this twtxt URL, I want to be discoveredā. Iām thinking of something like the Federated tab on Mastodon.
Hmm so looking at the swagger of the registry spec client it seems to just take a āpageā.. That seems worse than doing an offset. Lol.
https://github.com/DracoBlue/twtxt-registry/blob/master/src/swagger.json
@bender@twtxt.net thinked about Gemini protocol. Why corporations shit this name with cryptocurrency and LLMs?
@xuu@txt.sour.is like feeds+bridgy.fed? Will be happy anyway
@bender@twtxt.net I taught the whole ecosystem š
@prologic@twtxt.net @eapl.me@eapl.me The question I was asked the most was: How do I discover people?
Someone came up with a fantastic idea, instead of adding the new twt at the end of the feed, do it at the beginning. So you can paginate by cutting the request every few lines.
@doesnm@doesnm.p.psf.lt haha its not coming back. he talked of a stand alone thing like feeds. but not in yarnd
hmm @prologic@twtxt.net how did replying to lyse double up here?
@movq@www.uninformativ.de Thatās not very retrocomputing!
about:compat
in Firefox.
@bender@twtxt.net ššš
@lyse@lyse.isobeef.org I remember WebKit having a similar list, but I canāt find it right now ⦠š
@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