{"items": [{"author": "Todd", "source_link": "https://plus.google.com/112947709146257842066", "anchor": "gp-1342833356336", "service": "gp", "text": "Couldn't you just use the +/@ tagging? That would reduce the number of successes, but it would also make the problem a lot more manageable, and I think people could train themselves to always use it (I already try to for clarity's sake, though I do forget sometimes).", "timestamp": 1342833356}, {"author": "Jeff&nbsp;Kaufman", "source_link": "https://plus.google.com/103013777355236494008", "anchor": "gp-1342835302807", "service": "gp", "text": "@Todd\n\u00a0That might work, but there are also a lot of times when there are multiple things someone has said and you're only responding to one of them. \u00a0Certainly easier, though.", "timestamp": 1342835302}, {"author": "opted out", "source_link": "#", "anchor": "unknown", "service": "unknown", "text": "this user has requested that their comments not be shown here", "timestamp": "1342839025"}, {"author": "Ben", "source_link": "https://www.facebook.com/jefftk/posts/261922540584733?comment_id=261942340582753", "anchor": "fb-261942340582753", "service": "fb", "text": "Just keep a rolling hash of the last &lt;quote_threshold&gt; words and use a lookup table? O(mn), I think. (Addendum: Justin beat me to it...)", "timestamp": "1342839199"}, {"author": "Jeff&nbsp;Kaufman", "source_link": "https://www.facebook.com/jefftk/posts/261922540584733?comment_id=261944667249187", "anchor": "fb-261944667249187", "service": "fb", "text": "So I make a dictionary from every sequence of 10 words in every comment to that comment's id.  That's O(m*n).  Then I iterate over the dictionary and nest the comments.  O(n).<br><br>It uses about 10 times as much memory as storing each post raw, not so bad.  You could use much less by hashing each sequence and storing that, but at the cost of a lot of hashing.", "timestamp": "1342839973"}, {"author": "James", "source_link": "https://plus.google.com/106345404829653994850", "anchor": "gp-1342842809723", "service": "gp", "text": "This seems upside-down. If it's foreach(comment) foreach(earlier-comment last-first) instead of foreach(comment) foreach(later-comment earliest-first), then if there are multiple matches, the first match (in traversal order) will be the best parent. If you do it in a different order, then you run into problems when comments contain nested quotes.", "timestamp": 1342842809}, {"author": "Jeff&nbsp;Kaufman", "source_link": "https://plus.google.com/103013777355236494008", "anchor": "gp-1342873742620", "service": "gp", "text": "@Lucas\n\u00a0What I'm planning to do is something like:\n<br>\n<br>\n1. identify all quotations\n<br>\n2. throw away records for comments that quote multiple comments\n<br>\n3. move each quoting comment to be a child of the comment it quotes\n<br>\n<br>\nThe second two steps are fast and straightforward, so I don't think they're so interesting unless they let us improve the first step.", "timestamp": 1342873742}, {"author": "Jeff&nbsp;Kaufman", "source_link": "https://www.facebook.com/jefftk/posts/261922540584733?comment_id=262046803905640", "anchor": "fb-262046803905640", "service": "fb", "text": "@Justin, @Ben: I've added an O(n*m) implementation to the post.", "timestamp": "1342874530"}, {"author": "Jeff&nbsp;Kaufman", "source_link": "https://plus.google.com/103013777355236494008", "anchor": "gp-1342874548219", "service": "gp", "text": "@Lucas\n\u00a0I've added an O(n*m) implementation to the post.", "timestamp": 1342874548}, {"author": "Alex", "source_link": "https://plus.google.com/100936518160252317727", "anchor": "gp-1342875181960", "service": "gp", "text": "Sigh\n... If only the system included the comment we are replying to in some sort of standard way... maybe we could start with a standard string like \"on such-and-such a time, so-and-so wrote\", then include the comment with, say, angle brackets on each line to indicate a quote... and it would be a network for users, so we could call it Usenet! Oh wait.", "timestamp": 1342875181}, {"author": "Jeff&nbsp;Kaufman", "source_link": "https://www.facebook.com/jefftk/posts/261922540584733?comment_id=262063043904016", "anchor": "fb-262063043904016", "service": "fb", "text": "Threading added.  See http://www.jefftk.com/news/2012-03-24.html for an example of it working.", "timestamp": "1342878245"}, {"author": "Jeff&nbsp;Kaufman", "source_link": "https://plus.google.com/103013777355236494008", "anchor": "gp-1342878259203", "service": "gp", "text": "Threading added. \u00a0See \nhttp://www.jefftk.com/news/2012-03-24.html\n for an example of it working.", "timestamp": 1342878259}, {"author": "Alex", "source_link": "https://plus.google.com/100936518160252317727", "anchor": "gp-1342879550468", "service": "gp", "text": "@Jeff&nbsp;Kaufman\n\u00a0it looks good!", "timestamp": 1342879550}, {"author": "Paul", "source_link": "https://www.facebook.com/jefftk/posts/261922540584733?comment_id=262089713901349", "anchor": "fb-262089713901349", "service": "fb", "text": "There is plagiarism  detection software designed to look for this sort of thing.", "timestamp": "1342885060"}, {"author": "Jeff&nbsp;Kaufman", "source_link": "https://plus.google.com/103013777355236494008", "anchor": "gp-1342885508708", "service": "gp", "text": "@Lucas\n\u00a0\"if conversations ever go to more than one level of replies the layout gets a bit cramped\"\n<br>\n<br>\nWhat if I use css to make 'blockquote' shift the whole reply right but at the same width, instead of squishing from the left and right as it does now? \u00a0(I'm not sure how to do this, but I think I can figure it out.)\n<br>\n<br>\n(You're right that I'm misuing blockquote; a reply is not a quote. \u00a0But then it looks ok in non-css browsers.)\n<br>\n<br>\n\"the LessWrong site has explicit threading that's probably more reliable overall -- is it possible to get their threading relationships for their messages?\"\n<br>\n<br>\nI think so, using their API instead of parsing their rss feed. \u00a0Though I don't crosspost there that much, so it might not be worth it.\n<br>\n<br>\n\"A big part of me would love to see what would happen if you didn't group conversations by publication venue and did threading across those boundaries\"\n<br>\n<br>\nI want to do that too, but I can't do it until I update the my server-side API to pull out timestamps for all the sources.", "timestamp": 1342885508}, {"author": "Jeff&nbsp;Kaufman", "source_link": "https://plus.google.com/103013777355236494008", "anchor": "gp-1342885806501", "service": "gp", "text": "@Lucas\n\u00a0 \"I just noticed that you've added those 'Top Posts' links on the individual post pages\u2026 how did you implement that?\"\n<br>\n<br>\nI picked ones had a lot of comments, pageviews, and that I liked. \u00a0And then I have some code that picks N random ones to put on each page when I pregenerate the html.", "timestamp": 1342885806}, {"author": "Jeff&nbsp;Kaufman", "source_link": "https://plus.google.com/103013777355236494008", "anchor": "gp-1342889423745", "service": "gp", "text": "@Lucas\n\u00a0\"I'm not really thinking of anything that would support AJAX but not CSS.\"\n<br>\n<br>\nHmm. You're right. \u00a0There isn't one. \u00a0That's something I started doing when the site was all static and haven't rethought it. \u00a0Support for non-css browsers doesn't matter here.", "timestamp": 1342889423}, {"author": "Jeff&nbsp;Kaufman", "source_link": "https://plus.google.com/103013777355236494008", "anchor": "gp-1342890051163", "service": "gp", "text": "@Lucas\n\u00a0\"That would work well, I think, and shouldn't be too terribly hard.\"\n<br>\n<br>\nI have a max-width set on the containing div, so shifting right of that seems annoying. \u00a0But by only indenting from the left and decreasing the amount of indent I think it can now do a good number of replies without getting too narrow.", "timestamp": 1342890051}, {"author": "Jeff&nbsp;Kaufman", "source_link": "https://plus.google.com/103013777355236494008", "anchor": "gp-1342895405436", "service": "gp", "text": "@Lucas\n\u00a0\"A big part of me would love to see what would happen if you didn't group conversations by publication venue and did threading across those boundaries\"\n<br>\n<br>\nDone. \u00a0For example,\u00a0\nhttp://www.jefftk.com/news/2012-07-17.html#gp-1342651977604\n is a google plus reply to\u00a0\nhttp://www.jefftk.com/news/2012-07-17.html#fb-287020628072239_1319851\n and they nest properly.", "timestamp": 1342895405}, {"author": "Jeff&nbsp;Kaufman", "source_link": "https://www.facebook.com/jefftk/posts/261922540584733?comment_id=262142843896036", "anchor": "fb-262142843896036", "service": "fb", "text": "@Paul: \"plagiarism detection software designed to look for this sort of thing\"<br><br>Sure, but that's very complicated because it tries to find cases where people are mostly taking text from somewhere but making small changes to it.  A quote here should be pure cut-and-paste, so I think something simple like what I have now is fine.", "timestamp": "1342899227"}, {"author": "Jeff&nbsp;Kaufman", "source_link": "https://plus.google.com/103013777355236494008", "anchor": "gp-1342905423711", "service": "gp", "text": "@Lucas\n\u00a0\"it looks like your site is displaying duplicate replies in Google+ conversations\"\n<br>\n<br>\nThis should be fixed now; let me know if you see any more of it.", "timestamp": 1342905423}, {"author": "Jeff&nbsp;Kaufman", "source_link": "https://plus.google.com/103013777355236494008", "anchor": "gp-1342906203674", "service": "gp", "text": "@Lucas\n\u00a0\"apply your max-width to those individual containers instead of setting it once on the top-level wrapper\"\n<br>\n<br>\nDone.", "timestamp": 1342906203}, {"author": "Jeff&nbsp;Kaufman", "source_link": "https://plus.google.com/103013777355236494008", "anchor": "gp-1342906308743", "service": "gp", "text": "\"my inner markup purist isn't sure about that particular structure of nested blockquotes\"\n<br>\n<br>\nFixed; they're divs now.", "timestamp": 1342906308}, {"author": "Jeff&nbsp;Kaufman", "source_link": "https://plus.google.com/103013777355236494008", "anchor": "gp-1342908208239", "service": "gp", "text": "@Lucas\n\u00a0\"I think the time-based stream might not be working quite right across services\"\n<br>\n<br>\nThis should be fixed now. \u00a0I was misusing dateutil.parse and getting my comment as coming at\u00a01342764983 instead of\u00a01342746983, off by five hours. \u00a0(I get an epoch timestamp from g+ but \"2012-07-20T01:16:23+0000\" from fb, so lots of potential for messing things up.)", "timestamp": 1342908208}, {"author": "Adam&nbsp;Yie", "source_link": "https://plus.google.com/114873051319510815414", "anchor": "gp-1342912289845", "service": "gp", "text": "Are you liking the integrated comment streams? Looking at a couple of post I'm finding it tough - context and order disappeared. =\\", "timestamp": 1342912289}, {"author": "Jeff&nbsp;Kaufman", "source_link": "https://plus.google.com/103013777355236494008", "anchor": "gp-1342929614089", "service": "gp", "text": "@Adam&nbsp;Yie\n\u00a0\"Are you liking the integrated comment streams? Looking at a couple of post I'm finding it tough - context and order disappeared.\"\n<br>\n<br>\nI'm not sure yet. I want to give it a bit.", "timestamp": 1342929614}, {"author": "Jeff&nbsp;Kaufman", "source_link": "https://plus.google.com/103013777355236494008", "anchor": "gp-1342929761272", "service": "gp", "text": "@Lucas\n\u00a0\"I'm interested to see whether this leads the commenters on Jeff's next heavily-discussed post o react and discuss more with folks from the other cross-posted venues\"\n<br>\n<br>\nYes!\n<br>\n<br>\n\"it would be nice to have some sort of indication as to where a comment was posted\"\n<br>\n<br>\nThat would be good. Facebook is blue, reddit is baby blue, lesswrong is green, and google is red, green, blue, and yellow?", "timestamp": 1342929761}, {"author": "Lincoln", "source_link": "https://www.facebook.com/jefftk/posts/261922540584733?comment_id=262257300551257", "anchor": "fb-262257300551257", "service": "fb", "text": "@justin @jeff: The anti-plagiarism software is the ticket. Check out http://theory.stanford.edu/.../public.../papers/sigmod03.pdf (I've had a surprising number of near uses for this kind of thing over the last couple of years. Never implemented it, but I've studied the algorithm several times.)", "timestamp": "1342935438"}, {"author": "Jeff&nbsp;Kaufman", "source_link": "https://plus.google.com/103013777355236494008", "anchor": "gp-1342963177915", "service": "gp", "text": "@Lucas\n\u00a0\"Facebook is blue, reddit is baby blue, lesswrong is green, and google is red, green, blue, and yellow?\"\n<br>\n<br>\nI just tried this, and it looked kind of silly:\u00a0\nhttp://www.jefftk.com/comments_colored_by_service.png\n<br>\n<br>\nInstead I think adding a simple (g+) or (fb) after a comment looks better. \u00a0Trying that for now.", "timestamp": 1342963177}, {"author": "Adam&nbsp;Yie", "source_link": "https://plus.google.com/114873051319510815414", "anchor": "gp-1342963788447", "service": "gp", "text": "@Jeff&nbsp;Kaufman\n\u00a0I don't know the legal restrictions, but what about using the sites' more-or-less standard icons?", "timestamp": 1342963788}, {"author": "Jeff&nbsp;Kaufman", "source_link": "https://plus.google.com/103013777355236494008", "anchor": "gp-1342964196418", "service": "gp", "text": "@Adam&nbsp;Yie\n\u00a0\"what about using the sites' more-or-less standard icons?\"\n<br>\n<br>\nI could use icons, though I do like being just text. \u00a0Would that be easier for people to understand?", "timestamp": 1342964196}, {"author": "Jeff&nbsp;Kaufman", "source_link": "https://plus.google.com/103013777355236494008", "anchor": "gp-1342973941392", "service": "gp", "text": "@Lucas\n\u00a0\"I was thinking of a color treatment more like ...\"\n<br>\n<br>\nThat does look somewhat better, though red links make me think of pages that don't exist (wikipedia).", "timestamp": 1342973941}, {"author": "Adam&nbsp;Yie", "source_link": "https://plus.google.com/114873051319510815414", "anchor": "gp-1342976235996", "service": "gp", "text": "@Lucas\n\u00a0\n@Jeff&nbsp;Kaufman\n\u00a0\"That does look somewhat better, though red links make me think of pages that don't exist (wikipedia).\"\n<br>\n<br>\nRight, I was suggested the icons since link coloring already has meaning and overloading it again doesn't really appeal to me (because mine\n<br>\nis the only opinion that counts =)).", "timestamp": 1342976235}, {"author": "Jeff&nbsp;Kaufman", "source_link": "https://plus.google.com/103013777355236494008", "anchor": "gp-1342976934990", "service": "gp", "text": "@Adam&nbsp;Yie\n\u00a0\"I was suggested the icons since link coloring already has meaning and overloading it again doesn't really appeal to me\"\n<br>\n<br>\nWhat do you think of the text symbols I have in there now (g+) (fb) compared to icons? \u00a0(I like them not being pictures, but I could see either.)", "timestamp": 1342976934}, {"author": "Todd", "source_link": "https://plus.google.com/112947709146257842066", "anchor": "gp-1343008375813", "service": "gp", "text": "Color the text symbols?", "timestamp": 1343008375}]}