@movq@www.uninformativ.de Yeah, itâs a shitshow. MS overconfirms all my prejudices constantly.
Ignoring e-mail after lunch works great, though. :-)
Our timetracking is offline for over a week because of reasons. The responsible bunglers are falling by the skin of their teeth: https://lyse.isobeef.org/tmp/timetracking.png
- The error message neither includes the timeframe nor a link to an announcement article.
- The HTML page needs to download JS in order to display the fucking error message.
- Proper HTTP status codes are clearly only for big losers.
- Despite being down, heaps of resources are still fetched.
I find it really fascinating how one can screw up on so many levels. This is developed inhouse, Iâm just so glad that weâre not a software engineering company. Oh wait. How embarrassing.
Sem palavras pra descrever esta baixeza de artigo:
Ă© citado um Ășnico estudo baseado em testemunhos de alunos (ficam de fora pais e profs), um estudo qualitativo por isso nĂŁo generalizĂĄvel. Mm assim, os autores do artigo copiam as conclusĂ”es do estudo, e o PĂșblico tb parece estar ok com artigos decalcados
os autores do artigo são consultores que dão formação a pais e educadores sobre problemas do digital nas crianças, por isso basear opinião apenas num estudo q os ignora é ainda mais wtf
argumento de q crianças tĂȘm acesso a dispositivos fora da escola Ă© parvo - tb tĂȘm acesso a tabaco e ĂĄlcool, por isso tb os devemos permitir na escola? come on
e Ă© muito conveniente clamar pela regulamentação das redes sociais sem especificar a forma (proibir anĂșncios? introduzir idades mĂnimas? nĂŁo sabemos).
No final é o costume, os pais e profs que se desenmerdem, a responsabilidade é deles e não das empresas que criam mecanismos de viciação, claro
@lyse@lyse.isobeef.org such a beautiful goooooooat! Those eye, and the ear I would love to pet⊠Nice click, mate!
Weâre entering the âtoo hot to thinkâ-season in 3, 2, 1 ⊠and weâre live!
OH, FUCK ME DEAD! On the way home from todayâs walk I saw easily 800 fireflies! Yes, over eight hundred! That was absolutely amazing. First time this year and already this many. Crazy! They were just fricking everywhere in the entire forest. I counted to one hundred and then stopped. The darker it got, the more fireflies came out and glowed around. :-) There were spots where in under ten seconds I counted 20 glowworms. Super sick. Soooo beautiful. <3
Before I left I tried to call a mate to join me, who apparently wasnât home yet, though, didnât pick up. But in the very end I surprisingly met her in the forest and we were super happy to encounter all the fireflies. She also said that today was her first time this year to spot them. Iâll definitely check them out in the next days, too.
Apart from all the glowworms, I also came across some goats, two deer (one of which only the ears showing out of the grass), according to the sounds I sadly must have scared up four more, bucketloads of tadpoles, four big and very active anthills next to each other and three bats to finish the stroll off. I call that extremely successful.
There ya go: https://lyse.isobeef.org/waldspaziergang-2025-06-24/
Saw this on Mastodon:
https://racingbunny.com/@mookie/114718466149264471
18 rules of Software Engineering
- You will regret complexity when on-call
- Stop falling in love with your own code
- Everything is a trade-off. Thereâs no âbestâ 3. Every line of code you write is a liability 4. Document your decisions and designs
- Everyone hates code they didnât write
- Donât use unnecessary dependencies
- Coding standards prevent arguments
- Write meaningful commit messages
- Donât ever stop learning new things
- Code reviews spread knowledge
- Always build for maintainability
- Ask for help when youâre stuck
- Fix root causes, not symptoms
- Software is never completed
- Estimates are not promises
- Ship early, iterate often
- Keep. It. Simple.
Solid list, even though 14 is up for debate in my opinion: Software can be completed. You have a use case / problem, you solve that problem, done. Your software is completed now. There might still be bugs and they should be fixed â but this doesnât âaddâ to the program. Donât use âsoftware is never doneâ as an excuse to keep adding and adding stuff to your code.
@lyse@lyse.isobeef.org as long as i get to see silly little tux sliding around in a silly game older than me itâs ok even if i committed windows/wine crimes to see it <33
Iâm now going to delete 7,336 old photos (previews, resized web versions and index.htmls) and reclaim 3.3 GiB disk space on my laptop.
@movq@www.uninformativ.de Me too đ â Speaking of which i know youâve lost a bit of âmojoâ or âenergyâ (so have i of late), rest assured, I want to keep the status quo here with what weâve built, keep it simple and change very little. What weâve built has worked very well for 5+ years and we have at least 3 very strong clients (maybe 4 or 5?).
@movq@www.uninformativ.de Ahh but it kind of is mine đ Or at least Iâve done this kind of thing at least 3 or 4 times now đ€Ł
This is my highlight, really, havenât seen this in action in a loooooooong time:
@quark@ferengi.one Ah, I see. Hm, only problem is, IE 3 doesnât seem to support this yet. đ Nah, I donât think Iâll go down that road â seems like a slippery slope. đ€Ł
My website is compatible with many old browsers, but Internet Explorer 3, uhm, not so much.
Maybe youâll enjoy this as well:
I still have one of my first modems, a Creatix LC 144 VF:
I think this was the modem that I used when I first connected to the internet, but Iâm not sure.
I plugged it in again and it still works:
The firmware appears to be from 1994, which sounds about right. I donât think we had internet access before that. We certainly did use local mailboxes, though. (Or BBSâs, as you might call them.)
I now want to actually use that modem again. For the moment, I can only use a phone to dial into it, I lack a second modem to actually establish a connection. Hereâs a video:
Not spectacular, but the modem does answer after me entering ATA
.
I bought another cheap old modem on eBay and am now waiting for it to arrive. Once itâs here, I want to simulate an actual dial-up session, hopefully from OS/2 or Windows 3.x.
One of the nicest things about Go is the language itself, comparing Go to other popular languages in terms of the complexity to learn to be proficient in:
- Go:
25
keywords (Stack Overflow); CSP-style concurrency (goroutines & channels)
- Python 2:
30
keywords (TutorialsPoint); GIL-bound threads & multiprocessing (Wikipedia)
- Python 3:
35
keywords (Initial Commit); GIL-bound threads,asyncio
& multiprocessing (Wikipedia, DEV Community)
- Java:
50
keywords (Stack Overflow); threads +java.util.concurrent
(Wikipedia)
- C++:
82
keywords (Stack Overflow);std::thread
, atomics & futures (en.cppreference.com)
- JavaScript:
38
keywords (Stack Overflow); single-threaded event loop &async/await
, Web Workers (Wikipedia)
- Ruby:
42
keywords (Stack Overflow); GIL-bound threads (MRI), fibers & processes (Wikipedia)
@lyse@lyse.isobeef.org thatâs alright haha! i donât expect anyone to listen/watch in full or with full attention bc itâs so long lmao
the thing with PHP for me is that i⊠feel like it hits a kind of simplicity that i can understand? itâs so plain but can be very powerful. i quite like that. as much as i can learn something infinitely more powerful, PHP hits a comfortable thing where i can handle things like backend sqlite DBs AND how a page is rendered, without requiring a complex frontend with its own quirks (like ruby on rails, which as much as i know and love it, can be heavy).
but i totally get you! PHP security is very scary. iâm always worried that iâm messing something up. itâs why the PHP application iâm working on i have dockerized by default for a small but extra layer of protection
iâll try to not get discouraged tysm for your advice
@movq@www.uninformativ.de Wow! This giant Tux is just fucking amazing, I have to say. Even a bricked Tux and a GNU!
Buying a TV these days, means trying to avoid endless enshitification:
-Spyware and adware
-Shitty AI upscaling/ frame interpolation
-HW that breaks after 2 - 3 years
-One off OS, dead on arrival
-Android OS, that starts lagging after the third update
-8 buttons worth of ads, on your remote
You probably have to make some kind of a compromise. I thought that was buying from some other brand like Hyundai, but that one also felt into some of those categories and just broke, after less than 3 years of use. At this point Iâll probably go back to LG and hope their HW is still reliable and the rest manageable⊠It has AI bullshit and knowing LG, probably some spyware you have to try your best to get rid of, can buy a remote with âonlyâ 2 ads on it, some web-based OS shared between all their TVs, that usually gets 4 - 5 years worth of updates and works decently enough afterwards.
At this point, Iâll probably settle for anything that doesnât literally fall apart, not even 3 years in, like the Hyundai did.
@kingdomcome@yarn.girlonthemoon.xyz AHHHH TYSM IRENE <3
1 RPM
. This is a rather aggressive rate limit actually. This basically makes Github inaccessible and useless for basically anything unless you're logged in. You can basically kiss "pursuing" casually, anonymously goodbye.
@bender@twtxt.net 5, 4, 3, 2, 1 đ€Ł
wish i could join in on the domain age discussion but i registered my first domains last year
Thanks, @movq@www.uninformativ.de! That seems to be much easier. Itâs already implemented in the Python docs as examples of recvmsg(âŠ)
and sendmsg(âŠ)
:
- https://docs.python.org/3/library/socket.html#socket.socket.recvmsg
- https://docs.python.org/3/library/socket.html#socket.socket.sendmsg
I looked at them sooo many times in order to figure out why my SCM_CREDENTIALS
sending code didnât work. :-D
And on a similar note, cross-post from Mastodon:
What I love about HTML and HTTP is that it can degrade rather gracefully on old browsers.
My website isnât spectacular but I donât think it looks horrible, either. And itâs still usable just fine all the way down to WfW 3.11:
Itâs not perfect, but itâs usable. And that makes me happy. Almost 30 years of compatibilty.
The biggest sacrifice is probably that I donât enforce TLS and that HTTP 1.0 has no Host:
header, so no vhosts (or rather, everything must come from the default vhost). (Yes, some old browsers send Host:
, even though they predate HTTP 1.1. Netscape does, but not IBM WebExplorer, for example.)
(On the other hand, it might completely suck on modern mobile devices. Dunno, I barely use those. đ€Ș)
yarnd
.
Hopefully I havenât missed or messed anything upu đ
* 101f3eb0 - (HEAD -> main) Fix a bunch of UX to do with following/unfollowing, bookmarking and unbookmarking (3 seconds ago) <James Mills>
Testing UI/UX is hardâą đ
git checkout main && git pull
, rebuild and redeploy: make build
, and however you deploy. đ Lots of fixes (no more stalling) and optimizations to the feed fetcher, smoother cpu usage, better internal metrics.
@prologic@twtxt.net thank you so much, just did all of that! iâll report back if i still need to restart <3
@prologic@twtxt.net exciting!!!!!! iâm SO SORRY i didnât get to doing the migration for my instance though - iâve been really busy! T__T but i hope to get to it sometime this week i really wanna upgrade i think iâm just a bit nervous for whatever reason lol
We havet an AI assistant at work, new version came out today ânearby restaurant recommendationsâ mentioned. Gotta try that!
Ask it where I can get a burger, knowing thereâs 3 spots that had it on the menu, AI says thereâs none. Ask it to list all the restaurants nearby it can check⊠it knows 3, of the 10 or so around, but 1/3, even has a burger, on the menu.
Ask it to list the whole menu at restaurant 1: it hallucinates random meals, none of which they had (I ate there).
Restaurant 2 (the one most people go to, so they must have at least tested it with this one): it lists the soup of the day and Ÿ meals available. Incomplete, but better than false.
Restaurant 3: it says âfoodâ and gives a general description of food. You have to be fucking kidding me!
âBuT cAnInE, tHe A(G)i ReVoLuTiOn Is NoWâ
@twtxtory@twtxtory.adn.org.es sorry, it isnât. After you enter the password, it takes a very long time to render anything. I donât have the patience to wait. Longest I waited is 3 minutes, and nothing. Super extremely slow.
@mana@yarn.girlonthemoon.xyz SHE WAS 16 HERE!!!!! RAPPING IN 3 LANGUAGES LIKE THATâS INSANE RIGHT
@prologic@twtxt.net THANK YOU itâs from a comic i love <3
@mana@yarn.girlonthemoon.xyz so far itâs been better for me! i hope your day improves though <3
@prologic@twtxt.net why not blanket closing everything older than, say, 3 months? Yarnd is quite a different beast today, right? Letâs start over!
Thatâs exactly what came to mind. Even millionaires would simply pay with a credit card for the convenience, and yes, because what kind of a sociopath will carry $3,000 around?! Just one more stumping item to that despicable person list.
Exciting new for Python 3.14!
t-string
, not to be confused with f-string
, to avoid malicious code and make life easier for web developers.
https://davepeck.org/2025/04/11/pythons-new-t-strings/
#python
âA handbag belonging to the homeland security secretary Kristi Noem containing her passport, department security badge and $3,000 in cash was stolen on Sunday night at a restaurant in Washington, the department confirmed.â
dm-only.txt
feeds. đ
After reading you, @eapl.me@eapl.me, Iâll tell you my point of view.
In my opinion, a feed does not have to be equivalent to a timeline. A timeline is a representation of the feed adapted to a user. You may not be interested in seeing other peopleâs threads or DMs. But perhaps they are interested in seeing mentions or DMs directed at them. It is important not to fall into the trap. With that clarificationâŠ
I insist, this is my point of view, it is not an absolute truth: I donât think extensions should be respectful of customers who are no longer maintained.
We cannot have a system that is simple, backwards compatible and extensible all at the same time. We have to give up some of the 3 points. I would not like to give up simplicity because it will then make it harder to maintain the customers who do stay. Therefore, I think it is better to give up backwards compatibility and play with new formulas in the extensions. I donât think itâs a good idea to make a hash keep so much load: a hashtag, a thread and also a DM.
i feel so powerful i wrote a 3 line script that takes an inputted markdown filename from the current working directory and then spits out a nicely formatted html page. pandoc does all the work i did nothing
@bender@twtxt.net been having a hard time! but i am trying to be more active <3
This on vp-compact.css
:
.avatar:not(#profile-avatar .avatar) {
width: 2rem !important;
height: 2rem !important;
margin-top: -0.25rem !important;
}
Is colliding with yarn.min.css
:
.avatar, .avatar-full {
width: 3.5rem;
height: 3.5rem;
object-fit: cover;
border-radius:var(--border-radius)
}
AI problems, top to bottom:
1: Open AI nerds, believe fine tuning a language model algorithm, will eventually produce an AGI god.
2: Subpar artists and techbros who canât code, convinced AI image bashing and vibe coding, will help convince the dumber parts of Internet, they are a real deal.
3: Parasites, using AI to scam people, because they just want passive income, selling crap, made by an automated process.
Side: Adobe&co, killing Flash/old web, pricing new artists and developers out, to face learning curves of free tools, or use AI, peddled as solution.
@bender@twtxt.net THANK YOUUUU i love pink!
Iâve been using GIMP 3.0 for a few weeks now and itâs great. New features and I got rid of two custom plugins because theyâre in core now. Literally nothing broke for me. And I really appreciate that they kept the familiar UI (instead of changing things just for the sake of change).
Thank you! đ„ł
@movq@www.uninformativ.de Awwwwww! Thank you, that is now in my collection. :-) The other ones arenât bad either, very nice!
Hello, i want to present my new revolution twtxt v3 format - twjson
Thatâs why you should use it:
- Itâs easy to to parse
- Itâs easy to read (in formatted mode :D)
- It used actually \n for newlines, you donât need unprintable symbols
- Forget about hash collisions because using full hash
Here is my twjson feed: https://doesnm.p.psf.lt/twjson.json
And twtxt2json converter: https://doesnm.p.psf.lt/twjson.js
thanks for sharing @xuu@txt.sour.is!
Checking for example https://watcher.sour.is/api/plain/twt or https://registry.twtxt.org/api/plain/tweets, I donât know whether this syntax is being used by clients or by people. Is it integrated on Yarn in any way? Genuinely asking to know more about it.
If I might throw a quick thought to those working on the registries, it would be nice to have an endpoint with a valid twtxt output (perhaps cached or dumped to a static file) which a client could point to, helping to discover itâs content in a way which is compatible with the twtxt spec.
Taking the first twt I found in https://watcher.sour.is/api/plain/twt as an example:
reddit_world_news https://feeds.twtxt.net/Reddit_World_News/twtxt.txt 2025-03-28T00:29:25Z **China bans US logs. 3 billion dollar[...])
it would be something like
TIME <@NICK URL> TWT
2025-03-28T00:29:25Z <@reddit_world_news https://feeds.twtxt.net/Reddit_World_News/twtxt.txt> **China bans US logs. 3 billion dollar[...])
That way you could watch the latest twts with your client, something similar to what we find on Mastodon: https://mastodon.online/public/local
Some support from the clients to separate these âdiscoveryâ content, from your following timeline might be required. đ€
@lyse@lyse.isobeef.org THANK YOUUUU I AM BOOKMARKING THIS FOR THE FUTURE <3
A collection of postgreSQL patterns that you can use in other databases
https://mccue.dev/pages/3-11-25-life-altering-postgresql-patterns
#postgresql #databases
@eapl.me@eapl.me Cool!
Proposal 3 (https://git.mills.io/yarnsocial/twtxt.dev/issues/18#issuecomment-19215) has the âadvantageâ, that you do not have to âmentionâ the original author if the thread slightly diverges. It seems to be a thing here that conversations are typically very flat instead of trees. Hence, and despite being a tree hugger, I voted for 3 being my favorite one, then 2, 1 and finally 4.
All proposals still need more work to clarify the details and edge cases in my opinion before they can be implemented.
@prologic@twtxt.net yesss ty for listening and engaging with my kpop nonsense itâs really beautiful!
@eapl.me@eapl.me Good job! I have added these comments:
- It is only long for humans. Clients can only leave a hyperlink.
- The nickname is just a decoration, only the date that acts as the id and the URL matter. The nick is used for humans reading the feed.
- It can be migrated with a script, if the feed exists.
rum pum pum pum https://www.youtube.com/watch?v=xnku4o3tRB4
ah crap. chapters 2, 4 and 5 are being cropped by yarn on upload. they should be more like 2-3 hours long
Chapter 3:
Chapter 4:
so dry.. haha this would put me to sleep
also friends i started a patreon to support my one woman website stuff :) iâm nervous about it so i only have a single $3 tier but i might add more if i can think of more stuff to offer
Of course, @bender@twtxt.net, anytime! As our number one bug finder, your service has to be rewarded. :-)
@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.
@falsifian@www.falsifian.org Thatâs cool, dedicated parking for snow. :-) There are also some rather large icicles. Thanks for sharing this photo! <3
@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 âŠ
among these options, 3
Although I like it more âtwtâ, without the dot and with a t at the end
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 ?
i feel sooo bad for disappearing here but i have been doing so much IRL and it has been exhausting
@lyse@lyse.isobeef.org Die meisten Hersteller von Internetradios (Sony, Denon, Marantz, âŠ) binden einen externen Dienstleister (vTuner) fest(!) in ihre GerĂ€te ein, damit die Nutzer sich durch eine groĂe groĂe Liste von weltweiten Internetradio-Stationen hören können.
Nun hat vTuner seit ca. 2020 sein GeschĂ€ftsmodell geĂ€ndert. Man darf da nun fĂŒr jedes GerĂ€t (MAC-Adresse) bezahlen. Die Kosten steigen auch von $3 auf $7 pro Jahr. Die Hersteller zucken einfach mit den Schultern. Im schlimmsten Fall schaltet vTuner einfach die Domain ab und dann steht man da - wie bei mir: http://sagem.vtuner.com
Der XML-Parser von der alten Sagem-Huddel verlangt zeilenweise EintrĂ€ge ohne EinzĂŒge. Vielleicht standest Du mit Deinem Parser ja Pate!? đ
@prologic@twtxt.net yellowjackets is about a girls soccer team that gets into a plane crash in the wilderness and start hunting and killing and eating each other. also thereâs lesbians. it rules. season 3 comes out valentines day
@lyse@lyse.isobeef.org thank youuuu the songs are all instrumental versions of idol songs! hereâs a list:
right now - newjeans
onna no ko otoko no ko - ogura yuko
nattou angel - nattou angels (akb48 sub unit)
tsumiki no jikan - skek48
supernatural - newjeans
cookie (FRNK remix) - newjeans
hype boy (250 remix) - newjeans
hurt (250 remix) - newjeans
new moon ni koishite - momoiro clover z
tenshi wa doko ni iru - fairy wink
@suitechic@yarn.girlonthemoon.xyz thank you nikki <3
@kingdomcome@yarn.girlonthemoon.xyz all me hahah! thank you <3
new icon from a very dark comic mini series that just came out (doll parts by luana vecchio
curl: (3) URL rejected: Malformed input to a URL function. Writing sender in bash was BAD idea
@prologic@twtxt.net I say we should find a way to support mentions with only url, no nick, as per the original spec.
- For
@<nick url>
we already got support
- For
@<nick>
the posting client should expand it to@<nick url>
, if not then the reading client should just render it as@nick
with no link.
- For
@<url>
the sending client should try to expand it to@<nick url>
, if not then the reading client should try to find or construct a nick base on:
- Look in twtxt.txt for a
nick =
- Use (sub)domain from URL
- Use folder or file name from URL
- Look in twtxt.txt for a
@suitechic@yarn.girlonthemoon.xyz shes the best <3
upgraded kavita because i was behind a couple versions, new UI looks snazzy, i kinda miss the old one because well iâve seen it for 3 years now but things change
ok yay weâre back <3
yesterday i was gonna buy new batgirl & birds of prey issues but the comic store didnât have either
@kat@yarn.girlonthemoon.xyz anyway when i get the memory stick i will record something silly and exclusive for yarn friends i canât wait <3
happy new year to anyone who sees this <3
cli test 3
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! :)
Amigues da capital, quero a vossa sabedoria: vamos em mini-fĂ©rias de famĂlia a Lisboa, e estamos a tentar determinar o roteiro cultural.
Que bons planos conhecem para uma criança de 7 anos que vai pela primeira vez Ă capital? OceanĂĄrio e Gulbenkian jĂĄ estĂŁo assinalados, mas querĂamos preencher melhor os 3 dias que aĂ vamos estar
Yes it work: 2024-12-01T19:38:35Z twtxt/1.2.3 (+https://eapl.mx/twtxt.txt; @eapl)
:D
The .log is just a simple append each request. The idea with the .cvs is to have it tally up how many request there have been from each client as a way to avoid having the log file grow too big. And that you can open the .cvs as a spreadsheet and have an easy overview and filtering options.
Access to those files are closed to the public.
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
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 ;)
@eapl.me@eapl.me here are my replies (somewhat similar to Lyseâs and Jamesâ)
Metadata in twts: Key=value is too complicated for non-hackers and hard to write by hand. So if there is a need then we should just use #NSFS or the alt-text file in markdown image syntax

