1. 69

    I’m kind of speechless. This looks truly genuine, and it makes me hopeful for the Linux kernel community (and all the other open-source communities it influences!) in a way I hadn’t predicted would ever happen.

    1. 8

      I feel quite the opposite. I think it’s very sad that the reddit/twitter bandwagon of people that never actually contribute anything to open source but love to rip those that do to shreds have finally go to him.

      1. 48

        This argument is a classic to be found in all of those discussions, but doesn’t hold any water.

        • Coraline Ada, the woman who’s work the now adopted Code of Conduct is based on, is the primary author of 25 Ruby gems, regular contributor, very welcome as a speaker in the Ruby world.
        • Sage Sharp, known for their angry good-bye from the Linux kernel and outspoken critic of Linus, has been author and maintainer of the USB-3.0 implementation in the kernel. Sage also lead intern groups working on the Kernel through Outreachy.
        • Matthew Garret, also a very outspoken critic, has been maintaining kernel power management modules and is constantly working on Linux related issues ever since.

        The no-contribution Twitter crowd, right?

        The list could go on and on. Find another angle, this one insults the intelligence of everyone at the discussion table. It only works if you don’t name names, if you do, you suddenly find that these people do contribute.

        Finally, as someone managing a huge FOSS project with > 100 maintainers, I think this gatekeeping isn’t part of open standards. If your project is open and contribution is free to everyone, the barrier for criticising your projects methods and practices should be as low as the barrier for contributing anything else: as close to zero as possible. This is also important for practices to travel between projects.

        1. 7

          And very recently, Alexander Popov, no lightweight by any measure. https://lwn.net/SubscriberLink/764325/09702eb949176f55/.

          1. 1

            I’m sympathetic to Torvalds critique, if not his wording. It seems bizarre to just live with kernel code that uses uninitialized data structures and doesn’t cross check pointers and hope that some complex mechanism will ameliorate the problem.

            1. 5

              Sure, his technical arguments were probably sound, as usual, but his abuse of Popov left the latter “emotionally dead for weeks”. Popov might’ve gotten the fixes made and thus the patch committed much sooner had Linus not abused him so the project also loses.

              1. 3

                I am not convinced the patch ever became worthwhile - but I agree that Linus’s argument style was counterproductive and abusive.

        2. 23

          I think you’ve got a selection bias in which criticism you’re seeing. From my perspective, the people who I hear take the most issue with Linus’s conduct are largely people who’ve quit kernel development as a result of it, or people with many years of OSS experience (such as myself).

          1. 5

            I’m not an advocate of the absurdly excessive personal attacks for which Linus is known but at the same time I think quitting kernel development because of those personal attacks shows a lack of awareness of how OSS and specifically Linux operates. The reality is that Linux is Linus’s project and he’s incentivized to take your patches to make his project better, not to build a cooperative community. The community, if one could call it that, is incidental to Linus’s incentives.

            If a person quits because of Linus’s behavior, it signals to me that their motivation had something to do with the approval of others and unfortunately those motivations are incompatible with Linux’s development process. Linus’s insults are just the tip of the iceberg when it comes to all the other problems that will arise due to the mismatched expectations. A famous example was when Ingo Molnar rewrote Con Konlivas’s CFS, or the multiple times grsecurity’s patches were rewritten by others.

            Linus basically doesn’t owe anyone anything, and it’s not because he’s a jerk (though maybe he is), it’s because of the emergent social phenomena around OSS. Similarly, no one owes Linus anything. Many actors out there are using Linux to facilitate their billions of revenue and not paying Linus anything. If you write code and put it out there, there is no obligation that what you want to happen with it will happen, and it’s not unlikely that what happens with it will hurt your ego. If someone quits kernel development because of Linus’s behavior, they really should reexamine why they want to write OSS code in the first place and whether or not OSS development is the best way to reach their goals.

            All that said I don’t necessarily disagree with Linus’s recent decision. It shows a conscious effort on his part to change the strategy used to sustain the project. I’m only criticizing those who may have mismatched expectations of the potential outcomes in OSS work.

            1. 3

              The reality is that Linux is Linus’s project and he’s incentivized to take your patches to make his project better, not to build a cooperative community.

              Linus is an employee of the Linux Foundations, a nonprofit corporation with stakeholders like Red Hat, Google, and Intel, and he owes his employers their money’s worth as much as anybody else who works for hire.

              I would agree with you if this was still the Linux that wasn’t going to become a big thing like Hurd. But Linus chose to remain the project lead even as the job became less technical and more political, and when they decided to pay him to work on it full-time, he accepted. There’s money, there’s a trademark, and there’s inertia undermining any claim that the situation is totally voluntary and that nobody owes anybody anything.

              And that’s before we even consider the fact that there is a huge and informal web of soft obligations because human beings don’t work the way you say they do.

              1. 1

                Linus owns the trademark and even if he didn’t work for the Linux Foundation he would still be the maintainer of Linux. The entire development structure is centered on him. No company could successfully and sustainably fork Linux if Linus decided to operate against their goals.

                I made no claim as to how human beings work. My claim is simply that OSS is essentially a free-for-all and those that aren’t acutely aware of that and incorrectly treat OSS like a traditional organization that has inbuilt obligations to their well-being will be inevitably burned. Linux is not a cathedral, it’s a bazaar. http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/

          2. 6

            Are you talking about the crowd that is currently lambasting him for “yielding to the SJWs”?

            1. 9

              No I’m talking about the much larger crowd of people applauding him for ‘moderating himself’ and other such nonsense. I’m talking about the huge crowd of people that act like every message he sends is a scathing personal attack on someone for indenting something incorrectly.

              1. 11

                Well, perhaps it’s just that our perception of the (ultimately utterly pointless) social media reactions is colored by our preconceptions. I’ve mostly seen people praise and defend him.

                I’m not sure what the resistance is about. It seems to me that all these CoCs are just a way of codifying “don’t be an asshole”, and it’s perplexing that people get so angry about it. But it cannot be that, right? Surely you and others are not against “don’t be an asshole” as a work ethic?

                If not that, then what? I’ve listened to Sam Harris quite a lot recently, so I have some feeling about the problem of identity politics et al, especially in the US. I’m just still not exactly convinced, because I don’t see it happening. Perhaps it’s not that big a problem in Europe?

                1. 10

                  I’m not sure what the resistance is about. It seems to me that all these CoCs are just a way of codifying “don’t be an asshole”, and it’s perplexing that people get so angry about it. But it cannot be that, right? Surely you and others are not against “don’t be an asshole” as a work ethic?

                  I think a lot of this is related to the “hacker identity” which is strongly tied up with counterculture, stepping outside/dismissing/rebelling against social conventions. For example, in the genre of cyberpunk (which I’d consider a hacker’s dream world, even if it’s a dystopia) there is almost no law and order or even anarchy, everyone does their own thing and your skill is the only thing that counts.

                  So I think a lot of the reaction is “who are you to come in and police the way we’ve always been doing things?”. I suppose a lot of these people claiming are seen as outside intruders enforcing their “outside” morals on the hacker “community” at alrge (if there is even such a thing). For this reason I think it’s important that people like Linus, who are truly regarded as being “from” the community, are signaling that change needs to come. We’re all human, not machines.

                  1. 8

                    I think there are two big issues. One is that “hacker culture” has historically attracted people with social issues. I know that it appealed to me as an unpopular, nerdy, shy kid: I didn’t have a lot of outlets, so computers and the Internet helped me form my personality. That’s great; I don’t know where I’d be without it. That leads into the second issue, though, which is that it’s utterly dismissive of all the traditions we call the “humanities.” I am lucky, I think, in that I’ve always been “into” literature, philosophy, theology, and so on, and could balance my computer-nerddom with those fields. (In fact, my only college degree is a BA in English.) Without that tempering influence, it’s very easy to get caught up in an aspiration-to-Spock sort of behavioral cycle.

                  2. 5

                    Surely you and others are not against “don’t be an asshole” as a work ethic?

                    Who defines what an ‘asshole’ is?

                    My problem is that Codes of Conduct explicitly and implicitly privelege some groups but not others for protection, and that even when de jure they protect some groups, de facto they do not.

                    Moreover, I find the idea that we should generally value social etiquette more than technical excellence to be troublesome. Are there people who are so socially rude that they should be shunned? Sure. But should shunning be our go-to? I don’t think so.

                    1. 5

                      I find the idea that we should generally value social etiquette more than technical excellence to be troublesome.

                      Is that what’s actually happening? I thought this was about valuing both.

                    2. 2

                      It seems to me that all these CoCs are just a way of codifying “don’t be an asshole”, and it’s perplexing that people get so angry about it.

                      I can’t speak for all opponents, but for me at least I disagree with it being “codified”, or rather formalized what essentially isn’t formal. People contributing to software won’t just suddenly become good people because there is a CoC. It’s like wanting to prevent a husband from abusing his wife by requiring him to hold up his hands whenever they are in the same room.

                      What I usually fear from these kinds of things is that they one the one hand subvert genuine communities, customs and practices, while possibly encouraging the harmful parts of these communities to discreetly and dishonestly live on, much harder to fight or criticize. Essentially it’s taking a passive stance towards real issues people should actively and collectively oppose – say harassment or insulting people.

                      Turning issues of civility and decency into rules, especially if these are too vague, always bears the danger of being on the one hand abused by those trying to evade then (“oh, that’s not what I meant”) and on the other hand by those enforcing them (“rules are rules”)…

                      But then again, I’m not a Linux contributer (although I would be honored to managed to get there one day), and I can just hope it turns out well for them, and the issue doesn’t get instrumentalised.

                      1. 4

                        People contributing to software won’t just suddenly become good people because there is a CoC. It’s like wanting to prevent a husband from abusing his wife by requiring him to hold up his hands whenever they are in the same room.

                        I find that analogy deeply flawed (and somewhat bizarre). The CoC doesn’t require anyone to do anything as ridiculous as hold their hands in the air while in the same room as their wife.

                        Essentially it’s taking a passive stance towards real issues people should actively and collectively oppose – say harassment or insulting people.

                        So you’re saying that rather than having a CoC it would be better if, every time Linus or some other kernel developer was offensive, other developers stepped in and told them off? How do you make that happen? Do you not think the CoC is a step towards making that happen?

                        1. 1

                          The CoC doesn’t require anyone to do anything as ridiculous as hold their hands in the air while in the same room as their wife

                          Of course not literally, but for many people they have to adjust their own behavior in unusual (and often enough unknown) ways. I’ve experienced communities on the Internet which banned their users for using any phrase that has to do with eyesight disabilities (e.g “I can’t see what’s wrong”), and most people simply just didn’t know about this.

                          And the point of my analogy still remains, the issue with the husband beating his wife isn’t that he can but that he wants to, consciously or unconsciously. Just saying “Don’t” won’t help solve the problems in the long term, just suppresses them.

                          So you’re saying that rather than having a CoC it would be better if, every time Linus or some other kernel developer was offensive, other developers stepped in and told them off?

                          The way I see it, this would obviously be better. This means that the community has a strong sense of internal solidarity and openness that they manage to enforce by their own means. Essentially this means that the goals of the CoC come naturally and authentically to the members.

                          How do you make that happen? Do you not think the CoC is a step towards making that happen?

                          I really can’t say, nor do I know. Nothing I’m saying is authoritative or really substantial, I’m just trying to give a more reasonable criticism of codes of conducts than certain other people in this thread.

                          1. 7

                            Just saying “Don’t” won’t help solve the problems in the long term, just suppresses them.

                            Suppressing the problem does help, though. I don’t want to continue the husband/wife analogy as I find it distasteful, but once you establish norms of good (or at least better) behaviour, people do adjust. And by having the CoC, even though it doesn’t cover every case, it sets up some basic guidelines about what will and won’t be accepted - so you remove the excuse of “no this is fine, everyone talks this way, deal with it” from the outset. This alone can make people who otherwise feel vulnerable, and/or belong to marginalised groups etc, to feel more comfortable.

                            I’d prefer we didn’t need CoCs, but clearly we need something to make development groups less unpleasant to participate in. And even if you don’t think they’re effective, I can’t see how they hurt.

                            1. 1

                              I guess we just have different views on the question if issues are to be addressed or suppressed (in my eyes willfully ignored). But that’s fine. There’s more I could say, but I won’t for the sake of brevity, except that a CoC should (imo) be always the last resort when everything else has failed. A kind of martial law. Since they aren’t just guidelines or tips, but can justify very drastic behavior.

                              1. 2

                                I guess we just have different views on the question if issues are to be addressed or suppressed

                                I think that’s a mis-characterization. We both seem to think that offensive behaviour should be addressed by other people stepping in as appropriate, but I see the CoC as prompting this to happen, whereas you are saying that you don’t know how to make it happen and that the existence of a CoC will make people suppress their bad behaviour and that this is bad (for some reason which I’m not clear on).

                                I would say that the existence of a CoC may make people suppress an urge to spout off an offensive rant against another developer, and that’s a good thing. I also think that it lends a stronger position to anyone who does step in when offensive behaviour does occur (despite the existence of the CoC). I think it’s more likely that, rather than completely suppressing offensive behaviour, the CoC causes more people to respond and challenge such behaviour, which is the outcome that we both seem to think is ideal (and which leads to less of the behaviour occurring in future). Now if you disagree that the CoC will lead to that happening, that’s fine, but:

                                A kind of martial law. Since they aren’t just guidelines or tips, but can justify very drastic behavior.

                                That’s just ridiculous. A CoC is nothing like martial law. The only behaviour it justifies is that of stepping in to control other, offensive, behaviour:

                                … to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.

                                Maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project’s leadership.

                                These are the only behaviours that are actually “justified”, to use your word, rather than expressly prohibited, by the CoC. I think saying these are “drastic” and comparing to martial law is clearly an immense level of exaggeration.

                                1. 1

                                  but I see the CoC as prompting this to happen, whereas you are saying that you don’t know how to make it happen and that the existence of a CoC will make people suppress their bad behaviour and that this is bad (for some reason which I’m not clear on).

                                  I don’t want this to go on for too long, so I’ll just quickly clarify my two main points:

                                  • banning obvious misbehavior won’t change people, it will at best make them be quiet, at worst invite them to a passive aggressive game of trying to evade the rules while still trying to be mean or hurtful.
                                  • a CoC is a principally passive stance, where active action is necessary trying to address and resolve issues. Suppressing discussion where necessary may (again) lead to a overall harmful atmosphere, especially towards those not used to these, usually American, norms (because of different backgrounds, cultures, standards).

                                  So it’s not that it’s irrelevant, but that it may go wrong, specifically when applied to quickly or without introduction. But again, maybe not.

                                  A CoC is nothing like martial law.

                                  You’re right, I should have put “martial law” in quotes. My point is that it shouldn’t be a permanent solution, but as you said try to push a community in a better direction, “stabilize” a situation so to speak. Even here between us we see how different background, invoke different images and connotations with examples as simple as metaphors.

                                  1. 1

                                    You’re right, I should have put “martial law” in quotes. My point is that it shouldn’t be a permanent solution

                                    Ok, I understand now what you meant.

                                    banning obvious misbehavior won’t change people

                                    I am not sure that I agree with this. For one thing, “obvious misbehaviour” may be generally understood but is not obvious to everyone. You will see many people arguing that Linus’ rants are perfectly acceptable, for various reasons. By making a clear statement that “behaviour X is wrong” you are removing the doubt.

                                    at worst invite them to a passive aggressive game of trying to evade the rules while still trying to be mean or hurtful

                                    I believe that the Contributors’ Covenant deliberately avoids trying to produce an exhaustive list of disallowed behaviour, precisely so that the rules can’t be avoided in this way. Yes, there will always be some problematic individuals who push the limits regardless. But is it better that they are at least constrained in this way, rather than being able to be openly offensive? I think so. And I think this anyway is somewhat irrelevant to the issue of a CoC; even if you generally enforce good behaviour without a CoC, there can always be trouble-makers who test the limits.

                                    a CoC is a principally passive stance, where active action is necessary trying to address and resolve issues. Suppressing discussion where necessary may (again) lead to a overall harmful atmosphere

                                    A CoC is just a document, so it is passive in that sense, yes. But it doesn’t prevent any affirmative action - it encourages it.

                                    What this seems to boil down to, if I’m reading you correctly, is that you’re saying that it’s better to allow offensive behaviour to occur - and then to have the perpetrator reprimanded - than it is to document what is considered offensive behaviour so that it will be deliberately avoided. I cannot see how that is better. If someone’s response to a rule is to try to find underhanded ways to work around that rule, what difference does it make whether the rule is written down or enforced only by-the-way?

                                    1. 1

                                      For one thing, “obvious misbehaviour” may be generally understood but is not obvious to everyone. You will see many people arguing that Linus’ rants are perfectly acceptable, for various reasons.

                                      Ok, but these people would say these rants are good because they are brutal or some kind of “not nice”. Nobody, or at least nobody I’ve seen, claims that Linus is always “kind” and “civil” and people are just misunderstanding him.

                                      Yes, there will always be some problematic individuals who push the limits regardless. But is it better that they are at least constrained in this way, rather than being able to be openly offensive? I think so. And I think this anyway is somewhat irrelevant to the issue of a CoC; even if you generally enforce good behaviour without a CoC, there can always be trouble-makers who test the limits.

                                      I get your point. I still belive there to be a difference between the two cases – maybe not immediately visible, but on a more symbolic level. In the first case the trouble-maker stands in conflict with the (official, formal) document and will try to defend his or her behavior on semantic issues and misreadings, while in the second case the conflict is more direct with the “community”. This is not to say that no rules should be made or no behavior should be sanctioned – just that in the long term this should be a internal and organic (eg. self-made (maybe even unofficial) “community guidelines”, that serve to introduce new members) process not ordained from above.

                                      you’re saying that it’s better to allow offensive behaviour to occur - and then to have the perpetrator reprimanded - than it is to document what is considered offensive behaviour so that it will be deliberately avoided

                                      I wouln’t phrase it that way, since to me many of these terms are too vague. Anyways, in my eyes this seems to be unrelated to CoC: from my experience most people encounter a CoC not by reading it before they do anything, but by people using it as “legislation” – they make a mistake and are then banned and excluded – often enough permanently because it’s just the easiest thing for moderators to do. Either way, the “offensive act” has taken place – with a quick and formal process leading to confusion on the one side and a honest attempt to point out what a person has done (on a case-to-case basis) in the other.

                                      1. 1

                                        For one thing, “obvious misbehaviour” may be generally understood but is not obvious to everyone. You will see many people arguing that Linus’ rants are perfectly acceptable, for various reasons.

                                        Ok, but these people would say these rants are good because they are brutal or some kind of “not nice”. Nobody, or at least nobody I’ve seen, claims that Linus is always “kind” and “civil” and people are just misunderstanding him.

                                        That’s my point. The CoC makes it clear that we are expected to be civil. Therefore if anyone goes on an uncivil rant, you can’t claim that it’s ok because [whatever reason], as it’s been explicitly stated that it’s not acceptable. You’re making the community rules about what certain unacceptable behaviour explicit, and removing the inevitable and fruitless debates over whether it’s ok to swear at someone for submitting a bad patch etc.

                                        Whereas now, people don’t understand that it’s not ok to be uncivil.

                                        Either way, the “offensive act” has taken place – with a quick and formal process leading to confusion on the one side and a honest attempt to point out what a person has done (on a case-to-case basis) in the other.

                                        Other than anecdotal examples where it may have been the case with some unknown number of other projects (links to relevant mailing list posts would be interesting to see), I don’t see any evidence that a CoC will necessarily lead to confusion nor to people being wantonly banned from participating for one-off infractions; I certainly don’t think it’s designed or intended for that.

                            2. 2

                              I’ve experienced communities on the Internet which banned their users for using any phrase that has to do with eyesight disabilities (e.g “I can’t see what’s wrong”), and most people simply just didn’t know about this.

                              As a visually impaired person with several friends who are totally blind, this strikes me as ridiculous. I have no problem with such everyday use of “see” and related words. I think my blind friends would agree.

                      2. 9

                        What’s so bad about people in positions of power to stop being abusive? Isn’t it something to applaud?

                    3. 2

                      It’s possible the CoC, the heart-warming public statement and Linus taking a time-out is a double-blind.

                      Well he could actually be a little burnt out as well, which is also totally fine.

                      I totally support him which ever way the pendulum falls.

                  1. 8

                    This is the end result of the Internet on practically any creative endeavor. You can see it in books, movies, music, wherever you look: too much supply, not enough demand to make a living wage. Ironically, this means that games are finally proven to be art: you can’t make any money making them, just like any other art form! Yay!

                    More seriously, it also indicates that “commodity games” are kind of… done. When gaming was characterized by the seemingly endless upgrade treadmill of the 80s, 90s, and early 00s, the “latest and greatest” mattered a lot more than it does now. Super Mario Bros. was a vast improvement over its predecessors. Super Mario Bros. 3 was an improvement over that. Super Mario World was still larger, with more features and better graphics. Mario 64 was 3D, which had never been done… and then the treadmill slowed down a little. Sunshine had better graphics. Galaxy and Odyssey… have better graphics.

                    In the indie world, it’s even worse. In 2018, I can either spend $15 on a new (probably “early access”) roguelike with pixel graphics or I can play one of the half dozen or so roguelikes with pixel graphics that I’ve gotten on sale in the past but never beaten. Platformers are a dime a dozen, almost literally in some bundles.

                    This is the future of gaming in a nutshell:

                    1-16 of over 5,000 results for Kindle Store : Kindle eBooks : Science Fiction & Fantasy : Fantasy : Last 30 days

                    There’s a reason the “starving artist” is a trope.

                    1. 2

                      If this article is to be believed, the desired future of commodity games is an app store’s daily login bonus stomping on a gacha roller’s face, forever

                    1. 6

                      Like with voting, this is a scenario where adding technology, esp Internet-enabled, is just a bad idea. The less tech (and potential attacks) the better. The best ways to do espionage were those in the Cold War with people, drops, and ways of hiding stuff in other stuff. If distance is a problem, then burst radio was the best way to do it. There’s still spies being caught in the U.S. using radio. It’s probably a safe route for Chinese spies if the NSA and its wireless partners still haven’t clamped down on it domestically.

                      Additionally, they could just put the files encrypted in online storage from a random, hot spot. Then, send a coded version of the link via the shortwave, hidden message in mail, or drop.

                      1. 5

                        I couldn’t help but compare this to the Russian(?) operatives who were communicating via coded comments on a particular Britney Spears instagram post.

                        1. 4

                          This reminded me of the number stations, broadcast on short wave. Its reasonable for any civilian to have a radio and the broadcasts can be encoded with any book freely available from a library.

                          When it comes to keeping hidden, low tech is best tech.

                          1. 4

                            the broadcasts can be encoded with any book freely available from a library

                            Running key ciphers are bad tradecraft, use one time pads ;)

                          2. 2

                            Internet monitoring has gotten terrifyingly powerful - although it’s worth noting that the article doesn’t say that the Chinese found the communication channel, only that they escalated their access a lot once they’d found the channel in the first place - but radio monitoring has also advanced, with cheap and powerful software-/FPGA-defined radio and very powerful post-processing. How sure are you that radio is a good option?

                            1. 2

                              @c12 has the right idea. There’s both burst transmission and number stations being used by spies in the US. Goes back to Cold War at least. Watching the prosecutions, we rarely see anyone get caught with that method described despite NSA operating the largest array of SIGINT collection in existence. That means they’re letting spies they know about continue to operate (eg poisoned intel) or they can’t find them.

                              Im thinking it’s the latter. If it’s analog radio, they also can’t remotely hack it like they might try with a cellphone or computer.

                          1. 3

                            It’s worth noting that some people consider inheriting from Exception rather than StandardError to be bad style. Because catching Exception includes things like ScriptError::SyntaxError and SignalException::Interrupt (^C), the advice seems to be to catch StandardError instead if you don’t know what exceptions to expect and thus your custom exception classes would need to inherit from StandardError to match that.

                            1. 3

                              Yep, and some common libraries (looking at you, nokogiri) don’t follow this advice and instead throw things like SyntaxError that should be limited to the Ruby parser itself.

                              1. 0

                                Actually, It’s better to create a custom error that makes sense within the execution context.

                                Anyway, Thank you for the precision. :-)

                                But the purpose of my articles are just to explain how it works, not how to use it.

                                I believe in the fact that developers are not robots and they’ll learn all the aspects of a notion by using it, repeatedly. Instead of telling them what’s good or not, I prefer let them figure it out by themselves.

                                I prefer put all of my energy on explaining the main concept and let the 5% of edge-cases on side.

                                But, again, thanks for your precious feedback :-)

                              1. 5

                                The idea that it’s the “final nail in the coffin” implies that anyone who makes decisions will take it to heart, make the decision not to buy the (cheaper!) open plan furniture, and allow people to have privacy at work. This has all been studied and understood before, as far back as IBM in the 1970s. It should be obvious to anyone who’s worked both in a private setting (remotely or otherwise) and an open-plan office.

                                What will happen instead is that this article will be disregarded and forgotten, and corporations will keep buying tighter and tighter configurations of chairs and tables to save a penny on real estate.

                                1. 4

                                  I use the cheapest mechanical keyboard I could find with Cherry MX Blue switches and O-rings. It’s a Monoprice-branded thing that cost me $50 in 2014. They don’t seem to carry it anymore, but I suspect any of the sub-$50 mechanical keyboards you can find on Amazon are basically the same. Prior to this, I used a Model M, but I spilled tea on it and it died.

                                  I use mechanical keyboards because membrane keyboards cause me wrist pain and I can’t type accurately on chiclet keyboards (probably due to the keys themselves having no contours). I have never used (nor wanted) any macro features on a keyboard. The most important thing is that you find one that fits your preferences and comfort; features don’t matter at all if the keyboard causes you pain.

                                  1. 7

                                    This is not a good idea. I have looked for documentation on many things that I needed to learn, as you do, only to find that the tutorials/introductory docs didn’t match any of the stated goals or aims of the API. Nothing quite as annoying as realizing the document you’re reading fundamentally misunderstands the thing it’s trying to document.

                                    1. 22

                                      That’s a criminally low rate per hour.

                                      1. 15

                                        Yeah I honestly think it should be illegal for employers to discriminate against felons. How the hell are they supposed to rehabilitate if they can’t work.

                                        1. 16

                                          I’ve heard the sex offender registry in Australia isn’t public; it can only be used for certain jobs (schools, medical clinics, etc.) and certain housing.

                                          Criminal records and sex offender registries have a lot to do with labeling theory. It’s how countries like the US keep and grow a lower class. It’s pretty sad and really needs to chance.

                                          It’s interesting how a little over 100 years ago, you really had no record. If you fucked up bad, and escaped, and fled to a far away place and could speak the language, you could start again. Today you have a permanent identity that stays with you until you die.

                                          1. 8

                                            It’s true. Many moons ago, I worked (as a contractor) on the project that developed (then called) ANCOR system.

                                            Access was highly restricted - only select officers, only using a network that’s granted access, etc.

                                            I never really saw production data, but I’ve heard from others on the project that it’s not that uncommon for the people on the register to be nothing more than a teenage boy who sleeps with his [willing] teenage girlfriend perhaps 18 and 16 or so?) and the parent(s) of the girl press charges against the boy.

                                            Sure, the law should change to prevent those sort of cases, but things like Child Offender Registers (that’s the COR in ANCOR) also need to err on the side of caution when it comes to what information is made public.

                                            Then again, Australia also has sane gun laws (that doesn’t mean guns are outright banned) and a health care system that actually works, so the sanity of this should hardly be surprising.

                                            1. 2

                                              When I lived in Melbourne, there was a gun shop at the end of my street (near the Vic Market). You can own guns in Australia; you just need to register and have a reason (sport and pests are valid reasons, defense is not). I think you’re require to own a safe and store things in a certain way.

                                              Oddly enough in New Zealand, you cannot check a gun on a plane if you’re going to a shooting competition, but you can send it via courier. O_o I know a person who would just drive to Auckland instead of fly, so she didn’t have to ship her gun to a store up there. (Technically you’re not suppose to leave your car ever while transporting them, even when you get gas, but .. meh).

                                              I personally think most of the US gun laws are kept the way they are because the gun industry makes a ton of money in guns smuggled into South/Central America. I wrote about it here:

                                              https://fightthefuture.org/article/america-and-the-mexican-drug-trade/

                                            2. 4

                                              it can only be used for certain jobs (schools, medical clinics, etc.) and certain housing.

                                              Never heard of that. At a glance, seems like a good compromise.

                                            3. 8

                                              The label “felon” applies very broadly, from murder, to blackmail, and drug related charges. So, it’s especially heinous when an application is discarded because the felon checkbox is checked, but the crime was “intent to distribute marijuana.”

                                              1. 8

                                                Right but also heinous because felons have no real path the rehabilitation. It’s frankly cruel and unconscionable to let someone live totally isolated from society while having to live in it. Our prison system is wretched but it’s also wretched for us to treat them like criminals after they’ve done their time.

                                                1. 3

                                                  This.

                                                  If our courts didn’t require that felons wear a Scarlett letter for the rest of their life, this problem wouldn’t be nearly so wretched. The fact that no process exists to prove you’ve been rehabilitated*, and thus, eventually “timing out” the Scarlett letter is the crime.

                                                  *: in some cases, of course.

                                                2. 2

                                                  There are a lot of felonies that are even worse than that. I recommend the Twitter A Crime a Day.

                                                  1. 1

                                                    I think the real question becomes “how / how often are these laws charged, and convicted?” But, yes, your point stands. :)

                                            1. 2

                                              asthasr, you beat me to it. I was going to submit it with this comment from jimmie on Hacker News. It’s one of few times I thought about just submitting the HN comment itself.

                                              1. 3

                                                I like this from that thread:

                                                I bet every relatively complex program that ever tried to display Vietnamese chacters had to do something wonky at some point.

                                                They still have to… even with Unicode, fonts are often “shaky” in their support of Vietnamese characters, so, for example, Đường Đồng Khởi may render in some fonts with the tone marks as separate characters altogether. The dominant form of Vietnamese input on Windows is a third-party program (Unikey), and the input system on Linux likes to crash every few minutes when it’s being used…

                                              1. 11

                                                Lots of other things to comment on but I firmly think interfaces-as-structural-types is one of Go’s greatest strengths. To put it in the “bad” group is upsetting and kind of made me discount the rest of the article.

                                                1. 6

                                                  I think it’s a philosophical difference:

                                                  Some developers write code to document to coworkers what they are doing, and some developers just want things to compile with the least effort possible.

                                                  1. 2

                                                    It’s not a matter of least effort. Go is one of the first languages I know of that was primarily designed for large teams of engineers instead of individuals. Heavy focus on compile time, gofmt, not allowing compilation with unused variables, etc, all directly stem from this approach. Structural typing specifically reduces cross-team friction. Go will often make decisions that incur individual overhead to reduce overall team overhead

                                                    1. 5

                                                      Not sure I agree on this.

                                                      Compilation is not particularly fast, even compared to more more modern languages like Algol, its dependency management is a disaster, it’s error handling ignores the last few decades of lessons learned and the amount of code duplication it forces upon developers makes it hard to maintain.

                                                      I think it does well in terms of helping Google’s requirements of having all code in a large mono-repo, and enabling people who have no practical experience to produce code.

                                                      1. 2

                                                        Whether or not they succeeded at being fast wasn’t my point (though my position is they did succeed). My point is the kinds of things they emphasized in language design. Russ Cox argues that compilation speed is one of the reasons they don’t have generics, for instance.

                                                        Dependency management doesn’t matter with large teams in a mono repo, yeah, and the code duplication to me felt like it would be an enormous issue when I started but in practice, half a million lines of code later, it doesn’t come up nearly as much as you’d think.

                                                        1. 2

                                                          Compilation doesn’t have to be slow just because generics are involved, the author of D demonstrated that fairly well. I think this is rather an issue of generics not having been invented at Bell Labs (or decent error handling in this regard).

                                                          I’m not sure why “dependency management doesn’t matter if you are a Google employee” should be a convincing argument for programming-in-the-large for the millions of non-Googlers out there.

                                                      2. 2

                                                        Structural typing specifically reduces cross-team friction.

                                                        Can you talk about how structural typing accomplishes this?

                                                        EDIT: Ah, I see you answered this in another thread.

                                                    2. 3

                                                      Languages are funny. I’d consider defer to be a bad idea elevated to a language feature, but it’s in the “good” group 😀

                                                      1. 2

                                                        Can you explain why you like this idea?

                                                        1. 4

                                                          Sure! Let’s say someone writes a library you use frequently but writes it such that it does not explicitly implement any interfaces, as the author of the above post prefers. Maybe you use a library called Beep like this:

                                                          type Beeper1 struct { ... }
                                                          func NewBeeper1() *Beeper1 { ... }
                                                          func (b *Beeper1) Beep() { ... }
                                                          

                                                          You are writing your library, but want to support multiple implementations of Beepers. Maybe there’s another beeper (for a test, or another library, or something else) that also has a Beep() method. So you write your code to just expect

                                                          type Beeper interface {
                                                            Beep()
                                                          }
                                                          

                                                          Now you can use the third party code, your code, your test code, etc, without having to change the third party code upstream to implement your interface.

                                                          This is a super contrived example, but as your codebase and team grows larger, this becomes incredibly useful for reducing friction in having teams of engineers work together with minimal stepping on each other’s toes.

                                                          Ultimately, I describe Go’s structural typing system to Python programmers like the static typing equivalent of Python’s “duck typing” principle, which is, if it looks like a duck and quacks like a duck, just treat it like a duck. Coming from statically typed languages that require you to list what interfaces a concrete instance implement, Go not requiring that dance felt like a huge reduction in friction to me.

                                                          1. 2

                                                            I guess, to me, it feels like a strictly worse approach than what Rust has with traits, or Haskell with typeclasses, because there’s no explicit guarantee that a “Beeper” is actually abiding by the contract of the “Beeper” interface. It could have a “Beep” method that actually nukes Vienna. There’s friction to implementing a trait or typeclass for a new type, but there’s also value in it. If I have explicitly implemented a trait, there’s documentation of the type’s usage in that context as well as of its conformance with the interface.

                                                            1. 3

                                                              A frequent pattern in Go to get some of that functionality if you want it is to write something like

                                                              var _ InterfaceName = (*ConcreteType)(nil)
                                                              

                                                              which simply adds a compile time assertion that ConcreteType does indeed implement InterfaceName

                                                              Certainly does nothing to constrain the behavior, but I’m super happy with that (optional) middle ground

                                                              1. 3

                                                                There exists a spectrum: let’s say that on one extreme, it’s maximum programmer friction with minimum risk of mis-use; and on the other extreme, minimum programmer friction with maximum risk of mis-use. Go puts a marker down closer to the latter extreme, judging friction to be a worse evil than risk for their context, and providing some affordances (like the one-liner jtolds mentions) to mitigate some of those risks via convention.

                                                                I think no position on the spectrum is “strictly worse” than any other. It is a question of trade-offs to satisfy particular programming contexts or requirements. I think this is the same for any technical decisionmaking.

                                                                Go makes a lot of decisions this way. (Not all, and there are warts for sure — but many.) I think it is a nice and refreshing change from where most languages (like Rust) decide to land, and I think Go’s success in the market proves it is a viable, or maybe even preferable, compromise-point for many users.

                                                        1. 4

                                                          I accidentally destroyed my Twitter notifications with a Tweet in response to this. The explanation is a good one. I think the lede is a little buried in the conclusion, though:

                                                          To understand what “monoid” means practically, we look at examples. But we can’t get lost in the examples or anchored to any one; we always have to come back to the definition, and the study of the particular properties that all of the examples share.

                                                          This is the basic issue. A big piece of the disconnect between languages like Haskell (and Idris, and so on) is that you can think of them at the abstract definition level. You can’t, in most languages, because there are no guarantees. A Python or Java class might look like something (a pattern), but there’s no way you can actually reason about it at a higher level with the certainty necessary to trust your reasoning. That’s why so many OO patterns and guidelines are either extremely fuzzy (like the “Single Responsibility Principle”) or so astoundingly arbitrary (“Don’t write a method longer than five lines”).

                                                          1. 2

                                                            “Thanks! I’ve been meaning to watch that, but it fell out of short-term memory. As for monoids, they’re easier to grok than monads. Set + Binary Operation + Unit Value = Monoid. (Integers, +, 0). (Integers, *, 1). (Lists, ++, []). (Bools, &&, True). (Bools, ||, False).”

                                                            The original article opened with pipes which was promising then lost me right at monoids. Matter of fact, it looked kind of like that mathematical definition of monads that people joke about. Your version makes more sense to me since you show several different examples right after a short definition. Well, now I know what they look like. Why they matter or what I’d do with them will be the next thing to learn.

                                                            I think that this stuff is all done in Haskell makes that a bit harder for we outsiders since it’s two sets of alien concepts to learn. Some things Haskellers do map pretty well back to imperative or OOP languages but a lot don’t.

                                                            1. 3

                                                              To understand why monoids matter is actually a good introduction to why “category theoretic” constructs matter overall: they describe a “shape” that you can see in a lot of different contexts. Monoids in particular describe a type of “shape” that is composable, that you can treat the same after the composition as you did beforehand. So, for example, imagine a Sum. This can represent integers, with addition, and zero as the identity element. Every addition operation produces another Sum, which can be further operated upon without ever changing the type of the data. 3 + 7 + 9 + 16 + 0 + 0 + 5 is just as much an integer as 40. Similarly with [] ++ [7, 8] ++ [16] ++ [] ++ [4] and [7, 8, 16, 4] for List.

                                                              In terms of Haskell specifics, this shape allows the definition of a monoid typeclass that contains the necessary definitions to define a monoid. In Haskell the two functions are called mempty for the “identity element” (like 0 in the Sum above, or [] in the List above) and mappend for the “operation” part (like + or ++ above). mappend also has an infix operator synonym, <>. Thus, we could write the sum above as:

                                                              >>> 3 <> 7 <> 9 <> 16 <> mempty <> mempty <> 5 :: Sum Int
                                                              Sum {getSum = 40}
                                                              

                                                              and the list as:

                                                              >>> mempty <> [7, 8] <> [16] <> mempty <> [4]
                                                              [7, 8, 16, 4]
                                                              

                                                              Note that you don’t have to specify the type at all in the latter, because it’s unambiguous: you don’t need to know the inner type, and lists’ monoid instance uses [] and ++ without ambiguity, whereas integers have a lot of possible monoid instances!

                                                              The treatment of these operations as genuinely isomorphic allows the creation of even more general tools. There are packages called Data.Monoid.Split and Data.Monoid.Cut, for example, that keep track of different parts of the “construction” of the overall monoidal result. Foldable is a core typeclass that wraps anything that can be “folded” (collections), and so on.

                                                              1. 2

                                                                Thanks for the explanation. Added it to bookmarks. :)

                                                                I think I’m getting the first half of it. The composability reminds me of algebraic laws and structuring on functions I’ve seen in Cleanroom and Haskell. What I’ve read indicate that let people do things like substitution or changing order since the algebraic structure allows for that. Moving those numbers or list elements around in my head where they preserve the type looks similar.

                                                                The second half appear to be abstract operations on these concrete things. I don’t have an intuition for that yet since I don’t see the abstract operations doing concrete things on the concrete examples you gave me. Do you have two or three different examples of operations on those numbers and list elements that visually illustrate what you would do with the monoid? Or why it would be worse without one with common, alternative structure? Like the monads, I suspect this stuff gets more clear the more examples people see of the pattern.

                                                                1. 2

                                                                  Monoids are not about moving around numbers or elements. In fact, ultimately, the underlying structure is lost unless you use special instances that keep track of structure. The purpose of a monoid, ultimately, is that it is the same after its combination has taken place. Add two numbers, and you’ve got a number. Append two lists, and you’ve got a list. Superimpose one SVG drawing on another, and you have an SVG drawing. Stick two sorting strategies together, and you’ve got a sorting strategy.

                                                                  Actually, let’s look at that. Consider a list of strings.

                                                                  >>> let ss = ["banana", "tomato", "cherry", "cucumber", "dragonfruit", "potato", "mango", "strawberry", "blueberry", "grape"]
                                                                  

                                                                  We can sort it alphabetically using the compare function…

                                                                  >>> sortBy compare ss
                                                                  ["banana","blueberry","cherry","cucumber","dragonfruit","grape","mango","potato","strawberry","tomato"]
                                                                  

                                                                  We can sort it by length using comparing, which takes a function and orders by its result…

                                                                  >>> sortBy (comparing length) ss
                                                                  ["mango","grape","banana","tomato","cherry","potato","cucumber","blueberry","strawberry","dragonfruit"]
                                                                  

                                                                  But this is just messy. Look at how out-of-order it looks! Let’s sort by both instead.

                                                                  >>> sortBy (comparing length <> compare) ss
                                                                  ["grape","mango","banana","cherry","potato","tomato","cucumber","blueberry","strawberry","dragonfruit"]
                                                                  

                                                                  This sort of “homogeneity after combination” has application in math, sorting, accumulation of statistics, database queries, pipelines (the source of Uncle Bob’s misguided tweet), and on and on. It’s a very general concept.

                                                                  1. 2

                                                                    Now that is,starting to sound useful. In my research on meta-programming verification, one of the very things I was trying to figure out how to do is combine multiple passes that do slightly-different things to data. Has uses in optimizations and portability. Sounds like monoids could help if I can structure it how they require. Thanks again for great explanation!

                                                            1. 14

                                                              This is literally how the guy makes a living, so, maybe don’t do that?

                                                              1. 9

                                                                I took it down.

                                                                1. 2

                                                                  Very considerate of you! :)

                                                                  1. 3

                                                                    Ya I didn’t intend to upset anyone, it was purely a convenience thing.

                                                                2. 8

                                                                  “First, everything is free all week”

                                                                  He’s encouraging people to grab his videos by giving everything away for free. All he required was a login which may have monetary value later that timetoplaytypus’s share negates. It’s possible, though, he thinks they can only grab a small amount of videos with some portion of people paying for the rest after deal expires. That’s on top of new, recurring revenue from it on future videos. Maybe this hurts him on at least gap between what he though could be shared and what would be. In that case, he’d have made a gamble that may or may not pay off vs offering a limited number of videos with a clear prohibition on sharing them.

                                                                  On ethical side focusing on results, I don’t think there’s a huge difference of someone here sharing his videos all at once in convenient form for free vs him saying grab as many as you want after you log in for free. Given freeloading users vs type and number that would pay him, I don’t think he’d have many losses in that scenario if any at all. The kind of people that would pay him would probably mostly still pay him. Hopefully, no effect.

                                                                  1. 0

                                                                    He’s encouraging people to take a free look at his work and see if they think it would be worth for them to pay for more of it in the future. Shitty people that don’t care about anything else but themselves might interpret this offer as an invitation to take advantage of someone’s work, and even actively undermine this someone’s livelihood. I think these people are at least half of what is wrong with the word and they should all go live in a cave and never interact with anyone else ever again.

                                                                    1. 2

                                                                      I hear you. It’s a sensible perspective. I prefer he keeps getting paid for doing good work, too. I also agree that this should be the norm instead of pervasive parasiting.

                                                                      1. 2

                                                                        I think you see the situation a bit radically.

                                                                        On one hand when someone publishes a free software and people use it for their benefit without any pay then they are shitty? When someone decides to publishing something for free, then the factor that some people may not pay for it must be calculated into that decision.

                                                                        I believe that the ad-supported word is a bigger threat, as makes the feeling that stuff are for free a norm.

                                                                        1. 0

                                                                          Neither of those examples apply. OP is publishing something for free for a LIMITED amount of time, with the very obvious intention of giving people a preview of his product. Free software and free content are very different propositions.

                                                                          1. 2

                                                                            I still think that the possibility had to be factored into this offer, and it likely was. The style and language are still harsher than I think the situation justifies.

                                                                            1. -5

                                                                              Fortunately, I don’t care what you think.

                                                                              1. 2

                                                                                You should reconsider your approach to commenting on lobste.rs.

                                                                                1. 0

                                                                                  That is your right to do so.

                                                                      2. 8

                                                                        let’s be real here. the first thing i thought of when i saw this was “can i write a script to download everything before the deadline” and im pretty sure 99% of people here thought something along that line.

                                                                        given the target audience of his screencasts, you kinda have to expect this.

                                                                        1. 0

                                                                          Everybody thinks stupid thoughts, but not everyone acts on it. And since we’re a big part of Gary’s target audience, wouldn’t it be nice, if it turns out he overestimated the amount of dicks among us? By the way, first thing in my head also was “Hmm, can I download it?”, but then I remember the guy has to eat.

                                                                          1. 4

                                                                            The swearing you demonstrate in your comments is disturbing. I hope it will not become the norm in the comments section.

                                                                            I believe you could also communicate your point very well without using words like “shitty people” and “dicks”.

                                                                      3. 4

                                                                        I come to comment on this because I remembered this tweet he posted on the matter, a while ago: https://twitter.com/garybernhardt/status/870721629440983041

                                                                        I’m glad it’s been taken down already, I think its just fair to the author’s work.

                                                                        1. 1

                                                                          I probably should have read the comments before spending 20 minutes writing a scraper.

                                                                          1. 1

                                                                            The HTTP 451 is intentional, no?

                                                                            1. 2

                                                                              Any endpoint on my site that doesn’t exist returns HTTP 451

                                                                              Edit: for example, https://timetoplatypus.com/abc

                                                                              1. 1

                                                                                FWIW it looks like the HTTP response is only a 404. is this because many clients/servers don’t respect 451 yet?

                                                                                1. 1

                                                                                  Nah, it’s just a mistake on my part. I’ll get around to fixing it…eventually

                                                                          1. 1

                                                                            Packer to build AMIs, Terraform to provision resources. I’ve used Ansible to run “setup” tasks during the packer step as well as “finishing touches” tasks during the instance spin-up step.

                                                                            1. 4

                                                                              As usual, David apparently fails or refuses to understand how and why PoW is useful and must attack it at every opportunity (using his favorite rhetorical technique of linking negatively connoted phrases to vaguely relevant websites).

                                                                              That said, the article reminds me of a fun story - I went to a talk from a blockchain lead at <big bank> a while back and she related that a primary component of her job was assuring executives that, in fact, they did not need a blockchain for <random task>. This had become such a regular occurrence that she had attached this image to her desk.

                                                                              1. 10

                                                                                What would you consider a useful situation for PoW? In the sense that no other alternative could make up for the advantages in some real life use-case?

                                                                                But otherwise, and maybe it’s just me, since I agree wuth his premise, but I see @David_Gerard as taking the opposite role of popular blockchain (over-)advocates, who claim that the technology is the holy grail for far too many problems. Even if one doesn’t agree with his conclusions, I enjoy reading his articles, and find them very informative, since he doesn’t just oppose blockchains from a opinion-based position, but he also seems to have the credentials to do so.

                                                                                1. 1

                                                                                  Relying to @gerikson as well. I personally believe that decentralization and cryptographically anchored trust are extremely important (what David dismissively refers to as “conspiracy theory economics”). We know of two ways to achieve this: proof of work, and proof of stake. Proof of stake is interesting but has some issues and trade-offs. If you don’t believe that PoW mining is some sort of anti-environmental evil (I don’t) it seems to generally offer better properties than PoS (like superior surprise-fork resistance).

                                                                                  1. 13

                                                                                    I personally believe that decentralization and cryptographically anchored trust are extremely important

                                                                                    I personally also prefer decentralised or federalised systems, when they have a practical advantage over a centralized alternative. But I don’t see this to be the case with most application of the blockchain. Bitcoin, as a prime example, to my knowledge is too slow, too inconvenient, too unstable and too resource hungry to have a practical application, as a real substitute for money, either digital or virtual. One doesn’t have the time to wait 20m or more whenever one pays for lunch or buys some chewing gum at a corner shop, just because some other transactions got picked up first by a miner. It’s obviously different when you want to do something like micro-donations or buying illegal stuff, but I just claim that this isn’t the basis of a modern economy.

                                                                                    Cryptography is a substitute for authority, that is true, but I don’t belive that this is always wanted. Payments can’t be easily reveresed, addresses mean nothing, clients might loose support because the core developers arbitrarily change stuff. (I for example am stuck with 0.49mBTC from an old Electrum client, and I can’t do anything with it, since the whole system is a mess, but that’s rather unrelated.) This isn’t really the dynamic basis which capitalism has managed to survive on for this long. But even disregarding all of this, it simply is true that bitcoin isn’t a proper decentralized network like BitTorrent. Since the role of the wallet and the miner is (understandably) split, these two parts of the network don’t scale equally. In China gigantic mining farms are set up using specialized hardware to mine, mine, mine. I remember reading that there was one farm that predominated over at least 10% of the total mining power. All of this seems to run contrary to the proclaimed ideals. Proof of Work, well “works” in the most abstract sense, that it produces the intended results on one side, at the cost of disregarding everything can be disregarded, irrespective of whether it should be or not. And ultimately I prioritise other things over an anti-authority fetish, as do most people -which reminds us that even if everything I said is false that Bitcoin just doesn’t have the adoption to be significant enough to anyone but Crypto-Hobbiests, Looney Libertarians and some soon-to-fail startups in Silicon Valley.

                                                                                    1. 5

                                                                                      there was one farm that predominated over at least 10% of the total mining power

                                                                                      There was one pool that was at 42% of the total mining power! such decentralization very security

                                                                                        1. 5

                                                                                          To be fair, that was one pool consisting of multiple miners. What I was talking about was a single miner controlling 10% of the total hashing power.

                                                                                          1. 7

                                                                                            That’s definitely true.

                                                                                            On the other hand, if you look at incident reports like https://github.com/bitcoin/bips/blob/master/bip-0050.mediawiki — the pool policies set by the operators (often a single person has this power for a given pool) directly and significantly affect the consensus.

                                                                                            Ghash.io itself did have incentives to avoid giving reasons for accusations that would tank Bitcoin, but being close to 50% makes a pool a very attractive attack target: take over their transaction and parent-block choice, and you take over the entire network.

                                                                                        2. 0

                                                                                          But I don’t see this to be the case with most application of the blockchain.

                                                                                          Then I would advise researching it.

                                                                                          One doesn’t have the time to wait 20m or more whenever one pays for lunch or buys some chewing gum at a corner shop

                                                                                          Not trying to be rude, but it’s clear whenever anyone makes this argument that they don’t know at all how our existing financial infrastructure works. In fact, it takes months for a credit card transaction to clear to anything resembling the permanence of a mined bitcoin transaction. Same story with credit cards.

                                                                                          Low-risk merchants (digital goods, face-to-face sales, etc.) rarely require the average 10 minute (not sure where you got 20 from) wait for a confirmation.

                                                                                          If you do want permanence, Bitcoin is infinitely superior to any popular payment mechanism. Look into the payment limits set by high-value fungible goods dealers (like gold warehouses) for bitcoin vs. credit card or check.

                                                                                          Bitcoin just doesn’t have the adoption to be significant enough to anyone but Crypto-Hobbiests, Looney Libertarians and some soon-to-fail startups in Silicon Valley.

                                                                                          Very interesting theory - do you think these strawmen you’ve put up have collective hundreds of billions of dollars? As an effort barometer, are you familiar with the CBOE?

                                                                                          1. 10

                                                                                            Please try to keep a civil tone here.

                                                                                            Also, it’s hard to buy a cup of coffee or a steam game or a pizza with bitcoin. Ditto stocks.

                                                                                            1. -4

                                                                                              It’s hard to be nice when the quality of discourse on this topic is, for some reason, abysimally low compared to most technical topics on this site. It feels like people aren’t putting in any effort at all.

                                                                                              For example, why did you respond with this list of complete non-sequiturs? It has nothing to do with what we’ve been discussing in this thread except insofar as it involves bitcoin. I feel like your comments are normally high-effort, so what’s going on? Does this topic sap people’s will to think carefully?

                                                                                              (Civility is also reciprocal, and I’ve seen a lot of childish name-calling from the people I’m arguing with in this thread, including the linked article and the GP.)

                                                                                              Beyond the fact that this list is not really relevant, it’s also not true; you could have just searched “bitcoin <any of those things>” and seen that you can buy any of those things pretty easily, perhaps with a layer of indirection (just as you need a layer of indirection to buy things in the US if you already have EUR). In that list you gave, perhaps the most interesting example in bitcoin’s disfavor is Steam; Steam stopped accepting bitcoin directly recently, presumably due to low interest. However, it’s still easy to buy games from other sources (like Humble) with BTC.

                                                                                              1. 6

                                                                                                IMO, your comments are not very inspiring for quality. As someone who does not follow Bitcoin or the Blockchain all that much, I have not felt like any of your comments addressed anyone else’s comments. Instead, I have perceived you as coming off as defensive and with the attitude of “if you don’t get it you haven’t done enough research because I’m right” rather than trying to extol the virtues of the blockchain. Maybe you aren’t interested in correcting any of what you perceive as misinformation on here, and if so that’s even worse.

                                                                                                For example, I do not know of any place I can buy pizza with bitcoin. But you say it is possible, but perhaps with a layer of indirection. I have no idea what this layer of indirection is and you have left it vague, which does not lend me to trusting your response.

                                                                                                In one comment you are very dismissive of people’s Bitcoins getting hacked, but as a lay person, I see news stories on this all the time with substantial losses and no FDIC, so someone like me considers this a major issue but you gloss over it.

                                                                                                Many of the comments I’ve read by you on this thread are a similar level of unhelpful, all the while claiming the person you’re responding to is some combination of lazy or acting dumb. Maybe that is the truth but, again, as an outsider, all I see is the person defending the idea coming off as kind of a jerk. Maybe for someone more educated on the matter you are spot on.

                                                                                                1. 5

                                                                                                  There is a religious quality to belief in the blockchain, particularly Bitcoin. It needs to be perfect in order to meet expectations for it: it can’t be “just” a distributed database, it has to be better than that. Bitcoin can’t be “just” a payment system, it has to be “the future of currency.” Check out David’s book if you’re interested in more detail.

                                                                                            2. 8

                                                                                              In fact, it takes months for a credit card transaction to clear to anything resembling the permanence of a mined bitcoin transaction. Same story with credit cards.

                                                                                              But I don’t have to wait months for both parties to be content the transaction is successful, only seconds, so this is really irrelevant to the point you are responding to, which is that if a Bitcoin transaction takes 10m to process then I heave to wait 10m for my transaction to be done, which people might not want to do.

                                                                                              1. -1

                                                                                                Again, as I said directly below the text you quoted, most merchants don’t require you to wait 10 minutes - only seconds.

                                                                                              2. 5

                                                                                                Then I would advise researching it.

                                                                                                It is exactly because I looked into the inner workings of Bitcoin and the Blockchain - as a proponent I have to mention - that I became more and more skeptical about it. And I still do support various decentralized and federated systems: BitTorrent, IPFS, (proper) HTTP, Email, … but just because the structure offers the possibility for a decentralized network, doesn’t have to mean that this potential is realized or that it is necessarily superior.

                                                                                                Not trying to be rude, but it’s clear whenever anyone makes this argument that they don’t know at all how our existing financial infrastructure works. In fact, it takes months for a credit card transaction to clear to anything resembling the permanence of a mined bitcoin transaction. Same story with credit cards.

                                                                                                The crucial difference being that, let’s say the cashier nearly instantaneously hears a some beep and knows that it isn’t his responsibility, nor that of the shop, to make sure that the money is transfered. The Bank, the credit card company or whoever has signed a binding contract lining this technical part of the process out to be what they have to care about, and if they don’t, they can be sued since there is an absolute regulatory instance - the state - in the background. This mutual delegation of trust, gives everyone a sense of security (regardless of how true or false it is) that makes people spend money instead of hording it, investing into projects instead of trading it for more secure assets. Add Bitcoins aforementioned volatileness, and no reasonable person would want to use it as their primary financial medium.

                                                                                                If you do want permanence, Bitcoin is infinitely superior to any popular payment mechanism.

                                                                                                I wouldn’t conciser 3.3 to 7 transactions per second infinitely superior to, for example Visa with an average of 1,700 t/s. Even it you think about it, there are far more that just 7 purchases being made a second around the whole world for this to be realistically feasible. But on the other side, as @friendlysock Bitcoin makes up for it by not having too many things you can actually buy with it: The region I live in has approximately a million or something inhabitants, but according to CoinMap even by the most generous measures, only 5 shops (withing a 30km radius) accepting it as a payment method. And most of those just offer it to promote themselves anyway.

                                                                                                Very interesting theory - do you think these strawmen you’ve put up have collective hundreds of billions of dollars? As an effort barometer, are you familiar with the CBOE?

                                                                                                (I prefer to think about my phrasing as a exaggeration and a handful of other literary deviced, instead of a fallacy, but never mind that) I’ll give you this: It has been a while since I’ve properly engaged with Bitcoin, and I was always more interested in the technological than the economical side, since I have a bit of an aversion towards libertarian politics. And it might be true that money is invested, but that still doesn’t change anything about all the other issues. It remains a bubble, a volatile, unstable, unpredictable bubble, and as it is typical for bubbles, people invest disproportional sums into it - which in the end makes it a bubble.

                                                                                                1. 0

                                                                                                  The crucial difference being that, let’s say the cashier nearly instantaneously hears a some beep and knows that it isn’t his responsibility, nor that of the shop, to make sure that the money is transfered.

                                                                                                  Not quite. The shop doesn’t actually have the money. The customer can revoke that payment at any time in the next 90 or 180 days, depending. Credit card fraud (including fraudulent chargebacks) is a huge problem for businesses, especially online businesses. There are lots of good technical articles online about combatting this with machine learning which should give you an idea of the scope of the problem.

                                                                                                  makes people spend money instead of hording it,

                                                                                                  Basically any argument of this form (including arguments for inflation) don’t really make sense with the existence of arbitrage.

                                                                                                  Add Bitcoins aforementioned volatileness, and no reasonable person would want to use it as their primary financial medium.

                                                                                                  So it sounds like it would make people… spend money instead of hoarding it, which you were just arguing for?

                                                                                                  I wouldn’t conciser 3.3 to 7 transactions per second infinitely superior to, for example Visa with an average of 1,700 t/s.

                                                                                                  https://lightning.network

                                                                                                  as @friendlysock Bitcoin makes up for it by not having too many things you can actually buy with it

                                                                                                  This is just patently wrong. The number of web stores that take Bitcoin directly is substantial (both in number and traffic volume), and even the number of physical stores (at least in the US) is impressive given that it’s going up against a national currency. How many stores in the US take even EUR directly?

                                                                                                  Anything you can’t buy directly you can buy with some small indirection, like a BTC-USD forex card.

                                                                                                  It remains a bubble, a volatile, unstable, unpredictable bubble

                                                                                                  It’s certainly volatile, and it’s certainly unstable, but it may or may not be a bubble depending on your model for what Bitcoin’s role in global finance is going to become.

                                                                                                  1. 5

                                                                                                    Not quite. The shop doesn’t actually have the money. The customer can revoke that payment at any time in the next 90 or 180 days, depending

                                                                                                    You’ve still missed my point - it isn’t important if the money has been actually transfered, but that there is trust that a framework behind all of this will guarantee that the money will be there when it has to be, as well as a protocol specifying what has to be done if the payment is to be revoked, if a purchase wishes to be undone, etc.

                                                                                                    Credit card fraud (including fraudulent chargebacks) is a huge problem for businesses, especially online businesses.

                                                                                                    Part of the reason, I would suspect is that the Internet was never made to be a platform for online businesses - but I’m not going to deny the problem, I’m certainly not a defender of banks and credit card companies - just an opponent of Bitcoin.

                                                                                                    Basically any argument of this form (including arguments for inflation) don’t really make sense with the existence of arbitrage.

                                                                                                    Could you elaborate? You have missed my point a few times already, so I’d rather we understand each other instead of having two monologues.

                                                                                                    So it sounds like it would make people… spend money instead of hoarding it, which you were just arguing for?

                                                                                                    No, if it’s volatile people either won’t buy into it in the first place. And if a currency is unstable, like Bitcoin inflating and deflating all the time, people don’t even know what do do with it, if it were their main asset (which I was I understand you are promoting, but nobody does). I doubt it will ever happen, since if prices were insecure, the whole economy would suffer, because all the “usual” incentives would be distorted.

                                                                                                    https://lightning.network

                                                                                                    I haven’t heard of this until you mentioned it, but it seems like it’s quite new, so time has to test this yet-another-bitcoin-related project that has popped up. Even disregarding that it will again need to first to make a name of it self, then be accepted, then adopted, etc. from what I gather, it’s not the ultimate solution (but, I might be wrong), especially since it seems to encourage centralization, which I believe is what you are so afraid of.

                                                                                                    This is just patently wrong. The number of web stores that take Bitcoin directly is substantial (both in number and traffic volume),

                                                                                                    Sure, there might be a great quantity of shops (as I mentioned, who use Bitcoin as a medium to promote themselves), but I, and from what I know most people, don’t really care about these small, frankly often dodgy online shops. Can I use it to pay directly on Amazon? Ebay? Sure, you can convert it back and forth, but all that means it that Bitcoin and other crypto currencies are just an extra step for life stylists and hipster, with no added benefit. And these shops don’t even accept Bitcoin directly, to my knowledge always just so they can convert it into their national currency - i.e. the one they actually use and Bitcoins value is always compared to. What is even Bitcoin without the USD, the currency it hates but can’t stop comparing itself to?

                                                                                                    and even the number of physical stores (at least in the US) is impressive given that it’s going up against a national currency.

                                                                                                    The same problems apply as I’ve already mentioned, but I wonder: have you actually ever used Bitcoin to pay in a shop? I’ve done it once and it was a hassle - in the end I just bought it with regular money like a normal person because it was frankly too embarrassing to have the cashier have to find the right QR code, me to take out my phone, wait for me got get an internet connection, try and scan the code, wait, wait, wait…. And that is of course only if you want to make the trip to buy for the sake of spending money, and decide to make a trip to some place you’d usually never go to buy something you don’t even need.

                                                                                                    Ok when you’re buying drugs online or doing something with microdonations, but otherwise… meh.

                                                                                                    How many stores in the US take even EUR directly?

                                                                                                    Why should they? And even if they do, they convert it back to US dollars, because that’s the common currency - there isn’t really a point in a currency (one could even question if it is one), when nobody you economically interact with uses it.

                                                                                                    Anything you can’t buy directly you can buy with some small indirection, like a BTC-USD forex card.

                                                                                                    So a round-about payment over a centralized instance - this is the future? Seriously, this dishonesty of Bitcoin advocates (and Libertarians in general) is why you guys are so unpopular. I am deeply disgusted that I have ever advocated for this mess.

                                                                                                    It’s certainly volatile, and it’s certainly unstable, but it may or may not be a bubble depending on your model for what Bitcoin’s role in global finance is going to become.

                                                                                                    So you admit that is has none of the necessary preconditions to be a currency… but for some reason it will… do what exactly? If you respond to anything I mentioned here, at least tell me this: What is your “model” for what Bitcoin’s role is going to be?

                                                                                            3. 14

                                                                                              Why don’t you believe it is anti-enviromental? It certainly seems to be pretty power hungry. In fact it’s hunger for power is part of why it’s effective. All of the same arguments about using less power should apply.

                                                                                              1. -1

                                                                                                Trying to reduce energy consumption is counterproductive. Energy abundance is one of the primary driving forces of civilizational advancement. Much better is to generate more, cleaner energy. Expending a few terrawatts on substantially improved economic infrastructure is a perfectly reasonable trade-off.

                                                                                                Blaming bitcoin for consuming energy is like blaming almond farmers for using water. If their use of a resource is a problem, you should either get more of it or fix your economic system so externalities are priced in. Rationing is not an effective solution.

                                                                                                1. 10

                                                                                                  on substantially improved economic infrastructure

                                                                                                  This claim definitely needs substantiation, given that in practice bitcoin does everything worse than the alternatives.

                                                                                                  1. -1

                                                                                                    bitcoin does everything worse than the alternatives.

                                                                                                    Come on David, we’ve been over this before and discovered that you just have a crazy definition of “better” explicitly selected to rule out cryptocurrencies.

                                                                                                    Here’s a way Bitcoin is better than any of its traditional digital alternatives; bitcoin transactions can’t be busted. As you’ve stated before, you think going back on transactions at the whim of network operators is a good thing, and as I stated before I think that’s silly. This is getting tiring.

                                                                                                    A few more, for which you no doubt have some other excuse for why this is actually a bad thing; Bitcoin can’t be taken without the user’s permission (let me guess; “but people get hacked sometimes”, right?). Bitcoin doesn’t impose an inflationary loss on its users (“but what will the fed do?!”). Bitcoin isn’t vulnerable to economic censorship (don’t know if we’ve argued about this one; I’m guessing you’re going to claim that capital controls are critical for national security or something.). The list goes on, but I’m pretty sure we’ve gone over most of it before.

                                                                                                    I’ll admit that bitcoin isn’t a panacea, but “it does everything worse” is clearly a silly nonsensical claim.

                                                                                                  2. 4

                                                                                                    Reducing total energy consumption may or may not be counterproductive. But almost every industry I can name has a vested interest in being more power efficient for it’s particular usage of energy. The purpose of a car isn’t to burn gasoline it is to get people places. If it can do that with less gasoline people are generally happier with it.

                                                                                                    PoW however tries to maximizes power consumption, via second order effects , with the goal of making it expensive to try to subvert the chain. It’s clever because it leverages economics to keep it in everyone’s best interest to not fork but it’s not the same as something like a car where reducing energy consumption is part of the value add.

                                                                                                    I think that this makes PoW significantly different than just about any other use of energy that I can think of.

                                                                                                    1. 3

                                                                                                      Indeed. The underlying idea of Bitcoin is to simulate the mining of gold (or any other finite, valuable resource). By ensuring that an asset is always difficult to procure (a block reward every 10 minutes, block reward halving every 4 years), there’s a guard against some entity devaluing the currency (literally by fiat).

                                                                                                      This means of course that no matter how fast or efficient the hardware used to process transactions becomes, the difficulty will always rise to compensate for it. The energy per hash calculation has fallen precipitously, but the number of hash calculations required to find a block has risen to compensate.

                                                                                                2. 6

                                                                                                  We’ve been doing each a long time without proof of work. There’s lots of systems that are decentralized with parties that have to look out for each other a bit. The banking system is an example. They have protocols and lawyers to take care of most problems. Things work fine most of the time. There are also cryptographically-anchored trust systems like trusted timestamping and CA’s who do what they’re set up to do within their incentives. If we can do both in isolation without PoW, we can probably do both together without PoW using some combination of what’s already worked.

                                                                                                  I also think we haven’t even begun to explore the possibilities of building more trustworthy charters, organizational incentives, contracts, and so on. The failings people speak of with centralized organizations are almost always about for-profit companies or strong-arming governments whose structure, incentives, and culture is prone to causing problems like that. So, maybe we eliminate root cause instead of tools root cause uses to bring problems since they’ll probably just bring new forms of problems. Regulations, disruption, or bans of decentralized payment is what I predicted would be response with some reactions already happening. They just got quite lucky that big banks like Bank of America got interested in subverting it through the legal and financial system for their own gains. Those heavyweights are probably all that held the government dogs back. Ironically, the same ones that killed Wikileaks by cutting off its payments.

                                                                                              2. 8

                                                                                                In what context do you view proof-of-work as useful?

                                                                                                1. 11

                                                                                                  You have addressed 0 of the actual content of the article.

                                                                                                1. 2

                                                                                                  My problem with the exception example is generally you would want a different user readable failure message for each error line.

                                                                                                  1. 2

                                                                                                    You can do that with monadic error handling, (see Railway-Oriented Programming) .The article is a little weird, though, in that it seems to be implying that Java exceptions are monads, which they’re not.

                                                                                                  1. 7

                                                                                                    Excellent piece. I really like the idea of revisiting seminal papers with the benefit of hindsight; too often it’s easy to read a paper from twenty years ago and find it really interesting, but then to be unable to find (or see) how it would be expressed in more modern idioms (or even if it survived “contact with the enemy”).

                                                                                                    1. 3

                                                                                                      Non-technology:

                                                                                                      • Vietnamese Stories for Language Learners. Randomly got it recommended to me on Amazon, looks fantastic.
                                                                                                      • Mengzi. A scholarly translation of a Confucian classic.
                                                                                                      • Key Writings, Henri Lefebvre. Familiarizing myself with him. He’s an overlooked Marxist thinker with a focus on everyday life and urbanism.
                                                                                                      • Why don’t we learn from history?, B.H. Liddell Hart.
                                                                                                      • Street Without Joy: the French Debacle in Indochina, Bernard Fall. The classic examination of the French war in Indochina.

                                                                                                      Technology:

                                                                                                      • Attack of the 50-Foot Blockchain, David Gerard. Ordered it after I saw his posts in another thread here recently.
                                                                                                      • Silence on the Wire, Zalewski.
                                                                                                      • The Web Application Hacker’s Handbook, Stuttard and Pinto.
                                                                                                      1. 3

                                                                                                        Can recommend silence on the wire. If you like his writing (hint: you will) and am interested in web hacking, I’d strongly recommend his Tangled Web. Much better than web hacker’s handbook IMO. An less outdated, AFAIK ;)

                                                                                                        1. 1

                                                                                                          Cool, thanks for the recommendation. I’ll add that as an alternative.

                                                                                                        1. 4

                                                                                                          The Linux Programming Interface is very good. A lot lower-level than I normally go, but still fascinating.

                                                                                                          1. 1

                                                                                                            Any similar ones you’d recommend ?

                                                                                                            1. 2

                                                                                                              Advanced Programming in the Unix Environment, I guess? I don’t really read many low-level books like that. Most of the higher-level things I like are more conceptual than specific.

                                                                                                          2. 2

                                                                                                            Soul of a New Machine is a delightful read, and if you like it I’d check out Masters of Doom.

                                                                                                            1. 1

                                                                                                              I’ve read it already! It was an exciting read. I read it one sitting.

                                                                                                          1. 15

                                                                                                            Ulysses. This is the year I’ll finish it. Or so I tell myself.

                                                                                                            1. 2

                                                                                                              And after that Finnegans Wake, right? I know this feeling.

                                                                                                              1. 1

                                                                                                                Got this for Christmas, actually..

                                                                                                              1. 1

                                                                                                                It is not clear to me if they’re only interested in people who physically live in the Valley or also remote workers.

                                                                                                                1. 1

                                                                                                                  I’d say count both if the business and/or deliverable is in the Valley.