1.  

    A lot of people are talking what the codebase should be for juniors to be productive, so I’ll talk on what I think the codebase should be for juniors to improve. From my experience, having a codebase in a “transfer” state from legacy to new code, with clearly defined boundaries, is important for setting the examples of good code vs bad code. Rewriting bad code into good code helps building good code standards, and understanding what code does. For me personally this was what helped me to progress in software engineering.

    1. 4

      Only pitch change matters and rhythm does not? Here’s your counterexample. Same notes, same order, different rhythm. Who’s going to say the first four bar phrase is the same melody as the second? ;) https://files.catbox.moe/vqkzqk.png https://files.catbox.moe/8min0s.mid

      1. 2

        I could definitely see the first melody’s triplets being called embellishments thus matching a shorter melody.

        1. 3

          Well, with triplets, an idiot on hurry will say “That’s Verdi’s Aida”. Change triplets to eights, and the response will change to “somewhat like Aida”. Vary other durations, and no one will even think of Aida at some point.

          There are plenty of pieces whose basic melody is an unaltered scale, and rhythm is the only distinctive feature. Take Beethoven’s Fifth symphony. The subject of its first movement stops depends on precise durations to remain recognizeable, a slight change turns it into “something with descending major third”.

          It might be fun to go to court with two melodies that only differ in rhythm and see the outcome though.

      1. 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.

            1. 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.

          1. 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.

                1. 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.

                    1. 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. 16

                    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.

                      1. 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.

                        2. 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.

                          1. 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.
                          2. 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.

                            1. 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 :)

                              2. 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.

                                1. 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.

                                  1. 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

                                    1. 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.)

                                      2. 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 ;)

                                        1. 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?

                                          1. 4

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

                                            1. 3

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

                                              1. 4

                                                No.

                                              2. 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’

                                              1. 4

                                                My gut feeling tells me it’s mostly due to the fact that a hash value of an int is the int itself, so there’s no time wasted on hashing.

                                                Oh wow I hope not. Is this actually true in CPython?

                                                1. 6

                                                  This is the most sensible implementation as you want to avoid collisions in a hash table. It isn’t supposed to bear any cryptographic properties if that’s your concern. Here’s more: https://github.com/python/cpython/blob/master/Objects/dictobject.c#L134

                                                  1. 5

                                                    It’s not the most sensible implementation, because simple key patterns cause collisions that never resolve, even when resizing the hashtable. The comment you linked specifically mentions this pathology, and the numerous ways it destroys performance.

                                                    The rest of the comment describes how CPython mitigates the issue by adding weak integer hashing to its collision probing. At first I thought integer keys were never hashed at any point, hence my surprise.

                                                    From the comments it sounds like sequential integer dict keys are somehow common in Python, which I don’t understand. But I don’t write much Python.

                                                    1. 6

                                                      From the comments it sounds like sequential integer dict keys are somehow common in Python, which I don’t understand. But I don’t write much Python.

                                                      While you can have a dict with keys of any hashable type – and a single dict may have keys of many types – the most common case, so overwhelmingly more common that it’s almost not even worth thinking about other cases, is a dict whose keys are all strings. This is because, sooner or later, basically everything in Python is backed by a dict. Every namespace is backed by a dict with string keys (the names defined in that namespace). Every object is backed by a dict with string keys (the names of the object’s attributes and methods). Keyword arguments to functions/methods? Yup, dict. In comparisons of languages by their “one big idea”, Python is sometimes described as having its big idea be “what if everything was a string-keyed hash table”?

                                                      Anyway. This is so common that Python goes out of its way to have special-case optimized implementations for the case of a dict whose keys are all strings (and for what it’s worth, in CPython as of Python 3.4, str is hashed using SipHash-2-4).

                                                      As to hashing of numeric types, it’s a bit more complicated than “ints hash to themselves”. Here’s what the Python documentation has to say. For the specific case of int, you can think of it as reducing to hash(n) == hash(n % sys.hash_info.modulus), where in CPython sys.hash_info.modulus is 2^61 - 1 on systems with 64-bit long and 2^31 - 1 on systems with 32-bit long.

                                                      While I don’t have a way of being certain, I suspect the linked comment’s note that the hashing of int is “important” has to do with the importance of real-world int key values being unlikely to collide with the hashes of other common real-world key types.

                                                      1. 1

                                                        In comparisons of languages by their “one big idea”, Python is sometimes described as having its big idea be “what if everything was a string-keyed hash table”?

                                                        I’ve always thought of PHP’s “one big idea” as “What if everything is an array” where array means PHP’s strange half-dict half-list interface that funnily enough Python is now one small step closer to.

                                                    2. 1

                                                      Avoiding collisions isn’t as important as using up a larger % of the spots before you need allocate and move things, I believe.

                                                      1. 3

                                                        Aren’t those the same thing? Less collisions implies you can go longer without expanding.

                                                        1. 1

                                                          It depends on the exact implementation, but in my understanding, not exactly; you also want a good distribution between your buckets, even if there are patterns / non-random distributions in the actual encountered keys. It might waste space rather than time, but it’s still not great.

                                                          1. 3

                                                            Python’s hash table isn’t implemented as an array-of-buckets. It’s a single contiguous array into which you insert a new element at the position determined by the hash of its key, and if that position is occupied you try the next one in a pseudo random order. Same with lookups: you try entries in succession until you find the one that equals (it’s usually the first one). And this is why the number of free spots and the probability of collisions are directly related.

                                                    3. 2

                                                      it is:

                                                      Python 3.7.6 (default, Dec 21 2019, 11:56:31)
                                                      [Clang 10.0.1 (clang-1001.0.46.4)] on darwin
                                                      Type "help", "copyright", "credits" or "license" for more information.
                                                      >>> hash(2)
                                                      2
                                                      >>> hash(37)
                                                      37
                                                      >>> hash(892474)
                                                      892474
                                                      
                                                      1. 8

                                                        Almost! hash(-1) returns -2.

                                                        Python 3.8.1 (default, Jan  8 2020, 23:09:20)
                                                        [GCC 9.2.0] on linux
                                                        Type "help", "copyright", "credits" or "license" for more information.
                                                        >>> hash(-1)
                                                        -2
                                                        >>> hash(-2)
                                                        -2
                                                        >>> hash(-3)
                                                        -3
                                                        
                                                        1. 4

                                                          wat

                                                          do you happen to know why?

                                                          1. 7

                                                            Ah, it’s because the C API function uses -1 as an error code. It goes deeper than that too:

                                                            In [1]: class yolo:
                                                               ...:     def __hash__(self):
                                                               ...:         return -1
                                                               ...:
                                                            
                                                            In [2]: y = yolo()
                                                            
                                                            In [3]: hash(y)
                                                            Out[3]: -2
                                                            
                                                        2. 2

                                                          I’ve heard that this is a somewhat common way to implement hashing for ints, but I don’t understand why it’s a good idea. Isn’t hash collisions terrible for hash tables? And isn’t a somewhat common key pattern “some number with some low bits masked”? And wouldn’t that be a pathological case for a hash table which grows with a factor of 2?

                                                          Are hash table implementations which does hash(x) = x somehow better at handling collisions than most hash tables, or do they just hope that the ints people want to put in their tables have high entropy in the lower bits?

                                                          1. 3

                                                            IIRC there is some sort of random salt added to it and it goes through some internal hash for the actual hash table, since there was a DoS attack by abusing worst case scenario over HTTP requests.

                                                        3. 2

                                                          Why would that be a problem?

                                                        1. 3

                                                          The next version of our flagship product is written in 100% type-{hinted,checked} Python 3 for the most part (there are lower-level parts in C). All told it’s around 10,000 lines of Python. This simply would not have been feasible without mypy.

                                                          1. 5

                                                            I bet it was possible though: I’ve worked on projects much bigger than 10k lines without types. Tools like mypy help but it isn’t impossible to work without them. Facebook was once just an enormous PHP app (in some ways, it still is, but better structured). There are a lot of similar examples.

                                                            1. 2

                                                              With discipline it is not hard to go over 10,000 LOC using untyped Python. Type hints definitely help though.

                                                            1. 4

                                                              I think “IDE” is the wrong term here – in this case Unix isn’t just a program, within the (operating) system for development. Rather the system itself is “developable”, making it an “interactive development/computing environment”, like Smalltalk or to a lesser degree Emacs.

                                                              1. 15

                                                                The E in the IDE stands for Environment. While some are constrained within a single program, an operating system is definitely an environment.

                                                                1. 1

                                                                  Yes, but IDE’s usually aren’t operating systems, but as I say are at best interactive development environments?

                                                                  1. 6

                                                                    The I in IDE stands for Integrated, not Interactive, although Unix-like operating systems are both. I guess you could argue that ‘integrated’ is intended to mean ‘integrated into a single program’ but then you’re arguing what counts as a single program. I run them all from dmenu and they’re all windows within my window manager, how does that really differ from running them all from M-x and them all being panes within Emacs?

                                                                    1. 1

                                                                      That’s my point though, Unix (or a WM under Unix) is more similar to Emacs or other Interactive Development Environments (/= IDE = Integrated Development Environment) than it is to an IDE. Of course there are differences, but in it’s core, it’s providing a human-machine interface, rather than tools to ease project and code management, which is what I understand an IDE to be.

                                                                    2. 3

                                                                      Yes, but IDE’s usually aren’t operating systems

                                                                      Emacs would like to have a word with you ;)

                                                                1. 1

                                                                  Adding custom skinning can be quite the hassle though. A CSS like way to skin the UI would be wonderful

                                                                  Oh, but there is

                                                                  1. 4

                                                                    It feels like a lot of problems tackled with machine learning are in a sense similar to NP-complete problems. You can reduce them into each other and it works acceptably, but specialized models perform the best.

                                                                    1. 2

                                                                      I think this misses the point of the previous article. I don’t think that the previous article is shaming languages for providing more features or anything like that. It highlighted the fact that a bunch of languages in their compiled form do additional things that are unnecessary to do what the code does. This is where the author misses the point. E.g when talking about stack traces, the author seems to not know that the Zig(safe) build does have stack traces using DWARF while only making 3 calls and weighing 11KB. Doing the “lets include repeating in the program” section misses the point again. This wasn’t any kind of a performance benchmark. It’s more of a compiler optimization benchmark. Then we go to excusing go. Yeah, sure, we want fast builds. But do we really need to have all of that stuff that is entirely unnecessary for the execution of the given code. So why have it? Do we use reflection in our code? Do we use multi-threading? Do we create any objects that would require error handling? Does the task benefit from knowing weather the streams block? Should this program care about signals? Do we need to know the executable path? No. No we don’t and this is additional code that complicates debugging. Now some might say it doesn’t complicate it, but if you need to debug a performance bug on startup, all of this different stuff just gets in the way, while not being necessary.

                                                                      1. 2

                                                                        Fair enough. I will grant that most existing high level languages aren’t particularly good at optimizing programs which merely print “hello world” to the screen.

                                                                        It’s a very silly thing to optimize for, with no connection to the challenges of real-world software development, but there you go.

                                                                        My “lets include repeating in the program” was to illustrate why “slow” startup could be a problem in theory, but then to illustrate why merely eliminating code bloat isn’t always the best avenue for improving performance. (also “slow” here is not an electron app. We’re talking about a few milliseconds. it’s complete imperceptible)

                                                                        In my experience debugging a high level language like Go is much, much easier than debugging raw assembly. But then again I’ve only ever had to get that low-level maybe once or twice in my career. (Whereas I have to fix bugs in Go/Python/C#/Java code all the time)

                                                                        And I’ll take a fast build that makes a 5MB binary over a slow build that makes an 11KB binary. 5MB means nothing on my laptop, where I do most of my primary development. But a 1 second build vs a 3 minute build means a whole lot.

                                                                        Also FWIW I used Go because its what I knew. But the same reasoning applies to any of the languages. I bet if you dig into what Rust or Java is doing, there are also abundantly good reasons for the syscalls there.

                                                                        1. 2

                                                                          Numbers mean something. 5 MB doesn’t matter in terms of a hard drive, but it matters. That’s at least 2 levels of magnitude over what the size could be. Comparing any binary against a hard is such a cop out, that comparison hasn’t been meaningful in 20 years.

                                                                          Instead of hand waving it away, it would be better if you could explain what is being gained out of those extra 4 MB.

                                                                          1. 2

                                                                            The size of the binaries is a product of many things:

                                                                            1. Statically linking libraries instead of dynamically linking them
                                                                            2. Debugging information
                                                                            3. Pre-compiling object files to improve compiler performance
                                                                            4. Language features preventing dead-code analysis from eliminating all unused code

                                                                            Now certainly folks could spend time improving that, and there are issues in the go repo about some of them, but in practice a 5MB binary doesn’t matter in my everyday life. It doesn’t use up much space on my hard drive. I can upload them very quickly. They start plenty fast and servers I run handle them just fine.

                                                                            Why prioritize engineering resources or make the Go compiler slower to fix something that matters so little?

                                                                            1. 1

                                                                              …you did it again. You compared the size of the executable against the size of your hard drive. Thats the very thing that I just commented against in my last comment. Comparing an executable size against hard drive size hasnt been a meaningful comparison in at least 20 years. Why do you keep doing it? Cant you find a better comparison?

                                                                              1. 1

                                                                                I’ve lost the issue here.

                                                                                Why is a 5MB binary a problem?

                                                                                1. 2

                                                                                  I never said 5MB binary was problem. I said comparing the size of an executable, to your hard drive size, is a meaningless comparison and has been for a couble of decades.

                                                                                  Ive said pretty much this same comment 3 times now, am I not being clear?

                                                                                  1. 2

                                                                                    OK. I agree a 5MB binary is not a problem.

                                                                                    1. 1

                                                                                      I also agree with you that short sighted comparisons are wrong.

                                                                        2. 1

                                                                          E.g when talking about stack traces, the author seems to not know that the Zig(safe) build does have stack traces using DWARF while only making 3 calls and weighing 11KB.

                                                                          The zig programs were built with --strip which omits debug info. A minimal program capable of displaying its own stack traces with --release-safe comes out to ~500KB. That’s the size of both the DWARF info, and the code to parse it and utilize it to display a stack trace.

                                                                          But yeah it’s still only 3 syscalls. The third one is a segfault handler to print a stack trace. The std lib supports opt-out with pub const enable_segfault_handler = false; in the root source file (next to main).

                                                                        1. 13

                                                                          An interesting metric if you want to make a short-living utility with low latency to output.

                                                                          Pretty useless if you are interested in throughput or latency of a long living process.

                                                                          1. 3

                                                                            If you’re interested in latency, the relationship between syscalls and latency is so scattered that you’re better off just measuring the latency. Otherwise, you might conclude that JIT compiled Java is as good for quick command line programs as go.

                                                                            1. 6

                                                                              It also provides a datapoint on unnecessary complexity and bloat.

                                                                              Pity Nim is not in the article (yet).

                                                                              1. 8

                                                                                “Unnecessary complexity and bloat.” in the context of a useless program.

                                                                                1. 3

                                                                                  Isn’t it roughly equivalent to the quite non-useless true program?

                                                                                  1. 2

                                                                                    Oh god, people will be “beating” GNU true in all manners of programming languages next…

                                                                                  2. 1

                                                                                    Well, the more unnecessary syscalls, the more of a runtime there is. Those additional syscalls never go away.

                                                                                    1. 7

                                                                                      And?

                                                                                      If the runtime is long enough this syscalls at start get negligible.

                                                                                      Once again - this metrics are useful in one context and totally useless in others. The important stuff is to know if they are relevant to your situation.

                                                                                      1. 3

                                                                                        Not all of these syscalls are strictly startup-related, though.

                                                                                        Part of Rust’s overhead is from stdout locking, and that means additional syscalls every time you print, not just at startup.

                                                                                        1. 3

                                                                                          If Rust generates syscalls for an uncontested lock, that’s bananas. Every decent lock implementation uses an atomic instruction in userspace, and only falls back to the kernel when it finds the lock held by another thread. For example, pthread_mutex_lock in musl libc tries an atomic compare and swap before resorting to the syscall implementation.

                                                                                        2. 1

                                                                                          I meant the language runtime. As we can see, the “slower” and more abstracted languages make more syscalls. The more control you have, the less syscalls are called.

                                                                                          1. 1

                                                                                            This may be true but it can’t be tested the way the linked blogpost does.

                                                                                  3. 2

                                                                                    A commenter on HackerNews made a test with Nim: https://news.ycombinator.com/item?id=21957476

                                                                                    1. 2

                                                                                      A lot of people in this thread seems to be focusing on startup time and ignoring the point of the article hinted more by the amount of disk space used and, secondarily, the number of syscalls:

                                                                                      These numbers are real. This is more complexity that someone has to debug, more time your users are sitting there waiting for your program, less disk space available for files which actually matter to the user.”

                                                                                      This was not an objective test, this is just an approximation that I hope will encourage readers to be more aware of the consequences of their abstractions, and their exponential growth as more layers are added.

                                                                                      Unnecessary complexity translates into cognitive load for those who want to understand what happens under the hood.

                                                                                      Especially when contributing to the compiler or porting it to a different architecture.

                                                                                      1. 17

                                                                                        I read the entire article and understood the point.

                                                                                        I don’t think the point is valid, that’s all - at least not when it comes to “real-world” software development.

                                                                                        For example, you can’t throw a pebble on this site without hitting a comment decrying C’s lack of memory safety. “But my users will thank me when they count the low number of syscalls my code is using!” isn’t much use when your program is crashing or their box is getting rooted because you messed up memory management.

                                                                                        Likewise, if your code is spending most of its time waiting for data to come down the wire, or for something to be fetched from a database, why optimize for syscall count?

                                                                                        1. -1

                                                                                          Umm, you do realize the database fetching the data is a program using syscalls, and the routers transmitting the data also use syscalls. If everything in the chain is slower, you will be waiting longer…

                                                                                          1. 5

                                                                                            Any database system can be coded as lean and mean as possible, and still be brought down by someone mistyping a query and performing a full-table scan.

                                                                                            A power outage can knock out a datacenter, forcing traffic to go via slower pipes. So users will be waiting longer, despite routers being lean and mean.

                                                                                            More syscalls contribute to slower performance, but they’re generally dwarfed by other factors.

                                                                                      2. 1

                                                                                        I would not be surprised if the ‘useless’ results carry through proportionally to real programs.

                                                                                        1. 8

                                                                                          A month or two ago there was a spate of posts where people “beat” GNU wc using a plethora of languages. It would be interesting to see the results of a program that read a 1MB Unicode text file and reported number of lines, bytes, characters etc, and compare using this metric.

                                                                                      1. 4

                                                                                        Just add “to me” to anything not measured by a sensor.

                                                                                        I’m glad people have personal experiences that are ok with computers. Flask and pipenv are so close but so far away. If python succeeds in academic machine learning code, get ready to experience a singular success and culture like Rails did with Ruby. People are still trying to sell “Ruby is more than Rails”. Yeah. I mean it is but culture man. Culture. PHP isn’t wordpress. Ok, I get what you are saying but it might turn out to be a pejorative.

                                                                                        Keep trying out new languages. Don’t be mono lingual. Don’t be mono culture. Python has a great stdlib, fine. I’ve had that same feeling in many other languages so it becomes less blinding. I have good and bad things to say about Python but I’ll make $0 by stating something or fighting about something so I just don’t want to deal with that right now. I’m going back to trying to get pipenv to work in Docker and CI. I had zero effort and issue getting a Go binary to ship in Docker. Them’s the trade-offs.

                                                                                        1. 2

                                                                                          The thing is, Python was popular before all of the ML boom happened. Ruby on the other hand, got popular mostly because of Rails. I honestly know only one Ruby project that isn’t Rails, while with Python I know a big bunch of projects in a variety of different fields.

                                                                                          1. 2

                                                                                            Python has been through several waves of success in particular domains. When I first learned it lo these many years ago, Python was big mostly as the “readable” scripting language for sysadmin types. Then web stuff took off and that became the biggest part of the Python community. Then scientific computing took off and became a huge thing in the Python world. Then ML/AI stuff took off and is now the hot reason everyone wants to learn Python.

                                                                                            I wonder what thing will be the hot reason to learn/use Python five years from now.

                                                                                          1. 3

                                                                                            From what I know, the only thing that really cares about your typing speed, is competitive programming. And you have to be good at it to get any real benefits. There you probably already know the solution, you just need to write it down, and sometimes those few seconds saved by quick typing can matter. But anywhere else - I haven’t seen any difference.

                                                                                            1. 4

                                                                                              Small note about the h language. As far as I know the shortest quine producing language is in fact Nothing

                                                                                              1. 2
                                                                                                $ touch quine.sh
                                                                                                $ chmod +x quine.sh
                                                                                                $ ./quine.sh > quine.out
                                                                                                $ diff -u quine.sh quine.out
                                                                                                $
                                                                                                
                                                                                                1. 2

                                                                                                  That does work too. You could say that sh is a Nothing interpreter with a lot of extensions.

                                                                                              1. 5

                                                                                                Platform is a set of standards. You don’t need a set operating system, but it could be set in standards. You don’t need a set developer platform, but it could be set in standards. You don’t need a set design language, but it could be set in standards. You don’t need a set app store, but it could be set in standards. What is now commonly refereed as “Linux” platform is mostly a mix of: POSIX, Wayland/X11, and ELF. This doesn’t have a set operating system, only the standards it implements. This doesn’t have a set developer platform, only the standards it implements. This doesn’t have a set design language. This doesn’t have a set app store. It is definitely a platform. This narrative that GNOME is pushing is a bit worrying. I think that they are trying to monopolize the Linux desktop space.

                                                                                                1. 1

                                                                                                  The worst is that traumatic changes in python (and nearly any other language) will appear again… my alternative is a lisp language. You can add any language feature you want with the same syntax. And in the case of CL, you can even program the syntax reader: you can make that in your source files, { } will denote a dictionary, use @-decorators, etc. Without ever waiting a language update, or breaking existing libraries. CL is famous for its stability. Code written in the 90s (and probably before) can still run as is.

                                                                                                  Then, async support depends on the implementations. That’s what is possible in CL: https://github.com/CodyReichert/awesome-cl#parallelism-and-concurrency

                                                                                                  1. 3

                                                                                                    In my opinion CL avoids thos problem in the worst way possible: no code is actually idiomatic in the ecosystem. It can be idiomatic within a project, but between projects, taking a piece of code from one and putting it into another will result in code that is not idiomatic for one project, but is for the other.

                                                                                                    1. 2

                                                                                                      I don’t understand. We don’t copy&paste code from one project to another. The ecosystem is actually pretty conservative. And if we use features from other libraries, it’s like importing a library of pattern matching of futures into python: not idiomatic, just incorporated into your project for your own use.

                                                                                                      1. 2

                                                                                                        We don’t copy&paste code from one project to another.

                                                                                                        Yes, that is the consequence of the choices LISP makes. I argue it’s a bad thing. You need to learn what is idiomatic for every project if you want to contribute to it. Meanwhile in Python, or Go, or C, or almost any other language if you know what is idiomatic within a language, you know what is idiomatic within a project. This reduces the initial thinking overhead for new contributors and allows to easily reuse solutions from other projects in yours. When understanding what it does, copy-pasting code is one of the more powerful tools in programmer’s toolbox.

                                                                                                        1. 1

                                                                                                          well even in Python I don’t copy and paste code so we’ll have a short discussion. But regarding lisp, once again the community is quite conservative meaning you don’t encounter crazy new languages atop of it, then looking at the imported libraries one has to learn what they do anyway, exactly like in Python.

                                                                                                  1. 1

                                                                                                    Is there no way to automate some of these changes (asyncio namely)? For instance, tools exist to automate (part of) the translation of C code to Rust (corrode).

                                                                                                    Isn’t this possible, or desirable, for Python code?

                                                                                                    1. 1

                                                                                                      Python 2 to 3 transition had tools for it, as py2 vs py3 was less of a paradigm change and more of a technical change. But threads to asyncio is quite different, as it changes the way you are supposed to think about it, therefore it is a lot harder to translate the code automatically.

                                                                                                    1. 52

                                                                                                      Piling up reasons to leave Facebook won’t make people leave Facebook. Most people cannot leave Facebook for the simple reason they need it and they have not enough time/energy/stability to invest time in exploring a new social network and rebuild their connections there.

                                                                                                      Facebook is social infrastructure now and asking people to renounce using infrastructure is not just about the act itself, it comes with a big cost. You cannot ask people living in the countryside to renounce cars and ride bikes if the next town is 20kms away and the public transporation is basically absent. Yes, you can live in the countryside without a car and take the bus that comes twice a day but the rearragement required in your life is deep and complex. The same is true for Facebook. On top of this, expecting everybody to be able to rearrange their life like this is deeply classist and the like many “hackerist” issues, the condition of working people is not considered, limiting this action to a bourgie privilege equal to eating organic local food to fight global warming. This give the few activists a sense of moral entitlement and the others a sense of guilt (or directly a feeling of hatred for the cause and the activists, because they feel unable to join them), but contributes nothing to the ultimate cause.

                                                                                                      The solution must be systemic: lobby to limit or ban facebook in your country, promote local, indipendent, politically-aware projects of social infrastructure re-development to replace Facebook, grow existing global solutions and do it on Facebook, because you want to reach the people on Facebook, not the others. And please, stop asking people to leave Facebook.

                                                                                                      1. 28

                                                                                                        I was mostly with you until you claimed it’s ‘classist’ to tell people to stop using Facebook. What ‘bourgie privilege’ is involved in not using a toxic, harmful social media website? Step back and take a look at the big picture, seriously. There’s no need to be so dramatic. Using Facebook is not some ingrained human notion, it’s been popular for less than 10 years. Nobody has to ‘rearrange their life’ to stop using Facebook. There are alternatives for nearly every way in which people use it that require the same amount of effort or less to use.

                                                                                                        Most peoples’ use of Facebook is in a few categories. They use it to show off, for messenger, for marketplace, for local groups, for family groups, or as a news website.

                                                                                                        A lot of people use Facebook to show off. They post pictures of their kids, places they’ve been, pictures of themselves having fun. There’s a better version of Facebook for this called Instagram. Use that instead. Probably a lot of the same privacy issues, yeah, but at least it’s not literal Facebook.

                                                                                                        Messenger isn’t even a good messaging platform, and there are lots of other ways of keeping in contact with people. A lot of people tell me they stay on Facebook for messenger, then when I ask them who they talk to on messenger that they can’t message otherwise they can’t answer. People want to ‘stay in contact’ with old school friends, but people managed to do that before Facebook fine, and personally I used that excuse until I realised that I hadn’t done so for years and I wasn’t going to. Let’s be realistic: people don’t keep in contact with old school friends because they don’t have anything in common other than having gone to the same school. They have no reason to keep in contact with or without Facebook. If there’s someone that really matters to you, you’ll find a way to contact them outside of Facebook (“hey can I have your email/phone number/whatever? I’m getting rid of my Facebook account”). And the rest that you never talk to anyway? You won’t actually miss anything by not being able to contact people you were never going to contact anyway.

                                                                                                        Facebook marketplace is useful to people, but eBay and its many equivalents in different countries still exist and work, the classified section of the local paper still works. There are lots of other ways to buy and sell stuff other than Facebook. In my experience, selling stuff on Facebook means you get the most entitled people in history asking you questions and demanding things of you. The number of times I’ve sold something specifically with a fixed price and ‘pick up only’, the person has said they’ll buy it, and then they’ve turned around and gone ‘hey can you mail it to me I live in [other city]’. It says pick up only what is wrong with you. Or the dozen people that will ask you numerous in-depth questions trying to judge the quality of stuff you’re selling for $5. They can’t seem to tell that the effort I want to put into selling something when all I’m getting is $5 is going to be much less than when I’m selling something for $500.

                                                                                                        Local area groups are probably the only subject where Facebook is still useful. If you’re a member of the local Facebook group for your suburb or whatever, then go ahead, stick with Facebook. I personally don’t know how people can stand them, they’re full of the kind of people I think Americans refer to as ‘soccer moms’: entitled, bougie, opinionated middle aged women (and it mostly is women) that think vaccines and fluoride are killing their kids and who can’t handle someone going on holiday for six weeks and not mowing their lawn from 10000km away. But some people find value in these groups and I can’t think of any particularly good alternative at the moment.

                                                                                                        Family groups/group chats/whatever have loads of alternatives. And Facebook is an awful news website. Getting people just to stop using it as a news website, even if they still use it for everything else? That would be a blessing.

                                                                                                        1. 14

                                                                                                          There’s a better version of Facebook for this called Instagram. Use that instead.

                                                                                                          Instagram is owned by Facebook; don’t the same objections to Facebook apply to Instagram, as well? (genuine question, not a challenge)

                                                                                                          Personally, I find Instagram to be kind of toxic in a way because now everyone is focused on creating the “Instagram picture”. I’m not sure if we can really blame the Instagram platform for that, but I don’t like it. It’s also toxic in the same way as Facebook: you only see the good parts of people’s lives, which is often just a façade.

                                                                                                          1. 4

                                                                                                            Instagram is bad for many of the same reasons that Facebook is bad, but it’s not got the same kind of nightmarish qualities that push Facebook from bad to should-be-illegal IMO. I’ve never seen ‘Fake News’ on Instagram, just incredibly facile crap mostly.

                                                                                                            1. 3

                                                                                                              Fake news does seem to be a think on Instagram too: https://duckduckgo.com/?q=fake+news+instagram

                                                                                                              1. 2

                                                                                                                That facile crap subsidizes facebook.

                                                                                                                1. 1

                                                                                                                  And yet if the choice is between Instagram or Facebook I’d rather they were not on Facebook.

                                                                                                          2. 19

                                                                                                            People don’t need Facebook. People need water, amino-acids, vitamins and air. “But I have my entire social life in Facebook?”. I thought so too, then I quit Facebook and Instagram and found that I have exactly the same social life now.

                                                                                                            In fact. Leaving those platform didn’t change my life one bit. Everything stayed exactly the same. That’s quite telling of the content on there.

                                                                                                            1. 26

                                                                                                              In fact. Leaving those platform didn’t change my life one bit. Everything stayed exactly the same. That’s quite telling of the content on there.

                                                                                                              I’m happy for you! Unfortunately that’s not the case for everybody. Maybe you should not assume that it is?

                                                                                                              1. 2

                                                                                                                How do you know that is not the case for everybody? I am actually curious. Have there been any studies made? I actually believe it is like that for most people. I also believe that they wouldn’t know unless they actually quit.

                                                                                                                1. 7

                                                                                                                  I stopped using it instead of deleting it. The problem is that most people I know, friends and family, put their concerns, plans, important developments, etc on there. I missed all that past what people texted me. They generally won’t go through the trouble to do extra stuff for people just not on the platform. Missing out on stuff created both distance and sometimes resentment by those on the platform.

                                                                                                                  So, I”ll probably rejoin Facebook plus get on one or more of the others in the future just to prevent that. I’m delaying it because it’s going to be a big change with a pile of incoming posts and messages. I got too much going on to respond to them right now.

                                                                                                                  1. 3

                                                                                                                    To combat this, I use FB in a “read-only” way. Although I don’t find a big issue with catching up with people when you actually see them in person. In fact, not paying as much attention to FB almost guarantees that they will have something surprising and interesting to tell me.

                                                                                                                  2. 6

                                                                                                                    I’ve never used Facebook and have no intentions to start, but it is not rare that I find I have missed events because they were posted only there. I am also at a point in my career where I don’t have to care that most local jobs are promoted on Facebook and sometimes only there.

                                                                                                                    1. 5

                                                                                                                      Well, I can help you with proving that. When I left Facebook a few years ago, I left about a dozen friends behind, whom I now miss.

                                                                                                                      1. 4

                                                                                                                        It is definitely not the case for me. Or anyone from Lithuania really. Here Facebook has become so dominant, that other platforms are made basically irrelevant. Twitter? Maybe a thousand users. Mastodon? Three that I know of. Other chat programs? I’ve only seen Discord used which is even worse than Facebook in my opinion. Facebook has over 50% market penetration here, with most of it being in 13-45 range(which by my quick calculations, has ~80% market penetration). This has effects with how people use Facebook. It is the dominant platform of political discourse here. It is basically impossible to leave Facebook without social changes.

                                                                                                                        1. 4

                                                                                                                          Have there been any studies made?

                                                                                                                          A thing is knowable without needing a study.

                                                                                                                          1. 2

                                                                                                                            That’d be an interesting study or survey - surprised it hasn’t happened yet. Personally I do most of my chatting on Instagram - friends, acquaintances, group chats, new people I meet. People of my age and socioeconomic group are more likely to exchange IG than phone numbers upon meeting. That’s what’s difficult about these arguments - everyone’s life is different.

                                                                                                                            Also like @vegai, I once deleted Facebook (~2013) and my social life was greatly hindered. Of course, I am still alive, but looking back I did miss out on a lot of events and people. At least back then Facebook was mostly for events and to easily be able to chat with people you may not be close with yet.

                                                                                                                        2. 11

                                                                                                                          Leaving those platform didn’t change my life one bit. Everything stayed exactly the same. That’s quite telling of the content on there.

                                                                                                                          Because you’re unaware of other ways of use facebook.

                                                                                                                        3. 7

                                                                                                                          I understand a little bit where you’re coming from… just making a website telling people to leave Facebook doesn’t necessarily make a huge dent in the “stop Facebook” campaign. However, I respectfully disagree with your comment, and I think following the advice in your comment would be dangerous. Having sites like this are better than not having them.

                                                                                                                          Specific to this site, I really appreciate that they clearly stated the intent of the site, gave direct reasons backing up their “thesis”, and also provided source links to further back those claims. I hear a lot about the “stop Facebook” campaign, but I think having a site that provides a myriad of reasons why someone should stop using Facebook is helpful. There may be a reason on that site that helps push someone over the edge.

                                                                                                                          The site at the bottom also provides “how” links so that people can attempt to keep the functionality they would lose by leaving Facebook. Sure, nothing at this point has the exact same scale and features that Facebook does, but this gives people direct reasons why they should leave Facebook and gives them something to go to.

                                                                                                                          Also… your points contradict each other. Two examples:

                                                                                                                          • How is someone supposed to “And please, stop asking people to leave Facebook.” while doing “lobby to limit or ban facebook in your country” at the same time?
                                                                                                                          • “Facebook is social infrastructure now and asking people to renounce using infrastructure is not just about the act itself, it comes with a big cost.” many people are aware of this cost. I know at least one person who has significantly changed their life, their work… and more so that they can help people get off of these dangerous platforms because they see the risk of keeping them as worse. They are prepared to give up temporary satisfaction so that those in the future can have something greater. Calling people “deeply classist” is not respectful to the people who have given a lot to leave Facebook or similar sites; you assume everyone making a stance against Facebook already has some form of privilege.

                                                                                                                          I don’t share this to be “rude” or argue. I share this because I think what this site is doing is important.

                                                                                                                          1. 4

                                                                                                                            Having sites like this are better than not having them.

                                                                                                                            I agree, but is it the best way to spend your effort? I mean, any tech person is already aware of why Facebook is bad for you, including people working in Facebook. Same is true for people in tech critique. Yes, there are still areas of the intellectual world that haven’t been conquered by these ideas, but it’s not a list of facts that will change that.

                                                                                                                            How is someone supposed to “And please, stop asking people to leave Facebook.” while doing “lobby to limit or ban facebook in your country” at the same time?

                                                                                                                            This is not contradictory: I’m on Facebook, I want Facebook to die. In the same way I’m a programmer with a high salary and I believe the system is broken for paying programmers so much. Or that I live in a society that I think it’s broken: it’s literally a meme.

                                                                                                                            The difference between individual action and systemic action is the key: here the solution must be systemic, not individual. Your stance on a political, systemic action doesn’t have to be somehow in accord with your individual consumption, because changing your consumption would be irrelevant. After the change you will lose Facebook and need to adapt your life? Yes, but so will everybody else and the transition will be easier because you will just follow the flow instead of going against it now.

                                                                                                                            They are prepared to give up temporary satisfaction so that those in the future can have something greater. Calling people “deeply classist” is not respectful to the people who have given a lot to leave Facebook or similar sites; you assume everyone making a stance against Facebook already has some form of privilege.

                                                                                                                            If you have time to care about political issues you’re already privileged. I say it as a person that spends half of his time on this and I feel deeply privileged, because I know that if I had to work 12 hours a day on stressful jobs, I wouldn’t be able to do all this stuff. I see the impact of a particularly stressful week at work on my projects and activities: if that was the norm as it is for the general population, I know I wouldn’t be able to achieve anything.

                                                                                                                          2. 4

                                                                                                                            lobby to limit or ban facebook in your country, promote local, independent […]

                                                                                                                            My thinking lately circles around a legislation requiring social services to federate using an open protocol, so that people could freely choose between apps and services without losing their connections. This would recognize the fact that Facebook didn’t create your social graph — you did. And you should own it.

                                                                                                                            1. 3

                                                                                                                              I’d be more in favour of just banning Facebook. People don’t need Facebook or websites like it. Everyone I know that uses it does so under a feeling of duress: everyone else uses it, so I have to use it.

                                                                                                                              1. 3

                                                                                                                                What would a law banning it look like? Just outlaw social networks entirely?

                                                                                                                                1. 3

                                                                                                                                  It’s enough to say that they cannot be privately owned, centralized or for-profit. Implementing it in law is much much harder but we don’t want to throw the baby out with the bathwater

                                                                                                                              2. 2

                                                                                                                                Such protocol would have to allow for end-to-end encryption, otherwise not much would change. The real problem isn’t who owns the data, but who can access them. Is strong encryption something society would consider desirable? Hint: Law enforcement.

                                                                                                                                Using a single protocol also means that there’s little to no space for inovation. Facebook did come up with things such as reactions to messages, which are not easily translatable to more oldschool IM protocols. As far as I know, it’s been also the first platform that came up with a confirmation that message have been read. I may not like these inovations, but that’s not the point.

                                                                                                                                The point is that you either force everyone to use a single protocol and make it difficult to push for any change, or allow for multiple protocols, which is basically what we have right now. Yes, it’s not open, but having documentation doesn’t necessarily mean it’d be possible to keep up; especially when it’s against Facebook’s interest. They would undergo some extra effort to abide the law while making sure no one can actually threaten them by developing a good FOSS client.

                                                                                                                                “These scandals just bother everyone. I’d ban all those computers and internets.” – Věra Pohlová, 72 years, pensioner. Newspaper “Metro”, 09/17/1999. Source.

                                                                                                                              3. 3

                                                                                                                                Most people cannot leave Facebook for the simple reason they need it and they have not enough time/energy/stability to invest time in exploring a new social network

                                                                                                                                Most people can’t leave. But many people can.

                                                                                                                                The people that stay might think twice before making their next event facebook-exclusive once they realize why other people have left.

                                                                                                                                Yes, we need laws to protect us, but until those laws arrive we should do what we can to limit the harm.

                                                                                                                                1. 3

                                                                                                                                  The people that stay might think twice before making their next event facebook-exclusive once they realize why other people have left.

                                                                                                                                  Until they realize how attached to Facebook they are and come to the conclusion that “oh well, it’s their loss for leaving it.”.

                                                                                                                                2. 2

                                                                                                                                  Piling up reasons to leave Facebook won’t make people leave Facebook.

                                                                                                                                  The only way to make people leave Facebook is to make them believe that it is unsafe to continue using it. That’s why people flocked to Facebook when MySpace was still around: MySpace let anyone message anyone, but with Facebook you could only talk to someone if you knew them and were their friend. This gave people the perception that Facebook was safer to communicate on, and thus the big migration occurred.

                                                                                                                                  However, Facebook is well aware of this, and Mark Zuckerberg isn’t quite as short-sighted as Rupert Murdoch. This is why they pour so much money and time into “security” and “privacy” initiatives, so the average Facebook user feels safe on their platform.

                                                                                                                                  lobby to limit or ban facebook in your country

                                                                                                                                  Yeah because banning things works… What a joke.

                                                                                                                                  Facebook isn’t going anywhere unless it does something really spectacularly dumb.

                                                                                                                                1. 3

                                                                                                                                  This process can be expressed as a couple of binary operations, by first mapping the input as whitespace (0) and non-whitespace (1). Shifting that binary value by one digit and inverting it produces a mask that can be used to find word boundaries, which computers are great at counting.

                                                                                                                                  Wait so, since you’re already tokenizing and parsing input why is it more costly to increment a counter?

                                                                                                                                  1. 2

                                                                                                                                    In simd.h

                                                                                                                                    static inline int count_words(simd_vector vec, wcount_state *state)
                                                                                                                                    {
                                                                                                                                    	simd_imask ws = simd_imask_from_mask(simd_cmpws_i8_mask(vec)),
                                                                                                                                    	           first_chars = ~ws & ((ws << 1) + *state);
                                                                                                                                    	*state = ws >> (sizeof(simd_vector) - 1);
                                                                                                                                    	return simd_imask_popcnt(first_chars);
                                                                                                                                    }
                                                                                                                                    

                                                                                                                                    You can find what simd_imask_popcnt actually is in that file. POPCNT, especially the simd versions, are much faster than looping and incrementing a counter.

                                                                                                                                    1. 1

                                                                                                                                      In fact GCC an LLVM even try to find code implementations of POPCNT to swap it for for one instruction.

                                                                                                                                  1. 2

                                                                                                                                    As I heard somewhere, “OOP is just a formalization of previously used methods”. The main OOP methods were used before the term OOP came into life. People just noticed that they go together nicely, and decided to make this way of programming formalized. You can do OOP in C. You could probably even figure out how to do OOP using assembly. Doing OOP in Haskel might feel like trying to run backwards, but you can do it. So called “OOP languages” came after OOP was being used, to solve the difficulties that arose by using existing languages for OOP.