do you mind sharing a picture ?
I canāt find something similar here, but my wife gave this one last year, and Iāve been using it a bit. Iād say itās useful as youāve shared.
We also have a shared calendar in the kitchen for family events, and itās working great.
well (insert stubborn emoji here) š, word blog
comes from weblog, and microblogging could derivate from āsmaller weblogā. https://www.wikiwand.com/en/articles/Microblogging
Iād differentiate it from sharing status updates as it was done with āfingerā or even a BBS. For example, being able to reply; create new threads and sharing them on a URL is something we could expect from āTwitterā, the most popular microbloging model (citation needed)
I like to discuss it, since conversations usually are improved if we sync on what we understand for the same words.
pls elaborate on a āp2p databaseā, āall storyā and āRegistriesā.
My first thought takes me to something like secure-scuttlebutt
which itās painful to sync data using clients, and too slow compared to downloading a text file.
Also Iād like for twtxt to avoid becoming an ActivityPub. Works well but itās uses too many resources IMO.
https://kingant.net/2025/02/mastodon-the-cost-of-running-my-own-server/
Iām defending being able to self-host your Web client (like youād do with a Wordpress, twtxt is a micrologging, at the end), instead of federated instances, so in a first thought Iād say Registries have many disadvantages being the first one that someone has to maintain them active.
šæļø squirrels!
Iād need to think about it deeply, but at a first sight, nanoblogging
would be a simple text (like the original twtxt spec, aimed for TUIs), and microblogging
(like Twitter was a few years ago), would be about sharing texts, images, videos, GIFs, links, and perhaps Markdown styling.
Why? You have shorter messages than in a blog, but you may add almost anything you could do in a blog.
Buuutā¦ who knows?
@prologic@twtxt.net oops, Iām sorry to see disagreement leading to draining emotions.
It remind me a bit of the Conclave movie where every part wanted to defend their vision and there is only a winner. If one wins the other loses. Like the political side of many leaders and volunteers representing a broad community. I donāt think thatās the case here. Most of us (in not all) should āwinā.
I can only add that isnāt nice to listen that āmy idea and effortā is not what the rest of the people expect. I personally have a kind of issue with public rejection, but I also like to argue, discuss and even fight a bit. āA gem cannot be polished without friction, nor a man perfected without trials,ā they say.
This exercise and belonging to this community also brings me good feelings of smart people trying to solve a human and technical problem, which is insanely difficult to get ārightā.
I genuinely hope we can understand each other, and even with our different and respectful thoughts on the same thing, we might reach an agreement on whatās the best for most people.
Good vibes to everyone!
[lang=es] definitivamente es una buena llamada de atenciĆ³n para promover mĆ”s donaciones a proyectos opensource. La verdad apoyo menos proyectos de los que ādeberĆaā, por el valor que me ofrecen.
Una opiniĆ³n pragmĆ”tica es que hay la libertad de no pagar, pero tambiĆ©n esto nos deberĆa llevar a que tenemos la libertad de SĆ reconocer los proyectos que nos dan valor, por medio de un donativo puntual o constante. Adaptarnos al contexto de lo que estamos ofreciendo.
Mi chava trabaja en Asociaciones Civiles (tipo OSALs/ONGs) y es un reto pedir donativos, por lo que es comĆŗn pedir āCuotas de recuperaciĆ³nā pues ayudan a valorar mĆ”s el servicio, y a que fluya el donativo. Creo que se puede hacer algo asĆ en el cĆ³digo libre, apelando a diferentes motivadores en los usuarios.
Damn! Stay safe mateā¦
lang=en @xuu gotcha!
From that PR #17 I think it was reverted? We could discuss about metadata later this month, as it seems that Iām the only person using it.
Iāve added a [lang=en]
to this twt to see current yarn behaviour.
Hi everyone,
Iāve drafted a Request for Comments (RFC) to improve how threads work in twtxt:
https://git.mills.io/yarnsocial/twtxt.dev/issues/18
Iād love your feedback! Please share your thoughts on anything that could be better explained, check if the proposed dates work for everyone, and I invite you to join the discussionā¦
really? I think I havenāt seen it being used in the wild
@prologic@twtxt.net sure thing!
What about discussing it in https://git.mills.io/yarnsocial/twtxt.dev ?
The only con I see is that everyone would need to create an account there to participate.
a few async ideas for later
The editing process needs a lot of consideration and compromises.
From one side, editing and deleting itās necessary IMO. People will do it anyway, and personally I like to edit my texts, so Iād put some effort on make it work.
Should we keep a history of edits? Should we hash every edit to avoid abuse? Should we mark internally a twt as deleted, but keeping the replies?
I think thatās part of a more complete āthreadā extension, although Iād say itās worth to agree on something reflecting the real usage in the wild, along with what people usually do on other platforms.
yep! Enjoy your rest, letās discuss it later
looks good to me!
About aliceās hash, using SHA256, I get 96473b4f
or 96473B4F
for the last 8 characters. Iāll add it as an implementation example.
The idea of including it besides the follow URL is to avoid calculating it every time we load the file (assuming the client did that correctly), and helps to track replies across the file with a simple search.
Also, watching your example Iām thinking now that instead of {url=96473B4F,id=1}
which is ambiguous of which URL we are referring to, it could be something like:
{reply_to=[URL_HASH]_[TWT_ID]}
/ {reply_to=96473B4F_1}
That way, the āfull twt IDā could be 96473B4F_1
.
hi! I hope you can see this message
As in https://eapl.me/timeline/post/s7gv6zq
I changed my URL to experiment on this exact situation, and deleted the symlink on my server, so now tw.txt is the only way to get the file, although I could bring it back, what does everyone say?
Hey everyone!
About the idea of improving the āthreadā extension, what if we set aside March 2025 to gather proposals and thoughts from everyone? We could then vote on them at the end of the month to see if the change and migration are worth it.
The voting could include client maintainers (and maybe even users too). That way, we get a good mix of perspectives before taking a decision in a decent timelapse.
What do you think? If this sounds good, we can start agreeing on this. Let me know your thoughts!
I like this syntax, you have my vote, although Iād change it a bit like
#<Alice https://example.com/twtxt.com#2024-12-18T14:18:26+01:00>
Hashes are not a problem on PHP, I dont know why itās slow to calculate them from your side, but I agree with your points.
BTW, did you have the chance to read my proposal on twtxt 2.0? I shared a few ideas about possible improvements to discuss:
https://text.eapl.mx/a-few-ideas-for-a-next-twtxt-version
https://text.eapl.mx/reply-to-lyse-about-twtxt
looks good now!
description = š Full-Stack developer (Mainly Python) ā Writer[...]
also @Andros, I see that if I open that URL on my browser, I see weird characters in the .txt
file:
description = Ć°ÅøĀā
Perhaps your nginx server is missing a Content-Type: text/html; charset=utf-8
header?
https://serverfault.com/a/975289
In timeline
it looks OK however, I think itās relying on
The file must be encoded with UTF-8
of the original spec:
https://twtxt.readthedocs.io/en/latest/user/twtxtfile.html
working on my bookmarks tool, I found out that http(s)://domain.tls
is not a valid resource, but http(s)://domain.tls/
is, as you can see here: https://stackoverflow.com/a/2581423
I suppose that internally the wget/curl or whatever client you are using is redirecting it?
Testing out this image upload featureā¦
here is my progress so far: https://github.com/eapl-gemugami/twtxt-direct-message-php
The encryption part seems to work, if I decrypt it the message with OpenSSL.
I think it can help you for some key parts not well explained in OpenSSL documentation.
@andros@twtxt.andros.dev reading your spec I wrote a few notes here: https://github.com/eapl-gemugami/twtxt-direct-message-php/blob/main/direct_message_spec.md
@arne@uplegger.eu I havenāt check your repo yet, although you are using sodium, right?
! U2FsdGVkX187WpPAJXCusqEoTb3/tD62xN+TxudcTsPI+LqOJLPkl9aNE9MLg8lYRLfd9mSE33N6JeA0okLJ6Q==
@andros@twtxt.andros.dev Could you share (perhaps in the extension document) the private key for alice?
I want to compare that I can read the encrypted message both from OpenSSL CLI and from the PHP OpenSSL library, following the spec.
! JmgrTxTqbGBtzGFh30wL0cozfVOZiFSTuZ5c+k+5t9TtGkw4foOA80V2che2f3pXPVzBEZsuXg7y+7G5fD/5Qw==
echo "Lorem ipsum" | openssl enc -aes-256-cbc -pbkdf2 -iter 100000 -out message.enc -pass file:shared_key.bin
will take the input string from echo
to openssl
. It then will
trying to implement it quickly, I get the same questions than you
# https://www.php.net/manual/en/function.openssl-pbkdf2.php
$password = $sharedKey;
$salt = openssl_random_pseudo_bytes(16); # What's the salt length ?
$keyLength = 20; # What's the key length here ?
$iterations = 100000;
$generatedKey = openssl_pbkdf2($password, $salt, $keyLength, $iterations, 'sha256');
echo bin2hex($generatedKey)."\n";
echo base64_encode($generatedKey)."\n";
$iv = openssl_random_pseudo_bytes(16); // AES-256-CBC requires 16-byte IV
$cipherText = openssl_encrypt($message, 'aes-256-cbc', $generatedKey, OPENSSL_RAW_DATA, $iv);
return base64_encode($iv . $cipherText);
I havenāt taken a look into that extension, although I think you could use the OpenSSL library: https://www.php.net/manual/en/function.openssl-encrypt.php
Iām surprised, here you canāt find dial controls anymore. How old are your ovens? The last one my parents had was from the 90s.
I was amazed experimenting with different combinations, for instance instead of 100, using 60 for a minute, 90 for 1:30, and stupid stuff like heating with 11, 22, 55 seconds and so, to make it quicker to type any time.
with the quote?
among these options, 3
Although I like it more ātwtā, without the dot and with a t at the end
Something interesting to think about for twtxt
, the microblogging for hackers and friendsā¦
The biggest challenge of ActivityPub is that itās too technical to easily explain to regular people. Nobody is interested in a jargon-laden diatribe about servers and federation. When simple questions have overly complex answers, people tend to switch off.
https://activitypub.ghost.org/your-thoughts-on-onboarding/
well, Gemini clients like Lagrange allow to show inline images when you click on an image link. Text based clients, like Amfora, usually allow to watch the image in another āwindowā.
For example here: gemini://text.eapl.mx/en-making-a-tic-tac-toe-variant and there https://text.eapl.mx/en-making-a-tic-tac-toe-variant
I agree that some topics require images to make it easier to explain.
You have a microwave oven at home, right?
You can type 3 and 0 for 30 seconds, 100 for a minute (shown as 1:00), or 200 for two minutes (2:00).
What would happen if you type 777 and Start?
A) Nothing
B) Self-destruction
C) Will run for 7 minutes and 77 seconds (boring!)
What about 7777 ?
hey! Itās looking nice
ok, sounds like a ālargeā project to me.
Is it more an API (more oriented to developers), more oriented to UI/UX/Frontend? Perhaps both?
Iād go with prologicās advice of measuring and prioritizing. Perhaps you have a budget or at least something like āletās see how far can we reach in 6 monthsā, and possibly you wonāt finish in the time you have (just guessing).
Something that has helped me was defining āWhy do you we want to refactor this project?ā.
Could it be to make it compile on newer versions, or making it easier to grow and scale, or perhaps they are trying to sell that product to another company. Every reason has a different path, IMO.
1st thoughtā¦ Run!
Well, Iāve heard you have plenty of experience with Unit Testing and TDD. Perhaps designing a few tests before refactoring?
Iāve heard of Snapshot testing, but have never tried it: https://github.com/spatie/phpunit-snapshot-assertions
Also, what kind of refactor are you trying to do?
thatās a fair point.
Perhaps, since Twitter in 2006 never implemented read flags, every derivative microblogging system never saw that as an expected feature. This is curious because Twitter started with SMS, where on our phones we can mark messages as read or unread.
I think it all comes from the difference between reading an email (directed to you) vs. reading public posts (like a blog or a āwall,ā where you donāt mark posts as read). Itās not necessary to mark it as āreadā, you just jump over it.
Reading microblogging posts in an email program is not common, I think, and I havenāt really used it, so I cannot say how it works, and whether it would be better for me or not.
However, Iāve used Thunderbird as a feed reader, and I understand the advantages when reading blog posts.
About read flags being simple, wellā¦ we just had a discussion this morning about how tracking read messages would require a lot of rethinking for clients such as timeline
where no state is stored. Even considering some kind of ānotification of unread messages or mentionsā is not expected for those minimalist client, so itās an interesting compromise to think about.
Linear feeds are a dark pattern - A proposal for Mastodon
https://tilde.town/~dzwdz/blog/feeds.html
Iāve polished the CSS style a bit, you can try it here: https://eapl.me/treed/
Hey, I like this simple Web game:
https://wordswithrobots.isotropic.us
2 players Codenames vs (or along) gpt-4o-mini
a year ago I had a struggle to find documentation about it and now it seems there are more examples, cool!
twtxt
(for now), although I see the community could be interested in.
I agree š, although itās easy to lose comments over time and are not so grouped by topic, itās not so easy to vote or make a survey about itā¦
I prefer a forum for that š
here are a few ideas you might take into consideration when designing a secure IM https://developer.virgilsecurity.com/docs/e3kit/fundamentals/secure-instant-messaging/
Obviously if youāve worked on something similar, you already know it, he
I made a draft of an āencrypted public messengerā, which was basically a Feed for an address derivate from the public ket, letās say āabcd..eaeaā
Anyone could check, āare there any messages for my address?ā and you get a whole list of timestamps and encrypted stuff.
Inside the encrypted message is a signature from the sender. That way you ācouldā block spam.
Only the owner of the private key could see who sent what, and soā¦
And even with that my concussion was that users expectations for a private IM might be far away from my experiment.
another one would be to allow changing public keys over time (as it may be a good practice [0]
). A syntax like the following could help to know what public key you used to encrypt the message, and which private key the client should use to decrypt it:
!<nick url> <encrypted_message> <public_key_hash_7_chars>
Also Iād remove support for storing the message as hex, only allowing base64 (more compact, aiming for a minimalistic spec, etc.)
my first thought is that encrypting messages with Elliptic keys is not as easy as with RSA, although I tried doing something similar a few months ago with ECIES
https://github.com/eapl-gemugami/owl/blob/main/src/app/controller/ecies_demo.php
interesting idea. Iām not personally interested on having DM conversations on twtxt
(for now), although I see the community could be interested in.
Iād suggest to enable the Discussion section in your Github repo to receive comments, as we did for timeline
https://github.com/sorenpeter/timeline/discussions
although I agree that it helps, I donāt see completely correct to leave the nick definition to the source .txt. It could be wrong from the start or outdated with the time.
Iād rather prefer to get it from the mentioned .txt nick metadata (could be cached for performance).
So my vote would to make it mandatory to follow @<name url>
but only using that name/nick if the URL doesnāt contain another nick.
A main advantage is that when the destination URL changes the nick, itāll be automagically updated in the thread view (as happens with some other microblogging platforms, following the Jakobās Law)
@<url>
form of mentions. Strictly require that all mentions include a nickname/name; i.e: @<name url>
.
word of the thay, prosoal
Is it a typo of Proposal right? =P (Genuinely asking)
nice! would you mind elaborating a bit?
Is that the scientific method?
I couldnāt find anything related when I searched for it.
If you want a problem solved, you give it to someone as a project. If you donāt want a problem to be solved, you give it to someone as a job
Why you shouldnāt build your career around existential risk
https://guzey.com/existential-risk/
Django channels are cool! I had the chance to make a online gaming framework with Channels and Django Rest and was a great experience.
Iām looking forward to doing something in Django LiveView soon.
and going back to a handle you could input in your client to look for the user/file, like @nick@domain.tls
I think Webfinger is the way to go. It has enough information to know where to find that nickās URL.
@prologic@twtxt.net does that webfinger fork made by darch work OK with yarn as it is now? (Iāve never used it, so Iām researching about it)
https://darch.dk/.well-known/webfinger/
Oh no!
Wife and I agreed on hibernate until January, just visiting relatives but avoiding any kind of shopping. I tried buying something like 2 or 3 days ago and itās insane :o
Good luck! :)
If NICK = DOMAIN then only show @DOMAIN
So instead of @eapl.me@eapl.me it will just be @eapl.me
Iām just having a similar issue with a podcast I just uploaded on Castopod (which supports ActivityPub).
My first thought was creating a subdomain with the name of the podcast mordiscos.eapl.me
Then I watched that the software allows many podcasts in the same domain, so I had to pick a handle:
https://mordiscos.eapl.me/@podcast
So now I have @podcast@mordiscos.eapl.me
when this one is āmore correctā @mordiscos@podcast.eapl.me
or it could even be @mordiscos.eapl.me
I wasnāt aware of all that when I setup Castopod (documentation might improve a lot, IMO)
My point here is that itās something important to think from the start, otherwise is painful to change if itās already being used like that.
my 2 cents hereā¦
I agree on displaying a short @nick
.
We could hover on the nick to see the full detail which could be @nick@domain.tls
or the full URL
Also it could be a display option in Preferences in case your account starts showing many collisions.
The disambiguation for collisions is the .txt URL and the nick inside it, right ?
BTW Iām watching that darch has already worked on that, interesting https://github.com/sorenpeter/timeline/blob/main/_webfinger-endpoint/.well-known/webfinger/index.php
hey!
I think we could discuss on implementation details like URLs and Handles.
@nick@nick (Masto/Yarn style)
vs
@nick.eapl.me and @eapl.me (Bsky style)
I see, for example, that yarn
shows my account as @eapl.me@eapl.me which looks āweirdā although itās not wrong since my domain and my nick are the same. Honestly I like more the Bsky approach as in https://bsky.app/profile/eapl.me for @eapl.me, as when you look for https://eapl.me, itās my home page.
Also, I didnāt get it completely if you are also proposing a URL standard using subdomains, like https://nick.domain.tls. I only want to point out that these are more difficult to handle from shared hostings, so Iād prefer to also allow https://domain.tls/nick/
after thinking and researching about it, yep, I agree that WebFinger is a good idea.
For example reading here: https://bsky.social/about/blog/4-28-2023-domain-handle-tutorial
I wasnāt considering some scenarios, like multiple accounts for a single domain (See āHow can I set and manage multiple subdomain handles?ā in the link above)
since twtxt is based on text files, I think you can consider @domain.tld as an alias of http://domain.com/twtxt.txt (or https://domain.com/tw.txt, among other combinations in the wild).
Or perhaps you can use DNS TXT records?
Although I think thatās a bit more complicated for some environments and users, Iād go with looking for a default /tw*.txt
An inspiring book on making a life around IT security
Troy Hunt: āPwnedā, The Book, Is Now Available for Free
https://www.troyhunt.com/pwned-the-book-is-now-available-for-free/
haha, thatās gold xD.
#randomMemory I remember when I was starting to code, like 30 years ago, not understanding why my Basic file didnāt run when I renamed it to .exe
And nowadays, Iāve seen a few Go apps in a single executable, so twtxt.exe
could be a thing, he!
Iāll be using another URL for this twtxt.
The older one will redirect to the new for a while (Iām not sure what would happen if you follow both URLs, I assume itās better to add the new one and remove the older)
Please update your following list to https://eapl.me/tw.txt !
@anth hehe, cool!
Iām changing mine to tw.txt -> https://eapl.me/tw.txt
And the older twtxt.txt will be redirecting for a while
well, the extension helps to know the file format as in .txt
and .html
, perhaps .twt
, he!
Want to help improve the shoddy code?
Hehe, although it isnāt a fancy language PHP has improved a lot since the old PHP 5 days ĀÆ_(ć)_/ĀÆ Itās 3 to 5 times slower than Go, so I think thatās not too bad
My bad! My editor was set to use 4 spaces instead of a tabā¦ Making twts by hand is hard =P
Also Iām thinking on adding support for If-Modified-Since
since itāll improve the refreshing process š¤
Hey! I tried running Timeline on my server with the default PHP version (8.3) and itās giving me a few errors https://eapl.me/timeline/ I should be sending a PR soon to fix it ;)
Thanks @lyse@lyse.isobeef.org! Iām replying here https://text.eapl.mx/reply-to-lyse-about-twtxt
Damn, itās certainly broken. Thank you for letting me know! Iām editing my .txt file by hand, and it seems WinSCP editor doesnāt support that character and replaced them all =/
Hehe, thank you guys, Iām still alive :)
Iāve been thinking of a few improvements for the next generation of twtxt spec, let me know if these are useful or interesting :) https://text.eapl.mx/a-few-ideas-for-a-next-twtxt-version