@movq@www.uninformativ.de Same 👌
@lyse@lyse.isobeef.org Just as planned! 😅
@itsericwoodward@itsericwoodward.com (I confess, my brain pronounced it as “TwitStorm”. 😂)
Thank you, @alexonit@twtxt.alessandrocutolo.it! It’s not sealed at all. If you were pouring in a liquid, it would run out on all four corners. It’s just folded over and carefully hammered shut as best as possible. 03 is a bit blurred, but you can see the tab from the right (the short side) tucking in on the left (the long side). The hem on top clamps it in place fairly decently.
I decided against blind rivets, because they leave ugly looking and sharp backsides, which can also interfer with the contents of the box. However, they would be an easy solution to make the corners more rigid and prevent any movement from the short sides.
Unfortunately, I can’t weld or solder, so that’s not an option. It would be the by far best solution. I wanna learn it one day, though.
Yes, Ken is a really great dude. He’s the reason I gave this a shot in the first place. :-)
@itsericwoodward@itsericwoodward.com No worries, all good, mate! We all have to start somewhere. Other software requests my feed several orders of magnitude more often.
I can confirm, the User-Agent
header appears to be fixed. \o/
Two other things I noticed, though:
There’s now an
OPTIONS
request for my feed coming from something that claims to be Firefox, pointing to your feed URL in the query. No clue what this is about. In any case, it’s rejected with a405 Method Not Allowed
.Not that these few requests bother me at all, but you might wanna implement caching next with either the
If-Modified-Since
orIf-None-Match
request headers. This way, if the feed hasn’t changed, the web server can reply with a304 Not Modified
and no body at all, saving unnecessary traffic. But again, this is really not an issue for me at all. I just wanted to make sure you’re aware of it, that’s all. It might be even already on your agenda. Or you might decide to never do anything about it, which is also fine for me. :-)
@bender@twtxt.net Yes! What you’re seeing in the demo is just demoing the routes file and redirects, etc/. Pathing more.
@alexonit@twtxt.alessandrocutolo.it so, a PWA, right?
@prologic@twtxt.net ready, set, goooooooo!
Hi everyone, here’s a little introduction of my twtxt client (still WIP).
The client I’m developing is a single tenant project that runs entirely in the browser (it might use an optional backend).
It’s entirely based on native web-components and vanilla JS, it is designed to act closer to a toolkit than a full-fledged client, allowing users to “DIY” their own interface with pure html or plain javascript functions.
Users can also build their own engines by including a global javascript object that implement the defined internal API (TBD).
I’m planning to build a system that is easy enough to build and use with any skill level, using only pure html (with a homebrew minimal template engine) or via plain JS (I’ll be also providing some pre-made templates too).
Everything can be self-hosted on any static hosting provider, this allows to spread twtxt within communities like Neocities and similarly hosted websites (basically any Indieweb/Smallweb/Digital garden website and any of the common GitHub/Lab/Berg/lify Pages).
It will be probably named something like TxtCraft or craf.txt but I’m not really sure yet… 🤔 (Maybe some suggestions could help)
I’m still in the experimental phase, so there’s no decent source-code to share yet, but it will soon enough!
@lyse@lyse.isobeef.org Beautiful handwork, how did you seal the corners? I don’t see and hole or anything.
BTW, That Sheet Metal Dude is something else himself, skilled enough to teach others, can work properly with self-imposed contraints, care about safety and is humble enough to be wiling to learn from others, a true craftman worthy of respect.
@movq@www.uninformativ.de Yeah I was gonna say 😅 The problem isn’t that bad 🤣 But still we should fix this soon™ 🔜
@prologic@twtxt.net I checked a while a ago and there were, like, 3-5 collisions or something like that. Not that many. 🤷 I have to specifically look for them – I don’t notice it in normal operation.
@movq@www.uninformativ.de You were seeing that mayn hash collisions for you to notice this? 😱
@bender@twtxt.net I’ve made several improvements today, tightened up the line height and density of the text plus a few other nice things too! I think I’m ready to start migrating my blog over to this 😅
@bender@twtxt.net I agree ! I reckon the line height could be a bit smaller 👌
@prologic@twtxt.net it is looking good! On mobile, I find that the line height is too large for my liking, and that text takes too much space. I would like it a bit more dense. But that’s just my taste.
I haven’t checked in desktop; I try not to touch desktop on weekends. 😂
groff --version
)?
@movq@www.uninformativ.de It’s an ancient 1.22.4. :-)
@lyse@lyse.isobeef.org That looks like an older bug report. Which groff version is that (groff --version
)?
@lyse@lyse.isobeef.org Very cool! 😎
@movq@www.uninformativ.de I got an empty line through the table, similarly to one of the linked bug reports, just at a different location:
https://lyse.isobeef.org/tmp/screenshot-2025-09-27-13-56-13.png
@bender@twtxt.net @movq@www.uninformativ.de Thank you! Not sure what I end up putting in there, but I’m sure I will find some tools to go in. :-)
Yes, this was a flat piece of sheet metal. It went together like a cardboard box, just much slower and with timbers clamped down to get a straight folding line. I don’t have a sheet metal brake, so I just carefully hammered the piece bit by bit. Like in this video by the Sheet Metal Dude: https://www.youtube.com/watch?v=WYgEfWEMXk0
@prologic@twtxt.net No, this is a Linux manpage from the man-pages
project: https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/man/man7/ascii.7
I do have an idea what’s going on. Could be an unfortunate interaction between the table preprocessor tbl
and the man
macro package. 🤔
@movq@www.uninformativ.de Is this for your own OS? 🤔
@lyse@lyse.isobeef.org Not bad. 🤔 So this started out as a flat sheet and then you cut and folded it, like paper (more or less)?
@lyse@lyse.isobeef.org very nice! What’s the intended usage?
@movq@www.uninformativ.de You didn’t miss anything. Just time for more useful stuff. ;-)
@bender@twtxt.net Shh yes 🤣 this is the problem with politics 😆 by that definition; I’m not conservative 🤣
@prologic@twtxt.net well, multiculturalism, immigration, and race (to mention a few, there is more) are key points on conservative’s agendas. That’s why I asked what you thought of it. You haven’t replied yet. Of course, no answer is an answer, right?
@bender@twtxt.net Yes but I guess what I’m saying is; “so what about it?” Aren’t most places in the world these days “multicultural” to some degree or another? 🤔
@prologic@twtxt.net growing up in a multicultural country has nothing to do with what you think about it, does it?
@bender@twtxt.net Well see that’s just what the freak’n tests say about me haha 🤣
immigration and multiculturalism
What about it? I grew up in a multicultural country.
@lyse@lyse.isobeef.org I give up. Just doesn’t give me a 360° video. 🥴 Maybe I’m just having bad luck with YouTube’s randomized stuff (maybe I’m getting “experiments”, who knows) …
@alexonit@twtxt.alessandrocutolo.it You might wanna have a look at this: https://lyse.isobeef.org/tmp/twthash.py
@prologic@twtxt.net this is 90 degrees fork. Now that you mention being conservative socialist (first I heard of the term, had to read some to grasp what’s all about), what do think about immigration and multiculturalism?
Exactly, @zvava@twtxt.net, I agree. (Although, in my client at least, I wouldn’t use hashes anywhere.)
@movq@www.uninformativ.de I’m glad it make sense for you 😅 I will never understand it. All I know is that I’m a conservative socialist and there’s a lot of “stupid shit”™ happening in the world (including my own country). I still blame extreme Capitalism.
Hey @itsericwoodward@itsericwoodward.com, I just wanna let you know that twtstrm/0.4.0 sends a broken User-Agent
header. Instead of the URL, the nick is repeated.
@prologic@twtxt.net Hm, I don’t know. Over here, we have parties that we would call “left” or “right”, one of them even calls themselves “The Left”. No idea about your political landscape, but it still makes sense for us. 🤔 For me, at least.
@zvava@twtxt.net Hahaha, I love it! This illustrates the contradiction very well.
@prologic@twtxt.net how dare you! (read it with Greta emphasis, and accent)
@movq@www.uninformativ.de See here’s the thing… I just don’t fucking gt this whole “left” vs. “right” shit™ anymore. None of it makes any sense whatsoever. When my wife tries to explain it to me it’s completely the opposite to what you just said just now 😱 – So from here on, I’m just going to keep things simple” nutters” and “normal” 🤣
@bender@twtxt.net I feel you buddy 🤗 At one point we have quite a vibrant community. Phil was great, jlj too and Adi was well just Ado 😅
@prologic@twtxt.net Germany was listed as “opposing” on https://fightchatcontrol.eu/ for a while, now it’s back to “undecided”. According to netzpolitik.org, it’s still debated. Also according to that page, there could be an important vote on the EU level on October 13/14.
The green party and the (far) left are opposing this (at least in Germany). Sadly, Germany is leaning more right with every year … As for young people: The (far) left is the strongest party among young people, with the (far) right being the second strongest one. (https://www.tagesschau.de/wahl/archiv/2025-02-23-BT-DE/umfrage-alter.shtml) Is there cause for hope? I don’t know.
@prologic@twtxt.net you doing this reminded me of mkws, and Adi. Good times, we have seeing so many people come and go. It is kind of sad, when I think about “jjl”, and Phil, and the many others…
I am feeling “mushy” today. Ugh, ageing sucks.
@bender@twtxt.net Yup! Fixing that now! 👌 Also the Tags page and the size of the trags is intentional, as more posts are tagged with the same tag, those will result in larger size rendered tags in a kind of “tag cloud” – At this this is the intention.
@prologic@twtxt.net yup, that’s what I meant. The lack of it on the URL is fine, but on the post itself it is always a good idea. Time frames matter.
Test.
@bender@twtxt.net Ahh yes I see what you mean. no indicate of when the post was made right? That should be ideally displayed on the page somewhere? Would you expect it in the url as well, because not having /posts/yyyy/mm/dd/....
was actually intentional. But yeah I should figure out where to put some additional metadata on the page.
@bender@twtxt.net hopeful of the same 🤞
@prologic@twtxt.net I can’t upload a screenshot (tried, but Yarnd simple “ate” my reply). See https://zsblog.mills.io/posts/hello-zs-blog.html. Is has no date/time on it.
@movq@www.uninformativ.de LOL. I wish and hope they keep proposing it until the proposers die of natural causes, and then it vanishes. Hopeful thinking, I know…
@movq@www.uninformativ.de Kill it with fire 🔥
@prologic@twtxt.net need to work on the CSS. For example, the tags are too big, the code blocks (and the inline ones) are too small, the single posts have no date (intended?), and so on. It’s an alpha start!
@prologic@twtxt.net They have not rolled it out (yet), they are “just” discussing it (for the n-th time).
@alexonit@twtxt.alessandrocutolo.it Yeah I think we’re overstating the UNIX principles a bit here 🤣 I get what you’re trying to say though @zvava@twtxt.net 😅 If I could go back in time and do it all over again, I would have gotten the Hash length correct and I would have used SHA-256 instead. But someone way smarter than me designed the Twt Hash spec, we adopted it and well here we are today, it works™ 😅
@alexonit@twtxt.alessandrocutolo.it Yes well I’m pretty big on self-hosting. I’ve even tried to start a small business/company around it (but that’s another story for another day!) – Meanwhile I would encourage you to have a look at the work we’ve done in Salty.im 👌
@alexonit@twtxt.alessandrocutolo.it Well we have to really use the same spec or threading doesn’t really work in a truly decentralized manner 😉
That’s what I’m using right now, while my own client is still in the making.
A simple bash script to write a post in a mktemp
file then clean it with regex.
I don’t even bother to hash the replies, I just open https://twtxt.net and copy the hash by hand since I’m checking the new posts from there anyway (temporarily, as I might end up DoS-ing everyone’s feed in my client right now).
@zvava@twtxt.net I axtually latest did and I wasn’t the only one 🤣
@zvava@twtxt.net That’s what I’m leaning towards yeah🤞
@prologic@twtxt.net to clarify: i meant the ability to parse feeds using unix command line utilities, as a principal of twtxtv1’s design. im not sure how feasible it is to build a simple feed reader out of common scripting utilities when hashing is in play, and;
i concede, it does make a lot of sense to fix up the hashing spec rather than completely supplant it at this point, just thinking about what the rewrite would be like is dreadful in and of itself x.x
And I need to make something absolutely clear as well here. Twtxt was completely and utterly dead back in {Aug 2020](https://yarn.social/about.html) when I came across the spec and its simplicity and realised the lost opportunity. Since then we’ve continued to grow a small but thriving community. The extensions we’ve built over time have stood and lasted the test of time for the past ~5 years. We need not break things too badly, because what we have today and was designed years ago actually works quite well™ (despite some flaws).
@zvava@twtxt.net Going to have to hard disagree here I’m sorry. a) no-one reads the raw/plain twtxt.txt files, the only time you do is to debug something, or have a stick beak at the comments which most clients will strip out and ignore and b) I’m sorry you’ve completely lost me! I’m old enough to pre-date before Linux became popular, so I’m not sure what UNIX principles you think are being broken or violated by having a Twt Subject (Subject)
whose contents is a cryptographic content-addressable hash of the “thing”™ you’re replying to and forming a chain of other replies (a thread).
I’m sorry, but the simplest thing to do is to make the smallest number of changes to the Spec as possible and all agree on a “Magic Date” for which our clients use the modified function(s).
@prologic@twtxt.net the simplest thing to do is to completely forgo hashing anything because we are communicating using plain text files right now :3 while i agree hashes are incredibly helpful in the backend im not sure it has a place outside of it, it basically eliminates two core design principals of twtxt (human readability and integrating well with unix command line utilities) and makes new clients more difficult to build than it should be
@bender@twtxt.net Well honestly, this is just it. My strong position on this is quite simple:
Do the simplest thing that could work.
It’s one of the age old UNIX philosphies.
Therefore, the simplest thing™ to do here is to just increase the hash length, mark a magic™ date/time as @lyse@lyse.isobeef.org has indicated and call it a day. We’ll then be fine for a few hundred years, at which point there’ll be no-one left alive to give a shit™ anyway 🤣
@prologic@twtxt.net considering other alternatives we have seeing (of which I have lost track already), yes. Why don’t you guys (client makers) take a step at a time and, for now, increase the hash length to deal with the collisions. Then location-based addressing can be added… or not, you know. 😅
@alexonit@twtxt.alessandrocutolo.it My problem is I don’t see a world where we don’t employ some form of cryptography to use as keys for threads in databases and other such things honestly. I’m not going to use url#timestamp
as keys.
index.md
a prehook
and a few utilities:
@bender@twtxt.net Yes I did about a week or so ago. It took me a lot of effort to get the content even rendered in the first place. LOL I had to basically export my blog as HTML (can you believe that?!) – The Hugo export just didn’t work at all 🤣
Each origin feed numbers new threads
(tno:N)
. Replies carry both (tno:N)
and (ofeed:<origin-url>)
. Thread identity = (ofeed, tno)
.
@movq@www.uninformativ.de Yes it’s kind of terrible 😞 – Let’s not do this 🤣
@bender@twtxt.net Really? 🤔
Each origin feed numbers new threads
(tno:N)
. Replies carry both (tno:N)
and (ofeed:<origin-url>)
. Thread identity = (ofeed, tno)
.
@prologic@twtxt.net That’s a completely flat threading model (you can’t reply to replies). Is that intentional?
@prologic@twtxt.net that’s not too bad! 👏🏻👏🏻👏🏻
Each origin feed numbers new threads
(tno:N)
. Replies carry both (tno:N)
and (ofeed:<origin-url>)
. Thread identity = (ofeed, tno)
.
This is possibly the only other threading model I can come up with for Twtxt that I think I can get behind.
Each origin feed numbers new threads
(tno:N)
. Replies carry both (tno:N)
and (ofeed:<origin-url>)
. Thread identity = (ofeed, tno)
.
Example:
Alice starts thread href=”https://txt.sour.is/search?q=%2342:”>#42:**
2025-09-25T12:00:00Z (tno:42) Launching storage design review.
Bob replies:
2025-09-25T12:05:00Z (tno:42) (ofeed:https://alice.example/twtxt.txt
) I think compaction stalls under load.
Carol replies to Bob:
2025-09-25T12:08:00Z (tno:42) (ofeed:https://alice.example/twtxt.txt
) Token bucket sounds good.
@itsericwoodward@itsericwoodward.com I’m glad to hear it 🤣
I would personally rather see something like this:
2025-09-25T22:41:19+10:00 Hello World
2025-09-25T22:41:19+10:00 (#kexv5vq https://example.com/twtxt.html#:~:text=2025-09-25T22:41:19%2B10:00) Hey!
Preserving both content-based addressing as well as location-based addressing and text fragment linking.
@alexonit@twtxt.alessandrocutolo.it Holy fuck! 🤣 I just realized how bad my typing was in my reply before 🤣 🤦♂️ So sorry about that haha 😆 I blame the stupid iPhone on-screen keyboard ⌨️
@alexonit@twtxt.alessandrocutolo.it Maybe I misunderstood, but you have to keep the timezone offsets in mind. Simple alphabetical sorting of the timestamp strings does not yield a truly chronological order. It might be close enough for you, though.
@alexonit@twtxt.alessandrocutolo.it that sounds pretty much like Italy! LOL. We pay $48 on renewal in Florida, US, but that fee isn’t Federal, so other states may pay more, or less.
@itsericwoodward@itsericwoodward.com I used the dates as is for indexing them as string, the ISO format allows for free auto sorting.
@bender@twtxt.net What?! In my country you have to pay 100€ every 10 years of which about 75% are just taxes…
@movq@www.uninformativ.de I’ve got this magic spell in my config: -f bestvideo[height<=?1080]+bestaudio/best
@itsericwoodward@itsericwoodward.com pretty cool! Started following you, not to miss any progress. Thanks for the exhaustive reply!
yt-dlp
ed https://www.youtube.com/watch?v=OZTSIYkuMlU. It's only worth for an experiment, no recommendation to watch.
@lyse@lyse.isobeef.org that’s pretty cool! The first video I see on YouTube of that kind. Thanks!
@lyse@lyse.isobeef.org Hm, I couldn’t trick yt-dlp into downloading the correct format. Works in the browser, though. 😅
@bender@twtxt.net @movq@www.uninformativ.de I had automatically yt-dlp
ed https://www.youtube.com/watch?v=OZTSIYkuMlU. It’s only worth for an experiment, no recommendation to watch.
@melyanna@tilde.club Exit! Exit!!1! https://movq.de/v/c51aa76926/exit-exit-exit.jpg
@lyse@lyse.isobeef.org I can’t remember the last time I came across a 360° video. 🤔
@bender@twtxt.net A renewed vision test might be a good idea for some people. 😅 I mean, it is kind of curious that you get this license as a young person and then it lasts a lifetime, without any further tests. As long as you don’t screw up really bad, it remains valid …
@movq@www.uninformativ.de I tried making an ascii scribble of penguin waving back at you but I gave up halfway through my first try xD … HI! 👋
Thanks @bender@twtxt.net it’s been a long time indeed but, I was here the whole time. Just silent. I just didn’t have much meaningful/worth twting about … /ME flips a bird to life
@movq@www.uninformativ.de better than in the US. Our lasts only 10 years, and you need to go through the vision test, and, of course, pay). Recently they added a little gold star denoting “real ID” compliance, and we had to pay $10 to get the old one replaced—out of the regular renew “schedule”.
In here it is all about control, and money.
@lyse@lyse.isobeef.org is it a 360 degree video online, or a local one?