🧮 USERS:1 FEEDS:2 TWTS:1549 ARCHIVED:91450 CACHE:2788 FOLLOWERS:22 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1548 ARCHIVED:91437 CACHE:2799 FOLLOWERS:22 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1547 ARCHIVED:91420 CACHE:2800 FOLLOWERS:22 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1546 ARCHIVED:91405 CACHE:2800 FOLLOWERS:22 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1545 ARCHIVED:91398 CACHE:2804 FOLLOWERS:22 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1544 ARCHIVED:91389 CACHE:2800 FOLLOWERS:22 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1543 ARCHIVED:91380 CACHE:2795 FOLLOWERS:22 FOLLOWING:14
Hmmmm the AoC site is not mobile friendly 😢
Can someone post the puzzles as Twts? 🤣
🧮 USERS:1 FEEDS:2 TWTS:1542 ARCHIVED:91362 CACHE:2785 FOLLOWERS:22 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1541 ARCHIVED:91350 CACHE:2778 FOLLOWERS:22 FOLLOWING:14
@lyse@lyse.isobeef.org Damn. That was stupid of me. I should have posted examples using 2026-03-01 as cutoff date. 😂
In my actual test suite, everything uses 2027-01-01 and then I have this, hoping that that’s good enough. 🥴
def test_rollover():
d = jenny.HASHV2_CUTOFF_DATE
assert len(jenny.make_twt_hash(URL, d - timedelta(days=7), TEXT)) == 7
assert len(jenny.make_twt_hash(URL, d - timedelta(seconds=3), TEXT)) == 7
assert len(jenny.make_twt_hash(URL, d - timedelta(seconds=2), TEXT)) == 7
assert len(jenny.make_twt_hash(URL, d - timedelta(seconds=1), TEXT)) == 7
assert len(jenny.make_twt_hash(URL, d, TEXT)) == 12
assert len(jenny.make_twt_hash(URL, d + timedelta(seconds=1), TEXT)) == 12
assert len(jenny.make_twt_hash(URL, d + timedelta(seconds=2), TEXT)) == 12
assert len(jenny.make_twt_hash(URL, d + timedelta(seconds=3), TEXT)) == 12
assert len(jenny.make_twt_hash(URL, d + timedelta(days=7), TEXT)) == 12
(In other words, I don’t care as long as it’s before 2027-01-01. 😏😅)
@shinyoukai@neko.laidback.moe What do you mean by that? 🧐 Clients don’t care about the order of twts in a feed. For display clients usually sort by timestamp.
🧮 USERS:1 FEEDS:2 TWTS:1540 ARCHIVED:91337 CACHE:2777 FOLLOWERS:22 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1539 ARCHIVED:91318 CACHE:2764 FOLLOWERS:22 FOLLOWING:14
Oh my god! 🤣 It works! 🥳 My first Twt into the Fediverse (stil some improvements to be made of course), but still 😳 Wow! 🤩 
The funny thing is, Yarn moving to Twt Hash v2 sounds a tad more optimistic than Git adopting SHA-256.
Git is several years too late, while Yarn is pretty much on time.
🧮 USERS:1 FEEDS:2 TWTS:1538 ARCHIVED:91283 CACHE:2735 FOLLOWERS:22 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1537 ARCHIVED:91256 CACHE:2715 FOLLOWERS:22 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1536 ARCHIVED:91242 CACHE:2727 FOLLOWERS:22 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1535 ARCHIVED:91224 CACHE:2741 FOLLOWERS:22 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1534 ARCHIVED:91215 CACHE:2746 FOLLOWERS:22 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1533 ARCHIVED:91209 CACHE:2755 FOLLOWERS:22 FOLLOWING:14
All my newly added test cases failed, that movq thankfully provided in https://git.mills.io/yarnsocial/twtxt.dev/pulls/28#issuecomment-20801 for the draft of the twt hash v2 extension. The first error was easy to see in the diff. The hashes were way too long. You’ve already guessed it, I had cut the hash from the twelfth character towards the end instead of taking the first twelve characters: hash[12:] instead of hash[:12].
After fixing this rookie mistake, the tests still all failed. Hmmm. Did I still cut the wrong twelve characters? :-? I even checked the Go reference implementation in the document itself. But it read basically the same as mine. Strange, what the heck is going on here?
Turns out that my vim replacements to transform the Python code into Go code butchered all the URLs. ;-) The order of operations matters. I first replaced the equals with colons for the subtest struct fields and then wanted to transform the RFC 3339 timestamp strings to time.Date(…) calls. So, I replaced the colons in the time with commas and spaces. Hence, my URLs then also all read https, //example.com/twtxt.txt.
But that was it. All test green. \o/
🧮 USERS:1 FEEDS:2 TWTS:1532 ARCHIVED:91202 CACHE:2757 FOLLOWERS:22 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1531 ARCHIVED:91198 CACHE:2766 FOLLOWERS:22 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1530 ARCHIVED:91190 CACHE:2765 FOLLOWERS:22 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1529 ARCHIVED:91181 CACHE:2774 FOLLOWERS:22 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1528 ARCHIVED:91171 CACHE:2779 FOLLOWERS:22 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1527 ARCHIVED:91026 CACHE:2772 FOLLOWERS:22 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1526 ARCHIVED:90998 CACHE:2753 FOLLOWERS:22 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1525 ARCHIVED:90728 CACHE:2735 FOLLOWERS:22 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1524 ARCHIVED:90723 CACHE:2737 FOLLOWERS:22 FOLLOWING:14
It’s that time again, I’ve just rotated my #twtxt feed!
Find last quarter’s twts at the feed: https://tilde.pt/~marado/twtxt-2025Q3.txt , or see them on the web: https://tilde.pt/~marado/twtxt-2025Q3.html
🧮 USERS:1 FEEDS:2 TWTS:1523 ARCHIVED:90719 CACHE:2737 FOLLOWERS:22 FOLLOWING:14
Hmmm, looks like my twt hash algorithm implementation calculates incorrect values. Might be the tilde in the URL that throws something off. :-? At least yarnd and jenny agree on a different hash.
🧮 USERS:1 FEEDS:2 TWTS:1522 ARCHIVED:90698 CACHE:2723 FOLLOWERS:22 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1521 ARCHIVED:90686 CACHE:2719 FOLLOWERS:22 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1520 ARCHIVED:90641 CACHE:2691 FOLLOWERS:22 FOLLOWING:14
@tilde.club@tilde.club unwritten etiquette (by me, and for me, but one can hope, right?).
- Proper grammar (in any language).
- Correct capitalisation, and punctuation.
- Subject extension support.
Anything else doesn’t matter. ☺️
🧮 USERS:1 FEEDS:2 TWTS:1519 ARCHIVED:90624 CACHE:2685 FOLLOWERS:22 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1518 ARCHIVED:90616 CACHE:2689 FOLLOWERS:22 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1517 ARCHIVED:90598 CACHE:2685 FOLLOWERS:22 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1516 ARCHIVED:90591 CACHE:2685 FOLLOWERS:22 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1515 ARCHIVED:90581 CACHE:2681 FOLLOWERS:22 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1514 ARCHIVED:90562 CACHE:2680 FOLLOWERS:22 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1513 ARCHIVED:90556 CACHE:2686 FOLLOWERS:22 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1512 ARCHIVED:90551 CACHE:2686 FOLLOWERS:22 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1511 ARCHIVED:90542 CACHE:2679 FOLLOWERS:22 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1510 ARCHIVED:90529 CACHE:2679 FOLLOWERS:22 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1509 ARCHIVED:90522 CACHE:2680 FOLLOWERS:22 FOLLOWING:14