1. 17

    Requires a sign-in to read. Unread.

    1. 8

      Is there a way to filter content by domain? I never want to give medium.com my eyeballs

      1. 2

        Fair enough, and I agree.

        But if you like you can work around the problem by telling your browser not to accept cookies from medium.

        1. 2

          I opened this page both in Firefox for macOS and Firefox for Android, and both browsers showed me the full article without me having to sign in. I was able to view the article despite not even having a Medium account.

          Maybe your problem is related to this message I see at the top of the page:

          You have 2 free stories left this month. Sign up and get an extra one for free.

          Try opening the page in a Private Browsing window?

        1. 4

          It’s interesting that the type information is to be kept in a kind of ‘signature’ file, separate from .rb code files. I wonder why they’re not allowing it alongside existing code. Perhaps it can’t be done in a backwards-compatible way - or a non-messy way?

          Elixir allows adding ‘typespecs’ above function definitions like this:

          @spec path_clear_between?(intvec2d, intvec2d, MapSet.t(intvec2d), number) :: boolean
          def path_clear_between?(a, b, others, epsilon),
            do: # Implementation goes here
          

          Having the types specified in this way does work, but it’s a bit of a trade-off. Elixir code often looks like this:

          def to_360(a) when a < 0, do: 360 + a
          def to_360(a), do: a
          

          Or this:

          defp combinations(_, 0), do: [[]]
          defp combinations([], _), do: []
          

          … where the choice of which function is called happens at runtime based on guards (first example) and/or pattern matching the arguments.

          Ruby doesn’t have a mechanism like this (as far as I’m aware) or overloading (dynamic despatch based on type) so it would make more sense for arguments to have their types specified ‘inline’ - as shown in the example .rbs file.

          Perhaps if the .rbs idea works, the next step could be to make the Ruby interpreter(s) allow an inline syntax?

          1. 2

            I pitched the idea of a separate file a long time ago. ( https://www.artima.com/forums/flat.jsp?forum=106&thread=155960 ).

            The idea was to maximize flexibility and decouple the code from the typing. They must have been thinking along those lines given their support for interface types and what they call non-uniformity.

            The nice thing is that what they have described looks forward-compatible with adding the type specs to the Ruby source eventually. On that day, there will likely be a tool to collapse .rbs types into class, field, and method definitions in .rb files.

            1. 4

              That’s also what we do in CHICKEN; there’s inline syntax for types which gets used when compiling just that module, but the types then are exported into a “types database” file which gets consulted when compiling other code which uses the module.

              It is also possible to supply a manually-written types file, which gets used when compiling other code against the module it corresponds to.

          1. 28

            “Considering the factors mentioned above, we can reason that unit tests are only useful to verify pure business logic inside of a given function. Their scope does not extend to testing side-effects or other integrations because that belongs to the domain of integration testing.”

            Here’s the trick. It’s painful to unit test non-pure business logic or elaborate integrations, so pain in testing gives you a hint that your design could be better if you manage to avoid those. It’s worth checking to see if you can. In the example, the author has already settled on a design and discovered that it is hard to test, but the additional work of thinking about alternative designs that are more easily testable and have better cohesion and less coupling doesn’t appear to have been. Sometimes it works, sometimes it doesn’t, but it’s great that testability gives us feedback about design.

            In this case, I’d look into whether this can be done with tell rather than ask semantics. With objects, ask calls tend to increase coupling. ( https://martinfowler.com/bliki/TellDontAsk.html )

            1. 1

              There are a few more things to consider about wide contracts: user expectation & risk.

              My favorite example comes from languages which allow negative indices to be used to index backward from the end of a string or a collection. It seems unnatural or counter-intuitive until you get used to it, but with acclimation it’s just considered normal. It helps that the risk profile isn’t very bad either. The chances of indices into collections rolling over into negative on overflow have decreased as larger integers have become common.

              In general, I favor widening contracts when we can and I push rather hard to see if it is possible. The ideal, for me, is to validate at the highest level and then use more generic code below that can handle cases wider than should ever be needed.

              1. 8

                Stopping all other development to make a code base consistent implies telling all developers that are not involved in the change to wait. The larger the team, the more expensive this is.

                This would imply that working on software without irreversibly accumulating tech dept is impossible with a large team. Maybe that is actually a pretty fundamental truth.

                  1. 2

                    Thanks for that link, I see a lot of value in this idea!

                    However, this assumes a team of max 5 to 7 people (10 assistants/facilitators for a single lead engineer seems overkill) and single simultaneous focus.

                    I currently work in a company with about a 100 engineers working on a single piece of software. Although there are extremely high code quality standards, all the latest CI practices and rigurous review processes, the issue described in the original article is clearly present, the code base is in constant flux and various global concepts are being applied simultaneously.

                    And I don’t see any other possible approach with a team this size.

                    1. 4

                      Since scaling pressure of team size impacts systems, we should probably architect to reduce the size of the teams we need. More modularization.

                      1. 1

                        That would be ideal, however you probably want to see a level of conformance to the same code conventions across all modules or even across all products the company provides, for example in order to make it easier for new hires to work on several parts of the product or on several related products at once. And that takes you back to where you started: multiple simultaneous gradual and never quite complete implementation of global refactorings.

                        On the other hand, perhaps conformance to conventions across modules and products to facilitate flexible employability is an ambition you could choose to forfeit in order to have a way to prevent tech debt from accumulating. I wonder if there is a way to measure some kind of optimum here.

                1. 17

                  First of all, this conventional wisdom assumes that there is a single universal definition of “better”; but there isn’t one. If you work on a project as a team–which is almost all of us–it’s really hard to get everyone to agree on something; be it the definition of clean code, or even the type of whitespace to be used for indentation.

                  Having a really small team size (N) makes consensus easier. It amazes me how much process is compensation for having more than a couple of people (at most) work on something. The failure mode for a small team is bus factor. The failure mode for larger teams is silent accumulation of technical debt due to lack of consensus and coordination.

                  I don’t think there’s a neat solution to this problem, but I do notice that many problems go away as N approaches 1.

                  Two might be the sweet spot.

                  1. 3

                    Which is why high productivity is so incredibly important. Get the highest productivity people (see Brooks’s chief programmer teams) and do everything to help them be more productive.

                    1. 2

                      The failure mode for a small team is bus factor. The failure mode for larger teams is silent accumulation of technical debt due to lack of consensus and coordination.

                      I’m not sure that this concept has ever been made as clear as this quote. While not particularly a new observation, the profundity of this quote is one of those that I feel will grow to be just as important over time as Knuth’s famous quote on optimization.

                    1. 11

                      Airline miles and hotel points, right?

                      1. 7

                        But with blockchain!

                      1. 17

                        The following comment on the orange site deserves to be amplified. It’s something I’ve been saying for a while, but not this eloquently.

                        Since communication overhead increases proportionally the square of the number of people on the team—a fact illuminated by Brooks in the 1970s—what you actually want is as little collaboration as you can get away with. It’s an important point that warrants repeating. It comes from an observation that if there are N people communicating directly with each other, every one has to communicate with N-1 other people, which leads to N*(N-1)/2 simultaneously open bidirectional communication channels, which is O(N^2). I think this point plays a crucial role in why hierarchies form, both in teams/companies and societies. A hierarchy is what lets you turn an O(N^2) relationship into O(N) one, at the expense of creating O(log n) hops.

                        1. 4

                          Coda Hale covered this pretty eloquently in the post “Work is Work” last month:

                          https://codahale.com//work-is-work/

                          With the punchy takeaway: “Keep the work parallel, the groups small, and the resources local.”

                          1. 15

                            A new law is being drafted which gives the attorney general massive powers to regulate encrypted services under the pretense of combatting child sexual abuse material. The stick that is being used is section 230 protections against liability. It’s hard to fight this without sounding like a CSAM-supporting villain, which is intentional.

                            This article is a really solid breakdown by someone with technical and legal expertise.

                            Matt Green on twitter responding as well: https://mobile.twitter.com/matthew_d_green/status/1223246416308527106

                            1. 4

                              This is a case where trends on the Supreme Court really matter. Recently, the justices have been signaling that they are ready to address the practice of Congress delegating authority to departments. It’s a practice that, essentially, allows those departments (DOJ in this case) to write law as they see fit. If EARN IT passes, it would be ripe to be a test case. It is easy to see how this sort of law that delegates to the AG could be used to bully various companies selectively.

                              1. 1

                                Ok what’s your proposal to keep encryption but fight CSAM?

                                1. 4

                                  Not that I necessarily owe you a solution nor claim I’m necessarily the best person to create one, but:

                                  Slow down on eroding civil rights (banning e2e and enabling surveillance), and let us researchers work on things like cryptographically-enforceable exceptional access for law enforcement, homomorphic CSAM evaluation functions, and to boost the efficiency of secure multiparty computation to allow for blind privacy-preserving image evaluation. Simultaneously, fight against any law which adds such ridiculous unilateral power, particularly to a non-elected executive position in the government.

                                  Proposals which build off PhotoDNA et al are dangerous because they make it really easy to derive tools which automatically adjust media to avoid detection and potentially even to generate novel CSAM using generative sampling.

                                  1. 0

                                    OK but all of those amount to “don’t do anything about CSAM right now”. Which you’re right - to anyone not deeply engaged with privacy makes it sound like you’re cool with CSAM sharing.

                                    The point I’m making is that once something like this (something that as a stated goal is an obvious and universal good), you can’t just say “maybe don’t do that ”. You have to have an alternative solution to the problem that is being put at the top of the agenda. If you really want to head this proposal off, you have to put forward an alternative.

                                    1. 3

                                      “Don’t do anything” is very different than “continue doing the things we’re currently doing, but not this new thing because reasons.”

                                      You’re creating a false dichotomy. An argument against one proposal is not inherently flawed by a lack of a competing proposal. The criticisms in this post are points where the existing proposal could be improved. Creating new NSF grants in another executive action which could move positive change by supporting the aforementioned research.

                                      Now, you may be right that the public opinion of the argument against will be negative due to a lack of strong competing proposals, but that’s a very different issue which your somewhat troll responses do not address.

                                      1. 0

                                        No, you’re falsely assuming that everyone cares about this issue and will bother to read the same nuance into it you do. Which is why Barr will get his way.

                                        1. 1

                                          I feel like you’re not reading what I’m writing. I directly acknowledged that point:

                                          public opinion of the argument against [may] be negative

                                          because not only do I know that not everyone cares about it as much, I actually want to help make it so that people don’t have to be concerned for their privacy, because it’s just there by default.

                                          Now, I don’t have a perfect solution, if that’s what you’re expecting. If your goal is to help improve my argument here for the

                                          obvious and universal good

                                          of protecting children while also preserving civil liberties, then I’d love to hear constructive suggestions, solicitor. Otherwise, I’m really not sure what the purpose of your standoffish argumentation is.

                                          Barr will probably get his way for a myriad of reasons including the fact that there is bipartisan support for increased surveillance and it’s difficult to get people to call their representatives.

                                          1. 1

                                            I’m telling you that your argument isn’t even an argument for not banning encryption because it completely fails to address the suddenly pressing need to do something about CSAM.

                                            @nickpsecurity gets us to somewhere in the right ballpark of “so actually spend more FBI budget on this first”. That’s something, it’s fairly obvious how it helps, and it’s not nothing.

                                  2. 3

                                    There’s over 10,000 FBI agents with a budget of around $8 billion. The agents and budget assigned to stopping child rapists and pornography is a lot lower. FBI has used many agents on victimless crimes and spent billions over time on bullshit, though. I’m for FBI putting enough resources into those units to make an even larger difference. I’d also love to get a chance to ask a FBI Director on TV why they endlessly talk about pedophiles and kidnappers but put fewer resources into stopping them vs other crimes.

                                    Must be doing all this for a different reason. For decades, two have been to get power for its own sake and/or to use for reasons entirely different than they state. Usually broader over time, too. For all their lies, I oppose most expansions of power to instead reorganize their current workforce and budget with a big boost in accountability.

                                    1. 1

                                      You’re not wrong. Any ideas for how to get that message out?

                                      1. 2

                                        I’m better at coming up with the messages than getting them out. I’m both working on that and keeping my eye out for opportunities.

                                    2. 1

                                      I fight child abuse by not abusing children, and if I ever come across somebody who is I’d like to think I might kick them in the nuts before I hand them over to the man. And we keep encryption by realising you can’t make 1 + 1 != 2 simply by legislating it so.

                                  1. 6

                                    Good article. When I’m teaching refactoring, I often have people lean on the compiler when they can rather than writing tests. In some IDEs, compilation errors actually show up in test results. I use this is a talking point. The way I put it is:

                                    Types and tests are both ways of making assertions about code. The type system of a language is the set of tests a language designer could come up with without seeing your program.

                                    1. 3

                                      Nice, that’s a really interesting way of looking at it! Also sort of like having conversion with the compiler.

                                    1. 28

                                      I like how several people have marked this story as off-topic. That’s what makes this site different and I love it. Carry on.

                                      1. 4

                                        It’s amusing how the same post on Hackernews got flag killed.

                                        1. 3

                                          This submission has 18 flags too ;)

                                          1. 4

                                            And that’s great, because it’s transparent – unlike basically anything associated with HN ranking/moderation/criticism/…

                                            1. 2

                                              Transparency gets exploited, on a site of HN’s scale and value.

                                              One of the things I like about Lobsters.

                                              1. 2

                                                Scaling is failing.

                                                1. 1

                                                  How would you choose a preferred size for a community? Or more specifically: Lobsters has been growing pretty consistently for years, how do you call the top?

                                                  1. 2

                                                    IMO we passed it around the time when the autogenerated icons stopped being a useful way to identify who was posting.

                                                    The people are all great, but something is lost when you have enough of them to make a “website” instead of a “community”.

                                              2. 1

                                                Absolutely. I mentioned moderator transparency in another comment, and this is related (user action transparency). I also appreciate that when someone wishes to downvote my comment, I can see the reasons chosen.

                                          2. 4

                                            I’m happy it’s being voted off-topic, though I’m certain there are users on both sites who agree that comparing different cultures is unproductive at best and antagonistic at worst.

                                          1. 2

                                            from what I’ve seen over the past year, something like Go or Rust is necessary for a sturdy foundation

                                            I just want to mention that programming language is not critical to the success of this sort of thing at all. It’s all about the algorithm. You could use Visual Basic or anything more modern than UCSD Pascal and be fine. Interop with your data store and the network is the only real issue.

                                            1. 2

                                              😅 Yeah, I definitely came at this from the wrong perspective.

                                              To recap: algorithm, data store, network, and the speed from search input to displayed results is what’s needed to succeed.

                                              This community is awesome.

                                            1. 16

                                              It was a late evening. My colleague has just checked in the code that they’ve been writing all week. The code worked. It wasn’t clean.

                                              Author rewrites code in one night that someone else has been working on all week based on some subjective measurement of “clean”. The boss was right to have the 1-on-1, but it has less to do with “code cleanliness” than basic respect for teammates. This type of behavior belittles the work of your teammates, makes you look like an prima donna asshole, and starts people polishing resumes because it creates a horrible work environment.

                                              1. 13

                                                The author clearly already states as much in the article:

                                                I see now that my “refactoring” was a disaster in two ways:

                                                Firstly, I didn’t talk to the person who wrote it. I rewrote the code and checked it in without their input. Even if it was an improvement (which I don’t believe anymore), this is a terrible way to go about it. A healthy engineering team is constantly building trust. Rewriting your teammate’s code without a discussion is a huge blow to your ability to effectively collaborate on a codebase together.

                                                So I don’t really see a point in discussing it further, certainly not without adding some substantial contribution to the debate.

                                                1. 4

                                                  I’m going to be controversial and say that this is a problem. Either a single person owns the code and has to review all changes or it is owned by a community and can be modified by anyone in the direction of better.

                                                  1. 3

                                                    The issue isn’t code ownership, it’s someone staying late to rewrite working code, based on a subjective metric of “better code”. If you’re going to stay late, it’d better be for a contractually obligated “must-hit” deadline, or because of a major issue in production.

                                                    1. 1

                                                      I dunno - if someone wants to stay late and work on something, I’m not particularly interested in policing that.

                                                      1. 2

                                                        In the environments where I’ve worked, working late sets a bad precedent, and it eventually boils up to management complaining, “Why isn’t Joe (the only one not peer pressured into working late) working late tonight!?” Especially when used to complete non-essential work, it can lead to management failing to prioritize because there’s “more hours in the day.” I’ve been salaried working 80+ hours a week because of this type of mess.

                                                    2. 3

                                                      Years later, sure. Team and human factors always matter in the immediate time frame, regardless of future ownership constructs.

                                                    3. 3

                                                      I’m not so sure. Not talking about this case, but first of all it doesn’t matter how long person A spent on the code and if person B objectively improves it… At least I have zero problems with people improving my code, all that matters is the result at the end, I’m not married to my code. That said, I don’t do this to other people’s code because they might react like you did :) I would have a stern talking to the people who let me work on something for a week and not giving any input how I could speed it up. I usually do ask for help if tasks seem huge and while it doesn’t help anyone if the same people do their special thing very quickly all the time, I suppose pairing for a few hours might have helped get better code quicker.

                                                      1. 1

                                                        first of all it doesn’t matter how long person A spent on the code and if person B objectively improves it…

                                                        This isn’t why the author “improved it”. The author said it wasn’t “clean” which isn’t some sort of objective measurement.

                                                        not giving any input how I could speed it up

                                                        The author didn’t do it any faster. It was rewritten to match the stylistic tastes of the author, late at night on the day the it was originally submitted, instead of the author going home for the day.

                                                        I don’t do this to other people’s code because they might react like you did

                                                        I’ve had this happen to me I don’t care. I’ve seen this happen to other people too and it was just another notch in them moving closing to the door and eventually leaving.

                                                        1. 1

                                                          Author rewrites code in one night that someone else has been working on all week based on some subjective measurement of “clean”

                                                          I was referencing this part of your post, you repeated it, I thought it was to underline that fact.

                                                          That’s what I meant. It’s possible that coworker A who has intricate knowledge can do it in a fraction of the time. In this case it sounded like the author could have done it faster, but I may have misread - but it’s moot if I was misreading your sentence.

                                                    1. 16

                                                      Much like the author’s previous text against Medium (“The Billionaire’s Typewriter”), I find myself agreeing with the main thrust and wanting to like the article but ending up vaguely disappointed with the actual writing. For example, the whole part about Eich being fired from Mozilla just seems kind of weird and pointless.

                                                      1. 5

                                                        I suspected as much when he kept writing out “Brendan Eich” over and over.

                                                        This reads like a grassroots piece backed by Google/Facebook or other member of the Advertising-Industrial Complex.

                                                        The article reads as an ad hominem, moral pitch and that doesn’t motivate me to do anything. The author is free to block whatever clients be can figure out how to do, but that doesn’t make it right.

                                                        I think small content creators will make more money from Brave without sacrificing their users privacy. Big advertisers will be hosed because without that data for reselling, they will make less from their ads. I’m ok with centi-billion dollar companies dropping down to demi-centi-billion.

                                                        1. 4

                                                          I agree. The tone is throwing shade and it distracts from the points.

                                                        1. 1

                                                          Nice post that sneakily intros monadic error handling. I like where it ends up because it aligns with the idea that when you are working on code that can produce errors, it’s good to ask “what do you want to have happen instead?” The last line of the post where the author uses alternative is a succinct expression of that intent.

                                                          1. 25

                                                            The inevitable fate of languages with no definition of done: an ever-decreasing bar to language additions.

                                                            1. 17

                                                              I like that the most recent C standard added no new features.

                                                              1. 2

                                                                It was only bugfixes, clarifications to language and bringing the de jure wording for some features into line with the de facto meanings?

                                                                1. 5

                                                                  Basically. C18 is a “bugfix release” for C11. C2x isn’t supposed to add too much either, mostly decimal arithmetic, IIRC.

                                                              2. 5

                                                                I would have so much respect for a language designer who just said “that’s it, it’s done.”

                                                                1. 7

                                                                  Doesn’t this describe lua?

                                                                  1. 6

                                                                    Or even more, Standard ML, which comes with a spec and not a reference implementation.

                                                                2. 4

                                                                  Isn’t one of Ruby’s goals “developer happiness”?

                                                                  It’s hard to go from this to a language spec, and well at some point you have to handle the conflicts between developers who enjoy a simple language, versus those who like to ad[oa]pt every shiny features of their week-end programming tools.

                                                                  IMHO, adding more stuff to Ruby will only make it worse, unless the core team start taking cues from Rust’s development model.

                                                                  1. 16

                                                                    you have to handle the conflicts between developers who enjoy a simple language

                                                                    Developers who enjoy a simple language would have left Ruby long ago.

                                                                    1. 4

                                                                      Ruby was never a simple language and Rails started using every niche behaviour there was. It was only capable of writing good inner DSLs to hide this.

                                                                      1. 3

                                                                        Which is why - despite being a professional Rubyist for years - I reach for a Lisp these days when coding.

                                                                        1. 1

                                                                          I think a lot did, and Ruby (MRI) is not getting simpler.

                                                                          1. 5

                                                                            Also, a lot of awesome people joined. We overemphasize leavers, because they are usually already at the top of the community.

                                                                            Ruby is also larger than ever, even if its growth is somewhat on a plateau.

                                                                        2. 13

                                                                          unless the core team start taking cues from Rust’s development model

                                                                          I think Rust is on a similar feature death march, it just hasn’t been going on for long enough to make it readily apparent.

                                                                          1. 1

                                                                            Isn’t one of Ruby’s goals “developer happiness”?

                                                                            I’ve most often heard this expressed as “principle of least surprise”.

                                                                            Kind of tough to keep to that and yet evolve the language in a meaningful way. See my response to @soc for my weak theory that major changes should just get a whole new language name.

                                                                            1. 6

                                                                              Note that Matz has himself said that the measure for surprise is his surprise.

                                                                              1. 3

                                                                                That makes a lot of sense and explains a bunch, in that it makes the decisions he made to evolve the language more cogent as his own personal sensibilities around language design evolved.

                                                                                While there’s no principle of least surprise corollary per se, I think you can certainly make comparisons to Guido with Python. He went to work at Dropbox and Google, and worked on GINORMOUS code bases where type hinting is a huge help, and was also on a type theory kick, so he evolved the language in that direction despite the pitchforks and torches carried by large chunks of the community.

                                                                          2. 4

                                                                            So I’m unsure as to whether I’d go quite as far as you do in this statement but I’d actually been thinking that this reminded me a lot of all the controversy in the Python community around some of the more tectonic language changes like the addition of type hinting in Python 3.

                                                                            I’m almost to the point where I feel like language designers who want to make tectonic changes should be honest with themselves and their audience and just change the language’s name.

                                                                            For instance, well written Python 2 and well written, idiomatic, heavily type hinted Python 3 feel very different to me and to many others fans. This isn’t necessarily a bad thing, but maybe we could suck some of the pointless “Who moved my cheese?” controversy out of the conversation and focus on what’s different and maybe better or worse instead.

                                                                            Ruby’s evolution has certainly been contentious - the syntactic sugar borrowed from Perl is part of what attracted many of us to the language initially (Yes I was a Perl guy in the 90s. So were many of us. No shame :) but when Matz realized how problematic it could be in the modern context and moved away from it, a whole lot of code broke and there was a whole lot of unhappy, even if ultimately many people agreed it was a good idea.

                                                                            1. 2

                                                                              I think I’d regard this ongoing feature creep in language as just as sleazy as those online services that keep adjusting their privacy agreement after you have signed up to collect more and more data on you.

                                                                              In the end, if language designers were honest they should probably give their “new” language a new name. I assume that the “immediate adoption” of reusing the name of an existing language is too enticing though.

                                                                              1. 4

                                                                                These languages are open source while say Github/Google/Facebook aren’t. The whole point of open source is that users have control.

                                                                                If enough people really care, they can fork it, and forks matter (XEmacs, etc.).

                                                                                I’m one of those people who doesn’t really see the value in Python 3. But it actually provides the perfect opportunity for someone to fork Python 2, because it’s stable, and it has a stable set of libraries.

                                                                                I haven’t seen very serious efforts to do this, which indicates to me that the community doesn’t care enough. (A few people have tried, to their credit, but overall the message is clear.) Lots of people will complain about things but they don’t want to put in the effort to fix them or even maintain the status quo.

                                                                                1. 2

                                                                                  I think I’d regard this ongoing feature creep in language as just as sleazy as those online services that keep adjusting their privacy agreement after you have signed up to collect more and more data on you.

                                                                                  The way you phrased this shines a light on an interesting facet of this whole discussion: The contract between a language’s designer(s) and its user community.

                                                                                  From the designers perspective, this is their bat and ball, but it seems like at least some users don’t see it that way.

                                                                                  1. 2

                                                                                    I haven’t seen very serious efforts to do this, which indicates to me that the community doesn’t care enough. (A few people have tried, to their credit, but overall the message is clear.) Lots of people will complain about things but they don’t want to put in the effort to fix them or even maintain the status quo.

                                                                                    Trick being you need to fork not just the language but the ecosystem. HUGE parts of the Python ecosystem have pointedly abandoned 2 and made incompatible changes, so everything your fork eats is frozen in time. Pretty high price to pay unless, as you say, you really, REALLY care.

                                                                              1. 8

                                                                                So you think you have a power law - well isn’t that special and the papers linked therein is still one of the things I’m glad I found early in my career. It provides some ways to avoid the mistakes described in the OP.

                                                                                1. 4

                                                                                  To me, this is the key line in that paper:

                                                                                  Ask yourself whether you really care. Maybe you don’t. A lot of the time, we think, all that’s genuine important is that the tail is heavy, and it doesn’t really matter whether it decays linearly in the log of the variable (power law) or quadratically (log-normal) or something else

                                                                                  1. 3

                                                                                    That seems irrelevant at a glance, because it’s mainly about physics where there are natural limits to things. I thought power laws where much more characteristic of processes without natural limits, like file sizes, money owned, etc. I will still dig deeper into the papers linked there, because it’s highly relevant to me, I just want to hear your thoughts on the above.

                                                                                    In part, OP seems to confirm my hypothesis: Twitter follows a power law, and Facebook only nearly does. But apparently Facebook also has a maximum connectedness of 5000! A truncated power law is obviously not a strict power law.

                                                                                    1. 1

                                                                                      All of the stuff about statistical and analysis technique is completely relevant, and using poor technique is how we ended up with the situation the OP describes.

                                                                                      1. 1

                                                                                        Page 22 of their paper describes the data sets they consider. Eyeballing it, about half are from the social sciences.

                                                                                        1. 1

                                                                                          Yes! I have started reading the paper now and it’s almost exactly what I’ve been looking for in this area!

                                                                                      2. 2

                                                                                        For other readers: the linked blog post in SteveH’s comment is by one of the authors of the paper and highlights several key takeaways. Recommended!

                                                                                      1. 6

                                                                                        I see a positive side to this, but I may be alone on that. Over the past thirty years with the internet, we’ve virtualized a lot of our interactions with the world. Sure, television, radio, and newspapers had the same effect, but it was to a lesser degree.

                                                                                        If we are entering an era now where we can’t really believe or trust images, video or even text communication (because it can be hacked and impersonated), then maybe we move toward more IRL interaction among smaller groups of people. This makes large scale coordination much harder, but it can also lead to tight bonds in small communities.

                                                                                        I don’t think this is hypothetical. We already see the tendency to opt out of the big spaces in the digital world. People don’t share as much as they used to on the large social media sites, opting instead for mastodon, Slacks, or just group message conversations that never end.

                                                                                        1. 5

                                                                                          Nassim Taleb talks about this a lot under the name “localism” (opposite of globalism, which he is a big critic of).

                                                                                          I’m having trouble finding many references outside Twitter, but these are fairly lucid:

                                                                                          https://threadreaderapp.com/thread/1071379121865932800.html

                                                                                          https://twitter.com/nntaleb/status/1038934453974790144?lang=en

                                                                                          It’s basically old-fashioned common sense: good fences make good neighbors. Values are local and relative, and that’s OK. Not everybody has to agree on everything.

                                                                                          It makes sense for some people to be “isolated” within a subculture and for other people to be bridges between subcultures. I think humans naturally work that way. The Internet has unfortunately mixed everyone together, which creates a lot of conflict.

                                                                                          1. 3

                                                                                            Yes, I’ve thought about that aspect of systems a lot and I agree with him on this. It’s good to see him taking it up. Most problems in social systems are problems aggravated by scale. We shouldn’t be surprised; the same thing is true of software.

                                                                                            Another thing to notice: In security, monocultures are risky. Instead of having one big system, it’s better to have many with less protected by each. Having a lot of local variation in human culture and governance is robust in the same way.

                                                                                            You might like this on locality too.

                                                                                            1. 2

                                                                                              Yes interesting, you’re both saying many of the same things. Policies for punishment are a great example of things that may work better locally (relatively speaking, of course).

                                                                                              And that brings to mind that my experience with policies for hiring changing from global to local at Google, as the company scaled. Without going into too much detail, about 15 years ago, there was the myth that “we hire the best” (which seems to have infected a lot of the valley). There was a meme that “the founder looks at every candidate hired”.

                                                                                              But that of course ignores the obvious problem that people who are experts in search may not be the best people to judge people who build usable GUIs, or build phone hardware, etc. Expertise, and judgement of expertise, is very much local / cultural.

                                                                                              They were trying to avoid the “local corruption” problem which is admirable. That is, the problem where a boss hires his buddy, and that buddy is useless to the rest of the company. But as the company scaled (by a couple orders of magnitude), the tradeoff changed. They allow for more local judgement when determining who to hire.


                                                                                              Another article I read this morning is about the opposite problem: extreme localism and a lack of genetic diversity causing serious diseases.

                                                                                              https://news.ycombinator.com/item?id=21666705

                                                                                              Although really they’re not opposites. It’s just that extreme localism and extreme globalism both suffer from a lack of diversity (at different scales). Although I would also add that diversity is a paradox – if every part of a system is diverse with respect to a particular dimension, then the system isn’t not diverse. Having a bunch of groups, some of which are homogeneous and some of which are heterogeneous, is more diverse. So you need both diversity and “meta-diversity” :)

                                                                                              1. 1

                                                                                                Yes, I agree. More and more my frame for systems design is ecology.

                                                                                          2. 3

                                                                                            Indeed. The trend I see is a move back towards more historical modes of being, which allow us to navigate the modern world in a way that aligns with our evolved natures. As we are becoming comfortable with them, we’re starting to bend the tools of modernity to fit us.

                                                                                          1. 5

                                                                                            Within Bostrom’s line of reasoning, the possibility of a Simulation Barrier seems to put a limit on what any local sense of a world can know about what is outside of it.

                                                                                            I think Bostrom’s argument gets around this by not requiring that we know what’s outside our world, only by what’s (conceptually) in it.

                                                                                            Bostrom proposes that simulating our current world is possible to the degree that the simulants will also be able to run simulations. If we show that such a thing is true, we have not made any statement about what is outside our world per se but simply that, due to the (in this scenario) now proven conjecture, simulated worlds that resemble ours far outnumber “real” ones and thus we are likely in a simulation.

                                                                                            The Flatland conjecture from TFA doesn’t necessarily hold, IMHO. Our universe may be simulated inside a 16 dimensional hypercube made of unimaginable material, and the Universes we simulate might be on silicon, but from the perspective of the simulants it’s the same in every way that matters (what “matters” is subjective conscious experience and a mostly-consistent shared world).

                                                                                            It’s like those Minecraft worlds that have working Turing machines in them. The “outermost” world is running on silicon and electricity but the first inner world is running on granite and gold (or whatever, I don’t actually play Minecraft).

                                                                                            Perhaps I misunderstood TFA; please correct me.

                                                                                            (Also, if you like this sort of thing, I highly suggest reading…well, anything, by Greg Egan. Permutation City might be the best start.)

                                                                                            1. 4
                                                                                              1. 2

                                                                                                Thanks for the ref and thoughts. What is TFA?

                                                                                                1. 3

                                                                                                  “The ahem Fine Article,” i.e. the linked article, by analogy with “RTFM”