Searching txt.sour.is

Twts matching #Twtxt
Sort by: Newest, Oldest, Most Relevant

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.

​ Read More
In-reply-to » Dang it! I ran into import cycles with shared test utilities again. :-( Either I have to copy this function to set up an in-memory test storage across packages or I have to put it in the storage package itself and guard it with a build tag that is only used in tests (otherwise I end up with this function in my production binary as well). I don't like any of the alternatives. :-(

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

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
In-reply-to » Dang it! I ran into import cycles with shared test utilities again. :-( Either I have to copy this function to set up an in-memory test storage across packages or I have to put it in the storage package itself and guard it with a build tag that is only used in tests (otherwise I end up with this function in my production binary as well). I don't like any of the alternatives. :-(

@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 Storage interface (no tests!)
    • storage/sqlite for the sqlite implementation tests for sqlite directly
    • storage/ram for the ram implementation and tests for RAM 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

​ Read More
In-reply-to » Ich fahre gleich zwei Stunden mit dem Zug durch das sonnige Mecklenburg-Vorpommern, um morgen PÜNKTLICH 🐓 mit den Schwiegereltern zur Familienfeier nach ThĂŒringen aufbrechen zu können. Ein Wochenende auf Achse wird das. 🚞🚐😞

@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?

​ Read More
In-reply-to » Dang it! I ran into import cycles with shared test utilities again. :-( Either I have to copy this function to set up an in-memory test storage across packages or I have to put it in the storage package itself and guard it with a build tag that is only used in tests (otherwise I end up with this function in my production binary as well). I don't like any of the alternatives. :-(

@xuu@txt.sour.is My layout looks like this:

  • storage/
    • storage.go: defines a Storage interface
    • sqlite.go: implements the Storage interface
    • 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
  • controller/
    • feeds.go: uses a Storage
    • feeds_test.go: here I wanted to reuse the newRAMStorage(
) function

I then tried to relocate the newRAMStorage(
) into a

  • teststorage/
    • storage.go: moved here as NewRAMStorage(
)

so that I could just reuse it from both

  • storage/
    • sqlite_test.go: uses testutils.NewRAMStorage(
)
  • controller/
    • feeds_test.go: uses testutils.NewRamStorage(
)

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.

​ Read More
In-reply-to » @lyse i appreciate you updating this with that info. been in the weeds at work so haven't been tracking the conversation here much. let me sit on this for a bit because often times the edits are within seconds of first post so maybe maybe i just allow them within a certain time frame or do away with them all together. i really only do it because it bugs me once i notice the typo :)

@bmallred@staystrong.run Oh, I hear you! It’s always after carefully proofreading and publishing that a typo suddenly pops up. :-) Not sure if amending your edit implementation is really worth it, but happy hacking in case you do.

​ Read More
In-reply-to » I went on a 5:30 hours long hike to my second backyard mountain. About 12km to get there and roughly 9km on the way back. It was super nice, sunny all day long, 12°C and luckily just a little bit of wind. Great scenery. I managed to capture one great spotted woodpecker hammering along. There was also a kestrel hovering over a meadow and then landing on a sports field light pole. At the castle ruin I could watch 10-12 gliding red kites (with the V-shaped tail) and other raptors, maybe bussards, I don't know, for about five minutes. That was fascinating. Unfortunately, my camera doesn't too well with moving targets.

@movq@www.uninformativ.de Luckily, they’re not made of steel as I would not have made it home with such heavy weights. :-D

​ Read More
In-reply-to » A depressing video about the current state of printers that just ends with “fuck this, I’m gonna talk about my cat now”: https://www.youtube.com/watch?v=bpHX_9fHNqE

@movq@www.uninformativ.de Fuck! So there aren’t any non-criminal printer vendors out there anymore. Very sad. I really don’t understand why this is not highly illegal in the entire world.

​ Read More
In-reply-to » I went on a 5:30 hours long hike to my second backyard mountain. About 12km to get there and roughly 9km on the way back. It was super nice, sunny all day long, 12°C and luckily just a little bit of wind. Great scenery. I managed to capture one great spotted woodpecker hammering along. There was also a kestrel hovering over a meadow and then landing on a sports field light pole. At the castle ruin I could watch 10-12 gliding red kites (with the V-shaped tail) and other raptors, maybe bussards, I don't know, for about five minutes. That was fascinating. Unfortunately, my camera doesn't too well with moving targets.

@lyse@lyse.isobeef.org Lyse, the man with feet of steel. đŸŠŸ

​ Read More
In-reply-to » (#tbyqv7a) @andros Do edits cause problems? I sometimes make them and didn't realize it may be an issue

@lyse@lyse.isobeef.org i appreciate you updating this with that info. been in the weeds at work so haven’t been tracking the conversation here much. let me sit on this for a bit because often times the edits are within seconds of first post so maybe maybe i just allow them within a certain time frame or do away with them all together. i really only do it because it bugs me once i notice the typo :)

​ Read More
In-reply-to » @andros I've commented on the ticket: https://git.mills.io/yarnsocial/twtxt.dev/issues/14#issuecomment-19142

2025-03-02T13:20:00-07:00 (#<fmgas3a https://twtxt.net/user/prologic/twtxt.txt?t=2025-03-02T10:12:13Z>) @<prologic https://twtxt.net/user/prologic/twtxt.txt> its hard to change by consensus. Some things are won in implementation.

​ Read More
In-reply-to » @bmallred I forgot one more effect of edits. If clients remember the read status of massages by hash, an edit will mark the updated message as unread again. To some degree that is even the right behavior, because the message was updated, so the user might want to have a look at the updated version. On the other hand, if it's just a small typo fix, it's maybe not worth to tell the user about. But the client doesn't know, at least not with additional logic.

@lyse@lyse.isobeef.org Clients could detest edits đŸ€ž

​ Read More
In-reply-to » We went up our backyard mountain again right after lunch. The sun peaked through the clouds sometimes. The 6°C felt much, much cooler with the northeast wind. We got lucky, though, it was dead calm at the summit. At least on the southwestern side, which is a few meters lower than the very top to the east. That was shielded absolutely perfectly from the wind (we were extremely surprised), so we sat down on a bench and could really enjoy the sun heating us up. Apart from the haze, the view was really nice.

@movq@www.uninformativ.de Yeah, the ground was wet here, too. Some sections of esp. smaller paths had turned into mud holes. There are a few notorious spots. Oh well, you just have to press on. :-)

Forest animals also have to do the laundry, they even have a proper clotheshorse! See: https://lyse.isobeef.org/wanderung-zu-den-schurrenhoffuechsen-2021-05-15/07.jpg :-D

​ Read More
In-reply-to » (#tbyqv7a) @andros Do edits cause problems? I sometimes make them and didn't realize it may be an issue

@bmallred@staystrong.run I forgot one more effect of edits. If clients remember the read status of massages by hash, an edit will mark the updated message as unread again. To some degree that is even the right behavior, because the message was updated, so the user might want to have a look at the updated version. On the other hand, if it’s just a small typo fix, it’s maybe not worth to tell the user about. But the client doesn’t know, at least not with additional logic.

Having said that, it appears that this only affects me personally, noone else. I don’t know of any other client that saves read statuses. But don’t worry about me, all good. Just keep doing what you’ve done so far. I wanted to mention that only for the sake of completeness. :-)

​ Read More
In-reply-to » These two degenerates 
 Fucking hell. https://www.youtube.com/watch?v=DZ56ibIel1U

@prologic@twtxt.net I formed my opinion about this before reading/watching any additional media coverage. And yes, this is extremely bad. These two have no place on the “world stage”. They are deciding on our future. (And I am well aware that my country is heading into a similar direction – unless we stop it.)

​ Read More
In-reply-to » @lyse What do you think about this? https://git.mills.io/yarnsocial/twtxt.dev/issues/14

I like this syntax, you have my vote, although I’d change it a bit like
#<Alice https://example.com/twtxt.com#2024-12-18T14:18:26+01:00>

Hashes are not a problem on PHP, I dont know why it’s slow to calculate them from your side, but I agree with your points.

BTW, did you have the chance to read my proposal on twtxt 2.0? I shared a few ideas about possible improvements to discuss:
https://text.eapl.mx/a-few-ideas-for-a-next-twtxt-version
https://text.eapl.mx/reply-to-lyse-about-twtxt

​ Read More
In-reply-to » We went up our backyard mountain again right after lunch. The sun peaked through the clouds sometimes. The 6°C felt much, much cooler with the northeast wind. We got lucky, though, it was dead calm at the summit. At least on the southwestern side, which is a few meters lower than the very top to the east. That was shielded absolutely perfectly from the wind (we were extremely surprised), so we sat down on a bench and could really enjoy the sun heating us up. Apart from the haze, the view was really nice.

@lyse@lyse.isobeef.org Looks like a nice day. 😊 I tried to go on a quick walk, but it was really cold. And everything’s wet at the moment. Bah.

Clothespins in the woods, who would have thunk? đŸ„Ž

​ Read More
In-reply-to » (#tbyqv7a) @andros Do edits cause problems? I sometimes make them and didn't realize it may be an issue

@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.

​ Read More
In-reply-to » Question to the twtxt veterans, are we experiencing an explosion of clients or is this a regular occurrence?

@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.

​ Read More
In-reply-to » I read a lot about Clean Code, SOLID, TDD, DDD... now I'm discovering «A Philosophy of Software Design»... but nobody talks about the importance of the project architecture. Do we depend on the framework to do the work for us? You know I'm a big fan of Clean Architecture, but I feel alone when I share my thoughts on social media or at work. You have to think outside the framework.

@andros@twtxt.andros.dev

  • System Design Interview Vol. 1 and 2, Alex Xu and Sahn Lam
  • Designing Data-Intensive Applications, Martin Kleppmann

​ Read More
In-reply-to » @andros, I am getting:

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

​ Read More
In-reply-to » Question to the twtxt veterans, are we experiencing an explosion of clients or is this a regular occurrence?

@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”. :-)

​ Read More
In-reply-to » Got myself a proper bass amp and now I really want to live in a small house in the middle of nowhere, where I won’t bother anyone. 😅

@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

​ Read More
In-reply-to » I read a lot about Clean Code, SOLID, TDD, DDD... now I'm discovering «A Philosophy of Software Design»... but nobody talks about the importance of the project architecture. Do we depend on the framework to do the work for us? You know I'm a big fan of Clean Architecture, but I feel alone when I share my thoughts on social media or at work. You have to think outside the framework.

@xuu@txt.sour.is What books do you have?

​ Read More
In-reply-to » Na, you're spot on, @movq! The result is an expected, terrible disaster. It just seems the absolute catastrophy is delayed for another four years.

@lyse@lyse.isobeef.org

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? 😡

​ Read More
In-reply-to » This document is the result of a series of discussions between Robert "Uncle Bob" Martin and John Ousterhout, held between September 2024 and February 2025. The text addresses three main topics: method length, comments, and Test Driven Development (TDD). https://github.com/johnousterhout/aposd-vs-clean-code/blob/main/README.md This is something to read and reflect on for days.

@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.

​ Read More
In-reply-to » I spent this Monday afternoon back from work, drawing myself as the "you made it to Friday sailors" dog. Totally unrelated to the 3 hours wasted on meetings, pretending to discuss great suggestions from high management, nobody else wants to implement. Link to OG meme: https://youtu.be/z8x3JS7pP14

@thecanine@twtxt.net That’s one of my favorite dogs. Very cute. I like its headband and bandana with the bones.

​ Read More
In-reply-to » @lyse, @movq well, there goes my theory. We (the people) keep insisting on fudging things up.

@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.

​ Read More
In-reply-to » Du brauchst schon fast keine AfD mehr, wenn du Medien (ÖR!) hast, die so die Interviews fĂŒhren: https://www.deutschlandfunk.de/interview-mit-bodo-ramelow-linke-ex-ministerpraesident-thueringen-zur-wahl-100.html

@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. :-(

​ Read More
In-reply-to » Du brauchst schon fast keine AfD mehr, wenn du Medien (ÖR!) hast, die so die Interviews fĂŒhren: https://www.deutschlandfunk.de/interview-mit-bodo-ramelow-linke-ex-ministerpraesident-thueringen-zur-wahl-100.html

@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.

​ Read More
In-reply-to » Na, you're spot on, @movq! The result is an expected, terrible disaster. It just seems the absolute catastrophy is delayed for another four years.

@lyse@lyse.isobeef.org

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.

​ Read More

I spent this Monday afternoon back from work, drawing myself as the “you made it to Friday sailors” dog. Totally unrelated to the 3 hours wasted on meetings, pretending to discuss great suggestions from high management, nobody else wants to implement.
Link to OG meme: https://youtu.be/z8x3JS7pP14

​ Read More
In-reply-to » I'm in an article in Quanta Magazine! It's about the bizarre world of algorithms that re-use memory that's already full. https://www.quantamagazine.org/catalytic-computing-taps-the-full-power-of-a-full-hard-drive-20250218/ I'm the one with all the snow in the background.

@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. :-)

​ Read More
In-reply-to » I heard that congratulations to Germany are in order, is that right? If so, congratulations!

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.

​ Read More
In-reply-to » I heard that congratulations to Germany are in order, is that right? If so, congratulations!

@bender@twtxt.net @prologic@twtxt.net The outcome was to be expected but it’s still pretty catastrophic. Here’s an overview:

Image

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:

Image

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.

​ Read More