8 ms·
> And for anyone at Twitter who was depending on the network of tweets being a Directed Acyclic Graph, I'm so terribly sorry. I love the idea that there's some
by showerst 6y ago
> And for anyone at Twitter who was depending on the network of tweets being a Directed Acyclic Graph, I'm so terribly sorry.
I love the idea that there's someone out there with code that resolves retweet chains recursively, who's about to be in for a great head scratcher of a bug.
- suprfsat 6y agoThey will have to reckon with the fifty thousand-long chain at https://twitter.com/every_peano https://twitter.com/every_peano
- OisinMoran 6y agoI actually just came across this account recently and was tempted to make some sort of reply bot on whether they were prime or not. I was also trying to find some of the "funnier" numbers to see if they had a disproportionate number of likes (certainly not to like them myself...) but gave up after realising they had almost 50k tweets.
- deleted 6y ago[deleted]
- coolgeek 6y agoSo this brings up a question I've long had, but didn't want the distraction of researching: Is there an easy way to get to some point in a user's timeline? e.g. first tweet, or November 1, 2020?
- anonytrary 6y agoRecursion isn't the problem. Not keeping track of seen tweets is the problem. Recursion can be used to detect cycles and traverse a cyclic graph in a way that doesn't blow up.
- eyelidlessness 6y agoBut you wouldn’t do that if your assumption is that the graph doesn’t cycle. Edit: child comments are correct and I regret my oversight
- ulber 6y agoFor traversing a DAG you probably still would to avoid exploring an exponential number of paths (consider a chain of diamonds [1]). 1: https://www.researchgate.net/figure/A-diamond-shaped-DAG_fig3_226524067 https://www.researchgate.net/figure/A-diamond-shaped-DAG_fig...
- zemnmez 6y agoIt’s a lot easier to just have a depth limit on such non-cyclic graphs than keep an in-memory list of previously seen nodes. its interesting for sure! but a much rarer edge-case imo
- tyrust 6y agoBut a diamond cannot occur in a Twitter-reply graph, right? It would require a Tweet to be able to reply to more than one tweet.
- anonytrary 6y agoIt can because the assumption is that we are crawling embedded links as well as native parents.
- delecti 6y agoYou can reply to one tweet while quote-retweeting another. Depending on how links are defined that could result in a diamond.
- smt1 6y agoof course, it depends on 'what' you are perceiving the computation of and if you were trying to stabilize the effects other surrounding (this would be like a pfaffian), just create a equivariant gauge relative to whatever your senses, just pretend to be like a "solenoid". knowing about a renormalization procedure to a set of pre-known "cardinals", like the lithium-defn (adiabatic "approximation") of seconds or unicode, knowing how they cross convolve or cross correlate. Almost all of these is pretty easy to directly infer or calculate in the discrete digital logical world (or reduce it to a branch and cut problem or SAT), but there seem to be limits to MOSfet technology.
- dheera 6y agoIrritation would probably better in terms of not blowing up your memory requirements. Just keep hashes of all visited nodes and a stack or queue of to-be-visited nodes and loop until you have no more to-be-visited nodes.
- waterproof 6y agoI think you meant "iteration", not "irritation".
- Closi 6y agoOne of the replies is an engineer at Twitter, who confirmed that someone managed to achieve this 7 years ago and it caused issues in the backend.
- OisinMoran 6y agoThe tweet Closi is referring to: https://twitter.com/noradio/status/1333558513314922497 https://twitter.com/noradio/status/1333558513314922497
- meowface 6y agoAnd the content, for anyone too lazy to click: Commenter >what's really amazing is that twitter programmers thought about this edge case and made sure the tweet would not display itself Twitter Engineer >We didn't think of this edge case. Someone did this about 7 years ago and the recursive hydration would make a tweet service crash by simply loading the tweet in a browser. It took a principal engineer an entire day of wading through heap dumps to figure out what was happening.
- tantalor 6y agoHydration?
- plantain 6y agoAs in, https://ssr.vuejs.org/guide/hydration.html https://ssr.vuejs.org/guide/hydration.html
- GauntletWizard 6y agoHydrate: (verb, jargon) To populate with metadata or subobjects. i.e. The FriendsList service hydrates each friend object with a list of friends you have in common
- nullsense 6y agoTIL: debugging via memory dumps is a Principal Engineer level skill. Anyone here actually do this? I read about it in Release It and it sounds by far like the closest thing there is to a super power when it comes to solving production incidents. I've never actually seen anyone do it though. Recently saw a video on this technique from Dotnet Conf. Piqued my curiosity again, and now this. I've really gotta learn this.
- tekstar 6y agoI laughed out loud at the other twitter reply asking ThreadReaderApp to unroll the thread
- haolez 6y agoAnd it seems that ThreadReaderApp didn't reply. Evil, indeed.
- slyall 6y agoWay back (probably around 2000) I created a Usenet News message that referenced itself (pretty trivial). Turns out that a bunch of news reading software didn't like this and crashed when it tried to load that newsgroup.