In-reply-to » I'm experimenting with SQLite and trees. It's going good so far with only my own 439 messages long main feed from a few days ago in the cache. Fetching these 632 rows took 20ms:

@lyse@lyse.isobeef.org And your query to construct a tree? Can you share the full query (screenshot looks scary 🤣) – On another note, SQL and relational databases aren’t really that conduces to tree-like structures are they? 🤣

⤋ Read More
In-reply-to » One of the reasons we wanted to originally use Contant based addressing and short hashes as our threading model was to keep individual Twts short so that they were still readable if you viewed the manually by hand.

In fact it depends on how many Twts there are that form part of a thread, if you take a much larger sample size of my own feed for example, it starts to approximate ~1.5x increase in size:

$ ./compare.sh https://twtxt.net/user/prologic/twtxt.txt 500
Original file size: 126842 bytes
Modified file size: 317029 bytes
Percentage increase in file size: 149.94%
...

⤋ Read More
In-reply-to » (#5sdepuq) @lyse I'd suggest making the whole content-type thing a SHOULD, to accommodate people just using some hosting service they don't have much control over. (The same situation could make detecting followers hard, but IMO "please email me if you follow me" is still legit twtxt, even if inconvenient.)

Can someone make the edit?

⤋ Read More
In-reply-to » One of the reasons we wanted to originally use Contant based addressing and short hashes as our threading model was to keep individual Twts short so that they were still readable if you viewed the manually by hand.

@movq@www.uninformativ.de Tbis was just a representative sample. The real concrete cost here is a ~5x increase in memory consumption for yarnd and/or ~5x increase in disk storage.

⤋ Read More

(Da ZERO)

🌍🚗 Emissões de Gases com Efeito de Estufa: A Situação Continua Preocupante
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
Um ano depois, a ZERO voltou a analisar as emissões de gases com efeito de estufa (GEE) originadas pelos combustíveis rodoviários, e os resultados continuam alarmantes. Embora tenha havido uma ligeira redução de 1,8%, ainda estamos longe de alcançar as metas necessárias. As emissões de transporte precisam cair cerca de 5,3% ao ano para que possamos atingir os objetivos do Plano Nacional de Energia e Clima (PNEC) para 2030.
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
🚨 2025 Tem de Ser um Ano Exemplar!
O gasóleo, com 14 Mt de CO2 emitidos, continua a ser o maior vilão, e o consumo de gasolina aumentou significativamente. Para evitar o incumprimento das metas climáticas, é crucial que 2025 marque uma viragem.⠀⠀⠀⠀⠀⠀⠀⠀

📊 Barómetro da Mobilidade: Lançamos também um inquérito para criar uma base de dados sobre a mobilidade em Portugal, contribuindo para decisões mais informadas.
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
💡 A mudança é urgente e depende de todos nós, especialmente dos nossos líderes políticos. Vamos juntos construir um futuro mais sustentável!
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
Mais detalhe em https://zero.ong/noticias/emissoes-dos-transportes-continuam-a-ameacar-metas-climaticas-do-pais/
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
#mundoZERO #MobilidadeSustentável #Clima

⤋ Read More
In-reply-to » Another interesting side effect of changing from content-based addressing to location-based addressing is that switching from 7-byte keys to 2025-character keys for 3.5 million entries would expand the database size from 24.5 MB to about 7.09 GB—an increase of roughly 7.06 GB!

So just to be clear, it’s not as bad as the OP in this thread, this is just a worst case scenario. With some additional analysis I did today, its closer to around ~5x the memory requirements of my pod, which would roughly go from ~22MB to ~120MB or so, probably a bit more in practise. But this is still a significant increase in memory. The on-disk requirements would also increase by around ~5x as well on average going from ~12GB to about ~60GB at current archive size.

⤋ Read More

Just out of curiosity, I inspected the yarns database (the search engine//cralwer) to find the average length of a Twtxt URI:

$ inspect-db yarns.db | jq -r '.Value.URL' | awk '{ total += length; count++ } END { if (count > 0) print total / count }'
40.3387

Given an RFC3339 UTC timestamp has a length of 20 characters with seconds precision. We’re talking about Twt Subject taking up ~63 characters/bytes on average.

⤋ Read More
In-reply-to » So I whipped up a quick shell script to demonstrate what I mean by the increase in feed size on average as well as the expected increase in storage and retrieval requirements.

Comparing a few feeds:

Just from a scalability standpoint along I’m not seeing a switch to location-based Twt ids to support threading a good idea here. This is what I meant when I said to @david@collantes.us in a recent call that we open up a new can of worms (or new set of problems) by drastically changing the approach, rather than incrementally improving the existing approach we have today (_which has served us well for the past 4 years already_0.

⤋ Read More
In-reply-to » So I'm a location based system, how exactly do I reply to one of these two Twts from @Yarns ? 🤔

I demand full 9 digit nano second timestamps and the full TZ identifier as documented in the tz 2024b database! I need to know if there was a change in daylight savings as per the locality in question as of the provided date.

⤋ Read More

So I whipped up a quick shell script to demonstrate what I mean by the increase in feed size on average as well as the expected increase in storage and retrieval requirements.

$ ./compare.sh
Original file size: 28145 bytes
Modified file size: 70672 bytes
Percentage increase in file size: 151.10%
...

⤋ Read More
In-reply-to » One of the reasons we wanted to originally use Contant based addressing and short hashes as our threading model was to keep individual Twts short so that they were still readable if you viewed the manually by hand.

Thank goodness we relaxed that limit and I’ve stopped being so Puritan about it but my overall point is we would be significantly increasing the human size as well as the machine size of the identity of threads as well as twts

⤋ Read More
In-reply-to » One of the reasons we wanted to originally use Contant based addressing and short hashes as our threading model was to keep individual Twts short so that they were still readable if you viewed the manually by hand.

With the original specification of 140 character Twt length recommendation. There’s only leaves you with about 78 characters worth of anything remotely useful to say in response.

⤋ Read More
In-reply-to » One of the reasons we wanted to originally use Contant based addressing and short hashes as our threading model was to keep individual Twts short so that they were still readable if you viewed the manually by hand.

Let’s say the overhead is always three bytes two parentheses under space.

⤋ Read More
In-reply-to » One of the reasons we wanted to originally use Contant based addressing and short hashes as our threading model was to keep individual Twts short so that they were still readable if you viewed the manually by hand.

So for example, if we would use @movq@www.uninformativ.de ’s feed as an example thread ID here, his feed with a particular timestamp, were already looking at a subject length of 59 bytes +/- a couple of bytes to denote the subject in the Twt itself/

⤋ Read More

One of the reasons we wanted to originally use Contant based addressing and short hashes as our threading model was to keep individual Twts short so that they were still readable if you viewed the manually by hand.

With the proposal to switch to location based addressing using a pointer to a feed and a timestamp in that feed you’re looking at roughly 2025 characters long because both the HTTP and HTML and even URI specifications do not specify maximum length for URI(s) AFAIK only recommendations.

⤋ Read More
In-reply-to » Another interesting side effect of changing from content-based addressing to location-based addressing is that switching from 7-byte keys to 2025-character keys for 3.5 million entries would expand the database size from 24.5 MB to about 7.09 GB—an increase of roughly 7.06 GB!

@bender@twtxt.net I can’t see myself personally, increasing the infrastructure and costs to run this pod to support this as we switch over potentially and as things continue to grow in scale. You would never get your infinite search and infinite timeline features that you’ve always wanted for example and I would have to drastically reduce what is visible or even searchable at any given point in time to much less than what it is today.

⤋ Read More

Another interesting side effect of changing from content-based addressing to location-based addressing is that switching from 7-byte keys to 2025-character keys for 3.5 million entries would expand the database size from 24.5 MB to about 7.09 GB—an increase of roughly 7.06 GB!

⤋ Read More
In-reply-to » (#zqpkfla) @prologic Thanks for writing that up!

@bender@twtxt.net

Sorry, you’re right, I should have used numbers!

I’m don’t understand what “preserve the original hash” could mean other than “make sure there’s still a twt in the feed with that hash”. Maybe the text could be clarified somehow.

I’m also not sure what you mean by markdown already being part of it. Of course people can already use Markdown, just like presumably nothing stopped people from using (twt subjects) before they were formally described. But it’s not universal; e.g. as a jenny user I just see the plain text.

⤋ Read More

MS-CF16 Fanless Low-Power Pico-ITX SBC with Alder Lake-N and Amston Lake Processors
The MS-CF16 is a compact Pico-ITX single-board computer designed for fanless, low-power, high-performance applications in harsh environments. Powered by Intel Alder Lake-N or Amston Lake Series SoCs, the board features a 2.5GbE LAN port, a GbE LAN port, and SATA 3.0 for storage. Unlike the previously covered MS-CF17, this model offers configurable Intel processors, each

⤋ Read More
In-reply-to » (#266jaka) Yeah I'm curious to find out too beyond just "here say". But regardless of whether we should or shouldn't care about this or should or shouldn't comply. We should IMO. I'd have to build something that horrendously violates someone's rights in another country.

@prologic@twtxt.net Do you feel the same about published vs. privately stored data?

For me there’s a distinction. I feel very strongly that I should be able to retain whatever private information I like. On the other hand, I do have some sympathy for requests not to publish or propagate (though I personally feel it’s still morally acceptable to ignore such requests).

⤋ Read More
In-reply-to » LOl 😂 Not only have a tried to write up a full Twtxt v2 specification, I've also written a Bash shell script that implements the new spec 😅

@lyse@lyse.isobeef.org I’d suggest making the whole content-type thing a SHOULD, to accommodate people just using some hosting service they don’t have much control over. (The same situation could make detecting followers hard, but IMO “please email me if you follow me” is still legit twtxt, even if inconvenient.)

⤋ Read More
In-reply-to » Okay folks, I've spent all day on this today, and I think its in "good enough"™ shape to share:

@prologic@twtxt.net Thanks for writing that up!

I hope it can remain a living document (or sequence of draft revisions) for a good long time while we figure out how this stuff works in practice.

I am not sure how I feel about all this being done at once, vs. letting conventions arise.

For example, even today I could reply to twt abc1234 with “(#abc1234) Edit: …” and I think all you humans would understand it as an edit to (#abc1234). Maybe eventually it would become a common enough convention that clients would start to support it explicitly.

Similarly we could just start using 11-digit hashes. We should iron out whether it’s sha256 or whatever but there’s no need get all the other stuff right at the same time.

I have similar thoughts about how some users could try out location-based replies in a backward-compatible way (append the replyto: stuff after the legacy (#hash) style).

However I recognize that I’m not the one implementing this stuff, and it’s less work to just have everything determined up front.

Misc comments (I haven’t read the whole thing):

  • Did you mean to make hashes hexadecimal? You lose 11 bits that way compared to base32. I’d suggest gaining 11 bits with base64 instead.

  • “Clients MUST preserve the original hash” — do you mean they MUST preserve the original twt?

  • Thanks for phrasing the bit about deletions so neutrally.

  • I don’t like the MUST in “Clients MUST follow the chain of reply-to references…”. If someone writes a client as a 40-line shell script that requires the user to piece together the threading themselves, IMO we shouldn’t declare the client non-conforming just because they didn’t get to all the bells and whistles.

  • Similarly I don’t like the MUST for user agents. For one thing, you might want to fetch a feed without revealing your identty. Also, it raises the bar for a minimal implementation (I’m again thinking again of the 40-line shell script).

  • For “who follows” lists: why must the long, random tokens be only valid for a limited time? Do you have a scenario in mind where they could leak?

  • Why can’t feeds be served over HTTP/1.0? Again, thinking about simple software. I recently tried implementing HTTP/1.1 and it wasn’t too bad, but 1.0 would have been slightly simpler.

  • Why get into the nitty-gritty about caching headers? This seems like generic advice for HTTP servers and clients.

  • I’m a little sad about other protocols being not recommended.

  • I don’t know how I feel about including markdown. I don’t mind too much that yarn users emit twts full of markdown, but I’m more of a plain text kind of person. Also it adds to the length. I wonder if putting a separate document would make more sense; that would also help with the length.

⤋ Read More
In-reply-to » I finally decided to do a few experiments with yarnd to see how many things would break and how many assumptions there are around the idea of "Content Addressing"; here's where I'm at so far:

@movq@www.uninformativ.de Makes sense 👌 I think it’s fair to implement any spec changes incrementaly for sure 👌

And yea since yarnd has a store it’s a bit easier to support edit / delete actions 😅

⤋ Read More

So I’m a location based system, how exactly do I reply to one of these two Twts from @Yarns@search.twtxt.net ? 🤔

2024-09-07T12:55:56Z	🥳 NEW FEED: @<twtxt http://edsu.github.io/twtxt/twtxt.txt>
2024-09-07T12:55:56Z	🥳 NEW FEED: @<kdy https://twtxt.kdy.ch/twtxt.txt>

⤋ Read More
In-reply-to » I finally decided to do a few experiments with yarnd to see how many things would break and how many assumptions there are around the idea of "Content Addressing"; here's where I'm at so far:

@movq@www.uninformativ.de Yeah I think what I’m proposing here is a more pragmatic approach to improvements that will last much longer than our first interaction (~4 years and going strong, but running into minor issues with edit/identify and some collssions_). This scope of changes is much easier to implement for yarnd and I suspect jenny too. and as indicated in here quite easy to have a reference implementation written in Bash with standard UNIX tools.

⤋ Read More
In-reply-to » Okay folks, I've spent all day on this today, and I think its in "good enough"™ shape to share:

It’s even sorta/somewhat compatible with our existing feeds (kind of) 🤣 – Bit too stupid to figure out how to write enough correct Bash to make threads display inline nicely in an indented/tree-like fashion, but oh well 😅

⤋ Read More
In-reply-to » Okay folks, I've spent all day on this today, and I think its in "good enough"™ shape to share:

Example:

$ ./twtxt-v2.sh reply 242561ce02d "Cool! 👌"
Posted twt with hash: b2c938f9838
...
$ ./twtxt-v2.sh timeline
...
prologic@twtxt.net [2024-09-22T07:26:37Z] <242561ce02d> Okay folks, I've spent all day on this today, and I _think_ its in "good enough"™ shape to share:

**Twtxt v2**:

- Specification: https://docs.mills.io/uJXuisaYTRWYDrl8A2jADg?both
- implementation: https://gist.mills.io/prologic/afdec15443da4d7aa898f383f171ec1b

 ![](https://twtxt.net/media/Wb9MtAiQyEkzNQB5dyVvUR.png)
prologic@localhost [2024-09-22T07:51:16Z] <b2c938f9838> Cool! 👌 (reply-to:242561ce02d)

⤋ Read More
In-reply-to » Bahahahaha very clever @lyse I look forward to reading your report ! 🤣 However...

@aelaraji@aelaraji.com No that is absolutely correct. Without cryptographic identities and signatures there is no way to verify authenticity. That is correct. And I don’t think we need to necessarily. What I was just showing and proving was that I didn’t write that spoofed Twt in the first place, which was only provable at the time of @lyse@lyse.isobeef.org short-lived attack 🤣 He essentially forked yarnd, hosted it temporarily (I think locally) and used it to poison the caches of a few production pods.

Thankfully the gossip protocol used by yarnd as part of its “peering” between pods isn’t fully trusted, twts are not archived for example into permanent storage. So the moment my pod re-fetched my own feed, the spoofed Twt was obliterated 😅

Eventual consistency 🤣

⤋ Read More

👋 Reminder folks of the upcoming Yarn.social monthly online meetup:

I hope to see @david@collantes.us @movq@www.uninformativ.de @lyse@lyse.isobeef.org @xuu@txt.sour.is @sorenpeter@darch.dk and hopefully others too @aelaraji@aelaraji.com @falsifian@www.falsifian.org and anyone else that sees this! 🙏 We’re hopefully going to primarily discuss the future of Twtxt and the last few weeks of discussions 🤣

  • Event: Yarn.social Online Meetup
  • When: 28th September 2024 at 12:00pm UTC (midday)
  • Where: Mills Meet : Yarn.social
  • Cadence: 4th Saturday of every Month

Agenda:

  • Let’s talk about the upcoming changes to the Twtxt spec(s)

#Yarn.social #Meetup

⤋ Read More

My Position on the last few weeks of Twtxt spec discussions:

Feed authors that wish to change the location of their feed (once Twts have been published) must append a new # url = comment to their feed to indicate the new location and thus change the “Hashing URI” used for Twts from that point onward.

This has implications of the “order” of a feed, and we should either do one of two things, either:

  • Mandate that feeds are append-only.
  • Or amend the Metadata spec with a new field that denotes the order of the feed so clients can make sense of “inline” comments in the feed. – This would also imply that the default order is (of course) append-only. Suggestion: # direction = [append|prepend]

⤋ Read More

Low-cost Makerdiary board with iMX RT1011 Crossover MCU and Zephyr Support
Makerdiary recently introduced the iMX RT1011 Nano Kit, a compact, high-performance development board featuring NXP’s iMX RT1011 Crossover MCU. With an Arm Cortex-M7 core running at up to 500 MHz, it delivers strong CPU performance and real-time responsiveness The iMX RT1011 Nano Kit includes 128 KB of on-chip RAM, configurable as Tightly Coupled Memory or

⤋ Read More

I finally decided to do a few experiments with yarnd to see how many things would break and how many assumptions there are around the idea of “Content Addressing”; here’s where I’m at so far:

Basically I’m at a point where spending time on this is going to provide very little value, there are assumptions made in the lextwt parser, assumptions made in yarnd, assumptions in the way storage is done and the way threading works and things are looked up. There are far reaching implications to changing the way Twts are identified here to be “location addressed” that I’m quite worried about the amount of effort would be required to change yarnd here.

⤋ Read More
In-reply-to » Ever wondered what it would cost to self-hosted vs. use the cloud? Well I often doubt myself every time I look at hardware prices, and I know I have to do some hardware refresh soon™ for the Mills DC (something I don't have a regular plan or budget for), here's a rough ball park:

@mckinley@twtxt.net Yes I have, however I’m not counting that because even using “Cloud” is not labor free.

⤋ Read More
In-reply-to » (#crmwgxq) I’m still more in favor of (replyto:…). It’s easier to implement and the whole edits-breaking-threads thing resolves itself in a “natural” way without the need to add stuff to the protocol.

@movq@www.uninformativ.de I think your scenario doesn’t account for clients and their storage. The scenario described only really affects clients that come along later. Even then they would also be able to re-fetch mossing Twts from peers or even a search engine to fill in the gaps.

⤋ Read More

Protectli Vault V1410: Fanless 4-Port 2.5GbE Network Appliance with Intel N5105
The Protectli Vault V1410 is a fanless network appliance designed for applications that demand robust performance and reliable connectivity. Key features include four 2.5GbE Ethernet ports and multiple expansion slots, making it a versatile solution for a wide range of networking environments. The device comes equipped with the Intel N5105 processor, a quad-core Celeron chip

⤋ Read More
In-reply-to » (#crmwgxq) I’m still more in favor of (replyto:…). It’s easier to implement and the whole edits-breaking-threads thing resolves itself in a “natural” way without the need to add stuff to the protocol.

@movq@www.uninformativ.de I cases of these kind of “abuse” of social trust. Then I think people should just delete their replies, unfollow the troll and leave them to shouting in the void. This is a inter-social issue, not a technical issue. Anything can be spoofed. We are not building a banking app, we are just having conversation and if trust are broken then communication breaks down. These edge-cases are all very hypothetical and not something I think we need to solve with technology.

⤋ Read More
In-reply-to » Alright, before I go and watch Formula 1 😅, I made two PRs regarding the two “competing” ideas:

Been thinking about it for the last couple of days and I would say we can make do with the shorter (#<DATETIME URL>)since it mirrors the twt-mention syntax and simply points to the OP as the topic identified by the time of posting it. Do we really need and (edit:...)and (delete:...) also?

⤋ Read More

Open-Source Oscilloscope with 1 GS/s High-Speed Data Streaming and Flexible Measurement Capabilities
Crowd Supply recently launched a campaign for ThunderScope, an oscilloscope that combines powerful hardware with open-source software. It captures data at 1 GS/s and streams it to a computer via Thunderbolt, USB4, or PCI Express for real-time processing, offering greater flexibility for complex measurements across various timescales. The Thunde … ⌘ Read more

⤋ Read More
In-reply-to » Ever wondered what it would cost to self-hosted vs. use the cloud? Well I often doubt myself every time I look at hardware prices, and I know I have to do some hardware refresh soon™ for the Mills DC (something I don't have a regular plan or budget for), here's a rough ball park:

@prologic@twtxt.net You’ve done extremely well for ~$125/month, but that’s not figuring in labor. I’m sure you’ve put a lot of hours into maintenance in the last 10 years.

⤋ Read More
In-reply-to » (#crmwgxq) I’m still more in favor of (replyto:…). It’s easier to implement and the whole edits-breaking-threads thing resolves itself in a “natural” way without the need to add stuff to the protocol.

I just realized the other big property you lose is:

What if someone completely changes the content of the root of the thread?

Does the Subject reference the feed and timestamp only or the intent too?

⤋ Read More
In-reply-to » (#crmwgxq) I’m still more in favor of (replyto:…). It’s easier to implement and the whole edits-breaking-threads thing resolves itself in a “natural” way without the need to add stuff to the protocol.

@bender@twtxt.net Yeah I’ll be honest here; I’m not going to be very happy if we go down this “location addressing” route;

  • Twt Subjects lose their meaning.
  • Twt Subjects cannot be verified without looking up the feed.
    • Which may or may not exist anymore or may change.
  • Two persons cannot reply to a Twt independently of each other anymore.

and probably some other properties we’d stand to lose that I’m forgetting about…

⤋ Read More
In-reply-to » (#crmwgxq) I’m still more in favor of (replyto:…). It’s easier to implement and the whole edits-breaking-threads thing resolves itself in a “natural” way without the need to add stuff to the protocol.

@movq@www.uninformativ.de One of the biggest reasons I don’t like the (replyto:…) proposal (location addressing vs. content addressing) is that you just introduce a similar problem down the track, albeit rarer where if a feed changes its location, your thread’s “identifiers” are no longer valid, unless those feed authors maintain strict URL redirects, etc. This potentially has the long-term effect of being rather fragile, as opposed to what we have now where an Edit just really causes a natural fork in the thread, which is how “forking” works in the first place.

I realise this is a bit pret here, and it probably doesn’t matter a whole lot at our size. But I’m trying to think way ahead, to a point where Twtxt as a “thing” can continue to work and function decades from now, even with the extensions we’ve built. We’ve already proven for example that Twts and threads from ~4 years ago still work and are easily looked up haha 😝

⤋ Read More
In-reply-to » Alright, before I go and watch Formula 1 😅, I made two PRs regarding the two “competing” ideas:

I just read the primary spec I’m strongly in support of and it’s pretty rock solid for me 👌 💯

⤋ Read More