1. 336

Hi folks,

As Lobsters grows it has been getting an unwelcome and increasing amount of attention from content marketers. This is a tricky thing to define, so, for the purposes of this discussion I’m using it to refer to topical stories written for the primary purpose of building an audience to later sell things to. These articles are usually SEO bait how-tos on features of popular frameworks, mediocre pablum related to whatever problem their product addresses, inflammatory hot takes on news, or outright flamebait/trolling.

I need to tell the story of the worst of these we’ve yet seen, but the changes I describe below are designed for the broader issues of marketing and acculturating new users.

On Friday I had to deal with a content marketer who crossed over into outright spam and abuse. Yuval Halevi (@UV) works for two marketing firms, StartupStash and GuerrillaBuzz. He and Ido Cohen (@idoco) spammed us with links to Cohen’s company LoadMill. They created ten alt accounts to try to disguise this, and avoided being apparent in the invite tree by showing up to the chat room. In this log, the spammers are both @Devit and @unlit_spark; they faked a conversation with themselves to look legit.

-->	Devit (~textual@5.182.58.114) has joined #lobsters
-->	UnlitSpark (1fab9814@31.171.152.20) has joined #lobsters
UnlitSpark	how's your day? :)
Devit	My day sux. My mac is just keep doing problems...
Devit	It's so freaking hot... almost feel like lava
UnlitSpark	have you seen the new browser, flow?
Devit	which one
Devit	Anyone here use Macbook pro and have heat problems with the computer?
UnlitSpark	it's called flow. only for linux, mac and adroid at the moment
[user1]	I did see it UnlitSpark
UnlitSpark	i just read. it's an interesting project, but I think they don't stand many chances given how fragmented the market is
UnlitSpark	what do you think [user1]?
[user1]	I don't understand why people seem to think that it not being open source hurts its chances short/medium-term
...
UnlitSpark	if I want to join the community do I send my proof here or how it's done, exactly?
[user2]	You ask for an invite and hope someone sends you one
[user2]	a lot of corporate shills have taken an interest in the site as of late
UnlitSpark	that's a sign of good work. means the site is doing a good job
UnlitSpark	but also that's how shit hits the fan and ruins everything...
...
UnlitSpark	Hey. I've been around earlier but there was nobody that could help with an invite so I can become a lobster. Is there anyone now that can, please?
[user3]	hi UnlitSpark :D
[user3]	are you an evil corporate content writer or a spam robot?
UnlitSpark	hey :)
UnlitSpark	as Heisenberg told: "you got me" :))
[user3]	i knew it!
[user4]	is this where a trunk opens up and a machine gun kills us all now?
UnlitSpark	first, let me leave a few million dollars for my family
UnlitSpark	and then i'll get the machine gun
UnlitSpark	:))
[user4]	hey it's me, your family member!
UnlitSpark	noted you in my will
[user4]	do you have an example of what kind of content you'd post or comments you'd write?
[user4]	people here are definitely hesitant to give out invites to people who seem to just be promoting their work's paid products
UnlitSpark	I'll DM you :)

Ha ha, what a warm smug glow he must felt in his cold, dead heart to make a topical pop culture reference about how he’s morally equivalent to a drug-dealing murderer as he lied to the friendly users welcoming him. They did this ten times.

They have Medium, HackerNoon, and ProductHunt as media partners. These are big, popular sites, and I guess if this is the startup “hustle” they reward, we’re going to see continued abuse from similar companies.

None of the users who extended invites to these abusers have been reprimanded or been banned from sending invites. It would be a failure if our community closed itself off from the good users we welcome each day because of the potential for this kind of abuse, and I hope we continue to err in favor of inviting interesting contributors.

OK, exciting drama over. Let’s talk about dealing with the bigger trend this exemplifies.

We now consistently average over 20k visitors per weekday. Programming is an enormous, growing, lucrative, powerful industry and thus a very expensive demographic to advertise to. A link on our homepage sends traffic that would otherwise cost $15-30k on Twitter, AdWords, or LinkedIn.

When this is sending attention to celebrate someone advancing the state of our understanding or sharing what they’ve created, it’s the internet at its best as gift economy. Unfortunately, some people see the site as a handful of rubes naively standing around a money fountain, so why not try to take a taste?

I’ve made some changes to make Lobsters less viable to content marketers. Not only to outright spammers, but to people who submit the thin, self-promotional crap that makes Lobsters look like an attractive target.

It’s now possible to ban domains, adding an option for mitigating abuse and raising the risks of spamming the site. (example)

After four links, a domain can’t have a majority of its stories submitted from a single user. I’ve put the current list of domains in a comment below for easy folding. Overall I feel good about slowing submissions from these sites, but there’s some false positives in there that are mostly due to how prolific a submitter @calvin is (which I don’t mean to discourage). The likely fix will be to skip this check if the domain is consistently highly upvoted and doesn’t attract a lot of flagging in its threads (eg flamebait); kibitzing about particulars or other approaches welcome. I’d like to patch it this week; in the meantime bumping up against this limit posts a note to moderators so if it goes wrong we’ll see problems.

While investigating the extent of the spam ring, I noticed we got a batch of users from a professional CTO forum this month. I was on a roll after banning the spammers, but @alynpost prudently suggested I wait until they actually do something wrong. So that brings us to encouraging acculturation.

New users have green usernames and cannot suggest story edits or flag anything. I’ve added more restrictions to them:

  • Users are considered new for 70 days instead of 7.
  • New users cannot send invites.
  • New users cannot resubmit stories.
  • New users cannot submit stories tagged ask, meta, or show.
  • New users cannot submit stories from never-before-seen domains.

Hopefully these changes help things, but there is no “perfect” with social systems, so we’ll doubtless make future changes as needed. So let me close with a reminder that you can write queries to help the Lobsters community learn more about itself or draw clear boundaries around behavior we want to encourage or discourage.

