(#j3xacqa) @eapl.me@eapl.me@eapl.me@eapl.me I think the general idea that weāre settling on here is that maybe we can build a simple solution ā¦
@eapl.me @eapl.me @eapl.me @eapl.me I think the general idea that weāre settling on here is that maybe we can build a simple solution to this whole āwtf is this hash?ā problem. yarnd already forms a sort-of ādistributed networkā amongst its pe ⦠ā Read more
My twtxt feed is now also available at gemini://roccodrom.de/twtxt.txt
Iād like to know more about what andros and prologic are talking about, I feel lost.
āThis will be managed by Registries.ā Are we talking about these registries?
https://twtxt.readthedocs.io/en/latest/user/registry.html
@prologic@twtxt.net thank you! no clue whatās causing it for me but itās probably something stupid
@movq@www.uninformativ.de rose mciver!!!!!!! i know her from power rangers lol
@movq@www.uninformativ.de @prologic@twtxt.net Dito. Even though I only had four day weeks and three days of weekend the last month, I feel very exhausted as well. Back to five days next week. :-(
@movq@www.uninformativ.de Thatās cool! I just canāt justify the amount of space it permanently takes. But it fits nicely with the other gauges you have. And with that in mind, it actually is super tiny.
@eapl.me@eapl.me Interesting, I wasnāt aware that other parts of the world consider them to be a German thing :-)
@prologic@twtxt.net yes! Of course. However give me some time, I want to define a small proposal for the Registry (v2?)
(#rozpvfa) @thecanine@thecanine š
@thecanine @twtxt.net š ā Read more
(#dfvkgaq) @movq@movq Same š¢
@movq @www.uninformativ.de Same š¢ ā Read more
(#r5t4s6q) @andros@andros What a nice thing to say šāāļø
@andros @twtxt.andros.dev What a nice thing to say šāāļø ā Read more
(#ep5rg4q) @andros@andros Would it help if I documented the two protocols that yarnd uses today for this ādistributed networkā? š§
@andros @twtxt.andros.dev Would it help if I documented the two protocols that yarnd uses today for this ādistributed networkā? š§ ā Read more
@arne@uplegger.eu Das ist ein recht zuverlässiger Wetterbericht. Wenn die Bauern mit ihren Güllefässern hier vorbeifahren, weià ich sofort, dass Regen angekündigt ist. :-)
Ha, das Lied gefƤllt mir auĆerordentlich gut! \o/ Mit Abstand das beste Güllelied. Ich kenn noch ein paar schwƤbische, aber die gehen lang nicht so ab wie dieses hier.
@lyse@lyse.isobeef.org Ah, yes, a calendar that shows the past $x months is great! I have this as a widget in my bar:
Before that I also used something like cal. It works, but itās a bit cumbersome.
@eapl.me@eapl.me @bender@twtxt.net @prologic@twtxt.net Not including a photo was a stupid move, sorry. There you go:
This particular one is 95mm wide and 185mm high. Fairly compact.
I can only use it figure out distances to other dates and to do some basic calendar math. Iām not able to actually schedule anything. But I grew up with a month calendar like you have there where all appointments of the entire family was recorded.
By far most of my paper use is drawing random stuff on scratch paper during meetings. :-D
@arne@uplegger.eu Ah, witzige Geschichte! Ich fürchte, der Eberhardt wird sich nun bei mir auch festsetzen. ;-)
@prologic@twtxt.net @lyse@lyse.isobeef.org I like to listen to you.
@prologic@twtxt.net If it develops, and Iām not saying it will happen soon, perhaps Yarn could be connected as an additional node. Implementation would not be difficult for any client or software. It will not only be a backup of twtxt, but it will be the source for search, discovery and network health.
(#i67a3pa) @andros@andros Simple enough š
@andros @twtxt.andros.dev Simple enough š ā Read more
Iām sharing a short tutorial, in Spanish, for self-hosting #twtxt with Docker:
https://programadorwebvalencia.com/twtxt-desplegar-tu-feed-con-docker/
@lyse@lyse.isobeef.org Nein nein, nichts plattdeutsches. āEberhardt Eichhƶrnchenā ist eine nette Alliteration und kommt aus einem Urlaub von vor ein paar Jahren. Auf dem Campingplatz gab es ein Eichhƶrnchen und der Eberhardt war durch eine Handwerkerwerbung prƤsent.
(#ep5rg4q) @eapl.me@eapl.me@eapl.me@eapl.me I donāt think thereās anything wrong with an optional distributed network with participating members ā¦
@eapl.me @eapl.me @eapl.me @eapl.me I donāt think thereās anything wrong with an optional distributed network with participating members of the community. As long as itās optional. ā Read more
(#ep5rg4q) @andros@andros this is actually already achieved with yarnd
@andros @twtxt.andros.dev this is actually already achieved with yarnd ā Read more
(#6z7qt4a) @eapl.me@eapl.me@eapl.me@eapl.me So what was the definition of a web log back in the day? š§
@eapl.me @eapl.me @eapl.me @eapl.me So what was the definition of a web log back in the day? š§ ā Read more
(#3nbdgya) @bender@bender Me neither š
@bender @twtxt.net Me neither š ā Read more
(#r5t4s6q) @lyse@lyse Ita more so that with enough data you start to need an index
@lyse @lyse.isobeef.org Ita more so that with enough data you start to need an index ā Read more
(#r5t4s6q) @andros@andros I agree šÆ
@andros @twtxt.andros.dev I agree šÆ ā Read more
@andros@twtxt.andros.dev If something fits in a CSV file, it typically doesnāt require a database. I agree with that. Depending on the application, more complicated queries might benefit from a database, though. I donāt know awk very well, but I could imagine that grep, sed and cut reach their CSV processing limits rather quickly when you have to deal with escaped (multiline) fields.
I only very rarely have to deal with CSV files or databases in my day to day life. Maybe, these classic Unix tools offer some tricks Iām not aware of. When I have some more complicated CSV input, I generally reach for Python.
@eapl.me@eapl.me @arne@uplegger.eu @andros@twtxt.andros.dev Thanks mates!
Hmmm, Eberhardt. Ist das eine plattdeutsche Sache? Dass ich den flinken Nagern so lang zuschauen konnte, war ein seltener Glücksfall. Normalerweise sind die nach fünf oder spätestens zehn Minuten wieder aus dem Sichtfeld verschwunden.
@movq@www.uninformativ.de Yeah, horizontal scrolling is an invention right from the devil himself. :-D Itās awful, I canāt stand it.
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.
What does the #twtxt community think about having a p2p database to store all history? This will be managed by Registries.
@prologic@twtxt.net We often turn to a database when we can use a plain text file, such as a CSV. With sed or awk, you can run simple queries without using a database.
Did I get the context right? š
(#lzw5d5q) @kat@kat We missed you too š¤
@kat @yarn.girlonthemoon.xyz We missed you too š¤ ā Read more
(#6z7qt4a) Youāre all wrong š @anth@anth will happily tell you (hopefully) that weāve been doing this whole āmicrobloggingā / āstatus ā¦
Youāre all wrong š @anth @a.9srv.net will happily tell you ( hopefully) that weāve been doing this whole āmicrobloggingā / āstatus updateā thing decades earlier than anything youāve ever seen in the form of finger 𤣠and āplanā files š
ā Read more
(#e4fqn5a) @kat@kat Yeah okay, Iāll see if I can reproduce this silly nonsense version string 𤣠cheers! š»
@kat @yarn.girlonthemoon.xyz Yeah okay, Iāll see if I can reproduce this silly nonsense version string 𤣠cheers! š» ā Read more
(#h3a6nma) @andros@andros Yeah I think @xuu@xuu has built some interesting stuff around this? š¤
@andros @twtxt.andros.dev Yeah I think @xuu @txt.sour.is has built some interesting stuff around this? š¤ ā Read more
**(#r5t4s6q) @andros@andros Iām not entirely sure what this means:
development that requires a database
Obviously I wasnāt in the di ā¦**
@andros @twtxt.andros.dev Iām not entirely sure what this means:
development that requires a database
Obviously I wasnāt in the discussion so I feel like Iām missing some context here š¤ ā Read more
@lyse@lyse.isobeef.org Bei mir heiĆen Eichhƶrnchen immer āEberhardtā (unisex). Den Tierchen kƶnnte ich stundenlang zuschauen.
Trotz āZoomschwƤcheā: Tolle Bilder.
@aelaraji@aelaraji.com not sure but i will check when i can! git status is a good idea yeah
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?
@aelaraji@aelaraji.com I cannot tell you either. I donāt know the difference. :-)
@aelaraji@aelaraji.com Thatās nice, enjoy it while it lasts! Rain can be something wonderful. Stay safe.
@aelaraji@aelaraji.com Thatās how twtxt started: As microblogging. Yarn shifted up some gears and now itās more like social media ā more powerful, but a bit different. š
@kat@yarn.girlonthemoon.xyz @prologic@twtxt.net When I make dev on current master, I get a proper version. Same with make server. Assuming you cloned the repo, do you have any (uncommited) changes? What does git status tell you?
Of course, @bender@twtxt.net, anytime! As our number one bug finder, your service has to be rewarded. :-)
twtxt is a decentralised, minimalist microblogging service for hackers.
The keyword here is microblogging. But it doesnāt feel like weāve been (relatively speaking) doing much of that lately⦠maybe I go the concept of microblogging wrong.
@prologic@twtxt.net make server actually because i donāt need the client on my server, also i run make deps before just in case lol
@prologic@twtxt.net HIII MISSED YALL
@prologic@twtxt.net huh interesting! yeah i was stumped for a bit i was like WHAT config.json file are these logs talking aboutā¦. but then it worked after i moved the old meta.json file lol!
(#6gfpeea) @doesnm@doesnm Actually thatās a fantastic idea š
@doesnm @doesnm.p.psf.lt Actually thatās a fantastic idea š ā Read more
(#tzctugq) @eapl.me@eapl.me@eapl.me@eapl.me š¤š
@eapl.me @eapl.me @eapl.me @eapl.me š¤š ā Read more
(#cpocjbq) @eapl.me@eapl.me@eapl.me@eapl.me No worries š¤ My emotionally state are my own to sort out š¤£
@eapl.me @eapl.me @eapl.me @eapl.me No worries š¤ My emotionally state are my own to sort out 𤣠ā Read more
(#lzw5d5q) @kat@kat Welcome back! š
@kat @yarn.girlonthemoon.xyz Welcome back! š ā Read more
(#czumltq) @kat@kat Actually thatāsā a known bug I havenāt worked out yet hmmm š§
@kat @yarn.girlonthemoon.xyz Actually thatāsā a known bug I havenāt worked out yet hmmm š§ ā Read more
(#sz6bhma) @kat@kat Arw you running make build or go build?
@kat @yarn.girlonthemoon.xyz Arw you running make build or go build? ā Read more
@kat@yarn.girlonthemoon.xyz it was likeā¦. meta.json was corrupt or well it was empty actually whatever idk. ended up moving that elsewhere temporarily, rebuilding the binary, restarting server⦠and it worked?!?!? shit was confusing
@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!
#testing @ Hi Bob, nice to meet you!
@lyse@lyse.isobeef.org deeply honored to be used as an example, when illustrating things that will break! :-D <3
Why not just use registry? It can be personal or hosted by someone like registry.twtxt.org. Just need to be adapt to support hashes
If we donāt keep insisting on simplify and āThe beauty of twtxt is, you put one file on your server, done. One.ā, then people should just use ActivityPub-based software like Mastodon, PixelFed, etc. which are getting a lot of attention and uses migrating to the fediverse from meta/x here in Denmark over the last couple of months.
(#tzctugq) @lyse@lyse I also think we need to remove ourselves a bit from the āTwtxtā format as it was originally designed by Buckke ā¦
@lyse @lyse.isobeef.org I also think we need to remove ourselves a bit from the āTwtxtā format as it was originally designed by Buckket.
The beauty of twtxt is, you put one file on your server, done. One.
Iām not talking ( nor ever was here) about that. We should be allowed to and encourage dot evolve its ⦠ā Read more
(#6gfpeea) @lyse@lyse Sorry I didnāt mean to upset you or anyone here in the community. I am/was merely trying to solve what I perce ā¦
@lyse @lyse.isobeef.org Sorry I didnāt mean to upset you or anyone here in the community. I am/was merely trying to solve what I perceive to be a problem and an ask in the community:
How do I know what a hash refers to?
I believe the reason for this stems from a curiosity of the user of whether they might ⦠ā Read more
@prologic@twtxt.net We canāt agree on this idea because that makes things even more complicated than it already is today. The beauty of twtxt is, you put one file on your server, done. One. Not five million. Granted, there might be archive feeds, so it might be already a bit more, but still faaaaaaar less than one file per message.
Also, you would need to host not your own hash files, but everybody elseās as well you follow. Otherwise, what is that supposed to achieve? If people are already following my feed, they know what hashes I have, so this is to no use of them (unless they want to look up a message from an archive feed and donāt process them). But the far more common scenario is that an unknown hash originates from a feed that they have not subscribed to.
Additionally, yarndās URL schema would then also break, because https://twtxt.net/twt/<hash> now becomes https://twtxt.net/user/prologic/<hash>, https://twtxt.net/user/bender/<hash> and so on. To me, that looks like you would only get hashes if they belonged to this particular user. Of course, you could define rules that if there is a /user/ part in the path, then use a different URL, but this complicates things even more.
Sorry, I donāt like that idea.
One of the biggest gripes of the community with the way the threading model currently works with Twtxt v1.2 (https://twtxt.dev) is this notion of:
What is this hash?
What does it refer to?
Idea: Why canāt we all agree to implement a simple URI scheme where we host our Twtxt feeds?
That is, if you host your feed at https://example.com/twtxt.txt ā Why canāt or could you not also host various JSON files (letās agree on the spec of course) at https://example.com/twt/<hash> ? š¤
That way we solve this problem in a truly decentralised way, rather than every relying on yarnd pods alone.
**One of the biggest gripes of the community with the way the threading model currently works with Twtxt v1.2 () is this notion of:
What is t ā¦**
One of the biggest gripes of the community with the way the threading model currently works with Twtxt v1.2 ( https://twtxt.dev) is this notion of:What is this hash?
What does it refer to?
Idea: Why canāt we all agree to implement a simple URI scheme where we host our Twtxt feeds?
That is, if you host your feed at https://example.com/twtxt.txt ā Why canāt o ⦠ā Read more
(#wm5s4wa) @unexplained_mysteries@unexplained_mysteries Interesting article on the philosophy of thougjts š
@unexplained_mysteries @feeds.twtxt.net Interesting article on the philosophy of thougjts š ā Read more
Power outages throughout south east queensland (map)
Power outages throughout south east queensland ( map)
ā Read more
@prologic@twtxt.net Hahaha, I love that! :-D Something to laugh during these hard times. Hope youāre doing alright.
@arne@uplegger.eu Glückwunsch, das ist in der Tat doch mal eine erfreuliche Abwechslung. :-)
Thanks, @xuu@txt.sour.is, great explanation. In another project Iāve structured it exactly like you wrote. The mock storage over there extends the SQLite storage and provides mechanism to return errors and such for testing purposes:
- storage/ defines the interface
- sqlite/ implements the storage interface
- mock/ extends the SQLite implementation by some mocking capabilities and assertions
- sqlite/ implements the storage interface
Here, however, there are no storage subpackages. Itās just storage, thatās it. Everything is in there. The only implementation so far is an SQLite backend that resides in storage. My RAM storage is exactly that SQLite storage, but with :memory: instead a backing file on disk. I do not have a mock storage (yet).
I have to think about it a bit more, but I probably have to do exactly that in my tt rewrite, too. Sigh. I just have the feeling that in storage/sqlite/sqlite_test.go I cannot import storage/mock for the helper because storage/mock/mock.go imports and embeds the type from storage/sqlite. But Iām too tired right now to think clearly.

ā Read more
Weāve now had centimeters of rainfall in the last 24hrs š± ā Yesterday afternoon the local creek near us had already gone several inches ov ā¦
Weāve now had centimeters of rainfall in the last 24hrs š±
ā Yesterday afternoon the local creek near us had already gone several inches over the footbridge too! š±š±
ā Read more
@lyse@lyse.isobeef.org OK. So how I have worked things like this out is to have the interface in the root package from the implementations. The interface doesnāt need to be tested since itās just a contract. The implementations donāt need to import storage.Storage
- storage/ defines the
Storageinterface (no tests!)
- storage/sqlite for the sqlite implementation tests for sqlite directly
- storage/ram for the ram implementation and tests for RAM directly
- storage/sqlite for the sqlite implementation tests for sqlite directly
- controller/ can now import both storage and the implementation as needed.
So now I am guessing you wanted the RAM test for testing queries against sqlite and have it return some query response?
For that I usually would register a driver for SQL that emulates sqlite. Then itās just a matter of passing the connection string to open the registered driver on setup.
https://github.com/glebarez/go-sqlite?tab=readme-ov-file#connection-string-examples
@lyse@lyse.isobeef.org OK. So how I have worked things like this out is to have the interface in the root package from the implementations. The interface doesnāt need to be tested since itās just a contract. The implementations donāt need to import storage.Storage
- storage/ defines the
Storageinterface (no tests!)
- storage/sqlite for the sqlite implementation tests for sqlite directly
- storage/ram for the ram implementation and tests for RAM directly
- storage/sqlite for the sqlite implementation tests for sqlite directly
- controller/ can now import both storage and the implementation as needed.
So now I am guessing you wanted the RAM test for testing queries against sqlite and have it return some query response?
For that I usually would register a driver for SQL that emulates sqlite. Then itās just a matter of passing the connection string to open the registered driver on setup.
https://github.com/glebarez/go-sqlite?tab=readme-ov-file#connection-string-examples
@lyse@lyse.isobeef.org Das war ein sehr glatter Ritt mit der Bahn. Ebenso heute auf der Autobahn.
(gesendet aus Thüringen)
(#s5iul4q) @emmanuel@emmanuel Thatās not good mate š¢ Hope youāre feeling better? š¤
@emmanuel @wald.ovh Thatās not good mate š¢ Hope youāre feeling better? š¤ ā Read more
So⦠Cylone Alfred made landfall (whatever that means) last night, and I watched it hit my wifeās Uncle/Auntās place on one of the outer isla ā¦
So⦠Cylone Alfred made landfall ( whatever that means) last night, and I watched it hit my wifeās Uncle/Auntās place on one of the outer islands, then move westwards and sort of fizzle out. Itās now been downgrade to a āTropical Lowā ( I guess not good enough for a Cat X anymore?), but weāre still in the Eye of it, and thereās still a swirling mass of winds ( just not as fast). Now we ⦠ā Read more
@arne@uplegger.eu Hals- und Beinbruch! Die Bahn hat ja nur die vier Feinde: Frühling, Sommer, Herbst und Winter. Wurdest Du heute positiv überrascht?
@prologic@twtxt.net You just have to stay in the center. Itās supposed to be calm in there I heard. Just getting there is the tricky part. Good luck!
@prologic@twtxt.net Thank you š
@lyse@lyse.isobeef.org Oh, so thatās the problem! š
@prologic@twtxt.net Brace for impact. š«£ How stormy is it at the moment?
(#rudviwq)
ā Read more
(#6c3lbxa) @andros@andros I think youāve done an amazing job of this client š
@andros @twtxt.andros.dev I think youāve done an amazing job of this client š ā Read more
You can find the #twtxt-el channel in Libera IRC to talk about the twtxt.el client, I will keep my connection open so you can ask me questions. Thank you!
(#rudviwq)
ā Read more
@movq@www.uninformativ.de āThermometer must not be installed near aircraft turbine exhaust.ā
@xuu@txt.sour.is My layout looks like this:
- storage/
- storage.go: defines a
Storageinterface
- sqlite.go: implements the
Storageinterface
- sqlite_test.go: originally had a function to set up a test storage to test the SQLite storage implementation itself:
newRAMStorage(testing.T, $initialData) *Storage
- storage.go: defines a
- controller/
- feeds.go: uses a
Storage
- feeds_test.go: here I wanted to reuse the
newRAMStorage(ā¦)function
- feeds.go: uses a
I then tried to relocate the newRAMStorage(ā¦) into a
- teststorage/
- storage.go: moved here as
NewRAMStorage(ā¦)
- storage.go: moved here as
so that I could just reuse it from both
- storage/
- sqlite_test.go: uses
testutils.NewRAMStorage(ā¦)
- sqlite_test.go: uses
- controller/
- feeds_test.go: uses
testutils.NewRamStorage(ā¦)
- feeds_test.go: uses
But that results into an import cycle, because the teststorage package imports storage for storage.Storage and the storage package imports testutils for testutils.NewRAMStorage(ā¦) in its test. Iām just screwed. For now, I duplicated it as newRAMStorage(ā¦) in controller/feeds_test.go.
I could put NewRAMStorage(ā¦) in storage/testutils.go, which could be guarded with //go:build testutils. With go test -tags testutils ā¦, in storage/sqlite_test.go could just use NewRAMStorage(ā¦) directly and similarly in controller/feeds_test.go I could call storage.NewRamStorage(ā¦). But I donāt know if I would consider this really elegant.
The more I think about it, the more appealing it sounds. Because I could then also use other test-related stuff across packages without introducing other dedicated test packages. Build some assertions, converters, types etc. directly into the same package, maybe even make them methods of types.
If I went that route, I might do the opposite with the build tag and make it something like !prod instead of testing. Only when building the final binary, I would have to specify the tag to exclude all the non-prod stuff. Hmmm.
(#rudviwq)
ā Read more
(#rudviwq)
ā Read more
(#rudviwq)
ā Read more
@lyse@lyse.isobeef.org No, itās always in the shadow. But thereās not a lot of wind, maybe other things around it heat up ⦠š¤
lang=en @xuu@txt.sour.is 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.
@prologic@twtxt.net Best wishes!
@movq@www.uninformativ.de Did you place it in the sun? We only got 15°C today.
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ā¦