1. 21

    I hope to see more of this — if workers with as much leverage as we have don’t speak up against technology we create being used for evil, we can’t call ourselves engineers.

    1. 13

      Relying on morality when incentives go the other way does not scale.

      1. 6

        Exactly. It has to be a large number of people that damage their mission directly or indirectly with media pressure. Otherwise, it’s something with no impact. At least people are following their principles, though.

        1. 6

          It has to be a large number of people that damage their mission directly or indirectly with media pressure.

          Can you trust an engineering company who ignores the opinions of its engineers?

          We are talking about one of the most celebrated company of western economy, often cited as an example of excellence.

          Leaving Google for ethical concerns poses a serious burden on the employment of these engineers that will probably be marked as dangerous employees for the time being.

          We can assume that this is something they knew, as Google don’t hire dumb guys.

          So why they quit?

          My bet is that the militar use of the Google’s artificial intelligence technology is so dangerous that these engineers felt obliged to leave the organization beyond any doubt.

          Otherwise, it’s something with no impact.

          Well, it’s a first step.

          And a courageous one.

          Its impact goes beyond the worldwide image of Google, beyond the direct issues in their production line.

          It is an example.

          1. 4

            Can you trust an engineering company who ignores the opinions of its engineers?

            It doesn’t matter. What matters here is (a) the companies’ goals/incentives, (b) how successful they are at achieving them, and (c) if a tiny number of engineers quitting changes that. Note that (b) includes implicit support by the many people who use their products and services voting with their wallet. The stuff in (a) means they’re anywhere from apathetic to damaging for a lot of ethical issues around privacy and making money. Due to (b), actions to damage them have to put a huge dent in that or make them think it will. (c) doesn’t do that. So, (c) is probably irrelevant to Google. The article itself says as much:

            “However, the mounting pressure from employees seems to have done little to sway Google’s decision—the company has defended its work on Maven and is thought to be one of the lead contenders for another major Pentagon cloud computing contract, the Joint Enterprise Defense Infrastructure, better known as JEDI, that is currently up for bids.”

            I gave them credit in my other comment for standing up on their principles. That’s respectable. It’s just that a “dozen” or so people quitting a company with over 70,000 employees with people waiting to fill their positions doesn’t usually change anything. They’d instead have to campaign in media or government aimed at stopping those contracts or drone operations. At least half the voting public and current President support military action overseas. The other half didn’t convince their prior President to stop drone use or strikes. There are also not large swaths of Google customers threatening to stop using Google Search, Gmail, etc if Google doesn’t turn down government contracts.

            So, quitting over this is pointless if the goal is to achieve something. At best, it’s a personal decision by those individuals to not be involved in something they disagree with that’s going to happen anyway. That’s fine but practically a separate thing from ending these contracts. If anything, we’ll just get a shift in Google employees from those who might leave over the contracts to people who range from favoring them or just griping about them continuing to work there. I think most will be in latter category.

            1. 2

              It’s just that a “dozen” or so people quitting a company with over 70,000 employees with people waiting to fill their positions doesn’t usually change anything.

              The fact is that fewer talented people will want to fill their position.
              This is a pretty serious issue, if engineers are the core resource of your company.

              Now, I’d guess most Google engineers don’t feel as important to the company as they feel the company is important to them. This happens in many companies, and I would guess Google has turned this kind of internal narrative into an art.

              The fact is that, instead, Google literally would not exists without those engineers.

              These few have shown exactly that: that working in Google is not that important.
              It’s a matter of time, but if Google do not take serious actions to avoid this general wake up, other engineers will follow. And the same might happen in Facebook, in Apple and in many other smaller IT companies.

              On the other hand, in Europe and everywhere else, people will start to ask why engineers from a company that operate in their territories, are so afraid for what the company is doing, to quit. To avoid the risk of being associated with the company future. To avoid sharing its responsibility.
              Politicians will be less friendly to a company that might be doing something really evil for a foreign state.

              I agree that more engineers should follow their example, but I know that life is not that easy.
              However people continuing to work there might organize to keep the company “on track”, and this might lead to the creation of a labor union.

              1. 4

                The fact is that fewer talented people will want to fill their position.

                You have to prove that assumption. Google changed their Don’t Be Evil motto doing sneakier and sneakier stuff overtime. They’re a surveillance company that hires brilliant people to do interesting work for high pay and good perks. They’ve had no trouble that I’ve seen keeping new people coming in. Status quo has the evidence going against your claim: it’s a shady, rich company with in-demand jobs whose shady activities haven’t changed that for years. There’s also nearly 70,000 workers mostly in favor of it with more trying to get in.

                “However people continuing to work there might organize to keep the company “on track”, and this might lead to the creation of a labor union.”

                That’s a different issue entirely. Given I am in a union, I think it would be cool to see it happen. Unlike OP topic, that could happen with higher probability. Silicon Valley will do everything they can to stamp it out in mean time, though. Still a long shot.

                1. 0

                  The fact is that fewer talented people will want to fill their position.

                  You have to prove that assumption.

                  Not an assumption, but a deduction: people avoid cognitive dissonance, if possible.

                  A dozen people leaving a company cause of ethics, means that such company forced them too high on cognitive dissonance, and this will make Google relatively less attractive, in comparison to the alternatives: a talented engineer want to fix problems, not fool herself to avoid the pain of contradictions.

                  Our brain consume around 20% of our energy, after all.

                  This is the same reason that make me guess others will quit Google in the future.
                  Because now they have a new thinkable precedent.
                  A new, effective solution to reduce their cognitive dissonance.

        2. 2

          I agree. But we also can’t rely on companies that we don’t own to incentivize us to act in a moral fashion – engineers need a governing body for that.

          1. 1

            What about entering both US political parties and changing the policy? If you believe that killing people is wrong, maybe make it a law?

            Sometimes the only way to advance your field is to step out of it and fix the external systems. And war zones are definitely not a good environment in which to build global information network to advance everyone’s wellbeing…

          2. 1

            I think it’s definitely a factor. Many prominent business people would not like to be associated with payday loan companies, for example.

            I think this is less about being the silver bullet for problems, and more about being one of the 20 or 30 things we need to be doing to make the world A Better Place(TM)

          3. 13

            We can’t even speak up for honest pay for an honest day’s work–and that’s a lot less subjective than some arbitrary definition of “evil”.

            1. 4

              Why not both?

              1. 4

                At least the “evil” one is super cloudy.

                Say you are an engineer working at a company that builds control software for missiles. You are a pacifist, and so you decide to introduce a minor bug (or fail to patch a discovered bug) that causes the missile to not detonate when it lands.

                • Are you good for not facilitating the loss of life?
                • Are you evil for misleading your employer about the labor of yours that they’ve purchased?
                • If the missile lands on a poor grunt and severs their legs causing them to bleed out over minutes instead of detonating properly and just kinda instantly killing them, are you evil for prolonging suffering?

                That’s just scratching the surface of morality in engineering.

                1. 6

                  That’s fair – and I should’ve been explicit earlier. I believe that there are (at least) two moral guidelines that should be taken into account.

                  The first is a professional code of ethics, similar to what ACM has here. Of course even this is cloudy – for example, in my opinion 1.2 “Avoid harm to others” would necessarily preclude working for a missile manufacturer in the first place. At the very least, if one views missiles and missile software as being a necessary “evil”, safeguards should be put in to protect human life at all cost, etc. etc. The minutiae of the professional code of ethics can and should be rigorously debated, because it provides a minimally viable base for how we should conduct ourselves. So for example, the question of whether or not working in the weapons manufacturing industry truly violates rule 1.2 should be an explicit discussion that is had in a professional organization (not a workplace per se).

                  The second guideline is in line with your own personal moral code. This is important because it provides for people who are religious (or not) or any other number of cultural influences that have caused a person to believe what they believe today. This, of course, has to be superseded by the professional code – for example, if I personally believe that discrimination based on what TV shows you enjoy is okay, that doesn’t mean that my personal morality should define what happens in a professional setting. But in the hypothetical case you provided, even if I don’t feel that writing that software goes against a professional code of ethics, if I am a pacifist, it goes against my personal code. I know from the professional code that purposefully writing bad or buggy software is wrong, and so my only option is to find another job in which both my personal and professional codes of ethics can be upheld.

                  1. 9

                    Why discuss an unlikely hypothetical rather than the issue at hand? Why the need to logically define evil beyond any confusion? This is not even possible in the general case for anything. Can you logically define ‘fun’ such that everyone agrees? At the end of day, evil means what people talking about it think it means, and it’s better to work off of that than to halt all discussion until we achieve the impossible task of absolutely grounding natural language in logic.

                    1. 6

                      It’s precisely because evil is so ill-defined that talking about it is difficult. As @mordae points out, it’s more effective to talk about other incentives.

                      And again, I’m not saying “halt all discussion”–quite the opposite! I’m saying that the issue is more nuanced than “don’t be evil”.

                      1. 1

                        I certainly agree with that. I still think it’s worth going into, because at a certain point you’re likely to end up doing it anyway. For instance, if we start talking about incentives, we might end up talking about how to incentivize people towards good, or at least, some concept of “not evil”. I’m not saying it trumps incentives or that this is a more effective approach, I’m just saying we should still have the discussion.

                        I think a trap we as engineers often fall into is to attempt to build everything up from laws and axioms. That doesn’t quite work for morality, and the nebulous nature of it means it rarely gets discussed. The software industry in particular is very focused on “solving problems” and never asks questions like “should we solve this problem?”

                        I guess another scary thing about it is that we can’t really empirically verify what the right answer is, and depending on the issue we might even have multiple valid answers. But sometimes just asking the question is worthwhile, even if we don’t have an answer.

                        Perhaps tech companies should start hiring philosophers.

                        1. 2

                          Perhaps tech companies should start hiring philosophers.

                          I’d argue that a good programmer is a philosopher almost by definition.

                          We talk like if our field was an engineering field but most of times we don’t build things constrained by the physical world (yeah I know what latency is… I said most of times :-D).

                          Or we talk like if our field was just applied math, pure and intangible, but then we talk about usability or we kill someone through a self driving car.

                          But ultimately we work with ideas.

                          The choice to ignore the ethics of our work is up to us.

                          But we have much more instruments to think about our role in the world than any “professional philosopher” hired to think for us (in the interest of the company).

                          1. 1

                            if we start talking about incentives, we might end up talking about how to incentivize people towards good, or at least, some concept of “not evil”.

                            That’s how you do it. In Google’s case, a publicly-traded company, that means you have to hit them in the wallet in a way that knocks out the contract. Alternatively, convince their management to change their charter or use other legal means to block whole classes of action in the present and future that they agreed were evil. I’m not sure if that would even work in Google’s case but one can start businesses like that in nonprofit or public benefit form.

                        2. 1

                          I think friendlysock was trying to illustrate the point with some examples. The comment succeeded given the other person understood the points. There’s nothing wrong with that. You said to instead work off claims about evil in this situation based on what people are saying. In this case, what does evil mean exactly to both those employees and various stakeholders in the United States? Based on the political debates, I know there’s quite a few different views on whether these programs are evil or not. Even within the main, political parties, in Silicon Valley, and in Google itself.

                          The only thing sure is that about 4,000 of Google’s 70,000 people plus some other folks writing a letter don’t like what Google is doing. Of the 4,000, only a dozen or so showed it’s worth not working for Google. So, that’s under under 1% of Google’s workforce. The others are continuing to support Google’s success, including that program indirectly, while protesting that program. They may or may not leave but I think most will stay: workers gripe more than they take action in general case, esp if employer’s actions is morally a mix to them or six digits are involved. If they leave, there’s a lot of people willing to take their place with no long term effect on Google. The remainder and some new hires collectively are apathetic to this or believe it’s morally acceptable.

                          Many of the people staying would probably tell you they’re decent people with Google doing a lot of good for the world (arguably true) despite this evil. We saw this in NeverAgain pledge. Others would tell you this kind of thing is inevitable enough that Google not doing it would make no difference. Some of them would even say it’s better if they do it so they can do it right minimizing harm. Yet another group will claim these programs prevent a larger number of deaths than they cause or prevent real damage vs hypothetical risks detractors talk about. People ranging from those developing software to those doing drone strikes might believe they’re saving lives in their work while the dozen that quit will be doing less valuable work in tech for their own benefit.

                          I don’t think there’s a clear answer of evil if I’m looking at the stakeholders in this discussion. They’re all over the place with it. The acting public is in a few camps: those doing a mix of opposing and tolerating drone operations who lost the election; those mostly supporting them whose party is in control; billions of dollars worth of users and businesses who don’t care enough to switch providers; tiny, tiny, tiny slice of revenue from those that will. Put in that light, nothing they’re doing will matter past their own conscience. Hell, those thinking the tech is evil might have been better off staying in there half-assing the programming on purpose to make it look like such tech just isn’t ready to replace people yet. There’s precedents for that with many of them in defense industry except for profit rather than moral reasons.

                1. 12

                  What’s the best way to use Mastodon? I appreciate its dedication to privacy, but the distributed nature of Mastodon confuses me. I feel like it’s the World of Warcraft server problem, where it’s impossible to find a server with all your friends on it without one server having everyone on it.

                  1. 11

                    You don’t have to be on the same server, you can follow accounts from other instances.

                    1. 10

                      Many of us in the BSD world went with https://bsd.network/.

                      You might try the instances.social finder: https://instances.social/.

                      One of the things I like about Mastodon is I can join a server (or servers) that are more closely aligned to my interests. By monitoring the instance timeline I see all the posts. I don’t have to find a bunch of people to follow immediately. I can grow the list by following the folks I notice posting things I enjoy reading.

                      1. 2

                        What network do Haskellers use?

                        1. 4
                        2. 1

                          Yeah that’s one of the things I really dig about it. It’s a metacommunity. You find an instance that focuses on your interests, or create one of your own if that’s what floats your boat, and it becomes a microcosm unto itself, but you all still share the global timeline.

                        3. 6

                          Replace instance with server and mastodon with e-mail. Then all these explanations become less confusing. Unless your server’s admin or your peer’s admin blocks your messages, you can write messages to every peer on every other server as you see fit.

                          Does that make sense to you?

                          1. 4

                            You don’t need to find a server with everyone in it since federation allows you to follow people on other servers. I do recommend to simply find a community you enjoy and use that as home-base.

                            1. 1

                              With sites like joinmastodon.org or instances.social, I haven’t experienced this to be too much of a problem. Yes, it takes a while, but you can always delete an account and create a new one on another instance.

                              To me, the real problem seems to be the difficulty to find interesting accounts to follow, and create a informative, fun and interesting stream. There are a lot of inactive accounts, regardless of the server (mine is one of these), and some active ones, but I can’t really re-create the same level of experience as on twitter, reddit or image boards, for example, even though I have stopped using all of these by now.

                              1. [Comment removed by author]

                                1. 6

                                  The flagship instance is overloaded and has some trouble scaling; I’d recommend finding something else, if only to ease the burden on the poor folks doing ops on it.

                              1. 8

                                Still in the midst of reading this, but just have to say: worst website background ever

                                1. 4

                                  Firefox’s reader mode is a lifesaver here.

                                  1. 2

                                    Yes, I had to use that too. I tried to read it the way it was displayed but it was too distracting

                                  2. 2

                                    I removed the background and background color via inspector which makes it a lot easier to read.

                                    1. 1

                                      I’ve done enough accessibility work on the web to announce: this site’s contrast is great, but its presentation is horrific.

                                    1. 6

                                      This video is what I use when countering the myths about how C was designed. It goes to the papers and constraints that led Richards’ team to chop ALOL into BCPL. Then, the modifications from BCPL to B to C. Understanding the context of why C was the way it was might help folks understand why we should upgrade given we’re no longer in those constraints either in hardware or programming features.

                                      1. 10

                                        I think there is a reasonable argument that C won on its merits. The following is a list of some languages that were available in 1975 and my opinion of why they lost out to C. C is pretty much the only language on this list with a portable implementation that ran on minicomputers.

                                        Algol 60 - call by name is expensive, not really intended for system software

                                        Algol 68 - complex to implement, standard uses an obscure formal semantics, requires a runtime, compilers did not emerge for years

                                        Algol W - first implementation was for IBM mainframes in an infix assembly language, few other implementations

                                        BCPL - untyped, inferior to C in some ways, limited support for byte addressing

                                        BLISS - semantics for assignment are unusual, untyped, no portable compiler, only for DEC architectures

                                        Coral66 - British military standard, may not have had recursion

                                        Fortran 66 - not really suited to system software, although a number of vendors wrote operating systems in an extended Fortran

                                        Forth - different programming model, mostly interpreted

                                        IMP72 - implemented mostly on supercomputers, low level of abstraction (Fortran II), complex (extensible) grammar

                                        Jovial73 - DoD standard, no standard IO

                                        LRLtran - no implementations for minicomputers

                                        MAD - low level of abstraction, implementations ran on mainframes

                                        NELIAC - low level of abstraction

                                        Pascal - weak standard, no separate compilation, Wirth moved on to new languages

                                        PL.8 - internal to IBM, compiler ran on mainframes

                                        PL/I - complicated to implement, early implementations were slow

                                        PL/S - internal to IBM, compiler ran on mainframes

                                        RTL/2 - British language for realtime systems, probably unknown in the US.

                                        Simula 67 - uses garbage collection, inventors wanted license fees

                                        1. 2

                                          Great list. Remember that there’s two parts to this: one is how they designed it; one is what happened later. Your list seems to be what happened later after comparing its design to everything else unmodified. Whereas, mine says they’d have cherry-picked the best of anything on that list modifying it for their situation. In each case, they’d pick whatever was safest or cleanest by default switching to unsafe only where necessary. As hardware improved, the safety and maintainability would improve.

                                          That’s the approach Wirth took with Modula-2 and the rest of his languages. Most others did as well doing languages for safety or programming in the large. It’s now the standard way to do things with many citing an escape from the safety and maintainability problems of C. So, the evidence leans toward Wirth’s choice.

                                        2. 1

                                          If I wanted to both re-write indent(1) in not-C and continue to distribute it as a part of FreeBSD, NetBSD, OpenBSD - which programming language should I “upgrade” to? What choice do I have?

                                          1. 2

                                            My top choices for contenders would be rust, zig, myrddin and nim. zig being the closest to C with many fixes.

                                            1. 4

                                              One issue with rust currently is that building the compiler will dominate compile times until most of the distribution is ported to rust.

                                              1. 3

                                                What about Wirth’s new Oberon-07?

                                                Recently it has got a new promising little compiler to C, OBNC.

                                                1. 2

                                                  Hadn’t seen that, will check it out.

                                                  1. 1

                                                    I’d really appreciate your opinion, since you cited Myrddin, which is my favourite contender for the package system of Jehanne.

                                                    I do not really know any of the two (I used Pascal years ago.. but Oberon seem better).

                                                    But of all the C alternatives I could decide to integrate in Jehanne (the way Perl was integrated in Unix) these seem the best two candidates for their balance between simplicity and practicality.

                                                    Wirth’s Oberon win on simplicity, but Obi’s Myrddin win on practicality (according to my shallow understanding so far… take this with a grain of salt!)

                                                    1. 2

                                                      FWIW, Myrddin is probably going to be the easiest to port to Jehanne, since it already runs on Plan 9, and has a very small system abstraction layer.

                                                      1. 1

                                                        Hi Orib! Yes, you are right! Myrddin is the most practical choice for Jehanne.

                                                        Also it provides language features I like, such as ADT and pattern matching, and it already has a practical standard library.
                                                        But honestly I haven’t had the time to try your hints: I saved them from my irc log, but… really I didn’t had the time… :-(

                                                        Nevertheless I’m also rather fashinated by Oberon-07: Wirth keeps cleaning it, removing redundant features. I know this add pressure to the library and applicative code, but…

                                                        I think you can see the affinity with my strive for simplicity in Jehanne.

                                                2. 4

                                                  All of those fall over on portability. Rust is amd64 and i386 only, myrddin is amd64 only, and building the zig compiler requires llvm. nim has the best story with amd64, i386, ppc and arm, which still isn’t enough.

                                                  1. 1

                                                    I think you are wrong about rust, there have been plenty of posts of embedded arm and other processors targetted by rust. LLVM has lots of targets and can compile itself, so it is relatively portable, though extremely complex.

                                                    1. 3

                                                      Is rust on other architectures done natively or by cross-compiling? I don’t know about the others but OpenBSD requires that the base install can build itself on every architecture.

                                                      1. 1

                                                        https://forge.rust-lang.org/platform-support.html - it seems like rustc can run on at least 5-6 architectures. and the groundwork is there for more.

                                                        Zig itself has two stdlibs, one is based on libc so I bet that it could run on more platforms.

                                                        1. 6

                                                          He is right, the only platforms at the moment able to self-build rust are amd64 & i386. OpenBSD requires much more. You participated in a previous thread so you know that rust in the base system is not likely to happen. Hence rust is not the answer to:

                                                          If I wanted to both re-write indent(1) in not-C and continue to distribute it as a part of FreeBSD, NetBSD, OpenBSD - which programming language should I “upgrade” to? What choice do I have?

                                                          With the current status quo, the only language fitting the above question I believe is Perl.

                                                          1. 2

                                                            https://github.com/Microsoft/checkedc seems to be one of the more practical approaches to upgrading C, though obviously not ready.

                                                3. 2

                                                  Maybe Vala. It compiles to C but has dependency on GObject.

                                                  1. 2

                                                    The answer is C++. Every architecture that OpenBSD currently supports has a C++ compiler in base (well actually compXX.tgz). I’d imagine the answer is similar for FreeBSD and NetBSD. You may be able to get away with C++11 on the popular architectures but I think the less popular ones you’re stuck with C++03 or even C++98.

                                                    1. 1

                                                      The general choice is anything that compiles to C. If they’re picky about coding standards, what you would have then is a cultural argument instead of one on language capabilities. They wouldn’t allow something better. Then, you might be forced to do what folks like Per Brinch Hansen did back when hardware couldn’t run ALGOL: write in one language you can’t share for its benefits with a second version done against that in language you can share. To automate that, I recommended a while back someone make a safe, clean, superset language that’s compatible with C plus exports to readable code in that language. Throw in real macros and REPL for an extra reason to use it.

                                                      Then, we don’t have a CVSup-style situation where author uses a safe, maintainable, high-level language for its benefits but people eventually rewrite that stuff in C anyway.

                                                  1. 10

                                                    Huh. I didn’t realize Java is going the Firefox/Chrome model of releases.

                                                    Overall if you have good unit tests in your software, this shouldn’t be a big deal. Update to Java x, run sbt test or gradel test or whatever, update your test-running CI container to java x, let it run there, update your production Dockerfiles to java x, deploy and check your integration tests.

                                                    Oh you don’t have a lot of unit tests? .. wait, you don’t have any unit tests?! … Well it will probably just work .. have fun!

                                                    1. 6

                                                      I don’t think it’s that straightforward for everyone. It’s hard to measure the performance impact of changes to the JVM, as well as potential obscure bugs, from just unit testing. I think most big deployments and libraries will stick to LTS releases as a result, which isn’t that bad given it’s about the old pace of updates anyway.

                                                      1. 6

                                                        To support this point, for a specific example of a more obscure change in a JDK that caused programs to fail, see http://www.oracle.com/technetwork/java/javase/8u20-relnotes-2257729.html - it’s a long list but note this

                                                        Collection.sort defers now defers to List.sort

                                                        Previously Collection.sort copied the elements of the list to sort into an array, sorted that array, then updated list, in place, with those elements in the array, and the default method List.sort deferred to Collection.sort. This was a non-optimal arrangement.

                                                        The consequence of changing to sorting in place (the optimal arrangement), is that programs which sorted in one thread and concurrently iterated in another are more likely to crash with this JVM than previously. Might be hard to test for that even in an integration test!

                                                        Unit testing is dangerous because it gives inexperienced coders false confidence that changes are good.

                                                      2. 2

                                                        Huh. I didn’t realize Java is going the Firefox/Chrome model of releases.

                                                        Well, at least Firefox has train releases + a long term release. Java doesn’t seem to have that.

                                                        1. 11

                                                          Didn’t the article mention Java 8 being a long term release?

                                                          1. 13

                                                            Yes, Java has LTS releases, currently 8 and then 11. http://www.oracle.com/technetwork/java/eol-135779.html

                                                            1. 4

                                                              Ah, sorry, I had missed the precise scheme. I thought 8 was LTS, as it was the last “old-fashioned” release.

                                                              1. 1

                                                                Note that Red Hat will support OpenJDK 8 after Oracle discontinues their support as they have with previous releases in the past; they commit to it up to October 2020: https://access.redhat.com/articles/1299013

                                                          1. 10

                                                            Interesting perspective, although the author seems to be dismissive of other people’s experiences. Having had a supportive environment from day 1, she then makes an appeal for people to stop being supportive to others who may not have had the same environment? And this based on the claim that some attempts at support are harmful, but how that’s harmful is not explained.

                                                            Also, “it’s not a problem in South India so it shouldn’t be a problem elsewhere” is not a very compelling argument. It seems he author has had a largely positive experience free of discrimination, and doesn’t understand people who have experienced bias. At the very end is an appeal to some kind of gender-blindness. Unfortunately that only works in environments that are already free of bias. In a biased environment, being blind to differences will lead to ignoring the existing bias.

                                                            Perhaps I would understand the author better if the points were more fleshed out, but as it is there are glaring gaps in this analysis.

                                                            1. 8

                                                              Maybe walking up to someone and saying “Oh I really wanted to listen in, because you are the only woman here” is sexist no matter what culture you’re from.

                                                              1. 2

                                                                I can definitely appreciate the argument that anti-intellectualism in America breeds the kind of high-school cheerleader/quarterback gender stereotypes that come back to bite all adults in their professional lives. (edit: grammar)

                                                                1. 1

                                                                  I read this as another “here is my personal experience” post. It’s a nice reminder that as more effort is made to bring under-represented groups into the field we also need to be careful not to set lower expectations on those individuals as engineers or treat them differently than we would any other engineer. Things can be done with events and organizations in terms of pipeline and making sure groups are represented, but those individuals probably don’t want to be picked to speak or have an audience simply because of the color of their skin or their gender.

                                                                  It’s a difficult balance to achieve, but that doesn’t make it any less worthwhile. This is a problem about people, so the only way to move forward is by understanding the people affected (and everyone else in the equation for that matter) to the furthest extent possible.

                                                                  Edit: typo

                                                                1. 13

                                                                  Finally! This article is about desktop, but OpenSSH is coming to all of Windows, including IoT Core where I work. I’ve been championing the upgrade for years now. Compared to our old SSH implementation, OpenSSH is more stable, supports newer encryption standards, and can send files over sftp.

                                                                  Very excited to see this land. Kudos to the Powershell team for putting in most of the porting work, and of course to OpenBSD for developing OpenSSH in the first place.

                                                                  1. 5

                                                                    Last time I tried anything microsofty in that sort of realm I started throwing things at the screen. (Can’t remember what it was telnet maybe? Their built in “term” thing?)

                                                                    It obstinately refused to resize, and got the wrapping horribly wrong and clearly had been written by somebody who had an ideological hatred of the command line.

                                                                    Downloaded putty and…. Oh My! It all just worked and worked correctly!

                                                                    So merely having a ssh client will not cause me to shift from putty, having a ssh client that works properly and slickly might convince me.

                                                                    1. 7

                                                                      Well, for IoT Core I’m more excited about the OpenSSH server than the client. I’ve been connecting to it with PuTTY.

                                                                      That said, the Windows command-line has vastly improved from 8.1 to 10. The biggest improvement is that text reflows as you resize the window. Copy/paste was also improved.

                                                                      Telnet and SSH are just transports. I bet your frustration was due to the old Windows conhost.exe being a terrible terminal.

                                                                      1. 2

                                                                        When you connect to IoT Core via SSH what shell are you dropped in to?

                                                                        1. 1

                                                                          Just plain old CMD. Usually Powershell is present too, but OEMs can choose to build an image without Powershell.

                                                                          If you want to connect directly to a Powershell session, it has its own remote shell feature, enter-pssession.

                                                                          1. 1

                                                                            There’s a more detailed answer by Joey Aiello in the HN thread.

                                                                        2. 3

                                                                          Their built in “term” thing?

                                                                          AFAIK some projects such as the Git command line utilities for Windows have for years now shipped with a TTY which is based on PuTTY’s TTY (just not using any of the SSH code or anything) and it’s much nicer.

                                                                          1. 2

                                                                            ConEmu is another tool that will improve your commandline life on Windows. As for Microsoft products, there are many people who swear by Powershell!

                                                                            1. 2

                                                                              Powershell is a nice shell, but it lives inside the same terminal (conhost.exe) that CMD does.

                                                                              1. 1

                                                                                Cmder is a great shell built on top of ConEmu that even has support for the quake-style appear/disappear animation.

                                                                            2. 2

                                                                              Try cmder for a decent terminal. The git version comes with a bunch of tools (including ssh, ls, etc) and provides a terminal experience on Windows that won’t make you throw things at the screen (hopefully!).

                                                                            3. 1

                                                                              That’s pretty impressive. OpenSSH makes a lot of POSIX assumptions about things like PTYs and fork.

                                                                            1. 52

                                                                              Just as important as Firefox being a distinct product is that it uses its own rendering engine. There are only three major browser rendering engines: Trident/WhateverTheyCallTheEdgeEngine (Microsoft), WebKit/Blink (Chrome, Chromium, Safari, Opera, most one-off browsers like Web in GNOME, WebPositive on Haiku, etc), and Gecko/Servo (Firefox).

                                                                              It’s not enough to have a million different browsers if they’re all using the same rendering engine. We need variety in implementations on that front too…

                                                                              1. 11

                                                                                Very good point; I spoke of this issue with a colleague a couple of weeks ago, and I asked: “what happens if Microsoft decides to get out of the web browser market and Mozilla collapses?” Then, for all intents and purposes, Google would literally control the web. Now, I don’t know how likely it is that Microsoft would stop its Edge effort or that Mozilla would go under—probably not very likely in the short term. Still, it seems to me that the complexity of the modern web (HTML 5, CSS, JavaScript with a state-of-the-art JIT compiler, DRM, etc.) makes it unlikely that we’ll see another web engine—much less a free web engine—that can compete with the current trio, and practically impossible to see enough new web engines to actually create competition.

                                                                                1. 7

                                                                                  Agreed, the only way you web standards can realistically be called standards is if there’s a variety of implementations, and a variety of vendors with enough influence to shape those standards.

                                                                                  1. 5

                                                                                    EdgeHTML. No really, that’s the name of the rendering engine. Microsoft continues to amaze with their horrendous naming :)

                                                                                    1. 9

                                                                                      Could be worse. Could be EdgeTML.

                                                                                      1. 1

                                                                                        Older versions of IE could be called “FML”, which is exactly how you feel when tracking those IE only bugs.

                                                                                  1. 2

                                                                                    silly question. what does this give you? all the actions in the gifs are already fully realized by the time that something happens. By the time it shows you something visual the action is fully completed.

                                                                                    1. 3

                                                                                      I haven’t used this in particular, but the feature in general is super handy for yanking for instance. You’ll immediately know if you did 3yy or if you accidentally did 34398yy. Even for deleting, it gives you a quick visual hint that gives you an intuitive feel for how much you deleted.

                                                                                      1. 1

                                                                                        I will have to try it out. that could actually be very useful just for yanking.