@bmallred@staystrong.run Any edit automatically changes the twt hash, because the hash is built over the hash URL, message timestamp and message text. https://twtxt.dev/exts/twt-hash.html So, it is only a problem, if somebody replied to your original message with the old hash. The original message suddenly doesnāt exist anymore and the reply becomes detached, orphaned, whatever you wanna call it. Threading doesnāt break, though, if nobody replied to your message.
@thecanine@twtxt.net I like the clipboard function of HeliBoard very much.
@prologic@twtxt.net @david@collantes.us Good question, was this on live TV? I think it was? š¤
@lyse@lyse.isobeef.org Schon. š
@arne@uplegger.eu Thatās nice, but ⦠where do they get the money for this? Must be expensive as heck. š
@andros@twtxt.andros.dev I donāt see a burst of new twtxt clients popping up. Yeah, the most recent ones are TwtxtReader and twtxt-el. Did I miss one? I agree with @david@collantes.us, looks normal to me. :-)
Iām also working on my rewrite at the moment, but that started⦠*looking at the git history*⦠oh wow! O_o Over two years ago! I just implemented jumping to the next/previous unread message.
I was on the hunt for new twts and found what I was looking for. Welcome to my timeline:
@javivf@adn.org.es @lafe@tilde.club @melyanna@tilde.club @nff@www.noizhardware.com @shreyan@twtxt.net
@movq@www.uninformativ.de I could show you some places here, in MeckPomm.
You may also want to renovate an old abandoned manor!?
- System Design Interview Vol. 1 and 2, Alex Xu and Sahn Lam
- Designing Data-Intensive Applications, Martin Kleppmann
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
@lyse@lyse.isobeef.org Yeah, well, what they want is for us to become hopeless and give up. We should just try. Not wait and ⦠wait.
@lyse@lyse.isobeef.org @david@collantes.us I often think about moving to Mecklenburg-Vorpommern. Itās a long way from home and probably not realistic, but one can dream. š
@movq@www.uninformativ.de @david@collantes.us Where can I join you? Building a log cabin in the woods would be dang awesome!
@movq@www.uninformativ.de I donāt know. It seems a bit like whatever we do or donāt do, weāre gonna lose. :-( Unless the ban is successful.
@andros@twtxt.andros.dev I wouldnāt call it regular, but cyclical. Since, with the exception of Yarn (maybe?), clients are everything when it comes to twtxt, every now and then we see an increase of interest on new development. I have seeing them come and go, only few ābeside remainsā. :-)
Good luck @arne@uplegger.eu !
@bender@twtxt.net I understand š
Question to the twtxt veterans, are we experiencing an explosion of clients or is this a regular occurrence?
@movq@www.uninformativ.de ahh, living in a small house in the middle of nowhere, yes! Thatās my dream too. We live in the suburbs, in a relatively small community; it isnāt enough, though. Take a sick day, and blast that amp! :-D
@xuu@txt.sour.is What books do you have?
To me it appeared that the failed attempts to ban NPD in the past actually helped them gain more supporters.
What makes AfD stronger for sure is just going ālol nah weāre not even going to tryā:
https://www.tagesschau.de/inland/innenpolitik/afd-verbot-antrag-100.html
If they donāt try, then it means that āit canāt be that bad, itās just a normal partyā, right? š”
@andros@twtxt.andros.dev Just before the pandemic, we watched Uncle Bob videos once a week in the lunch break. While almost all of my old teammates agreed with his views, I partially found them to be very odd and even counterproductive.
I didnāt come across John Ousterhout or any of his work before, at least not deliberately. So, this document is my first contact.
I only finished the chapter on comments and I totally agree with John so far. This document just manifests to me how weird Bobās view is on certain subjects.
I always disagreed with the concept of a maximum method length. Sure, generally, shorter functions are probably better, but it always depends. And Iāve certainly seen super short methods that just made the code flow even worse to follow. While āone function should only do one thingā is a nice general rule, Iām 100% in team John with the shown examples. There are cases, where this doesnāt help readability at all. Not even close.
To me, a function always has to justify its existence. Either by reusing it at least at another place or by coming up with dedicated tests for it. But if it is just called once and there are no tests, I almost always decide against it. Personally, I donāt mind longer methods. We just recently had a discussion about that and I lost against two other workmates who are more in Uncle Bobās camp, they refactored one medium sized method into three very short ones. Luckily, we agree on most other topics.
Lol, what!? The shorter the method, the longer the variables inside? I first thought I misread or the writeup mixed it up. Iāll always do it the other way around.
Iāve been also bitten badly by outdated comments in the past, but Bob must have worked on really terrible projects to end up with such an attitude to dislike comments. Oh well. No doubt, Iāve come across by several orders of magnitude more useless comments, in my experience (autogenerated) JavaDocs fall in the category more frequently than not. So, I know that there are different types of comments. A comment doesnāt automatically mean that it is good and justified.
But I also partially agree with Bob and John and think that a good name has a proper chance to save a comment. Though, when in doubt, I go Johnās route and use a shorter name with a comment rather than use a kilometer long identifier. Writing good comments typically takes some time, sometimes much longer than writing the code. It regularly takes me several minutes. Itās a hard art.
I perhaps should read up on Johnās work. He seems to be more reasonable and likeminded. :-) Let me continue to complete this document.
@doesnmppsflt@doesnm.p.psf.lt this one is the safest feed to follow. Quarkās will cease to exist, as I am not renewing the domain. Benderās will eventually fade away too, I am afraid. āNo show, however good, can last forever.ā :-)
I have released new updates to the twtxt.el client.
- Markdown to Org mode (you need to install Pandoc).
- Centred column.
- Added new logo.
- Added text helper.
The new version I will try to finish the visual thread. You still canāt see the thread yet.
#emacs #twtxt #twtxtel
@thecanine@twtxt.net Thatās one of my favorite dogs. Very cute. I like its headband and bandana with the bones.
@david@collantes.us Yeah. A horrendously wrong but simple solution often outpaces are bit more correct but complex one. Especially if the simple one suggests that oneself doesnāt have to change at all and can just continue along. Wishful thinking.
@bender@twtxt.net @arne@uplegger.eu Hahaha, I love it! :-D
@aelaraji@aelaraji.com Same. It actually goes for anything AI-related. Itās best kept in /dev/null.
@movq@www.uninformativ.de @arne@uplegger.eu Ach Herrjeh, was für ein Interview! O_o Unfassbar. Da kannste den Sender auch gleich dichtmachen, sowas braucht ja echt niemand. Der Moderator hört sich in der Tat arg versprengt an. :-(
@movq@www.uninformativ.de Oh right, I completely forgot about the media! Maybe a sign that theyāre losing their relevance? The third power appears to be gone or changed sides. Lots of them work on their own abolishment.
@movq@www.uninformativ.de Dem Ramelow platzt da ja fast die Hutschnur - verstƤndlicher Weise.
uebermedien schreibt:
Den Linken-Politiker Bodo Ramelow traktierte Moderator Dirk Müller mit plumpen Provokationen. Der AfD-Politikerin Beatrix von Storch rollte er einen Verständnis-Flokati aus.
Es war eine verstƶrende Demonstration politischer Schieflage.
Der Interviewer (Dirk Müller) scheint mir auch nicht ganz koscher. Meine Filterblase wirft zu Ihm Lobhudeleien aus dem versprengten Sektor.
The big established parties are all bad traitors. I blame them and their actions to help raise AfD. They just [donāt?] give a fuck about the ordinary people, theyāre only concerned about their private gain and power.
To a large degree, yes. But I think the media is also equally at fault. There was absolutely no reason to invite AfD people to every event and let them talk. This has been going on for over 10 years. When we give them a stage to spread their hate, are we really surprised that hate spreads ⦠?
I donāt know the answers to this desaster. Iām beginning to think that people literally just want an outlet for their frustration, nothing more. Itās not about what particular parties actually plan to do. At least I think this applies to people in their 30ies and 40ies.
@bender@twtxt.net Sorry to disappoint (again): https://blogs.nasa.gov/planetarydefense/2025/02/24/latest-calculations-conclude-asteroid-2024-yr4-now-poses-no-significant-threat-to-earth-in-2032-and-beyond/
@bender@twtxt.net And if that rock wonāt hit us, there still is a chance in 2038, to get everything shut down. š¤
@movq@www.uninformativ.de You are right. Like I said in my (german only post) to the election results: āIt saddens me and makes me think.ā ā¦
@lyse@lyse.isobeef.org, @movq@www.uninformativ.de well, there goes my theory. We (the people) keep insisting on fudging things up.
@falsifian@www.falsifian.org Neat, I got the principle, so mission accomplished. :-)
I have configured my vim to use a tab width of four. So, I noticed that especially https://www.falsifian.org/blog/2021/06/04/catalytic/reachability_with_stack.cc (but also partially the other C++ file) mixes tabs and spaces for indentation. :-)
@movq@www.uninformativ.de I didnāt, so itās working fine. :-) I should rotate me as well.
Na, youāre spot on, @movq@www.uninformativ.de! The result is an expected, terrible disaster. It just seems the absolute catastrophy is delayed for another four years.
Even though Iām the last one who wouldnāt be glad about banning the nazis, Iām not a fan of banning parties in general. I believe that a healthy democracy has to withstand extremists. Whether itās still healthy is debatable. To me it appeared that the failed attempts to ban NPD in the past actually helped them gain more supporters.
The big established parties are all bad traitors. I blame them and their actions to help raise AfD. They just give a fuck about the ordinary people, theyāre only concerned about their private gain and power. I bet nothing will change, to the contrary, it will only get worse. The winners do have the chance to turn it for the better, but they just will not. No way, unfortunately.
But then, we must not forget that people are just dumb and stupid, too. Also, that wonāt change. AfD wonāt help these idiots either, but they still vote for them. I also donāt understand how there is still so much support for the other big parties left. Education is important. Very important. But I have the impression that weāre lacking it.
@bender@twtxt.net @prologic@twtxt.net The outcome was to be expected but itās still pretty catastrophic. Hereās an overview:
East Germany is dominated by AfD. Bavaria is dominated by CSU (itās always been that way, but this is still a conservative/right party). Black is CDU, the other conservative/right party.
The guy whoās probably going to be chancellor recently insulted the millions of people who did demonstrations for peace/anti-right. āIdiotsā, ātheyāre nutsā, stuff like that. This was before the election. He already earned the nickname āMini Trumpā.
Both the right and the left got more votes this time, but the left only gained 3.87 percentage points while the right (CDU/CSU + AfD) gained 14.72:
The Green party lost, SPD (āmid-leftā) lost massively (worst result in their history). FDP also lost. These three were the previous government.
This isnāt looking good at all, especially when you think about whatās going to happen in the next 4 years. What will CDU (the winner) do? Will they be able to āturn the ship aroundā? Highly unlikely. They are responsible for the current situation (in large parts). They will continue to do business as usual. They will do anything but help poor/ordinary people. This means that AfD will only get stronger over the next 4 years.
Our only hope would be to ban AfD altogether. So far, nobody but non-profit organizations is willing to do that (for unknown reasons).
I donāt even know if banning the AfD would help (but itās probably our best/only option). AfD politicians are nothing but spiteful, hateful, angry, similar to Trump/MAGA. If youāve seen these people talk and still vote for them, then you must be absolutely filled with rage and hatred. Very concerning.
Correct me if Iām wrong, @lyse@lyse.isobeef.org, @arne@uplegger.eu, @johanbove@johanbove.info.
@andros@twtxt.andros.dev Sweet! canāt wait to play with that. Good luck!
@andros@twtxt.andros.dev I believe you have just reproduced the bug⦠it looks like youāve replayed to a twt but the hash is wrong. I can see the hash here from Jenny, but it doesnāt look like it corresponds to any{twt,thing}. if you check it out on any yarn instance it wonāt look like a replay.
@prologic@twtxt.net Looks great with the new logo.
@aelaraji@aelaraji.com Next release will convert markdown to org syntax if you have Pandoc command installed š. Mentions are org links, for example.
@andros@twtxt.andros.dev yes, that usually happens when twts get edited and we just made a gentlemen agreement to avoid edits as much as possible (at least for the time being). But the thing is, That is not whatās happening with my broken twtsā hashes. Since Iāve bee mostly replaying to my own twts as a test and I know for sure that I havenāt edited any. (I usually fork-replay instead of edit a twt when needed)
@prologic@twtxt.net No party? whereās the cake!? š„³
@andros@twtxt.andros.dev yeah, sorry I couldnāt get back to you sooner. Iāve already made an account on codeberg in order to file in an issue but, I just canāt get myself to concentrate with everything going on with the family lately. Iāll do my best and get things done properly and soon
@arne@uplegger.eu @eapl_en@eapl.me Iām sorry if I donāt respond to a reply. I donāt have a notification system for mentions at the moment. The work is manual!
I added to my bookmark. Good job @arne@uplegger.eu š
@arne@uplegger.eu Nur gebrauchtes Lego ist gutes Lego!
@arne@uplegger.eu Right, theyāre great for upcycling. I knew youād love that part. ;-)
@aelaraji@aelaraji.com Can you give me examples of hashes that you have detected wrong between Emacs client and twtxt.net?
Perhaps there is some character, some space, that is creating the discrepancy.
@bender@twtxt.net Y U Relpy @twtxt.net@twtxt.net
?
@prologic@twtxt.net Agreed! But clients can hallucinate and generate wrong hashes
aka Lies
𤣠Also, If you chheck your own twt on twtxt.net, it looks like a root twt instead of a replay.
@andros@twtxt.andros.dev Hereās that twtxt-el test replay to my last twt! letās see how it goes.
@andros@twtxt.andros.dev hmmm⦠pretty strange, isnāt it? replaying to threads worked perfectly, Iāve only had that problem trying to replay to a twt that was part of a thread.
As an example, this one is a Fork-Replay from Jenny. My next twt will be a replay to this exact twt but from twtxt-el as a test.
Then Iāwill file an issue if it doesnāt behave the way itās supposed to. Cheers!
@prologic@twtxt.net Are you sure? xD ⦠it was supposed to be a replay to another twt, but the twt hash is wrong (I think).
Heute waren das Ziehkind und ich zwei Stunden lang auf drei SpielplƤtzen und quer durch die Stadt unterwegs. Ein riesiger SpaĆ!
Vorab habe ich im hiesigen Spielzeugladen ein Konvolut von Klemmbausteinen erstanden, welche wohl zu einer Polizeistation gehƶrten!?
@bender@twtxt.net Donāt panic. Iāve just been testing my implementation. The great advantage of Twtxt is itās openness, I think. So DM spamming would contradict to this feature I like. ā¤
@xuu@txt.sour.is Hahaha, this is great! :ā-D
@lyse@lyse.isobeef.org The best part is: āI found four skyrocket sticks in premium quality.ā š One can never has enough skyroket sticks!
@bender@twtxt.net Oh dear!
@falsifian@www.falsifian.org Thatās cool, dedicated parking for snow. :-) There are also some rather large icicles. Thanks for sharing this photo! <3
@prologic@twtxt.net Iāll have you know it took me minutes of time to get the mouse suspended like that by that rats nest!
@prologic@twtxt.net Not too shabby.
@andros@twtxt.andros.dev Here is everything written down I know to this stuff: https://github.com/upputter/testing-twtxt-dm/blob/main/README.md
@arne@uplegger.eu Amazing!!! š
@eapl.me@eapl.me @andros@twtxt.andros.dev Eureka! It works! https://github.com/upputter/testing-twtxt-dm
PBKDF2_KEY_SIZE = 48
was the turning point! My dirty little crypt.class.php
can en- and decrypt, accoridng to the OpenSSL standard and options used in https://twtxt.dev/exts/direct-message.html
I really like the concept of ātwtā. Itās the perfect blend of txt and twtxt. An abbreviated form. Even though itās the name given to posts, I personally find it very nice.
#twtxt
@eapl_en@eapl.me Your notes are amazing! Iām going to save them for when I do my implementation. Great job!
@andros@twtxt.andros.dev is it me or twtxt-el generates a wrong twt hash when I use the [ ā³ Reply to twt ]
button?
@prologic@twtxt.net huh.. i added sour.is and img.sour.is to my whitelist but its not showing inline for me
@prologic@twtxt.net Those arenāt actually serving anything public-facing. Iāve thought about it, but for now Iām sticking with VPSs, partly because I donāt relish the risk of weeks of downtime if something goes wrong while Iām travelling.
@prologic@twtxt.net Hereās mine.
Edit #issuecomment-18968
@eapl.me@eapl.me @andros@twtxt.andros.dev hereās another variant as per eaplās suggestion (#issuecomment-18968)[https://git.mills.io/yarnsocial/twtxt.dev/issues/9#issuecomment-18968]
@bender@twtxt.net Hmmm, does that mean itās not that popular in the US? š¤
I hope not, @bender@twtxt.net! I havenāt checked, but Iād reckon it to be at most a single digit MiB number. How wrong am I?
@off_grid_living@twtxt.net No right click thing, but in the terminal:
convert -strip -quality 70 -resize 300x original.jpg resized.jpg
āoriginal.jpgā being the filename of the input file and āresized.jpgā the filename of the output. You can play around with the width, ā300xā means 300 pixels wide and the height is determined automatically to still remain in the same ratio. The quality is how much to compress it. The closer to 0 the value gets, the worse the result, but also smaller in file size. More towards 100 and the quality improves together with a larger file size.
You have to install the package āimagemagickā for this to work, I believe.
@off_grid_living@twtxt.net Oh, Iām ready for my retirement, too. :-D Still have some decades to go, unfortunately.
@off_grid_living@twtxt.net You could try starting it in the terminal in order to spot errors. Just open the GNOME Terminal or something like that and then type in ākolourpaintā and hit Enter.
@bender@twtxt.net Lol! :-D
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?
@arne@uplegger.eu Here are the results of the german jury:
Known salt (B64): Tb9oj07UhwU= (8)
Known key (B64): MII0yj+MC0mHNx254Voar80bi9P7jmocs0+x+inaxBE=
Known iv (B64): l/PvkDjOKMFZe73KptrvWw== (16)
Shared Key (B64): ql8zvN03p6kroSwNrcKbxk4zSBQFkgQZEumvqVIDMAE=
** DECRYPT **
Encrypted Message: ...
Decoded Salt (B64): Tb9oj07UhwU= (8)
PBKDF2 KEY (B64): MII0yj+MC0mHNx254Voar80bi9P7jmocs0+x+inaxBE=
iv (B64): JanbU1jI30lb6yfjq/adjA== (16)
Decrypted Message:
š
@eapl.me@eapl.me Here is what Iāve got so far: https://github.com/upputter/testing-twtxt-dm
There is a ā00_well_known_message.encā file, which I have the encryption paremters for (https://github.com/upputter/testing-twtxt-dm/blob/9fdf3be6aa8fe810a4cb275375dbb3d4a2a958ee/wellknown_test.php#L28).
According to my finding, I assume, that the saltsize
in openssl is ā8ā and the PBKDF2
algo is āsha256ā.
@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.
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
@arne@uplegger.eu With the OpenSSL option -p
one can get an output of salt
, key
and iv
. My stupid PHP-code can get everything right from the encrypted data (from OpenSSL) - except the iv
! Damn āevpKDFā š
@prologic@twtxt.net Iāve been there yesterday w/o success.
@arne@uplegger.eu Hi! I love that youāre implementing it! Maybe, when weāre both done, we could test the clients by communicating both.
I donāt think Iām going to be able to help you much, my knowledge of OpenSSL and PHP is not as high as Iād like it to be.
Maybe the OpenSSL version uses SHA-1 by default in PHP. Or that the IV is derived together with the key (not generated separately). But Iām not able to answer your questions, sorry.
Iām invoking the commands directly, without any libraries in between. Maybe that would help you?
@arne@uplegger.eu Well, just for my understanding. The command:
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
- use the content of
shared_key.bin
as password
- use
PBKDF2
with an iteration of 100000 to generate a encryption key from the given password (shared_key.bin
)
- use the
PBKDF2
generated key for anaes-256-cbc
encryption
The final result is encrypted data with the prepended salt (which was generated by runtime), e.g.: Salted__q�;��-�T���"h%��5�� ...
.
With a dummy script I now can generate a valide shared key within PHP āopenssl_pkey_derive()ā - identical to OpenSSL.
I also can en-/decrypt salted data within my script, but not with OpenSSL. There are several parameters of PBKDF2
unknown to me.
Question:
- Is the salt, used by
aes-256-cbc
andPBKDF2
the same, prepended in the encrypted data?
- Witch algorithm/cipher is used within
PBKDF2
: sha1, sha256, �
- What is the desired key length of
PBKDF2
(https://www.php.net/manual/en/function.openssl-pbkdf2.php)?
To be continued ā¦
But that is not how it should work. š
@andros@twtxt.andros.dev I have really tried to get behind it. For an implementation for my TwtxtReader (PHP) I simply lack the knowledge of the standard-openssl parameters.
All my solution approaches require ānonceā or āinitialization vectorā on one or the other side. In addition, the āmagic numbersā (āSalted__ā) were not consistent in my tests.
@prologic@twtxt.net I wish getting a static IP and a (more) stable internet connection wasnāt so hard over here. Then I could do proper self-hosting as well. But as it stands, I need some rented VPS.
I could go ahead and just use the VPS for the IP, i.e. forward all traffic through Wireguard to a box here at home. Big downside is that the network connection would be even slower than it already is and my ISP breaks down all the time for a few minutes ⦠itās just bad overall and much easier/better to rent a VPS. š«¤
Thanks, @falsifian@www.falsifian.org! Iāll definitely start with the latter one then. Letās see how far I make it. :-)
@falsifian@www.falsifian.org Phew, okay. So, it took a few months to grow that big. I feared that it could have been just a week or so. Yeah, insulation always is a good idea.
@prologic@twtxt.net Holly, didnāt know bots and crawlers could do comedy now⦠they shouldāve added āDave Chappelle/69.420ā to their UA.
@prologic@twtxt.net Iām speculating, but if I had to guess Iād say itās probably asking for your user password in order to access some user keyring (or whatever your OS uses to manage user secret credentials) used to safely store your passkeys related data in order to do its passkeys /ME doing air quotes Magic⢠⦠you could try with a different password manager to avoid said scenario.
Also, passkeys UX sucks.
@lyse@lyse.isobeef.org I donāt remember exactly. They might have been growing all winter. The trick is to have a badly insulated extension to the house.