🧮 USERS:1 FEEDS:2 TWTS:582 ARCHIVED:63798 CACHE:2221 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:581 ARCHIVED:63785 CACHE:2258 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:580 ARCHIVED:63776 CACHE:2257 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:579 ARCHIVED:63753 CACHE:2257 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:578 ARCHIVED:63738 CACHE:2252 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:577 ARCHIVED:63725 CACHE:2253 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:576 ARCHIVED:63695 CACHE:2236 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:575 ARCHIVED:63676 CACHE:2225 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:574 ARCHIVED:63652 CACHE:2218 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:573 ARCHIVED:63631 CACHE:2212 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:572 ARCHIVED:63610 CACHE:2206 FOLLOWERS:13 FOLLOWING:14
I’m not super a fan of using json. I feel we could still use text as the medium. Maybe a modified version to fix any weakness.
What if instead of signing each twt individually we generated a merkle tree using the twt hashes? Then a signature of the root hash. This would ensure the full stream of twts are intact with a minimal overhead. With the added bonus of helping clients identify missing twts when syncing/gossiping.
Have two endpoints. One as the webfinger to link profile details and avatar like you posted. And the signature for the merkleroot twt. And the other a pageable stream of twts. Or individual twts/merkle branch to incrementally access twt feeds.
I’m not super a fan of using json. I feel we could still use text as the medium. Maybe a modified version to fix any weakness.
What if instead of signing each twt individually we generated a merkle tree using the twt hashes? Then a signature of the root hash. This would ensure the full stream of twts are intact with a minimal overhead. With the added bonus of helping clients identify missing twts when syncing/gossiping.
Have two endpoints. One as the webfinger to link profile details and avatar like you posted. And the signature for the merkleroot twt. And the other a pageable stream of twts. Or individual twts/merkle branch to incrementally access twt feeds.
🧮 USERS:1 FEEDS:2 TWTS:571 ARCHIVED:63568 CACHE:2183 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:570 ARCHIVED:63537 CACHE:2200 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:569 ARCHIVED:63530 CACHE:2208 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:568 ARCHIVED:63527 CACHE:2215 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:567 ARCHIVED:63500 CACHE:2211 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:566 ARCHIVED:63493 CACHE:2207 FOLLOWERS:13 FOLLOWING:14
I played around with parsers. This time I experimented with parser combinators for twt message text tokenization. Basically, extract mentions, subjects, URLs, media and regular text. It’s kinda nice, although my solution is not completely elegant, I have to say. Especially my communication protocol between different steps for intermediate results is really ugly. Not sure about performance, I reckon a hand-written state machine parser would be quite a bit faster. I need to write a second parser and then benchmark them.
lexer.go and newparser.go resemble the parser combinators: https://git.isobeef.org/lyse/tt2/-/commit/4d481acad0213771fe5804917576388f51c340c0 It’s far from finished yet.
The first attempt in parser.go doesn’t work as my backtracking is not accounted for, I noticed only later, that I have to do that. With twt message texts there is no real error in parsing. Just regular text as a “fallback”. So it works a bit differently than parsing a real language. No error reporting required, except maybe for debugging. My goal was to port my Python code as closely as possible. But then the runes in the string gave me a bit of a headache, so I thought I just build myself a nice reader abstraction. When I noticed the missing backtracking, I then decided to give parser combinators a try instead of improving on my look ahead reader. It only later occurred to me, that I could have just used a rune slice instead of a string. With that, porting the Python code should have been straightforward.
Yeah, all this doesn’t probably make sense, unless you look at the code. And even then, you have to learn the ropes a bit. Sorry for the noise. :-)
@jlj@twt.nfld.uk Very grateful for the 5€/month donation, it’s paying my backup server Intel ATOM N2800 Kimsufi dedicated server. It’s running DragonflyBSD! :D
🧮 USERS:1 FEEDS:2 TWTS:565 ARCHIVED:63479 CACHE:2199 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:564 ARCHIVED:63474 CACHE:2199 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:563 ARCHIVED:63447 CACHE:2193 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:562 ARCHIVED:63431 CACHE:2189 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:561 ARCHIVED:63420 CACHE:2186 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:560 ARCHIVED:63371 CACHE:2183 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:559 ARCHIVED:63350 CACHE:2185 FOLLOWERS:13 FOLLOWING:14
@funbreaker@yn.vern.cc Hi! I have attached the current screenshot, as you see it’s not done yet, I need to add some things, but a lot of work is already done.
I will fix the remaining things and try to make it usable enough this week so that I can upload the source.
Need to add the remaining reply button, image loading and width of the text etc first.
I had that in the FLTK client, so I just need to add it to this new GTK gui.
Here is what I had with FLTK
https://yarn.stigatle.no/twt/4nuoc7q
I did not have time to work on those things today, ran out of time. But I’ll resume tomorrow.
🧮 USERS:1 FEEDS:2 TWTS:558 ARCHIVED:63340 CACHE:2188 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:557 ARCHIVED:63326 CACHE:2175 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:556 ARCHIVED:63317 CACHE:2167 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:555 ARCHIVED:63310 CACHE:2162 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:554 ARCHIVED:63292 CACHE:2155 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:553 ARCHIVED:63280 CACHE:2150 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:552 ARCHIVED:63138 CACHE:2177 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:551 ARCHIVED:63130 CACHE:2170 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:550 ARCHIVED:63092 CACHE:2142 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:549 ARCHIVED:63043 CACHE:2179 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:548 ARCHIVED:63034 CACHE:2192 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:547 ARCHIVED:63013 CACHE:2195 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:546 ARCHIVED:63000 CACHE:2236 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:545 ARCHIVED:62992 CACHE:2275 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:544 ARCHIVED:62990 CACHE:2275 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:543 ARCHIVED:62969 CACHE:2272 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:542 ARCHIVED:62959 CACHE:2270 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:541 ARCHIVED:62952 CACHE:2275 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:540 ARCHIVED:62940 CACHE:2275 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:539 ARCHIVED:62929 CACHE:2275 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:538 ARCHIVED:62902 CACHE:2274 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:537 ARCHIVED:62882 CACHE:2274 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:536 ARCHIVED:62826 CACHE:2266 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:535 ARCHIVED:62788 CACHE:2265 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:534 ARCHIVED:62776 CACHE:2263 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:533 ARCHIVED:62758 CACHE:2261 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:532 ARCHIVED:62741 CACHE:2262 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:531 ARCHIVED:62700 CACHE:2258 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:530 ARCHIVED:62658 CACHE:2248 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:529 ARCHIVED:62620 CACHE:2229 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:528 ARCHIVED:62588 CACHE:2219 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:527 ARCHIVED:62577 CACHE:2229 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:526 ARCHIVED:62564 CACHE:2235 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:525 ARCHIVED:62548 CACHE:2234 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:524 ARCHIVED:62521 CACHE:2219 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:523 ARCHIVED:62507 CACHE:2221 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:522 ARCHIVED:62493 CACHE:2222 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:521 ARCHIVED:62461 CACHE:2207 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:520 ARCHIVED:62328 CACHE:2196 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:519 ARCHIVED:62316 CACHE:2207 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:518 ARCHIVED:62300 CACHE:2209 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:517 ARCHIVED:62281 CACHE:2226 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:516 ARCHIVED:62264 CACHE:2236 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:515 ARCHIVED:62240 CACHE:2249 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:514 ARCHIVED:62229 CACHE:2252 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:513 ARCHIVED:62216 CACHE:2253 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:512 ARCHIVED:62199 CACHE:2255 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:511 ARCHIVED:62192 CACHE:2259 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:510 ARCHIVED:62134 CACHE:2238 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:509 ARCHIVED:62124 CACHE:2238 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:508 ARCHIVED:62097 CACHE:2232 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:507 ARCHIVED:62066 CACHE:2228 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:506 ARCHIVED:62046 CACHE:2224 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:505 ARCHIVED:62007 CACHE:2226 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:504 ARCHIVED:61987 CACHE:2228 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:503 ARCHIVED:61962 CACHE:2230 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:502 ARCHIVED:61927 CACHE:2248 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:501 ARCHIVED:61818 CACHE:2242 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:500 ARCHIVED:59969 CACHE:2209 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:499 ARCHIVED:59941 CACHE:2209 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:498 ARCHIVED:59926 CACHE:2210 FOLLOWERS:13 FOLLOWING:14
it could have been some with running out of disk space for my twt cache.
it could have been some with running out of disk space for my twt cache.
🧮 USERS:1 FEEDS:2 TWTS:497 ARCHIVED:59909 CACHE:2224 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:496 ARCHIVED:59864 CACHE:2246 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:495 ARCHIVED:59829 CACHE:2257 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:494 ARCHIVED:59800 CACHE:2258 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:493 ARCHIVED:59761 CACHE:2252 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:492 ARCHIVED:59715 CACHE:2244 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:491 ARCHIVED:59639 CACHE:2247 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:490 ARCHIVED:59168 CACHE:2237 FOLLOWERS:13 FOLLOWING:14