if something is NSFWIDs besides datetime. When you edit a twt then you should preserve the datetime if location-based addressing should have any advantages over content-based addressing. If you change the timestamp the its a new post. Just like any other blog cms.
Caching, Yes all good ideas, but that is more a task for the clients not the serving of the twtxt.txt files.
Discovery: User-agent for discovery can become better. Iâm working on a wrapper script in PHP, so you donât need to go to Apaches log-files to see who fetches your feed. But for other Gemini and gopher you need to relay on something else. That could be using my webmentions for twtxt suggestion, or simply defining an email metadata field for letting a person know you follow their feed. Interesting read about why WebMetions might be a bad idea. Twtxt being much simple that a full featured IndieWeb sites, then a lot of the concerns does not apply here. But thatâs the issue with any open inbox. This is hard to solve without some form of (centralized or community) spam moderation.
Support more protocols besides http/s. Yes why not, if we can make clients that merge or diffident between the same feed server by multiples URLs
Languages: If the need is big then make a separate feed. I donât mind seeing stuff in other langues as it is low. You got translating tool if you need to know whats going on. And again when there is a need for easier switching between posting to several feeds, then itâs about building clients with a UI that makes it easy. No something that should takes up space in the format/protocol.
Emojis: Iâm not sure what this is about. Do you want to use emojis as avatar in CLI clients or it just about rendering emojis?
Android phone with 4GB RAM. Jenny+mutt runned in Termux. With change #tho4wpq from aeralaji mutt loading 3-5 seconds
@prologic@twtxt.net I wrote ÂŒ (one slash four) by which I meant âthe first out of fourâ. twtxt.net is showing it as ÂŒ, a single character that IMO doesnât have that same meaning (it means 0.25). Similarly, Ÿ got replaced with Ÿ in another twt. Itâs not a big deal. It just looks a little wrong, especially beside the 2/4 and 4/4 in my other two twts.
I read Starter Villain by John Scalzi. Enjoyable, like his other books that Iâve read. Somewhat sillier. (Ÿ)
Simplified twtxt - I want to suggest some dogmas or commandments for twtxt, from where we can work our way back to how to implement different feature like replies/treads:
Itâs a text file, so you must be able to write it by hand (ie. no app logic) and read by eye. If you edit a post you change the content not the timestamp. Otherwise it will be considered a new post.
The order of lines in a twtxt.txt must not hold any significant. The file is a container and each line an atomic piece of information. You should be able to run
sort
on a twtxt.txt and it should still work.Transport protocol should not matter, as long as the file served is the same. Http and https are preferred, so it is suggested that feed served via Gopher or Gemini also provide http(s).
Do we need more commandments?
More thoughts about changes to twtxt (as if we havenât had enough thoughts):
- There are lots of great ideas here! Is there a benefit to putting them all into one document? Seems to me this could more easily be a bunch of separate efforts that can progress at their own pace:
1a. Better and longer hashes.
1b. New possibly-controversial ideas like edit: and delete: and location-based references as an alternative to hashes.
1c. Best practices, e.g. Content-Type: text/plain; charset=utf-8
1d. Stuff already described at dev.twtxt.net that doesnât need any changes.
We wonât know what will and wonât work until we try them. So Iâm inclined to think of this as a bunch of draft ideas. Maybe later when weâve seen it play out it could make sense to define a group of recommended twtxt extensions and give them a name.
Another reason for 1 (above) is: I like the current situation where all you need to get started is these two short and simple documents:
https://twtxt.readthedocs.io/en/latest/user/twtxtfile.html
https://twtxt.readthedocs.io/en/latest/user/discoverability.html
and everything else is an extension for anyone interested. (Deprecating non-UTC times seems reasonable to me, though.) Having a big long âtwtxt v2â document seems less inviting to people looking for something simple. (@prologic@twtxt.net you mentioned an anonymous comment âyouâve ruined twtxtâ and while I donât completely agree with that commenterâs sentiment, I would feel like twtxt had lost something if it moved away from having a super-simple core.)All that being said, these are just my opinions, and Iâm not doing the work of writing software or drafting proposals. Maybe I will at some point, but until then, if youâre actually implementing things, youâre in charge of what you decide to make, and Iâm grateful for the work.
âFirst worldâ countries problem number x:
More than 3,600 chemicals approved for food contact in packaging, kitchenware or food processing equipment have been found in humans, new peer-reviewed research has found, highlighting a little-regulated exposure risk to toxic substances.
@lyse@lyse.isobeef.org on this:
3.2 Timestamps: I feel no need to mandate UTC. Timezones are fine with me. But I could also live with this new restriction. I fail to see, though, how this change would make things any easier compared to the original format.
Exactly! If anything it will make things more complicated, no?
Some more arguments for a local-based treading model over a content-based one:
The format:
(#<DATE URL>)
or(@<DATE URL>)
both makes sense: # as prefix is for a hashtag like we allredy got with the(#twthash)
and @ as prefix denotes that this is mention of a specific post in a feed, and not just the feed in general. Using either can make implementation easier, since most clients already got this kind of filtering.Having something like
(#<DATE URL>)
will also make mentions via webmetions for twtxt easier to implement, since there is no need for looking up the#twthash
. This will also make it possible to make 3th part twt-mentions services.Supporting twt/webmentions will also increase discoverability as a way to know about both replies and feed mentions from feeds that you donât follow.
And they have arrived (well, they did around 3 hours ago, LOL). Buttery smooth, my 16 Pro (one with dark cover). It took a bit over an hour to transfer all my data.
compressed_subject(msg_singlelined)
be configurable, so only a certain number of characters get displayed, ending on ellipses? Right now the entire twtxt is crammed into the Subject:
. This request aims to make twtxts display on mutt
/neomutt
, etc. more like emails do.
@movq@www.uninformativ.de yes, thatâs perfect! <3
the stem matching is the same as how GIT does its branch hashes. i think you can stem it down to 2 or 3 sha bytes.
if a client sees someone in a yarn using a byte longer hash it can lengthen to match since it can assume that maybe the other client has a collision that it doesnt know about.
Thereâs a simple reason all the current hashes end in a or q: the hash is 256 bits, the base32 encoding chops that into groups of 5 bits, and 256 isnât divisible by 5. The last character of the base32 encoding just has that left-over single bit (256 mod 5 = 1).
So I agree with #3 below, but do you have a source for #1, #2 or #4? I would expect any lack of variability in any part of a hash functionâs output would make it more vulnerable to attacks, so designers of hash functions would want to make the whole output vary as much as possible.
Other than the divisible-by-5 thing, my current intuition is it doesnât matter what part you take.
Hash Structure: Hashes are typically designed so that their outputs have specific statistical properties. The first few characters often have more entropy or variability, meaning they are less likely to have patterns. The last characters may not maintain this randomness, especially if the encoding method has a tendency to produce less varied endings.
Collision Resistance: When using hashes, the goal is to minimize the risk of collisions (different inputs producing the same output). By using the first few characters, you leverage the full distribution of the hash. The last characters may not distribute in the same way, potentially increasing the likelihood of collisions.
Encoding Characteristics: Base32 encoding has a specific structure and padding that might influence the last characters more than the first. If the data being hashed is similar, the last characters may be more similar across different hashes.
Use Cases: In many applications (like generating unique identifiers), the beginning of the hash is often the most informative and varied. Relying on the end might reduce the uniqueness of generated identifiers, especially if a prefix has a specific context or meaning.
@movq@www.uninformativ.de I didnât run the command as you recommended, but, I wiped things once more, and ran jenny -f
, and this time got:
david@arrakis:~$ jenny -f
Fetching archived feed https://anthony.buc.ci/user/abucci/twtxt.txt/1 (configured as abucci, https://anthony.buc.ci/user/abucci/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2024-04.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://darch.dk/twtxt-archive.txt (configured as soren, https://darch.dk/twtxt.txt)
Fetching archived feed https://www.uninformativ.de/twtxt-old_2024-04-21_6v47cua.txt (configured as movq, https://www.uninformativ.de/twtxt.txt)
Fetching archived feed https://twtxt.net/user/prologic/twtxt.txt/1 (configured as prologic, https://twtxt.net/user/prologic/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2024-03.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://www.uninformativ.de/twtxt-old_2022-12-21_2us6qbq.txt (configured as movq, https://www.uninformativ.de/twtxt.txt)
Fetching archived feed https://twtxt.net/user/prologic/twtxt.txt/2 (configured as prologic, https://twtxt.net/user/prologic/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2024-02.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://www.uninformativ.de/twtxt-old_2022-01-14_ew5gzca.txt (configured as movq, https://www.uninformativ.de/twtxt.txt)
Fetching archived feed https://twtxt.net/user/prologic/twtxt.txt/3 (configured as prologic, https://twtxt.net/user/prologic/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2024-01.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://www.uninformativ.de/twtxt-old_2021-12-23_f6y65bq.txt (configured as movq, https://www.uninformativ.de/twtxt.txt)
Fetching archived feed https://twtxt.net/user/prologic/twtxt.txt/4 (configured as prologic, https://twtxt.net/user/prologic/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2023-12.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://www.uninformativ.de/twtxt-old_2021-12-04_e4x7yba.txt (configured as movq, https://www.uninformativ.de/twtxt.txt)
Fetching archived feed https://twtxt.net/user/prologic/twtxt.txt/5 (configured as prologic, https://twtxt.net/user/prologic/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2023-11.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://www.uninformativ.de/twtxt-old_2021-11-18_42tjxba.txt (configured as movq, https://www.uninformativ.de/twtxt.txt)
Fetching archived feed https://twtxt.net/user/prologic/twtxt.txt/6 (configured as prologic, https://twtxt.net/user/prologic/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2023-10.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://www.uninformativ.de/twtxt-old_2021-11-08_i2wnvaa.txt (configured as movq, https://www.uninformativ.de/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2023-09.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://www.uninformativ.de/twtxt-old_2021-10-23_kvwn5oa.txt (configured as movq, https://www.uninformativ.de/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2023-08.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://www.uninformativ.de/twtxt-old_2021-10-11_mljudaa.txt (configured as movq, https://www.uninformativ.de/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2023-07.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://www.uninformativ.de/twtxt-old_2021-09-22_5mkqwua.txt (configured as movq, https://www.uninformativ.de/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2023-06.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://www.uninformativ.de/twtxt-old_2021-07-27_xcnzmlq.txt (configured as movq, https://www.uninformativ.de/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2023-05.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://www.uninformativ.de/twtxt-old_2021-06-16_mtedqya.txt (configured as movq, https://www.uninformativ.de/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2023-04.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://www.uninformativ.de/twtxt-old_2021-04-29_z7lvzja.txt (configured as movq, https://www.uninformativ.de/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2023-03.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://www.uninformativ.de/twtxt-old_2021-03-19_xjabvhq.txt (configured as movq, https://www.uninformativ.de/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2023-02.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://www.uninformativ.de/twtxt-old_2021-02-24_te4a6oa.txt (configured as movq, https://www.uninformativ.de/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2023-01.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://www.uninformativ.de/twtxt-old_2021-01-26_qxgigma.txt (configured as movq, https://www.uninformativ.de/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2022-12.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://www.uninformativ.de/twtxt-old_2020-12-13_igfnala.txt (configured as movq, https://www.uninformativ.de/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2022-11.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2022-10.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2022-09.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2022-08.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2022-07.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2022-06.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2022-05.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2022-04.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2022-03.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2022-02.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2022-01.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2021-12.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2021-11.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2021-10.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2021-09.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2021-08.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2021-07.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2021-06.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2021-05.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2021-04.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2021-03.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2021-02.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2021-01.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2020-12.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Notice that @prologic@twtxt.netâs /6
is there. I found the twtxt then. Kind of odd it didnât show before.
@aelaraji@aelaraji.com make sense, probably. The twtxt was already on my Maildir, thatâs why I can fetch it. I fetch every 3 minutes (sssh, donât tell anyone!). LOL!
More:
Subject: The [tag URI scheme](https://en.wikipedia.org/wiki/Tag_URI_scheme) looks interesting. I like that it human read- and writable. And since we already got the timestamp in the twtxt.txt it would be
somewhat trivial to parse. But there are still the issue with what the name/id should be... Maybe it doesn't have to bee that stick? Instead of using `tag:` as the prefix/protocol, it would more it clear
what we are talking about by using `in-reply-to:` (https://indieweb.org/in-reply-to) or `replyto:` similar to `mailto:` 1. `(reply:sorenpeter@darch.dk,2024-09-15T12:06:27Z)' 2.
`(in-reply-to:darch.dk/twtxt.txt,2024-09-15T12:06:27Z)' 2. `(replyto:http://darch.dk/twtxt.txt,2024-09-15T12:06:27Z)' I know it's longer that 7-11 characters, but it's self-explaining when looking at the
twtxt.txt in the raw, and the cases above can all be caught with this regex: `\([\w-]*reply[\w-]*\:` Is this something that would work?
Subject: The [tag URI scheme](https://en.wikipedia.org/wiki/Tag_URI_scheme) looks interesting. I like that it human read- and writable. And since we already got the timestamp in the twtxt.txt it would be
somewhat trivial to parse. But there are still the issue with what the name/id should be... Maybe it doesn't have to bee that stick? Instead of using `tag:` as the prefix/protocol, it would more it clear
what we are talking about by using `in-reply-to:` (https://indieweb.org/in-reply-to) or `replyto:` similar to `mailto:` 1. `(reply:sorenpeter@darch.dk,2024-09-15T12:06:27Z)` 2.
`(in-reply-to:darch.dk/twtxt.txt,2024-09-15T12:06:27Z)` 3. `(replyto:http://darch.dk/twtxt.txt,2024-09-15T12:06:27Z)` I know it's longer that 7-11 characters, but it's self-explaining when looking at the
twtxt.txt in the raw, and the cases above can all be caught with this regex: `\([\w-]*reply[\w-]*\:` Is this something that would work?
Notice the difference? Soren edited, and broke everything.