@david@daiwei.me Ha, I just noticed that I changed Newsboat’s defaults. Right from the factory, new items are just bold, while read ones aren’t. No different colors, white on black. Focused items are bold yellow on blue. No matter the read status. I think that’s why I started to play with the config to differentiate them. It’s been so long ago that I didn’t know anymore I even messed with that.
And yes, you’re right, the red on black is borderline readable. Also, my white on green focus is rather silly. But I’m sooo used to it, I don’t realize how bad the contrast is. To be fair, I don’t spend a lot of time in the lists. Aha, there are new articles, Enter to hit the artice view, read it, press n to immediately jump to the next unread article, rince and repeat, finally I’m back in the article list view.
Default theme, read focused:

Default theme, unread focused:

Lyse’s schlimmbesserung, read focused:

Lyse’s schlimmbesserung, unread focused:

@aelaraji@aelaraji.com Haha 😆 Oh dear!
@kiwu@twtxt.net hi back at you!
@dce@hashnix.club Ah brilliant 👌
@david@daiwei.me Thanks!
@prologic@twtxt.net It works! Using it right now! Thank you!!!
To retest: reload the app, reconnect Codeberg/Gitea with the same token, fill in the new Owner field (dce), repo twtxt, and Feed URL https://hashnix.club/~dce/twtxt.txt. Publish to Codeberg, serve from Hashnix — exactly what you wanted 🤞 lemme know!
@dce@hashnix.club Fixed! 🥳 That 403 was our bug — connect was checking your token via /api/v1/user (needs read:user), but your token’s scoped to just the repo so it can’t. Now it validates against the repo itself instead 👍
@movq@www.uninformativ.de I’m with @prologic@twtxt.net on this one… I spent nearly a decade as an “enterprise” Java developer (servlets and JSPs and Spring, oh my!) before I finally swore it off, and I’ve been Ora-clean ever since (8 years and counting).
I won’t go back.
@misskatie@twtpub.com Haha 🤣 Nice Avatar 👌
@david@daiwei.me Bahahaha 🤣
@david@daiwei.me Oh yes blame me for you not having fun on the “Play Station” 🚉 Haha 🤣
@GabesArcade@gabesarcade.com I may be blocking that provider due to abuse from bots using VPN(s) – What was your last IP?
@lyse@lyse.isobeef.org It reads a lot nicer, yeah. And you can do oink.my_property += 1 as well, for example.
@lyse@lyse.isobeef.org I’d recommend going for ksh93. oksh is quite barebones, and mksh doesn’t support set -o multiline.
@dce@hashnix.club I should maybe look into it some day.
@david@daiwei.me I had to look these up, horror isn’t my genre at all. :-D No idea what the cool kids use today, but I still have zsh as my interactive shell. For shell scripts, though, I try to stick to POSIX and only resort to bash if really needed or it would be too cumbersome.
@david@daiwei.me Not sure if you only mean the code segments or in general. In theory, a general darker text color for read messages would probably work. The thing is that regular white on black is quite standard. In Newsboat, new articles are red (I opted for yellow here) and read ones white. I found that useful and kinda copied it for tt.
@prologic@twtxt.net @movq@www.uninformativ.de Same with tt, hash v2 has to be used right from the epoch onward. (And now replying to a message with a timestamp before the epoch still results in a v1 hash.)
@david@daiwei.me I think yhwre was 😅
@david@daiwei.me That should be it fixed!
@david@daiwei.me I think it might be a bug i just fixed 🤞
@prologic@twtxt.net Additional: I still get the 403 if I don’t specify a feed URL.
@prologic@twtxt.net That’s more-or-less it. If I could do it without Codeberg (just using SCP, SSHFS, or something similar), that would be even better, but probably out-of-scope for the project.
My thinking behind how twtxt.app worked was that I could give it access to a repo, in order to add to my twtxt.txt, but that the alternative feed URL would then be presented to other users instead of the Codeberg URL; unless, of course, this is already part of the twtxt metadata.
In short, the feed URL would just be a dummy.
@movq@www.uninformativ.de I can’t do Java ever again 🤣
@movq@www.uninformativ.de Dair enough
@lyse@lyse.isobeef.org Good question, I don’t know yet if the standard library has been extended a lot. 🤔
@prologic@twtxt.net No. After the cutoff-date, hashes are expected to be v2. End of story.
(In jenny, a twt can only ever have one thing that can be used for threading.)
@dce@hashnix.club So let me get this straight… You want to store your feed on a Codeberg repo right? But you want to clone that repo down somewhere else to serve it on a different location. Right? And you’d like to use the Twtxt App (https://twtxt.app) to front all of this? Right?
@bender@twtxt.net LOL 😂
You may have noticed I am not as active as I used to be here. Old @bender@twtxt.net isn’t going anywhere, though! But… I am Hyde, and my Jekyll resides at @david@daiwei.me. Jekyll is having his turn more often now, so if you follow my pure, unrestrained evil, you may as well follow my dark desires, hypocrite counterpart. 😈🤣
Follow @david@daiwei.me, or I will bend you!
@david@daiwei.me @prologic@twtxt.net Oh, I see.
@david@daiwei.me My twtxt.txt is on Codeberg. The repo contains (or would contain) an exact copy of the file as it is on Hashnix.
@prologic@twtxt.net Details: “https://codeberg.org”, “(API key)”, “twtxt”, “twtxt.txt”, “https://hashnix.club/~dce/twtxt.txt”
@prologic@twtxt.net I created a repo called twtxt and an application key with read/write access to it (and only it). I then cloned the repo on Hashnix and hardlinked my twtxt into it, before committing and pushing. Next, I supplied the appropriate details on twtxt.app, under Codeberg/Gitea, and clicked “Connect”. gitea https://codeberg.org/api/v1/user: 403 Forbidden.
@david@daiwei.me Yes, but then I have to create and maintain an account I’ll never use 🤣
@dce@hashnix.club Ahh! Let’s fix the 403 error then? I don’t have access to Codeberg, so I can’t reasily test. Can you walk me through what you tried and any other details? I’ll get this fixed.
@prologic@twtxt.net I was actually trying to use twtxt.app, with Codeberg as a backend, but I kept getting a 403 error. As for twtd, well, my twtxt is hosted on a pubnix. The people behind Hashnix are really nice, but I’d rather not bother them with software requests if there’s a simpler solution, and I imagine it would be rude of me to run a deamon from my homedir without permission. Could be worth asking, though, unless I decide to write a client myself.
@dce@hashnix.club You may also be interested in the Twtxt App and the little tiny twtd publishing backend? 🤔
@david@daiwei.me Of course 🤣 Incognito sessions store nothing once closed. 🤣
@prologic@twtxt.net twet 1.3.0 built from v1.3.0-21-gff43ee0 at 2025-08-25T23:27:41Z, from https://github.com/quite/twet. Unmaintained since 2020. To be honest, I was considering writing a basic client of my own…
@movq@www.uninformativ.de @lyse@lyse.isobeef.org Are you clients remaining compatible with Hash v1 in case older clients are still well not upgraded? 🤔
@dce@hashnix.club which version of Twet are you using? I might see if I can get it updated for you.
@david@daiwei.me Those two twtxts were separate replies. However, I am currently using twet, which doesn’t support hash v2.
@lyse@lyse.isobeef.org I rather like KornShell. Not as awkwardly bare-bones as Bourne or Almquist; but more minimal and lightweight than Bash or Zsh.
@lyse@lyse.isobeef.org Thank you!
Cool, @dce@hashnix.club. You’re the first one I come across who actually writes Korn shell scripts. :-)
@movq@www.uninformativ.de The nice thing about properties is that you can compute and cache things on the fly at first attempt and also ensure validation for writing. But like you said, since it’s not obvious that reading or writing might do some more things, it’s strongly advised to avoid doing expensive stuff disguised as properties.
I reckon the vast majority of property use cases is to provide read-only access. At least that was my impression when I was doing a lot more in Python.
Personally, I think that this just reads a lot nicer:
oink.my_property
oink.my_property = 42
Than:
oink.get_my_property()
oink.set_my_property(42)
Btw, any field access is implemented using method calls. I might be wrong, but I believe there’s always __getattr__ and __setattr__ involved. 8-)
@movq@www.uninformativ.de My grief with Java is that it’s sooo verbose. Sure, all the enterprise garbage makes it a hell lot more terrible, but even regular Java feels always so lengthy. And back in the days when I was using it daily, I missed so many convenient things in the stdlib after having experienced Python’s “batteries included”. Not sure if or how recent Java versions caught up.
@david@daiwei.me Oh, really? I thought I’ve posted compose view screenshots before. Anyway. Glad you like it as much as I do. :-)
The update interval has always been one second. I just didn’t remember and thus tried to time it by watching the preview update while typing. It felt like roughly under two seconds, but apparently my inner clock was off. After taking the screenshot and then examining it more closely, I noticed that the interval is stated right in the UI. :-D So, I just amended my message and didn’t bother taking a new screenshot. I figured I just leave it alone and see who spots the change, if at all. And, of course, you found the easter egg. Congrats, mate! 8-)