All the best,

  • Peter
    1. 111

      Thanks for your efforts!

      After four links, a domain can’t have a majority of its stories submitted from a single user.

      As a datapoint, I currently can’t submit stories from my domain as I’ve submitted 14 (9 by others). I’m probably biased, but most stories have been reasonably well received so I’d consider that a loss.

      1. 47

        A simple tweak to this rule: bumping against the ceiling makes new submissions from that domain require mod approval. If posts are consistently well-received, mods can whitelist that (UserName, Domain) pair?

        1. 9

          I like this idea! If this is too much moderation overhead, maybe users with sufficiently high karma could see this queue and add approvals?

          1. 12

            Maybe. I dunno. I just threw it out there, but concerns around mod overreach and cabals of power-users are as old as time.

            Tying site privileges to karma creates all sorts of Goodhart’s-law-shaped problems.

            1. 3

              Yeah, but maybe the same trust system that lobsters already has would work here: namely, a mod can delegate this queue to a user they trust? It’s all highly transparent anyway so abuse could be punished?

            2. 2

              A hidden, secondary confidence score that is calculated based on outcomes that are subjectively chosen is where pushcx may be heading with this in due time. Putting a number to it might be a good idea.

      2. 40

        As a datapoint, you are not alone. I wrote:

        in the meantime bumping up against this limit posts a note to moderators so if it goes wrong we’ll see problems

        This definitely went wrong.

        My apologies to those inconvenienced by it, there’s a lot more false positives than I recognized. We’ve had a couple suggestions on how to reduce the error rate like only looking at the last N months or skipping it if any of the domain’s stories have done especially well (better than average or median?). I especially appreciate the folks writing and tweaking queries to try to build up our understanding, and I expect there’s probably some novel angle to separate noise from signal that we’ll think of in the next few days.

        1. 10

          There’s a “homepage” link in the profile. Perhaps the limit could be increased for your declared domain, (possibly, only if it’s unique across users?)

          1. 4

            This is a good idea, but what if the user is submitting from two blogs? For example, their personal blog and the blog of a project (perhaps a project the user contributes to) that the Lobsters community might be interested in.

            1. 8

              We have an authored by checkmark, that might work?

            2. 2

              How many people are doing that? I think it may be acceptable collateral damage.

            3. 1

              Aren’t hats available for that purpose?

              1. 2

                Hats can’t be attached to posts… yet? Also, hats are generally used more for speaking on behalf/with significant involvement for more major projects, less associating sites to users. I suppose it can be changed…

              2. 1

                To clarify, are you suggesting that hats be used as a signal for increasing the (proposed) limit as to how many times a user can submit stories from a particular domain?

                1. 2

                  No, but to have people make it clear that they are posting personal or project related. A separate limit per hat would be an idea yes for the post limit.

          2. [Comment removed by author]

        2. 2

          Perhaps rate limiting posts rather than an absolute limit (or some combination of trust - whatever that means, account lifespan, etc to generate a score/threshold coupled with rate limits).

      3. 35

        Yes, this rule doesn’t really make sense to me. Users who write good stories will most likely be punished in this category.

      4. 25

        yes, I came to the comment section to ask specifically how to handle posting entries for our own blog posts. I enjoy blogging and this is one of the few places I share my blog posts. Don’t how to handle this now.

        1. 5

          So, it is mostly me posting my own stories as can be seen in https://lobste.rs/domain/andregarzia.com

        2. 4

          Yeah. I don’t blog about stuff as much as I should and lobsters is one of the good signal to noise places I’d wanna share with.

      5. 17

        Looking at @arp242 submissions, they look relevant and interesting, so I agree it seems to be a problem with the new algorithm. It will reduce the amount of interesting niche content - precisely what Lobste.rs should be about.

        I’m probably in the same boat as @arp242 as I submit posts from my domain. One of my submissions is a book announcement with 26 upvotes, and the other five are Elm and Postgres posts and projects, which are neither low-effort nor frequent (this is over two years). I agree with @akkartik’s comment that the timeframe needs to be taken into account too.

        I was going to suggest that the problem could be addressed by checking whether the user submitted other sites or participated in discussions, with an additional check for community approval in the form of a certain number of upvotes across submissions/comments. However, after looking at @UV’s comment history I see that they would have still gamed that, primarily because it’s still easy to get upvoted low-effort comments here.

      6. 16

        Same boat. On the other hand, maybe this will motivate me to start digging through your archives to find interesting things, because I can’t rely on you just posting them here for me ;)

      7. 11

        Yeah, it’s a hard choice. I like to think that my own stories, at least as of the past couple of years, are a reasonable fit for this community, and at my current rate of about one post per year I don’t feel like I’m spamming down the site. At the same time, we’ve all seen those account which just post blogspam article after blogspam article from the same domain.

        Maybe these measures are necessary, but I consider it a good thing that people like yourself, and drew devault, and other people who write in-depth about technology topics they’re genuinely interested in, are able to post their stories here.

        Besides, this restriction would mostly affect real users who have the community’ best interests at heart, right? If I was a marketing shill and wanted eyeballs I can show content advertising to, I could just create a new account every fourth article, right?

        1. 8

          If I was a marketing shill and wanted eyeballs I can show content advertising to, I could just create a new account every fourth article, right?

          I think we’re actually good in that case! You’d have to invite the alt account, making what you’re doing SUPER obvious. And then we’d bad the entire domain, so you’d never get links from lobsters ever again :D

        2. 3

          I sat down at my laptop after work to respond to this because, yes: I was aware of the perverse incentive, but at least it’s pretty darn obvious and it reveals bad intentions. And I was distracted from finishing this comment to investigate and confirm that, yes, this happened.

          1. 2

            Why was this user banned? The user submitted 3 things, all of which are relevant and on topic? One of the github links is pretty low quality, but again, not off topic.

            Or, maybe the things I want to see no longer align with the site…

            1. 2

              They were a sockpuppet of vermaden, not a person. I left the three on-topic stories that he submitted as cover for a link promoting his blog.

              1. 2

                Thanks for the explanation!

                So, if that’s provably the case that the account was a sock puppet, ban vermaden?

                But, how is having multiple accounts any different than asking “joe rando” to post on my behalf, which I did today (it happened to be posted by someone I actually know, but only after I asked)?

                I’m going to start following the hashtag on twitter “#promotemeonlobsters” and submit links that appear to be on topic, that don’t appear to be spam to me.

                If I get enough people also do this, there will be a wide variety of potential submitters to these stories, making this silly change irrelevant. Additionally, cannot exactly ban submissions found in that stream, since I can plausibly deny I found it there, and not directly from the source by happenstance.

                OR, you could stage same domain posters, showing them to a random sampling of users until they reach some upvote threshold (say 3?), at which point everyone can see them. While you’re at it, perhaps this should be the way all posts start out…

                1. 2

                  I thought about banning vermaden for the sockpuppeting, but I don’t read him as a badly intentioned content marketer, I read him as overly enthusiastic about FreeBSD. And if he’s clever enough to find bugs and foolish enough to not realize I’m paying a lot of personal attention to him while he does it, I’d rather let him continue a bit to catch other bugs/misdesigns.

                  1. 1

                    I’ve reread your comment multiple times now, am taken aback, and instead of replying how I really feel about it, I’m going to :eyeroll: and leave it be.

            2. [Comment removed by author]

      8. 8

        Want to second this.

        It feels like a rule that will punish personal blogs. I’ve been posting stories from my personal blog here before, I’m not sure if there are stories from my blog others posted. I think they match the content people expect here (mostly infosec related) and I don’t think that’s abuse, some of them got well received.

        If I’d post on medium etc. I wouldn’t have that problem.

      9. 5

        It could be time bounded, or tested against multiple time ranges?

        For instance, user cannot post from a domain if more than half of stories in the last 6 months are from them.

        Or combine that with the original: a user cannot post a domain if they are more than half of all time posts AND they posted more than half within the last 6 months. That way if you could be the majority of all time, but not the majority of recent posts, or vice versa, and still be allowed to post for a certain domain.

        And “the last 6 months” could be 3 months, could be 1 year, or what-have-you.

      10. 3

        I agree. The four link thing is kinda messed up. I write essays every couple of weeks or so, all about making better tech. I’ve spent some time making sure there’s no ads, no email lists, no sales at all on these links. I can’t make them any more innocuous, and I use the comments and feedback from here to learn more and (hopefully) write better stuff.

        It doesn’t make sense that I can’t keep doing this. Perhaps the four link rule would work better when the domains were already high traffic sites? You don’t wanna kill the mom and pop grocery stores simply because you don’t like the new WalMart moving into town.

      11. [Comment removed by author]

    2. 61

      Thank you Peter for getting this sorted out!

      In the light of this saga, I would strongly suggest that every Lobster be on the lookout for this type of stuff.

      In case this bears repeating:

      • Our front-page is slow-moving. A good submission (or a dumpster fire) may stay there for multiple days.
      • Our userbase could be classified as highly-valued eyeballs.
      • As other sites have grown in userbase and submission rate, our signal-to-noise ratio draws more users.
      • There is an entire industry of growth hacking devoted to monetizing sites like ours.
      • Growth hackers do not care about our community, our users, or our values.

      It doesn’t seem to be hard to recognize that this problem is only going to get worse without community help. Please rise to the occasion.

      A footnote: Some folks flagging these sorts of submissions have been downvoted for being alarmist or mean. People have complained about Lobsters not being open-invite or have mocked some folks even the low bar of asking for Github/proof-of-code in IRC. Well, here we are.

      1. 10

        My personal rule for invites is: proof of geekiness or GTFO. It’s a low bar but it seems to have worked out so far.

        As friendlysock says: We have to be aware that Lobsters is a target & act accordingly.

    3. 28

      None of the users who extended invites to these abusers have been reprimanded or been banned from sending invites. It would be a failure if our community closed itself off from the good users we welcome each day because of the potential for this kind of abuse, and I hope we continue to err in favor of inviting interesting contributors.

      Slightly ashamed to admit that I invited one of these spammers :x - I’ve since turned up the gain on my content marketer detector meter.

      1. 11

        Don’t sweat it, thanks for sharing!

        Would you (or anyone else) be willing to elaborate on how that happened so the community can learn from past mistakes? For one I’d love to see what a concrete example of marketer bait looks like.

        1. 16

          I’m probably patient zero as I managed to invite @UV, despite their Twitter profile explicitly noting their affilation with “growth hacking”. I find it hard, socially, to cut someone off in the invite process when they’re polite at their end.

          Here’s the PM convo.

          <UV> Here's my profile on HN
          <UV> https://news.ycombinator.com/user?id=Yuval_Halevi
          <UV> And here's my Quora: https://www.quora.com/profile/Yuval-Halevi
          <UV> Do you need some more information?
          <gerikson> no it's fine
          <gerikson> keep in mind that a lot of the stuff you've submitted to HN might be off-topic here
          <gerikson> but I'll take a chance, what email can I use?
          <UV> Yes ofcourse. I think that only after I will become active I will be able understand the content style on Lobste.rs. Also content that works on HN wont always work on Reddit:)
          <UV> XXXXX@CORP.COM
          <UV> I appriciate it
          <gerikson> invite sent!
          <UV> Thank you
          <UV> is there anything on Lobste.rs similar to this? https://news.ycombinator.com/newsguidelines.html
          <gerikson> `https://lobste.rs/about
          <UV> Thank you:)
          
          1. 8

            I think it might be good if the “what do you bring to the table?” part of the invite process was kept in the public chat, and if people were discouraged from trying to bring it into PM. I don’t think the SNR would suffer too badly for it, and it would prevent folks like you from feeling “pigeonholed” by an applicant. If you no longer feel comfortable inviting someone after you’ve started talking to them, you should be able to just disengage.

            1. 2

              Yes, but there’s a privacy component too - maybe you don’t want your social media feed plastered all over a rather large channel.

              The spammers in question worked with this, they exploited the expectation of privacy (discussion in PM) to hoodwink different people into granting them invites.

              I’m thinking about some changes to the invite process that might mitigate this.

          2. 6

            That HN profile does not exist at this time, but is in the Wayback machine. Looks like they played the same game on HN & got permabanned, with deletion of all posts & comments into the bargain.

            We can expect this crowd to try again, with new identities at some point.

        2. 8

          Unfortunately my IRC client doesn’t save any logs, but it was very similar to what gerikson posted. They were quite polite and asked a few questions.

    4. 26

      I was reminded of something I lost in an edit, so I painted with a broader brush than I meant to. I don’t think all content marketing is awful and tried to caveat that in my opening paragraph. I don’t have a narrower term, though - maybe someone would like to paint this “know it when I see it” bikeshed. I wish I had a non-pejorative phrase to draw a line around the stuff we don’t want that was so clear that even its authors would accept the label.

      We do get wonderful stuff that exists to promote businesses. Maybe my two favorite examples are jvns.ca who sells zines and hillelwayne.com who sells a book and corporate training. In chatting about this I have joked about individually naming them as exceptions to any rule, but I’m sure we can do better than that.

      1. 17

        In chatting about this I have joked about individually naming them as exceptions to any rule, but I’m sure we can do better than that.

        While I’d appreciate being able to still share my stuff, I don’t want to be special-cased as an exception. If whatever we decide ends up preventing me from submitting, then it’d be unfair for me to sidestep that.

        (I know you mean it jokingly, but I’d still like to be on the record as saying this :) )

        1. 12

          But goal is never “enforcement of rule X”, it’s “stop content-marketing dbags”, which everybody in here would agree that you aren’t, whatever definition of that we carry around in our heads.

        2. 1

          There’s a tipping point somewhere where content, like yours Hillel, which is clearly written both to inform others & as an exercise in personal marketing becomes far too much of the latter & not enough of the former.

          Content which is interesting and informative to Lobsters readers should always be welcome here I think, whether it benefits a specific individual to have it posted or not. What we don’t want is an avalanche of low-value blogspam which contains no content that couldn’t be found in a higher quality form elsewhere & only exists because someone wrote it to market a product. (That product often being themselves.)

          1. 4

            Ideally we’d want to have zero false alarms or missed signal, but any sort of rule-based solution will either let in some marketers or block some legit posts. So far we’ve preferred missed signals, but are thinking of moving more away from that. I just think an exception-based filter is unfair as a way of avoiding false alarms here.

            1. 1

              That’s fair.

      2. 6

        The first person I thought about when I read the OP was @aphyr. I don’t know that he posts here to promote a business, but according to the criteria discussed here, his submissions history looks like a surefire way to get banned. (https://lobste.rs/newest/aphyr) And yet, aphyr is the furthest you could get from a content marketer or spammer! A large percentage of posts I enjoy the most would fall under the same pattern: people working hard at interesting stuff and posting about it regularly. It seems to me there is probably way to solve this (very real) problem without putting human moderators in the loop. The actual value of the material linked to the community should be paramount, surely?

      3. 3

        I think that having a vetting process where if people are going to bump up against that limit, it promotes them for mod review, and then they can be whitelisted, would be how I would go about it. We have quite a few domains that are primarily self-posted.

    5. 21

      As a submitter in the table here, I’m happy to stop submitting my own site. I kinda naturally stopped doing that on HN as the community grew and the conversation quality dropped.

      As a reader I think this analysis of majority-submission by one user badly needs a time threshold. It seems too much to wait indefinitely for someone else to post a site before one can do so again.

      My entire RSS feed consists of low-volume stuff by less well-known people. And for most people, if they don’t submit their own site nobody will. I consider that a loss to myself as a reader.

      I’ll play with some queries.

      1. 9

        I haven’t run it, but maybe an extra condition like this would help the query?

        select domain, count(*) as submitted, count(distinct stories.user_id) as submitters,
              (select count(*) from stories s where s.domain_id = domains.id
                 group by s.user_id order by 1 desc limit 1) as from_one_submitter
          from domains join stories
          on domains.id = stories.domain_id
              and stories.created_at > date_sub(now(),INTERVAL 1 MONTH)   -- <=======
          group by domain
          having count(*) > 5
              and (from_one_submitter + 1) * 2 > count(*)
          order by 2 desc;
        

        Link to schema for convenience. I’m not sure what the query performance would be with the given indexes..

        1. 5

          Results:

          +------------------------+-----------+------------+--------------------+
          | domain                 | submitted | submitters | from_one_submitter |
          +------------------------+-----------+------------+--------------------+
          | github.com             |        55 |         40 |                187 |
          | medium.com             |        29 |         20 |                245 |
          | youtube.com            |        25 |         21 |                151 |
          | devblogs.microsoft.com |        12 |          5 |                 42 |
          | utcc.utoronto.ca       |        12 |          2 |                 26 |
          | kevq.uk                |         9 |          1 |                 32 |
          | omgubuntu.co.uk        |         7 |          2 |                 10 |
          | dev.to                 |         7 |          6 |                 14 |
          | gist.github.com        |         6 |          5 |                 16 |
          | twitter.com            |         6 |          6 |                 19 |
          +------------------------+-----------+------------+--------------------+
          10 rows in set (0.89 sec)
          
          1. 9

            Ah yes, dev.to. Forgot about that one. Haven’t seen much high-quality content from there. I think if I really wanted to see stuff from there, I’d just create an account.

          2. 1

            So that idea was a bust :D

            Maybe we should filter common domains out of these results? Did you say the topical miscreants created 10 stories? How far down do we go before we get to their domain?

            1. 2

              The featured spammers posted 6 stories (now removed) from ten accounts.

          3. 1

            Oh my I do recognise some domains I frequently post.

            1. 2

              Maybe I should start recommending Chris Siebenmann’s Wandering Thoughts (https://utcc.utoronto.ca/~cks/space/blog/) posts. He has such a high quality and on-topic blog.

              1. 1

                You were invited by him, so you might trip a wire somewhere as a possible alt account…

                1. 1

                  True. But I could do it occasionally and that would take the pressure off of you. Also, the fact that I invited corbet from LWN might count in my favor for being a legit non-sock-puppet account ;-)

                  It really is a great *nix/sysadmin blog and Chris must have made some kind of pact with himself, because he writes a new post almost every single day.

                  I used to mostly lurk on lobste.rs, but occasionally I’d want to comment. Eventually I decided to get myself invited. I originally tried getting an invitation though chat, but no one responded there. Chris’s name was the only one I recognized as a lobste.rs member, so I sent him an email requesting an invitation. My email managed to get lost for a couple months, but eventually he saw it and invited me. As a “proof of trustworthiness”, I mentioned that I had, several times, posted comments on his blog. Maybe he checked out my comments.

                  So, did utcc.utoronto.ca need to get special dispensation to get around some of the posting limitations? Or is it just squeaking by under the limits?

                  1. 1

                    Those domain limitations didn’t work and I dropped them.

    6. 17

      Spitballing a couple ideas here.

      On the topic of the 70 day new-user timer:I think this will just make the spammers much more difficult to notice as they will create dormant accounts waiting for the timer to expire while maybe posting a low-effort comment here and there. Possibly even automating it by copying or generating content based on previous comments on lobste.rs. I don’t see a direct solution to this, but it’s worth to keep in mind how their approach will change with this.

      Regarding the new-user limitations in general: How about having two different types of invites you can send out? One regular invite as it is now, and one for people you trust? Sending the trusted invite would mean you personally take responsibility for actions taken by the person you invite (for a reasonable time frame that is) and their limitations are relaxed somewhat. This means you still can extend invites to people you don’t trust all that much, and they would end up having to display their trustworthiness, or you can shortcut that mechanism and allow someone you already trust onto the platform.

      1. 12

        Why would you invite somebody you don’t trust? Two levels of that and we’re back to where we started.

        I’m not totally sold on a time-based “newness” metric. Something more informed by usage would be good–are they submitting new content, are they actively commenting, are they helping suggest tags and whatnot. And sure, those are all gameable, but if we can trick the growth droids into performing vital community service why not?

        1. 31

          I was invited by @flyingfisch because I asked on IRC. He invited me in good faith but doesn’t trust me as a personal friend. If I was banned he might get told “hey be more careful” but that’s about it. There are a couple of people I invited like that. I also invited @rwhaling because he’s someone I trust. If he got banned, I’d feel obligated to apologize to the lobsters community, because I personally “vouched” for him and was wrong.

          That’s how I see this. I’d come in as a “standard” newbie and would have all the restrictions at first. @rwhaling would come in as a “vouched-for” user and would have fewer restrictions. But if he got banned, I’d be suspended or put on probation or something.

          1. 6

            Nice explanation. As a newbie who’s not enitrely sure how the whole community “breathes”, I’m constantly afraid of posting something so bad that my inviter has to feel bad about me. And they only gave me invite because I saw on Mastodon that they are a user here, we have low interraction otherwise.

          2. 5

            Thanks for your explanation!

            But if he got banned, I’d be suspended or put on probation or something.

            I like this approach for taking responsibility for downtree users.

            1. 5

              Suspend future invitations for some time.

          3. 1

            I think leaning into the social network/web of trust is a good idea. I think it may be useful to express beliefs and confidences, about users you do not invite.

            What reward you get to balance the risk ventured, I don’t know. Maybe just the knowledge that you’re helping the anti-spam network.

          4. 1

            This is exactly the mechanics I was thinking about. The punishments and rules of it would need to be hashed out, but you are spot on with the idea.

      2. 10

        I think this will just make the spammers much more difficult to notice as they will create dormant accounts waiting for the timer to expire while maybe posting a low-effort comment here and there.

        This is certainly existentially possible, but not actually true in my experience. One kind of abuse I deal with is fraudulent activity in my billing system. One surprising aspect of these behaviors is how impatient the people engaging in them are. Instead of waiting for the ‘right’ opportunity, they go to where there is an immediate ‘return’ on their effort. One explanation for this is that it reduces the evidence of the behavior, lowering legal risk. I think part of it is high time preference, however.

        It is true that there are innovations in parasitism (e.g., spamming), just as there are innovations in productive and positive behaviors. What happened here was “innovative” in the sense that we had not seen it before. Since it provided an unearned benefit, the behavior was repeated until discovered and suppressed. That will happen again, perhaps even in the manner you articulate but probably in a more novel way–but that is going to be true every time we suppress an unwelcome behavior. Incremental suppression increases the cost of imposing on us–requiring more effort for the same reward is a feature, regardless of whether it fully eliminates the unproductive behavior or not.

        1. 8

          This also happens with SMTP servers, interestingly. One of postfix’s most basic spam-prevention settings is just waiting a small amount of time at the beginning of each SMTP session and canning it if the client talks first. Apparently, the server is meant to talk first, but most spambots are so impatient (because they have to spam as much as possible before they get blacklisted) that they send their HELO before the server has sent them anything.

      3. 4

        I wonder if it would be possible to take the max between 70 days and an arbitrary karma count (maybe the median user karma level?). New accounts that genuinely want to join the community and actively participate shouldn’t be tagged as potential spammers for over 2 months.

        When I was invited 5 years ago, the person sending the invite was responsible for the new users that they invited and could lose their account/run into trouble if they abused the invite feature. It is my understanding that that was the main reason for showing the invite tree back then. Does anyone know if that policy has changed or if I just misremember the “good old times”?

        1. 5

          In practice “upstream” users have only been banned for downstream user’s indiscretions once or twice. It basically doesn’t happen.

          1. 1

            Off the top of my head, I only know of one user banned because of behavior by someone they invited, and they wrote the code to disable invites, so I don’t think there have been any since then.

      4. 2

        Expect owners of older accounts that aren’t used that much to start getting cash offers for them…

    7. 17

      Sad to see my personal blog on that list: acha.ninja - Mostly I put projects that took weeks or months of effort that got fairly well upvoted.

      1. 10

        Nothing to worry about for now. My impression is that right now the ban list is not a ‘naughty’ list, more of a ‘needs verification’ list. A lot of personal site owners here seem to be in the same boat.

        The likely fix will be to skip this check if the domain is consistently highly upvoted and doesn’t attract a lot of flagging in its threads (eg flamebait); kibitzing about particulars or other approaches welcome. I’d like to patch it this week; in the meantime bumping up against this limit posts a note to moderators so if it goes wrong we’ll see problems.

    8. 16

      One thing not considered: what if the cost of content marketing was raised? A ban on medium.com has been discussed before, and that site has become remarkably user-hostile.

      1. 11

        Full support of just banning medium.com or adding a “Medium.com” downvote flag

        1. 4

          Or at the very least adding a ‘medium.com’ tag that folks can use to exclude that garbage from showing on their front pages.

          1. 2

            The ability to filter out specific domains would be a more general solution, I think.

      2. 7

        This has come up a bunch of times in this thread and the chat room today, almost always serious (I think). We can query the domain medium.com trivially, but not the aliases like, uh blog.loadmill.com. Would someone like to write a Ruby script to loop our domains table and detect them? (You don’t have to write a migration to store this in the database, let’s start with diagnosis.) I don’t know if they’ll all be CNAMEs, As, CloudFlare, or what, so there’s a bit of research to be done here. With such a script we could write queries to find out if Medium is typically the bad stuff and decide if we’d be better off with out it.

        1. 5

          (not sure if a blanket ban on medium.com is good or bad, but that said:)

          I couldn’t find any DNS fingerprints (no cname or txt records; a points to AWS). looks like medium blogs send a link: rel=humans HTTP header on all HTTPS pages, though:

          ~ %  curl -sI https://blog.loadmill.com|grep humans
          link: <https://medium.com/humans.txt>; rel="humans"
          

          here’s it as a oneliner applied to the query you’ve posted (it’s slow, mainly due to non-responding servers):

          ~ % curl -s https://gist.githubusercontent.com/pushcx/4cd41b0a935ed11e110d5ee2df7b4428/raw/448aa84b1cd0b7f90d6000d99fc1dcdd34545d30/query.txt|grep '^|' |cut -f2 -d' '|while read domain; do curl -skIm10 https://$domain|grep -Fq medium.com/humans.txt && echo $domain; done
          blog.grandstack.io
          blog.learngoprogramming.com
          blog.minio.io
          notamonadtutorial.com
          blog.getambassador.io
          blog.softwaremill.com
          blog.bitsrc.io
          blog.0day.rocks
          mondaynote.com
          blog.esciencecenter.nl
          itnext.io
          blog.plan99.net
          

          They also 302-redirect through https://medium.com/m/global-identity?redirectUrl= (probably to track logged in users) when not issuing a HEAD request.


          i do like the ‘exclude personal home pages from the majority domain ban’ idea.

          1. 3

            Thanks for finding a signal. I adapted this to check all 19k+ domains that have been submitted to Lobsters; here’s the list of the 193 hosted by Medium. (Caveat: they’re Medium now and may not have been years ago when the site was submitted, and vice-versa).

            $ time (touch medium.txt; mysql lobsters -e "select domain from domains" | xargs -P 20 -i% bash -c "curl -skIm10 https://% | grep -Fq medium.com/humans.txt && echo % >> medium.txt")
            
            real    15m48.738s
            user    7m30.633s
            sys     2m38.201s
            
            1. 4

              193 out of 19k+ domains doesn’t sound all that much to be honest. If banning only Medium would drop the amount of low quality content dramatically, then the few domains hosted by Medium does not sound like a large issue. If they are, one could discuss a solution for that at a later date.

              Even if a ban on Medium is too aggressive, then a tag for Medium could be a solution. Even a tag that lowers the score like the meta tags for example. That would at least discourage blog spam through them as the visibility would be limited somewhat more.

        2. 4

          Previous objections have been of the form “medium.com is user-hostile”. My suggestion this time is of a stronger form: if X.com is employing marketers that are taking hostile actions against the community, then is banning X.com enough to make it unattractive to employ marketers?

          I’m not sure if that’s true, and I guess my post was about 70/30 snark/serious. It might not be good for multi-tenanted domains to get the banhammer because one guy hired some marketroids.

          I don’t know if I will have a chance to get to writing your diagnostic script, so I’m afraid I can’t promise it for you.

    9. 16

      I totally knew he was a corporate spammer, somehow.

      Edit: Useful suggestion, let a user tag their own blog or site in a profile setting, so they can submit it more than four times.

      1. 10

        I really like this suggestion. All the really good “restricted” sites are by individuals posting as individuals, and most of the spam sites are company sites. It also means that if two people tag the same site as “their own” then that’s an instant red flag for the mods.

      2. 6

        The site cstheory.stackexchange.com struck me: it is not someone’s own site but sounds like they read the postings avidly and share interesting ones with us. We should not lose this either.

        We should not over-reach in our response. I suspect the best low tech solution is to have an open, community curated list of banned domains/sites. People can appeal if they think they should not be on the list. We are all here in good faith and doing this kind of touchy-feely, lets hug it out, process will raise the cost for those only here for the eyeballs + a quick $$.

        1. 2

          No, that doesn’t work. Some of these shilled websites were otherwise well-received and had no reason to be banned from that perspective.

    10. 11

      Something about that spammer-spammer conversation makes my eyes hurt.

      I couldn’t possibly violate an NDA, not about spam. But I could, in the most general terms, describe a spam filter I once implemented for a different site, a very successful filter. This spam filter did not deal with spam: It recognised some kinds of postings as not spam according to site-specific rules, and asked a human for all other postings.

      The key to its success was that

      • the site-specific rules were actually site-specific and not even nearly true in general. They were only true for the kinds of things talked about on that site. Translating to lobste.rs, “postings by @calvin are okay” might be a candidate, since it’s true within the context of lobste.rs, but does not apply to other calvins at other sites.
      • spammers would have to really get to know the site’s audience to learn the filter’s rules.
      • almost all postings were handled by the rules, so the humans weren’t worn out.
      • spam was taken down a minute or three hours after being posted, not at once. Taking down spam at once made the spammers adapt.
      1. 2

        That last point seems like a low-effort, high-power action! (The rest of your description is also interesting.)

    11. 9

      I share the concern over the rapidly-lowering signal to noise ratio on lobste.rs, but this whole approach seems wrong (not just because it punishes people who run their own blogs while encouraging spammers to register multiple domains for mirroring purposes / have multiple alts posting links to each domain).

      Increasing the amount of time that new users are new & expanding the set of restrictions on new users does make sense, though again, restrictions on submitting stories from never-before-seen domains doesn’t make much sense: the whole point of a link aggregator is to surface new and interesting content, & content from an unfamiliar site is always going to be more likely to be new (and not substantially less likely to be interesting) than a link to a site that some other user has already posted links to.

      The value of lobste.rs isn’t just that we don’t have nearly as much of the low-information-density content-marketing BS as HN does, but also because we have cultivated a community of knowledgeable people who dig up obscure stuff and post it or write about it – like, IMO, the best content on the site is under the ‘historical’ tag, where some brave soul has gone through hundreds of documents on bitsavers or worrydream or something & posted one that’s relevant. This policy also disincentivizes that behavior.

      I’ve got a dog in this race: several sites I’ve posted here are listed in the table below. In one case, the site listed (tedium.co) hosted content I was paid to write (though not paid per view), & despite this, I linked it here because it was good content. I used to post medium links here (which I will be paid for), & no longer do so because a bug in URL cleaning causes the paywall bypass to be removed; if I were to link to the mirror of those posts on my own site, I would be penalized (because of course, nobody else will link to the copy on my site: the medium version is canonical).

      We might be able to get rid of low-quality content marketing (or at least keep it off the front page – several twitter & mastodon bots post everything that makes it to the front page here) through other, more flexible mechanisms. For instance, we could kill two birds with one stone & implement a per-user domain filter, then lower the ranking of stories based on the proportion of users who have that domain filtered (the same way we lower the ranking of stories tagged ‘rant’). Alternatively, stories submitted by new users could themselves have a handicap or a visibility delay of a day or two.

      1. 1

        Could you elaborate on how this disincentivizes historical research? I didn’t follow, and I want to because I’m also a big fan.

        Decent point on whether unfamiliar stuff is or isn’t correlated with interestingness. I’ll try to write a query to see if there’s typically lower scores the first time we see a domain, but it’ll take a bit to avoid the confounder of site traffic growing over time.

        I appreciate the couple different mechanisms you’ve suggested and will sleep on them, thanks for sharing some creative approaches.

        1. 1

          It’s not that it disincentivizes all historical research, but mostly that it disincentivizes crate-digging. Like, if I stumble upon somebody’s personal archive of Apollo or Plato documentation & then read everything on that site but post the best handful of documents here, I’ll probably run afoul of the domain restriction. There are a handful of hubs for historical documentation that a lot of people know about, but the hidden gems are hidden by definition – anything good on archive.org or bitsavers has probably already been looked over.

    12. 9

      Great stuff. Thank you for all this hard work.

    13. 15

      This is the complete list of domains where a user’s next submission could be blocked for having a majority of submissions from them. It’s a little close to being a worst-of list I don’t like to share queries of (especially where the submitters column is 1…) but I wanted to include it as a list of examples of content marketing.

      MariaDB [lobsters]> select domain, count(*) as submitted, count(distinct stories.user_id) as submitters, (select count(*) from stories s where s.domain_id = domains.id group by s.user_id order by 1 desc limit 1) as from_one_submitter from domains join stories on domains.id = stories.domain_id group by domain having count(*) > 5 and (from_one_submitter + 1) * 2 > count(*) order by 2 desc;
      +-------------------------------------+-----------+------------+--------------------+
      | domain                              | submitted | submitters | from_one_submitter |
      +-------------------------------------+-----------+------------+--------------------+
      | blogs.msdn.microsoft.com            |       206 |         36 |                132 |
      | jvns.ca                             |       159 |         36 |                 80 |
      | blog.netbsd.org                     |       126 |         13 |                 85 |
      | css-tricks.com                      |       116 |         15 |                 86 |
      | developer.telerik.com               |       113 |          5 |                101 |
      | codewithoutrules.com                |        93 |          2 |                 92 |
      | righto.com                          |        91 |         19 |                 64 |
      | flippinawesome.org                  |        90 |          2 |                 86 |
      | phoronix.com                        |        85 |         31 |                 44 |
      | oilshell.org                        |        83 |          4 |                 80 |
      | devblogs.microsoft.com              |        75 |         20 |                 42 |
      | spin.atomicobject.com               |        74 |         20 |                 39 |
      | blog.softwaremill.com               |        73 |          4 |                 55 |
      | lemire.me                           |        72 |         22 |                 45 |
      | ponyfoo.com                         |        68 |          5 |                 64 |
      | mail-index.netbsd.org               |        61 |          5 |                 44 |
      | citusdata.com                       |        60 |         10 |                 41 |
      | alistapart.com                      |        58 |         14 |                 45 |
      | hillelwayne.com                     |        58 |          3 |                 56 |
      | smashingmagazine.com                |        57 |         17 |                 33 |
      | dailydrip.com                       |        55 |          4 |                 39 |
      | vermaden.wordpress.com              |        55 |          2 |                 54 |
      | vuejsdevelopers.com                 |        52 |          1 |                 52 |
      | schneems.com                        |        50 |          6 |                 45 |
      | eev.ee                              |        49 |         17 |                 31 |
      | crate.io                            |        48 |          2 |                 47 |
      | driftingruby.com                    |        48 |          1 |                 48 |
      | bendyworks.com                      |        46 |          8 |                 25 |
      | petecorey.com                       |        44 |          2 |                 43 |
      | codepen.io                          |        42 |         14 |                 21 |
      | kev.inburke.com                     |        42 |          5 |                 38 |
      | imaginarycloud.com                  |        41 |          3 |                 39 |
      | zwischenzugs.com                    |        41 |          5 |                 36 |
      | intoli.com                          |        40 |          3 |                 28 |
      | pythonspeed.com                     |        40 |          1 |                 40 |
      | ma.ttias.be                         |        39 |          7 |                 30 |
      | pdfs.semanticscholar.org            |        39 |         11 |                 24 |
      | fsf.org                             |        38 |         15 |                 20 |
      | tboox.org                           |        38 |          1 |                 38 |
      | mattwarren.org                      |        37 |          5 |                 31 |
      | nanxiao.me                          |        37 |          2 |                 36 |
      | daringfireball.net                  |        36 |         11 |                 24 |
      | christophermeiklejohn.com           |        35 |          4 |                 32 |
      | dolphin-emu.org                     |        35 |          6 |                 24 |
      | filfre.net                          |        35 |          9 |                 25 |
      | 250bpm.com                          |        34 |         12 |                 22 |
      | blogs.gnome.org                     |        34 |         16 |                 17 |
      | christine.website                   |        34 |          2 |                 32 |
      | newrustacean.com                    |        34 |          1 |                 34 |
      | tech.marksblogg.com                 |        34 |          3 |                 32 |
      | flak.tedunangst.com                 |        33 |          6 |                 28 |
      | kevq.uk                             |        33 |          2 |                 32 |
      | os2museum.com                       |        33 |          7 |                 26 |
      | pixelstech.net                      |        33 |          2 |                 30 |
      | stackbuilders.com                   |        33 |          5 |                 17 |
      | blog.ikura.co                       |        32 |          2 |                 30 |
      | blog.logrocket.com                  |        32 |          6 |                 22 |
      | blog.runnable.com                   |        32 |          4 |                 22 |
      | craigkerstiens.com                  |        32 |          8 |                 22 |
      | deliberate-software.com             |        31 |          4 |                 27 |
      | promptworks.com                     |        31 |          4 |                 27 |
      | bravenewgeek.com                    |        30 |         10 |                 21 |
      | drmaciver.com                       |        30 |         14 |                 16 |
      | beza1e1.tuxen.de                    |        29 |          4 |                 26 |
      | bluishcoder.co.nz                   |        29 |          6 |                 24 |
      | neo4j.com                           |        29 |          6 |                 16 |
      | solipsys.co.uk                      |        29 |          5 |                 24 |
      | blinkingcaret.com                   |        28 |          2 |                 27 |
      | joezimjs.com                        |        28 |          1 |                 28 |
      | geeklan.co.uk                       |        27 |          1 |                 27 |
      | interrupt.memfault.com              |        27 |          2 |                 26 |
      | victorzhou.com                      |        27 |          2 |                 26 |
      | blog.mariusschulz.com               |        26 |          3 |                 21 |
      | davidgerard.co.uk                   |        26 |          1 |                 26 |
      | gigasquidsoftware.com               |        26 |          2 |                 21 |
      | gkbrk.com                           |        26 |          2 |                 25 |
      | jeremymorgan.com                    |        26 |          2 |                 25 |
      | saturnflyer.com                     |        26 |          2 |                 25 |
      | sicpers.info                        |        26 |          5 |                 21 |
      | blog.higg.im                        |        25 |          1 |                 25 |
      | pragtob.wordpress.com               |        25 |          1 |                 25 |
      | raganwald.com                       |        25 |         12 |                 13 |
      | telerik.com                         |        25 |          2 |                 21 |
      | hoelz.ro                            |        24 |          1 |                 24 |
      | metaredux.com                       |        24 |          3 |                 22 |
      | nedbatchelder.com                   |        24 |          7 |                 17 |
      | netbsd.org                          |        24 |          8 |                 13 |
      | osnews.com                          |        24 |          6 |                 18 |
      | raymii.org                          |        24 |          3 |                 22 |
      | verisimilitudes.net                 |        24 |          2 |                 23 |
      | about.sourcegraph.com               |        23 |          5 |                 15 |
      | arp242.net                          |        23 |          9 |                 14 |
      | blog.jle.im                         |        23 |          7 |                 13 |
      | blog.pragmaticengineer.com          |        23 |          4 |                 20 |
      | blog.sqreen.io                      |        23 |          3 |                 21 |
      | dragan.rocks                        |        23 |          3 |                 18 |
      | ecc-comp.blogspot.com               |        23 |          2 |                 22 |
      | parsonsmatt.org                     |        23 |          5 |                 19 |
      | bitemyapp.com                       |        22 |          3 |                 19 |
      | cambus.net                          |        22 |          3 |                 20 |
      | tedium.co                           |        22 |          8 |                 13 |
      | blog.takipi.com                     |        21 |          6 |                 10 |
      | brooker.co.za                       |        21 |          9 |                 11 |
      | carlchenet.com                      |        21 |          2 |                 20 |
      | beastie.pl                          |        20 |          1 |                 20 |
      | kanoki.org                          |        20 |          2 |                 19 |
      | lethain.com                         |        20 |          8 |                 11 |
      | modernweb.com                       |        20 |          2 |                 18 |
      | wilfred.me.uk                       |        20 |          4 |                 15 |
      | blog.ably.io                        |        19 |          4 |                  9 |
      | blog.codeship.com                   |        19 |          8 |                  9 |
      | blog.dantup.com                     |        19 |          1 |                 19 |
      | blog.floydhub.com                   |        19 |          6 |                 14 |
      | blog.graphqleditor.com              |        19 |          2 |                 13 |
      | blog.testdouble.com                 |        19 |          7 |                 10 |
      | ops.tips                            |        19 |          2 |                 17 |
      | people.eecs.berkeley.edu            |        19 |          9 |                  9 |
      | shape-of-code.coding-guidelines.com |        19 |          8 |                 12 |
      | sigusr2.net                         |        19 |          2 |                 18 |
      | sourcegraph.com                     |        19 |          6 |                 10 |
      | testdroid.com                       |        19 |          2 |                 17 |
      | wyeworks.com                        |        19 |          4 |                 12 |
      | blog.bitsrc.io                      |        18 |          6 |                 13 |
      | michaelochurch.wordpress.com        |        18 |         10 |                  9 |
      | monades.roperzh.com                 |        18 |          1 |                 18 |
      | patshaughnessy.net                  |        18 |          7 |                 11 |
      | raphlinus.github.io                 |        18 |          5 |                 13 |
      | stratus3d.com                       |        18 |          2 |                 17 |
      | yegor256.com                        |        18 |          8 |                 10 |
      | amir.rachum.com                     |        17 |          2 |                 16 |
      | blog.hboeck.de                      |        17 |          5 |                 13 |
      | blog.packagecloud.io                |        17 |          5 |                 12 |
      | doxsey.net                          |        17 |          2 |                 16 |
      | fluentcpp.com                       |        17 |          4 |                  8 |
      | jackhiston.com                      |        17 |          2 |                 16 |
      | jezenthomas.com                     |        17 |          2 |                 16 |
      | jlongster.com                       |        17 |         10 |                  8 |
      | oshug.org                           |        17 |          1 |                 17 |
      | ponylang.org                        |        17 |          4 |                 14 |
      | prathamesh.tech                     |        17 |          1 |                 17 |
      | silvestarbistrovic.from.hr          |        17 |          1 |                 17 |
      | talospace.com                       |        17 |          2 |                 12 |
      | virtuallyfun.com                    |        17 |          6 |                 10 |
      | wordsandbuttons.online              |        17 |          5 |                 13 |
      | 256kilobytes.com                    |        16 |          3 |                 14 |
      | bfilipek.com                        |        16 |          4 |                 10 |
      | blog.carlosgaldino.com              |        16 |          2 |                 15 |
      | blog.jessitron.com                  |        16 |          6 |                 10 |
      | blog.librato.com                    |        16 |          3 |                 11 |
      | brianmckenna.org                    |        16 |          3 |                 14 |
      | coolcoder.in                        |        16 |          2 |                 13 |
      | ds9a.nl                             |        16 |          5 |                  9 |
      | fitzgeraldnick.com                  |        16 |          4 |                 13 |
      | fsharpforfunandprofit.com           |        16 |          8 |                  9 |
      | itsfoss.com                         |        16 |          5 |                  9 |
      | lauradhamilton.com                  |        16 |          1 |                 16 |
      | microservicesweekly.com             |        16 |          1 |                 16 |
      | notamonadtutorial.com               |        16 |          1 |                 16 |
      | objective-see.com                   |        16 |          6 |                 11 |
      | omgubuntu.co.uk                     |        16 |          7 |                 10 |
      | aiprobook.com                       |        15 |          1 |                 15 |
      | blog.asrpo.com                      |        15 |          1 |                 15 |
      | blog.cubehero.com                   |        15 |          1 |                 15 |
      | blog.drewolson.org                  |        15 |          6 |                  9 |
      | blog.garage-coding.com              |        15 |          1 |                 15 |
      | blog.jakubarnold.cz                 |        15 |          2 |                 14 |
      | blog.jonlu.ca                       |        15 |          2 |                 13 |
      | blog.scottnonnenberg.com            |        15 |          2 |                 14 |
      | boxbase.org                         |        15 |          3 |                 12 |
      | cmcenroe.me                         |        15 |          1 |                 15 |
      | degoes.net                          |        15 |          7 |                  7 |
      | dev.theladders.com                  |        15 |          1 |                 15 |
      | geshan.com.np                       |        15 |          3 |                 13 |
      | jozefg.bitbucket.org                |        15 |          8 |                  7 |
      | oshogbo.vexillium.org               |        15 |          3 |                 12 |
      | thefullstack.xyz                    |        15 |          1 |                 15 |
      | vaibhavsagar.com                    |        15 |          6 |                  9 |
      | well-typed.com                      |        15 |          6 |                  9 |
      | zendev.com                          |        15 |          1 |                 15 |
      | alexkyte.me                         |        14 |          2 |                 11 |
      | bitquabit.com                       |        14 |          4 |                 10 |
      | blog.jcoglan.com                    |        14 |          8 |                  7 |
      | blogs.technet.microsoft.com         |        14 |          6 |                  8 |
      | chrisshort.net                      |        14 |          2 |                 13 |
      | clever-cloud.com                    |        14 |          4 |                  8 |
      | csswizardry.com                     |        14 |          4 |                  9 |
      | dustycloud.org                      |        14 |          4 |                 11 |
      | haiku-os.org                        |        14 |          5 |                 10 |
      | hardenedbsd.org                     |        14 |          2 |                 13 |
      | hypothesis.works                    |        14 |          5 |                  9 |
      | ithare.com                          |        14 |          5 |                 10 |
      | jepsen.io                           |        14 |          3 |                 12 |
      | jugad2.blogspot.com                 |        14 |          1 |                 14 |
      | juxt.pro                            |        14 |          4 |                  7 |
      | meyerweb.com                        |        14 |          4 |                 11 |
      | orbifold.xyz                        |        14 |          2 |                 13 |
      | paperswelove.org                    |        14 |          6 |                  7 |
      | paragonie.com                       |        14 |          4 |                 10 |
      | penguindreams.org                   |        14 |          1 |                 14 |
      | sethvargo.com                       |        14 |          2 |                 13 |
      | tiny-giant-books.com                |        14 |          1 |                 14 |
      | videlalvaro.github.io               |        14 |          3 |                 11 |
      | yodaiken.com                        |        14 |          3 |                 12 |
      | alexgaynor.net                      |        13 |          4 |                 10 |
      | blog.learngoprogramming.com         |        13 |          1 |                 13 |
      | blog.ploeh.dk                       |        13 |          7 |                  7 |
      | boston.conman.org                   |        13 |          2 |                 12 |
      | defn.io                             |        13 |          1 |                 13 |
      | dirk.to                             |        13 |          1 |                 13 |
      | dmitryfrank.com                     |        13 |          3 |                 11 |
      | dspace.mit.edu                      |        13 |          7 |                  6 |
      | engineering.appfolio.com            |        13 |          5 |                  6 |
      | getstream.io                        |        13 |          2 |                 12 |
      | hookrace.net                        |        13 |          8 |                  6 |
      | jvt.me                              |        13 |          1 |                 13 |
      | loige.co                            |        13 |          1 |                 13 |
      | longren.io                          |        13 |          1 |                 13 |
      | maxhallinan.com                     |        13 |          2 |                 12 |
      | mempko.wordpress.com                |        13 |          2 |                 12 |
      | onebigfluke.com                     |        13 |          5 |                  9 |
      | tedinski.com                        |        13 |          5 |                  8 |
      | tel.github.io                       |        13 |          3 |                 11 |
      | benlakey.com                        |        12 |          2 |                  8 |
      | blog.demofox.org                    |        12 |          4 |                  8 |
      | chrismm.com                         |        12 |          4 |                  9 |
      | codon.com                           |        12 |          5 |                  7 |
      | daverupert.com                      |        12 |          4 |                  8 |
      | dylanfoundry.org                    |        12 |          2 |                 11 |
      | inaka.net                           |        12 |          4 |                  6 |
      | readtext.org                        |        12 |          1 |                 12 |
      | robustperception.io                 |        12 |          2 |                 11 |
      | snowplowanalytics.com               |        12 |          1 |                 12 |
      | transposit.com                      |        12 |          1 |                 12 |
      | ubuntu.com                          |        12 |          5 |                  8 |
      | ably.io                             |        11 |          5 |                  6 |
      | autodidacts.io                      |        11 |          1 |                 11 |
      | blog.arkency.com                    |        11 |          4 |                  6 |
      | blog.ponyfoo.com                    |        11 |          1 |                 11 |
      | bloomca-me.github.io                |        11 |          2 |                 10 |
      | csrc.nist.gov                       |        11 |          7 |                  5 |
      | cstheory.stackexchange.com          |        11 |          6 |                  6 |
      | designpepper.com                    |        11 |          1 |                 11 |
      | flaviocopes.com                     |        11 |          1 |                 11 |
      | gavinmiller.io                      |        11 |          1 |                 11 |
      | howistart.org                       |        11 |          4 |                  7 |
      | icyphox.sh                          |        11 |          4 |                  8 |
      | iridakos.com                        |        11 |          2 |                 10 |
      | itnext.io                           |        11 |          5 |                  5 |
      | javiercasas.com                     |        11 |          1 |                 11 |
      | kaushikghose.wordpress.com          |        11 |          2 |                 10 |
      | kristerw.blogspot.com               |        11 |          5 |                  5 |
      | lauris.github.io                    |        11 |          1 |                 11 |
      | letterstoanewdeveloper.com          |        11 |          3 |                  9 |
      | longren.org                         |        11 |          1 |                 11 |
      | michaelburge.us                     |        11 |          3 |                  9 |
      | notes.eatonphil.com                 |        11 |          5 |                  7 |
      | nrempel.com                         |        11 |          1 |                 11 |
      | pagetable.com                       |        11 |          7 |                  5 |
      | productchart.com                    |        11 |          1 |                 11 |
      | romanzolotarev.com                  |        11 |          2 |                 10 |
      | runnable.com                        |        11 |          1 |                 11 |
      | shipilev.net                        |        11 |          7 |                  5 |
      | spootnik.org                        |        11 |          2 |                 10 |
      | tenderlovemaking.com                |        11 |          6 |                  5 |
      | theprogrammersparadox.blogspot.com  |        11 |          1 |                 11 |
      | thorstenball.com                    |        11 |          5 |                  5 |
      | traininjs.com                       |        11 |          1 |                 11 |
      | urbit.org                           |        11 |          6 |                  5 |
      | v8.dev                              |        11 |          3 |                  9 |
      | vmssoftware.com                     |        11 |          4 |                  8 |
      | additiveanalytics.com               |        10 |          1 |                 10 |
      | arcan-fe.com                        |        10 |          2 |                  9 |
      | arne-mertz.de                       |        10 |          4 |                  6 |
      | arrdem.com                          |        10 |          1 |                 10 |
      | blog.codacy.com                     |        10 |          2 |                  9 |
      | blog.okturtles.com                  |        10 |          3 |                  8 |
      | bradfrost.com                       |        10 |          2 |                  9 |
      | centurylinklabs.com                 |        10 |          1 |                 10 |
      | chargen.one                         |        10 |          3 |                  8 |
      | devup.co                            |        10 |          1 |                 10 |
      | eigenstate.org                      |        10 |          1 |                 10 |
      | grsecurity.net                      |        10 |          5 |                  6 |
      | kevinmahoney.co.uk                  |        10 |          2 |                  9 |
      | kmjn.org                            |        10 |          2 |                  9 |
      | learnbchs.org                       |        10 |          4 |                  7 |
      | manifest.fm                         |        10 |          1 |                 10 |
      | mapzen.com                          |        10 |          1 |                 10 |
      | marianoguerra.org                   |        10 |          3 |                  8 |
      | naildrivin5.com                     |        10 |          4 |                  5 |
      | pages.cs.wisc.edu                   |        10 |          6 |                  5 |
      | pathsensitive.com                   |        10 |          3 |                  8 |
      | pheelicks.com                       |        10 |          1 |                 10 |
      | pothibo.com                         |        10 |          1 |                 10 |
      | precompile.com                      |        10 |          1 |                 10 |
      | quickleft.com                       |        10 |          1 |                 10 |
      | redblobgames.com                    |        10 |          5 |                  6 |
      | singularityhacker.com               |        10 |          1 |                 10 |
      | skerritt.blog                       |        10 |          2 |                  8 |
      | snowsuit.io                         |        10 |          2 |                  9 |
      | sobolevn.me                         |        10 |          1 |                 10 |
      | superjavascript.com                 |        10 |          1 |                 10 |
      | svnweb.freebsd.org                  |        10 |          4 |                  6 |
      | tenfourfox.blogspot.com             |        10 |          2 |                  7 |
      | theory.stanford.edu                 |        10 |          5 |                  6 |
      | wozniak.ca                          |        10 |          3 |                  8 |
      | yellerapp.com                       |        10 |          4 |                  5 |
      | 24ways.org                          |         9 |          2 |                  8 |
      | ai.googleblog.com                   |         9 |          4 |                  6 |
      | akkartik.name                       |         9 |          6 |                  4 |
      | alchemistowl.org                    |         9 |          4 |                  5 |
      | backtrace.io                        |         9 |          5 |                  5 |
      | badcode.rocks                       |         9 |          1 |                  9 |
      | blog.appliedcompscilab.com          |         9 |          1 |                  9 |
      | blog.bigbinary.com                  |         9 |          4 |                  4 |
      | blog.getambassador.io               |         9 |          2 |                  8 |
      | blog.grandstack.io                  |         9 |          1 |                  9 |
      | blog.jenkster.com                   |         9 |          5 |                  4 |
      | blog.joinmastodon.org               |         9 |          5 |                  5 |
      | blog.ret2.io                        |         9 |          6 |                  4 |
      | blog.tintagel.pl                    |         9 |          2 |                  8 |
      | blogs.telerik.com                   |         9 |          1 |                  9 |
      | cambium.consulting                  |         9 |          2 |                  7 |
      | cnn.com                             |         9 |          6 |                  4 |
      | conal.net                           |         9 |          5 |                  5 |
      | crawshaw.io                         |         9 |          6 |                  4 |
      | cs.berkeley.edu                     |         9 |          5 |                  5 |
      | danielcompton.net                   |         9 |          2 |                  8 |
      | fedoramagazine.org                  |         9 |          5 |                  4 |
      | fusion.net                          |         9 |          6 |                  4 |
      | goto.ucsd.edu                       |         9 |          5 |                  5 |
      | hackazach.net                       |         9 |          1 |                  9 |
      | hakibenita.com                      |         9 |          2 |                  8 |
      | infoscience.epfl.ch                 |         9 |          3 |                  7 |
      | joachim-breitner.de                 |         9 |          4 |                  5 |
      | jonlennartaasenden.wordpress.com    |         9 |          1 |                  9 |
      | kamalmarhubi.com                    |         9 |          5 |                  5 |
      | kennethreitz.org                    |         9 |          6 |                  4 |
      | learnk8s.io                         |         9 |          2 |                  5 |
      | lists.zx2c4.com                     |         9 |          3 |                  7 |
      | lyonwj.com                          |         9 |          2 |                  8 |
      | monkeysnatchbanana.com              |         9 |          2 |                  8 |
      | naughtycomputer.uk                  |         9 |          2 |                  8 |
      | pharr.org                           |         9 |          5 |                  4 |
      | philcalcado.com                     |         9 |          2 |                  8 |
      | pluralsight.com                     |         9 |          3 |                  4 |
      | ponylang.io                         |         9 |          1 |                  9 |
      | prl.ccs.neu.edu                     |         9 |          3 |                  5 |
      | qfpl.io                             |         9 |          3 |                  7 |
      | rachelandrew.co.uk                  |         9 |          2 |                  8 |
      | rain-1.github.io                    |         9 |          3 |                  7 |
      | ro-che.info                         |         9 |          5 |                  4 |
      | robertwpearce.com                   |         9 |          1 |                  9 |
      | rubypigeon.com                      |         9 |          4 |                  5 |
      | ryanbrink.com                       |         9 |          1 |                  9 |
      | stormpath.com                       |         9 |          3 |                  4 |
      | taylor.fausak.me                    |         9 |          4 |                  4 |
      | tech.adroll.com                     |         9 |          5 |                  5 |
      | vfoley.xyz                          |         9 |          1 |                  9 |
      | abe-winter.github.io                |         8 |          4 |                  5 |
      | anupshinde.com                      |         8 |          1 |                  8 |
      | azeria-labs.com                     |         8 |          5 |                  4 |
      | beepb00p.xyz                        |         8 |          3 |                  6 |
      | blog.bloomca.me                     |         8 |          1 |                  8 |
      | blog.jfo.click                      |         8 |          4 |                  5 |
      | blog.obligd.com                     |         8 |          2 |                  7 |
      | blog.scottlogic.com                 |         8 |          5 |                  4 |
      | blogs.technet.com                   |         8 |          4 |                  4 |
      | cbloomrants.blogspot.com            |         8 |          4 |                  5 |
      | cis.upenn.edu                       |         8 |          5 |                  4 |
      | cloudbootup.com                     |         8 |          1 |                  8 |
      | codeblog.jonskeet.uk                |         8 |          4 |                  5 |
      | community.rapid7.com                |         8 |          3 |                  6 |
      | composition.al                      |         8 |          5 |                  4 |
      | crondev.blog                        |         8 |          1 |                  8 |
      | dave.autonoma.ca                    |         8 |          1 |                  8 |
      | daveceddia.com                      |         8 |          2 |                  7 |
      | doc.ic.ac.uk                        |         8 |          5 |                  4 |
      | dockyard.com                        |         8 |          4 |                  4 |
      | fivethirtyeight.com                 |         8 |          5 |                  4 |
      | fixingtao.com                       |         8 |          1 |                  8 |
      | franciskim.co                       |         8 |          1 |                  8 |
      | gazerlog.com                        |         8 |          1 |                  8 |
      | gilesbowkett.blogspot.com           |         8 |          4 |                  4 |
      | ieee-security.org                   |         8 |          4 |                  4 |
      | inko-lang.org                       |         8 |          3 |                  6 |
      | jaspervdj.be                        |         8 |          3 |                  6 |
      | jocellyn.cz                         |         8 |          1 |                  8 |
      | kyleisom.net                        |         8 |          2 |                  7 |
      | learntemail.sam.today               |         8 |          3 |                  4 |
      | m50d.github.io                      |         8 |          2 |                  7 |
      | mako.cc                             |         8 |          4 |                  5 |
      | michaelboeke.com                    |         8 |          2 |                  7 |
      | osmocom.org                         |         8 |          2 |                  7 |
      | pointieststick.com                  |         8 |          2 |                  7 |
      | probablydance.com                   |         8 |          5 |                  4 |
      | push.cx                             |         8 |          2 |                  7 |
      | pythonsweetness.tumblr.com          |         8 |          3 |                  6 |
      | randomhacks.net                     |         8 |          4 |                  5 |
      | redditblog.com                      |         8 |          3 |                  4 |
      | remotesynthesis.com                 |         8 |          4 |                  5 |
      | rystsov.info                        |         8 |          2 |                  7 |
      | sgoel.org                           |         8 |          1 |                  8 |
      | sourcesort.com                      |         8 |          1 |                  8 |
      | storj.io                            |         8 |          4 |                  5 |
      | tbf-rnd.life                        |         8 |          1 |                  8 |
      | thoughtcrime.org                    |         8 |          5 |                  4 |
      | trackchanges.postlight.com          |         8 |          5 |                  4 |
      | travisdowns.github.io               |         8 |          4 |                  4 |
      | vincent.bernat.im                   |         8 |          4 |                  5 |
      | weblog.jamisbuck.org                |         8 |          1 |                  8 |
      | wezm.net                            |         8 |          2 |                  7 |
      | wikimatze.de                        |         8 |          1 |                  8 |
      | 200ok.ch                            |         7 |          3 |                  5 |
      | alpinelinux.org                     |         7 |          4 |                  3 |
      | andregarzia.com                     |         7 |          1 |                  7 |
      | angersock.com                       |         7 |          1 |                  7 |
      | atilanevesoncode.wordpress.com      |         7 |          3 |                  5 |
      | ben-evans.com                       |         7 |          3 |                  4 |
      | bitsofco.de                         |         7 |          3 |                  5 |
      | blather.michaelwlucas.com           |         7 |          4 |                  4 |
      | blog.0day.rocks                     |         7 |          3 |                  5 |
      | blog.2ndquadrant.com                |         7 |          4 |                  4 |
      | blog.bejarano.io                    |         7 |          2 |                  6 |
      | blog.bitrise.io                     |         7 |          1 |                  7 |
      | blog.dereferenced.org               |         7 |          1 |                  7 |
      | blog.hackership.org                 |         7 |          2 |                  6 |
      | blog.honeybadger.io                 |         7 |          4 |                  4 |
      | blog.keen.io                        |         7 |          1 |                  7 |
      | blog.meetupfeed.com                 |         7 |          1 |                  7 |
      | blog.mirabellette.eu                |         7 |          1 |                  7 |
      | blog.mirabellette.netlib.re         |         7 |          1 |                  7 |
      | blog.particle.io                    |         7 |          3 |                  3 |
      | blog.plan99.net                     |         7 |          5 |                  3 |
      | blog.powerdns.com                   |         7 |          2 |                  6 |
      | blog.saeloun.com                    |         7 |          5 |                  3 |
      | blog.soykaf.com                     |         7 |          3 |                  5 |
      | blog.steveklabnik.com               |         7 |          4 |                  4 |
      | blog.superfeedr.com                 |         7 |          1 |                  7 |
      | blog.thecodewhisperer.com           |         7 |          1 |                  7 |
      | blog.threatstack.com                |         7 |          2 |                  6 |
      | boinkor.net                         |         7 |          1 |                  7 |
      | bristolcrypto.blogspot.com          |         7 |          3 |                  3 |
      | brycv.com                           |         7 |          1 |                  7 |
      | calnewport.com                      |         7 |          4 |                  4 |
      | cfenollosa.com                      |         7 |          2 |                  6 |
      | chrispenner.ca                      |         7 |          5 |                  3 |
      | chrisseaton.com                     |         7 |          5 |                  3 |
      | codearcana.com                      |         7 |          4 |                  3 |
      | corecursive.com                     |         7 |          5 |                  3 |
      | cryptome.org                        |         7 |          5 |                  3 |
      | cs.mcgill.ca                        |         7 |          4 |                  3 |
      | cseweb.ucsd.edu                     |         7 |          5 |                  3 |
      | dbader.org                          |         7 |          3 |                  5 |
      | duartes.org                         |         7 |          4 |                  3 |
      | engineering.freeagent.com           |         7 |          1 |                  7 |
      | f-droid.org                         |         7 |          2 |                  6 |
      | freebsdfoundation.org               |         7 |          5 |                  3 |
      | functional.works-hub.com            |         7 |          3 |                  5 |
      | gamedev.net                         |         7 |          5 |                  3 |
      | gpfault.net                         |         7 |          2 |                  6 |
      | gregnavis.com                       |         7 |          1 |                  7 |
      | grimoire.ca                         |         7 |          5 |                  3 |
      | gwern.net                           |         7 |          2 |                  6 |
      | hackflow.com                        |         7 |          2 |                  6 |
      | henrikwarne.com                     |         7 |          5 |                  3 |
      | hosted.ap.org                       |         7 |          2 |                  6 |
      | junglecoder.com                     |         7 |          1 |                  7 |
      | keen.io                             |         7 |          3 |                  5 |
      | keith-mifsud.me                     |         7 |          1 |                  7 |
      | kristaps.bsd.lv                     |         7 |          5 |                  3 |
      | libreboot.org                       |         7 |          4 |                  3 |
      | lukew.com                           |         7 |          2 |                  6 |
      | meiert.com                          |         7 |          2 |                  6 |
      | mgba.io                             |         7 |          4 |                  3 |
      | modern-sql.com                      |         7 |          3 |                  5 |
      | mollyrocket.com                     |         7 |          5 |                  3 |
      | mondaynote.com                      |         7 |          3 |                  5 |
      | mtlynch.io                          |         7 |          5 |                  3 |
      | natpryce.com                        |         7 |          2 |                  6 |
      | nibblestew.blogspot.com             |         7 |          4 |                  3 |
      | nikita-volkov.github.io             |         7 |          4 |                  4 |
      | opendylan.org                       |         7 |          3 |                  5 |
      | paulox.net                          |         7 |          2 |                  6 |
      | perspectives.mvdirona.com           |         7 |          4 |                  4 |
      | pkgsrc.org                          |         7 |          3 |                  5 |
      | quuxplusone.github.io               |         7 |          3 |                  5 |
      | racket-news.com                     |         7 |          2 |                  4 |
      | rcoh.me                             |         7 |          3 |                  5 |
      | rdegges.com                         |         7 |          3 |                  4 |
      | redox-os.org                        |         7 |          5 |                  3 |
      | reverse.put.as                      |         7 |          3 |                  4 |
      | rickcarlino.com                     |         7 |          1 |                  7 |
      | robey.lag.net                       |         7 |          4 |                  4 |
      | sandimetz.com                       |         7 |          3 |                  5 |
      | scarybeastsecurity.blogspot.com     |         7 |          5 |                  3 |
      | setosa.io                           |         7 |          5 |                  3 |
      | sgt.hootr.club                      |         7 |          1 |                  7 |
      | soc.github.io                       |         7 |          1 |                  7 |
      | stressgrid.com                      |         7 |          1 |                  7 |
      | strugee.net                         |         7 |          2 |                  5 |
      | sulami.github.io                    |         7 |          1 |                  7 |
      | sysadvent.blogspot.com              |         7 |          5 |                  3 |
      | taniarascia.com                     |         7 |          1 |                  7 |
      | tante.cc                            |         7 |          2 |                  6 |
      | teh.id.au                           |         7 |          2 |                  6 |
      | theartofmachinery.com               |         7 |          4 |                  4 |
      | thebuild.com                        |         7 |          3 |                  5 |
      | twolfson.com                        |         7 |          1 |                  7 |
      | ultimaratioregum.co.uk              |         7 |          2 |                  6 |
      | unterwaditzer.net                   |         7 |          1 |                  7 |
      | usrsb.in                            |         7 |          3 |                  5 |
      | vladocar.github.io                  |         7 |          1 |                  7 |
      | vmcall.blog                         |         7 |          2 |                  6 |
      | wccftech.com                        |         7 |          2 |                  6 |
      | whitane.com                         |         7 |          1 |                  7 |
      | yogthos.net                         |         7 |          4 |                  4 |
      | 0xcc.re                             |         6 |          1 |                  6 |
      | 9front.org                          |         6 |          4 |                  3 |
      | acha.ninja                          |         6 |          1 |                  6 |
      | ai.google                           |         6 |          4 |                  3 |
      | alediaferia.com                     |         6 |          1 |                  6 |
      | alex.dzyoba.com                     |         6 |          3 |                  4 |
      | alexrs.me                           |         6 |          1 |                  6 |
      | anishathalye.com                    |         6 |          1 |                  6 |
      | balaskas.gr                         |         6 |          3 |                  4 |
      | benedikt-bitterli.me                |         6 |          3 |                  3 |
      | benwilber.github.io                 |         6 |          1 |                  6 |
      | bernsteinbear.com                   |         6 |          2 |                  5 |
      | bitcannon.net                       |         6 |          2 |                  5 |
      | blog.cesanta.com                    |         6 |          2 |                  5 |
      | blog.ericgoldman.org                |         6 |          2 |                  5 |
      | blog.esciencecenter.nl              |         6 |          2 |                  4 |
      | blog.felixangell.com                |         6 |          3 |                  4 |
      | blog.frankel.ch                     |         6 |          2 |                  5 |
      | blog.fuzzing-project.org            |         6 |          2 |                  5 |
      | blog.minio.io                       |         6 |          1 |                  6 |
      | blog.park.io                        |         6 |          1 |                  6 |
      | blog.parsely.com                    |         6 |          2 |                  5 |
      | blog.prakashvenkat.com              |         6 |          1 |                  6 |
      | blog.talosintel.com                 |         6 |          4 |                  3 |
      | blog.zdsmith.com                    |         6 |          1 |                  6 |
      | blogs.apache.org                    |         6 |          2 |                  5 |
      | bowero.nl                           |         6 |          2 |                  5 |
      | branchandbound.net                  |         6 |          1 |                  6 |
      | bsdcan.org                          |         6 |          4 |                  3 |
      | bubbl.in                            |         6 |          2 |                  5 |
      | chr4.org                            |         6 |          1 |                  6 |
      | cipht.net                           |         6 |          4 |                  3 |
      | commonsware.com                     |         6 |          1 |                  6 |
      | cookieplmonster.github.io           |         6 |          2 |                  5 |
      | creativedeletion.com                |         6 |          3 |                  3 |
      | cs.nyu.edu                          |         6 |          4 |                  3 |
      | cybertec.at                         |         6 |          2 |                  5 |
      | dacav.roundhousecode.com            |         6 |          1 |                  6 |
      | dbp.io                              |         6 |          4 |                  3 |
      | developer.squareup.com              |         6 |          3 |                  3 |
      | discuss.ocaml.org                   |         6 |          3 |                  3 |
      | dmathieu.com                        |         6 |          2 |                  5 |
      | domm.plix.at                        |         6 |          2 |                  5 |
      | dotlayer.com                        |         6 |          1 |                  6 |
      | dragonflydigest.com                 |         6 |          4 |                  3 |
      | ecalamia.com                        |         6 |          1 |                  6 |
      | eclecticlight.co                    |         6 |          4 |                  3 |
      | embeddeduse.com                     |         6 |          1 |                  6 |
      | enotagain.com                       |         6 |          1 |                  6 |
      | eurogamer.net                       |         6 |          3 |                  4 |
      | ftp.openbsd.org                     |         6 |          4 |                  3 |
      | gafferongames.com                   |         6 |          4 |                  3 |
      | gamozolabs.github.io                |         6 |          3 |                  4 |
      | garbagecollected.org                |         6 |          1 |                  6 |
      | golem.de                            |         6 |          1 |                  6 |
      | gynvael.coldwind.pl                 |         6 |          2 |                  5 |
      | herbertograca.com                   |         6 |          4 |                  3 |
      | holger-peters.de                    |         6 |          2 |                  5 |
      | homakov.blogspot.com                |         6 |          4 |                  3 |
      | hydraz.semi.works                   |         6 |          2 |                  5 |
      | inessential.com                     |         6 |          4 |                  3 |
      | io.pellucid.com                     |         6 |          1 |                  6 |
      | isc.sans.edu                        |         6 |          3 |                  4 |
      | joeellis.la                         |         6 |          1 |                  6 |
      | jpadilla.com                        |         6 |          1 |                  6 |
      | julien.danjou.info                  |         6 |          3 |                  4 |
      | julienblanchard.com                 |         6 |          1 |                  6 |
      | kateheddleston.com                  |         6 |          3 |                  4 |
      | kitchensoap.com                     |         6 |          4 |                  3 |
      | korban.net                          |         6 |          1 |                  6 |
      | kyleconroy.com                      |         6 |          2 |                  5 |
      | limelight.link                      |         6 |          1 |                  6 |
      | loper-os.org                        |         6 |          4 |                  3 |
      | lord.io                             |         6 |          3 |                  3 |
      | lowrisc.org                         |         6 |          3 |                  4 |
      | markkarpov.com                      |         6 |          3 |                  4 |
      | matthias-endler.de                  |         6 |          4 |                  3 |
      | michaelnygard.com                   |         6 |          4 |                  3 |
      | mikekohn.net                        |         6 |          3 |                  4 |
      | mooreds.com                         |         6 |          2 |                  5 |
      | nelenkov.blogspot.com               |         6 |          1 |                  6 |
      | nextjournal.com                     |         6 |          3 |                  4 |
      | ngoldbaum.github.io                 |         6 |          1 |                  6 |
      | noidea.dog                          |         6 |          2 |                  4 |
      | norswap.com                         |         6 |          1 |                  6 |
      | number-none.com                     |         6 |          4 |                  3 |
      | openmirage.org                      |         6 |          4 |                  3 |
      | opensourceconnections.com           |         6 |          3 |                  3 |
      | openstreetmap.org                   |         6 |          4 |                  3 |
      | paleotronic.com                     |         6 |          4 |                  3 |
      | pattern-match.com                   |         6 |          3 |                  3 |
      | pcmag.com                           |         6 |          3 |                  4 |
      | piechowski.io                       |         6 |          1 |                  6 |
      | probablyfine.co.uk                  |         6 |          1 |                  6 |
      | purelyfunctional.tv                 |         6 |          2 |                  5 |
      | pythonforengineers.com              |         6 |          1 |                  6 |
      | realtimeapi.io                      |         6 |          2 |                  4 |
      | rkn.io                              |         6 |          1 |                  6 |
      | roy.marples.name                    |         6 |          1 |                  6 |
      | rubygems.org                        |         6 |          2 |                  5 |
      | ryanbigg.com                        |         6 |          3 |                  4 |
      | silvestar.codes                     |         6 |          1 |                  6 |
      | sizovs.net                          |         6 |          2 |                  5 |
      | streaming.media.ccc.de              |         6 |          3 |                  4 |
      | supertcp.com                        |         6 |          1 |                  6 |
      | sweetness.hmmz.org                  |         6 |          1 |                  6 |
      | talkoverflow.com                    |         6 |          1 |                  6 |
      | techblog.shutl.com                  |         6 |          1 |                  6 |
      | terathon.com                        |         6 |          2 |                  4 |
      | tomassetti.me                       |         6 |          3 |                  3 |
      | triplebyte.com                      |         6 |          3 |                  4 |
      | triplefault.io                      |         6 |          2 |                  5 |
      | typeclasses.com                     |         6 |          1 |                  6 |
      | ucare.cs.uchicago.edu               |         6 |          3 |                  4 |
      | ungleich.ch                         |         6 |          2 |                  5 |
      | venam.nixers.net                    |         6 |          3 |                  4 |
      | vidarholen.net                      |         6 |          3 |                  4 |
      | vvvvalvalval.github.io              |         6 |          3 |                  3 |
      | yggdrasil-network.github.io         |         6 |          3 |                  4 |
      | zdziarski.com                       |         6 |          3 |                  3 |
      | zerotosingularity.com               |         6 |          1 |                  6 |
      | zge.us.to                           |         6 |          1 |                  6 |
      | ziglang.org                         |         6 |          4 |                  3 |
      | zoetrope.io                         |         6 |          2 |                  5 |
      | zork.net                            |         6 |          3 |                  4 |
      +-------------------------------------+-----------+------------+--------------------+
      641 rows in set (3.42 sec)
      
      
      
      1. 37

        I am 100% on board with mitigating content marketing (especially the egregious examples you provide) but yeah… I’m uneasy about this as an active member of the community whose own blog appears on this list because it’s one of the only places I submit links to. I visit lobste.rs almost every day and appreciate that so many of the links are relevant to my interests and especially that the front page is slow moving enough that I can actually keep up with it, but I don’t submit many stories other than my own posts, and this list makes me feel like that’s not a welcome pattern. I appreciate that it is pretty close to the behavior of a self promoter (though I guess it is in a way, but I am not selling anything, I just happen not to have much else to show). This leaves me with four options, if and when I start actively blogging more (which is something I would like to do soon, and also the reason I’m commenting):

        1. start submitting more posts I didn’t write to offset those that I did.
        2. only submit my own posts when they’re extra special by some metric or another
        3. get other people to submit my posts
        4. don’t submit my posts

        1 seems spammy af, 2 is a little weird but maybe the right answer (I would prefer just to submit everything and let the algorithm sort through them, where the algorithm is people’s eyes… tbh this is sometimes an HN strength, as you’re not guaranteed a front page land there and even if you get it, it fades quickly.)

        3 is just gross, and 4 bums me out.

        also it just makes me feel bad that I fall in this bucket I guess. Is “lurker who submits their own work from time to time” just doomed to be bucketed with “content marketing garbage spam”?

        1. 14

          I’m sorry I made you feel bad, and I agree these are all bad choices. Your posts are certainly welcome, and folks up and down this thread are already brainstorming ways to fix it.

        2. 2

          Maybe there should be a separate page on Lobsters for bloggers to submit an RSS/Atom feed! That way regularly blog content can be labeled separately, and vetted for quality of the blog itself, rather than the person/people submitting it to Lobsters.

          1. 4

            I certainly don’t want to have a whole RSS feed autoposted here, but I’m not saying your idea is bad - something along the line of a moderation queue for whole RSS feeds for stuff that >50% gets posted anyway is something to think about.

          2. 3

            I think jcs experimented with adding Planet-style aggregation years ago.

            FWIW, this assumes 100% of the blog’s posts are in scope, and someone needs to clean up titles/tags, sometimes add context.

      2. 17

        So three questions:

        1. What’s the average upvote score for articles from these sites? What about average upvote score for the articles submitted by the majority submitter?
        2. How much content marketing stuff from dev.to, hackernoon, and medium is not on here?
        3. How many of the majority submissions are from authors? Like I’d guess a lot of stuff from blogs.msdn.microsoft.com is from people who specifically are looking for interesting articles from there while everybody else isn’t.

        (Disclaimer I’d really like to keep posting stuff from my site, but if the rest of the majority-things are by content marketers then it’s still worth it overall. Also, I think I’m well-known enough that other people would probably post stuff from my site anyway.)

        1. 9

          What’s the average upvote score for articles from these sites? What about average upvote score for the articles submitted by the majority submitter?

          I think this is a key detail. I don’t self-submit often, but the 12 posts I have submitted over 2 years have generally been well received. I’d say the same goes for you. Well received self-submissions are something we don’t want to discourage. If someone is self-posting and the posts are not getting many votes then it seems more likely they should be subject to the post limit.

        2. 9

          I agree with corporate-operated blogs in this list, but I don’t understand the presence of private blogs such as jvns.ca or Daring Fireball. Those blogs usually have high-quality content (in my humble opinion) and I’ve never seen any form of content marketing on those websites (I could be wrong though).

          1. 7

            I think Daring Fireball is such an outlier, isn’t it like one the top 3 most-read sites with a 100% Apple focus anyway? I’m not using any Apple stuff, but I can’t help but getting the news anyway - and I personally don’t like reading it.. but I think it’s very often news-heavy and we don’t so many “New product by X” posts here, for a good reason.

            Yes, Apple is a bad topic for me to comment, but Daring Fireball is not a personal blog anymore. He’s one of the major Apple-ecosystem influencers and pundits. This is 100% a business website by now.

        3. 2

          I also think this would be a useful component to include. My domain falls on the list, and I’m a bit sad to see my domain on the list. It’s technically content marketing, but I put a massive amount of effort into each post and the content is generally very well received both here and on Hacker News. I would understand the decision to block it, but I think that taking the average submission rating into account would still address the problem without eliminating content that is a good fit for the site. This also incentivizes people to only submit their best content.

        4. 1
          1. Averages are misleading because of site growth over time. (Related)
          2. A significant amount. (Related)
          3. Feels like most, but this a trickier query than I have spare brainpower to write. I worry that it would incentivize not checking that box because it’d be subtle and deniable.
      3. 14

        Is there anything we could do in terms of vetting a user? For example, as far as I am concerned, @andyc, @akkartik and @hwayne all submit rather high quality content from their own blogs, I’d rather not miss them.

      4. 11

        This just struck me when I was trying to submit my Nix rebuttal post.

        1. 2

          That’s a shame… I’ve always enjoyed your posts on christine.website and I think it would be a real loss if your website were to be blocked.

          1. 2

            Apparently it’s going to be fixed and this was just an extreme over-reaction. I’m still gonna post though :)

      5. 10

        15 of the top 30 in this list are sites that I probably actively visit when they’re linked from Lobste.rs and otherwise don’t visit. Excluding them may surface less popular content but it would also seem to reduce the visibility of content that I’ve come to trust and want to get from Lobste.rs. 7 of the next 20 are in that same bucket, so penalizing by this metric would inhibit submissions 44% of the top 50 domains considered content marketing.

      6. 8

        @pushcx, thanks for all the hard work on the site. I really appreciate this site a lot. Now, I’m a bit offended to be included in this list. I’m a web developer and volunteer for some FOSS communities, I have a low traffic blog and every now and then I share some of my blog posts here. Not all of them, just the ones I think have value for users here. I’m not selling anything on this site, and my blog posts are not related to anything I sell.

        If this website is going to be hostile to blogs with such low traffic as mine with very few posts per month, about 500 users per month, then I think this site loses a ton of value. Not because they will be missing me but because the criteria that includes me and my site here, will also include lots of other minor bloggers. No one is posting my posts here because I don’t have a large number of readers, I’m probably faster to share content than some hypothetical reader.

        Seriously, scanning this list I can see many blogs I actually subscribe and that provide me with good content, not upselling anything. I don’t think this metric is a good way to filter who you want to filter. What this metrics leads to is that only content from domains that are so popular that a ton of people repost content from them will end up in this site. This is not only an echo chamber that makes whatever is popular, more popular. But also gatekeeping small people who just want share their own story every now and then, and will prove that the blogosphere is dead since we can’t share blog posts.

      7. 6

        As Lobster’s is my primary article discovery site, I’m a bit worried that this change will cause me to miss great articles because the author couldn’t post it, and they don’t have other avenues / connections to get it noticed (read: they suck at marketing, don’t have an RSS / atom feed, etc).

        I typically self submit (I’m on the list here) and sometimes it gets upvoted, sometimes it doesn’t. I kind of thought that was the purpose of votes, and flags, and such, but ¯\_(ツ)_/¯.

        At least this change creates a new “market.” We can create a voting ring of sorts that keeps track of their submissions to certain domains and nominates someone to submit queued up links. The list of domains above is a good seed list of potential members, too….

        I should probably just go back to over subscribing to RSS / Atom

      8. 6

        Could you run this query? I’m not entirely sure it’s correct, but it should sort by the percentage of single user submissions.

        select domain, count(*) as submitted, count(distinct stories.user_id) as submitters, (select count(*) from stories s where s.domain_id = domains.id group by s.user_id order by 1 desc limit 1) as from_one_submitter, (select count(*) from stories s where s.domain_id = domains.id group by s.user_id order by 1 desc limit 1)/count(*)*100 as submited_by_one_percentage from domains join stories on domains.id = stories.domain_id group by domain having count(*) > 5 and (from_one_submitter + 1) * 2 > count(*) order by 5 desc;
        
        1. 6

          Looks correct to me. Results.

          (I put the original list in a comment because I saw it as central to the discussion, so I didn’t want it on free hosting even though I don’t have a convenient place to indefinitely host a small static file attached to Lobsters.)

      9. 5

        I was a little worried to see my name On A List, and also a little flattered to know that my blog was getting so many posts from here. I had to look into who was doing all the posting, and, well, maybe you ought to watch out yourself ;)

      10. 4

        TIL I’m a content marketer, alongside such evil spammers as the Free Software Foundation and Hillel Wayne! And the tell was that I used federated blogging technology—my own article feed at my own domain, integrated into the fediverse via RSS—rather than high-quality centralised platforms like Facebook notes or Medium.

        Unfortunately, I’m really bad at content marketing. I tend to publish articles that explore ideas about software that I (and others, mercifully) find interesting, rather than SEO-first eyeball scrapers. I forgot to monetise with affiliate content, adverts, store links, or anything. Nobody even clicks the tip jar button on the site.

        I guess I need to find a community where us “Badly-marketed Low-value Output Generators”, or “BLOGgers”, can share, discover, and comment on each other’s posts without disrupting those people who are focused on consuming Medium-rate content. Preferably with a focus on programming, just because that is the niche vertical I have chosen to exploit with my rational-minded acquisitive process. Does anyone know where that community hangs out?

      11. 4

        Maybe copy query output to a gist or nopaste and link it?
        I found it hard to read due to line wrapping. :/

      12. 3

        Wow… Okay. Did this site just become hostile to its users? My site is on the list.

        1. 4

          No.

      13. 1

        First of all, thanks for the good work. Now, since you invite:

        kibitzing about particulars

        and pointing out false positives. I expected @ahu’s site to be on there and it is[1], since one of his stories got moderated in a way I disagree with. (And I see other sites that I think are high-quality, but I’m happy to also see a lot of low-quality sites on the list.)

        Having said that, if you look at his submissions you’ll see that it is mostly geeky stuff so I would rather classify him as an author than a content marketeer. He is a geek and happens to be a pretty good writer. His last article on Huawei, 5G and Europe has been doing some good rounds on Twitter (I won’t link to it directly but search for “5G: The outsourced elephant in the room”).

        The only thing he perhaps went overboard with is the DoH centralization by Firefox on Cloudflare, which is an item we (PowerDNS) are pretty concerned about, but not for business reasons as implied by its proponents. Hell, we live in The Netherlands and couldn’t care less if we get fired or not since we got actual social security.

        [1] ds9a.nl, but I didn’t expect blog.powerdns.com to be there as well

        disclaimer: I’m a PowerDNS employee and ahu was my ‘boss’

    14. 7

      Sounds reasonable although it’s a bit of a shame having to limit new users’ permissions so much, but I think most of the things shouldn’t be so bad or can be worked around, like sending your pal through the normal signup instead of sending an invite.

      I think I saw a few of the loadmill submissions where was mostly going o_O.

      The only thing I’m not 100% sure is the “no show” and the policy about self-promotion in general. On the one hand it’s ok I guess, you can be a participating member of this community and if at some point you create something, you can show it - just not in the first few weeks. On the other hand (at least I) love to see people’s projects, and if they’re excited to show something, why not let them post it? To answer my own question, I guess the possible damage from content marketing is too high. But maybe it could be viable to have a “submit your own thing” - I think we had that once or twice in the channel. Someone joins and asks to be invited to link their thing, and someone tells them that’s not how it works but posts the thing for them, because it is indeed cool. Too rare? Still too much possibility to abuse? Gonna stop rambling now :P

      Thanks for the transparency and for making the world a better place with the banhammer ;)

      1. 8

        Yeah. I love having authors on the site, and the story code has long given a ranking bump to authors self-submitting. I’m trying to avoid rewarding people shoveling out quantity over quality.

        1. 12

          Yeah agree with ignaloidas here, maybe a sliding window limit on self-posts. Over 2 years I’ve had 6 posts from wezm.net and 8 posts from bitcannon.net shared. I’ve shared them 9/10 of them. Both are on the list below. Most submissions have been well received, receiving double digits in all cases, 50+ in a bit under half of them. Given my post frequency, adding a sliding window of 6 months, or even a year would work.

        2. 5

          I’d think that to not penalize the self-posting of authors it maybe the rule about domains should be based on last 3 months or so.

    15. 6

      I’d like to suggest an algorithmic approach to mitigating this problem. I know algorithms are not the whole answer, because technological solutions never are, but this might be an interesting place to start.

      It seems to me that we can use the structure of the user invitation tree to weight upvotes. Perhaps it is the case that the farther apart users are on the invitation tree, the less similar they are. The closer they are, the more similar they are.

      One way to think about the “meaning” of a set of upvotes is that they represent a sample of the opinions of the Lobste.rs community.

      If upvotes come from diverse places in the social graph, then maybe the story appeals to a broad collection of users. If upvotes come from a narrow cluster in the social graph, then maybe the story came from an upvoting ring.

      In the following Gist, I show an idealized invitation tree with example upvotes superimposed in various colors. After inducing a subgraph for each story’s votes, that connects its upvoters in the user invitation tree, I calculate a few distance functions. Intuitively, it seems that the following distance functions correlate to the “diverse vote” signal: the minimum spanning tree edge count, the Weiner index, and especially the mean eccentricity.

      I’d be happy to discuss this further offline, or in another thread.

      Here is a link to prototype network analysis code, distance function output, and a tree visualization: https://gist.github.com/rw/3dd53d50d2f324adac2d078beeb23410

      1. 4

        My personal invite tree is basically “random” people I’ve invited because they have asked in the chat.

        1. 1

          Hmm, I don’t think that’s a problem in my model. If it is, we can come up with other measures of “distance” between users, such as by modeling their topics of interest.

    16. 6

      Reading though the list in detail, a lot of the pages are either pages with high standing as technical news sources (like the MSDN blogs) or Phoronix or highly productive bloggers. MSDN is clearly a place for content marketing and Phoronix isn’t that different (they make their living based on page views). So I honestly feel like the problem is still overstated in general. And I certainly don’t a agree with friendlysocks “told you so”.

      I have a hard time differentiating between “Content Marketing” and just people talking about their work on their companies blog. I think the above example is clear and I find the changes reasonable. But companies figuring out that they need to talk about what they do and post it to relevant places is not a bad thing, IMHO.

      There’s a substantial vibe I get here that people want individuals to talk about technical stuff, but not companies. That seems like an odd split, I find the latter much more interesting. Things like our recent post about changing rustc to allow async/await on embedded are not bound to people and should be framed and published in that context.

      The hard problem, as laid out, is with people gaming the system. But cracking down in general will lead to issues where people here that do their technical work in a business context will be under scrutiny - and essentially paying for the sins of others.

      1. 5

        The hard problem, as laid out, is with people gaming the system.

        That’s my position on this whole thing as well. I don’t care about content marketing; I care about sockpuppeting. As long as you’re not subverting the voting system, content that is on-mission but low-quality won’t make it to the front page anyway.

    17. 5

      I’ve complained to the three sites mentioned that their media partners are engaged in spamming. Will post here if anything comes of it.

    18. 4

      Thanks for putting in this work!

      As people have mentioned, the current metric doesn’t consider how popular the stories are. How hard is it to write a query that shows the domains caught under the current metric, filtered by domains where the median score is less than 10 (or something along those lines)?

      My guess is that that would fix most concerns about blogs like Hillel’s, Julia’s, and @arp242’s, etc while still getting the content marketing.

    19. 4

      I would like to add another perspective to the discussion. I create content and self-submit it to lobsters to get feedback. So far I have submitted three of my blog posts. Two of them were moderately well received (10 upvotes each), the third one was controversial: While it received 12 upvotes, it got flagged as spam 6 times.

      The negative feedback gave me a better sense for what content is appreciated on lobsters. I am not sure how I could have found this out other than by submitting a bad post. In case I should not be allowed to submit my own content in the future, I am unsure how I can improve to write content that is appreciated by the community.

    20. 4

      I think the logic “if one person links to one site often, then it is likely spam” basically hits everyone who use actually creating content. If it is an article or open source, above rule or just notion will do one thing only: centralise. Because of more users use the same site, it weakens above algorithm.

      What probably makes more sense is to focus stronger on the rating of users, especially with regards to inverse relation degree.

    21. 4

      I am surprised not to find my own domain on that list… I guess partially because I initially didn’t know about lobsters when some of my stuff got posted here (hence how I found out about it). But I will echo the (seemingly already taken into account) concerns of other blogger here that mainly post stuff from their own domains: I don’t think this is the best rule of thumb. <that being said I’ll message the mods just in case, because maybe I am unknowingly breaking the rules>

      On what I’d personally consider to be possible thumb rules for filtering out stuff:

      • Consider running a very tiny analysis of the page of the article being posted. Having worked in advertising (though at a more high level) I did see my fair share of websites-as-ads, I’m fairly certain you could come up with a “CM signature” by looking at the javascript and hrefs on the page. Something as simple as: Look for google analytics js, would probably serve to differentiate small passion project blogs from marketing-focused blog, add these kind of rules times 20 and you have a solid filter.

      • Add a new “content marketing” downvote option, which I guess is already covered by spam, but highlight it in red and look at all incoming reports for a while. It might serve well to have something separate from anyway, since I see spam as being very much an umbrela term.

      • Maybe add a PSA list of CM agencies and their clients that tried to use lobsters. I assume some people have control over a bunch of aws accounts, and moderate amount of spam scripts from those (not even DDOS, just using a headless browser to visit the websites and mass-clicking ads to get it banned from google adwords) would be a good deterrent. After all the problem is that a content marketer has nothing to loss at the moment if he does someone get past the spam barrier, if there’s a possible downsides in terms of being mass reported to search engines / email spam filters + possible uneconomical activity against themselves/customers I think most people would consider that harmful enough to to bother trying. But maybe this is unethical ? I get a feeling there’s something wrong about it but I can’t really find a concrete reason as to why.

      • Be more lax on who can invite (e.g. require some sort of moderator review if the invite is from a user < 2 years old kinda thing), after all the website is probably already close to “~1/2 of the people that might be interested in a website like this”, and you don’t need an account to just view stuff here. If my goal is just to read stuff I don’t need a user, it’s not like you’d be barring people from accessing the website.

      • Have some sort of review queue for posts from untrusted users (e.g. people with < 200 karam / year and 3 year seniority sort of thing), only trusted users see the post, if 4/5 click “Yeah, this seems ok” then frontpage it for everyone. Might also serve to improve overall quality of posts on the frontpage (might also lead to self-reinforcing preference selection by a minority that’s very active but no aligned with what most people here want to read).

      1. 1

        Be more lax on who can invite

        I don’t follow this point - everyone has always had unlimited invites, except mods can remove the permission and this new restriction that new users can’t send invites. Could you elaborate?

        1. 1

          Sorry, I meant to say the opposite word “strict” not sure how my brain inverted those…

          As in, considering how many users are here already, I don’t see the point of “everyone can invite”. I know maybe 6 people that would enjoy this discussion board, I’ve asked all of them, all of them already know about it & have accounts… and it’s if someone doesn’t know someone that can send an invite, the IRC exists to cover that.

    22. 4

      One suggestion for dealing with one user submitting lots of stories from a single domain that is less susceptible to false positives is maybe something like tf-idf where domains that are posted a lot by many users count as a fractional post. Along with maybe using percentage instead of raw count.

    23. 4

      another approach might be to characterise non-submission activity somehow (comments and upvotes), and see if their pattern can be used to separate spammers from community-member users who happen to share their own content a lot. that could be used in conjunction with the “all the links they have submitted are to their site” and “only they submit links to their site” metrics to filter out spam accounts rather than spam domains.

    24. 4

      I appreciate all the hard work the moderators do.

      If not allowing people to post too many links to the same site reduces moderator load, then so be it. I am on the list of people that won’t be able to post, but care more about lobste.rs than being able to post links to my own material.

    25. 3

      Hmmm… I rarely post. If anything I mostly post links from lobsters elsewhere. When I do post I’ve often used it to post things that I’ve written or are on sites that I control (e.g. chargen.one, 44con.com etc).

      I’m working on a post with a 44CON sponsor on how to audit passwords in Active Directory I was considering posting, but this makes me second guess that. I mean, it’s going to be decent in-depth material on better ways to crack windows passwords but I’m not sure if this is inappropriate or not given that it’s being done in conjunction with a sponsor. Their product is relevant to the post and linked to at the end.

      I dunno, is this ok or would it be over the line?

    26. 3

      I come to Lobste.rs for the genuine tech conversations that I find harder get on other sites like Hacker News. Beyond Hacker News and Lobste.rs, other sites are kind of just “here’s how to create a basic REST API” or some fluffy crap like that and I don’t bother going there. I would be really sad if I didn’t have you guys to talk to because we didn’t take care of our community.

      I really like how the two people I’ve invited to Lobste.rs prefaced their ask for a Lobste.rs invite with some discussions around some of the blog posts I submitted here to confirm their interest and their ability to knowledgeably add to the discussion.

      I think it’s so great that Lobste.rs is valuable now (as shown / described). It’s important we understand we have lever in extending invites, and we should learn to say no when we’re uncomfortable or unsure. I personally find it hard (which is why I’m mentioning it), but I find the alternative of losing this community scarier.

    27. 3

      This is essentially a fight between us and spammers. I think it should be written into code.

      1. If enough (say five) people mark a submission as blogspam the system should pull the article off the front page and put it onto a secondary purgatory page. The submitter & upvoters are put on probation.
      2. Anyone who sees it there and thinks that it really is appropriate for lobste.rs instead of the outright crap that we’re all trying to avoid they can appeal to the mods.
      3. If the appeal succeeds, it goes back on the front page and the submitter & upvoteres are removed from probation/unbanned and the blogspam markers are put on probation/banned, if not then the appealers get put on probation/banned.
      4. Record the number of wins for each participant. The trees of people who are on the wrong side of the fight more than once get tree banned.
      5. They can get unbanned by having someone else vouch for them again. Allow users to share their ban/upvoting/submission/appealing/blogspam marking history with others even when banned to streamline this process.

      Right now there’s not enough skin in the game for posting or upvoting articles, only for inviting users and I think we lack an easily visible mechanism for removing bad actors. I think time limitations are the wrong way to go about it and won’t matter after a while because they’re always gamed. I also want new users to be able submit articles as soon as they join because it’s great to be welcoming and I think it’s better to assume they’ll submit something good. There’s also the possibility that an article on medium or some other somewhat user hostile site will be particularly enlightening. The articles themselves and the users who vouch for them should be judged. I think the harshness of the above proposed system and the ability to appeal to a both higher and trusted power make it fair. It also enshrines the thought that they shouldn’t upvote crap onto the page.

    28. 3

      Thank you for looking out, and for caring. Your efforts are appreciated.

      With every new member, an online community becomes more and more attractive to marketers.

      On reddit, I think the thershold is about 1000 users before it starts attracting attention.

      A 5000+ sub will be getting spammed regularly, and much past that you’ll have to depend on automation.

      This is something I often think about when designing my web-based forum, and one of the reasons I designed it to be forkable, including all the content.

      With a centralized site like reddit or lobsters, the users still at the mercy of the key-holders. The larger the community grows, so does the temptation and pressure to “monetize”.

    29. 2

      Thanks for looking out for this community! I don’t post or comment very often. Do you see that becoming suspicious behavior?

    30. 2

      Thanks for the effort, I had also seen quite a few low quality posts (I use RSS, so I get to see everything that is submitted, not just the homepage).

    31. 2

      Does this mean, that when we see something SEO/Growth Hack/Spam-like we should more readily push the flag/downvote than before?

    32. 2

      These folks were plaguing the Ruby tag for a while, just the same 3 or 4 people writing either inaccurate or useless information just to get upvotes.

    33. 2

      Proud to be a part of this community and I hope I can do my part reporting this dribble when I see it. Thanks.

    34. 2

      I feel like you guys are approaching this wrong way that will eventually harm lobsters - you can’t really keep these guys out with arbitrary limits like this, actually you’re creating job security.

      Such extreme lock down spaghetti approaches never work in practice and just discourage legit content creators and let’s be fair here - it’s a rather scarce resource here. “you can only post every 2nd Saturday of months that have letter g in them - well I guess I’m not posting at all”

      Disagree with me if you want but it seems a bit of cut your own nose to spite your face situation here.
      This should be admins job - I mean there are no more than a 1000 active users on the platform - surely it can’t be that difficult to maintain manually?

      1. 1

        I have to agree with this, overall.

        I would almost prefer to just come down harder on people who invite spammers. The point of being invite-only is to encourage you to investigate whoever they invite; if you don’t, then you should probably get in trouble.

        1. 1

          This kind of attitude is pushing me more and more towards asking the mods to revoke my invite rights. I’m sick and tired of inviting people in the chat on good faith only for a few bad actors getting me blamed for letting them in.

    35. 1

      @Peter, I see you now as my real life Batman. Thanks for doing this!

    36. 1

      lobste.rs is literally the best community and community software out there. Keep up the awesome work. This comment will buried but at least you will see it pushcx :)

      I am extremely, extremely surprised about this advertising. It is disgusting what they tried. I didn’t know some marketers were so maliciously sophisticated.

    37. 1

      Maybe the stories of new users could include a tally of the domains they’ve linked to.

      1. 1

        That might just encourage posting from multiple sites you’ve been paid to post from ;)

    38. [Comment from banned user removed]