1. 5

    This was the algorithm used in bazaar, a DVCS that predated git, so I’m surprised git didn’t already use it by default! Looks like you can fix this by adding yet another line to your .gitconfig:

    [diff]
      algorithm = patience
    
    1. 1

      Bazaar only preceded Git by about a month so it’s very likely that Linus was unaware of it when he wrote Git.

      1. 1

        I’m sure Linus was unaware when he started, but bazaar preceded it by years. Famously, once git was released, Linus showed up to the bazaar mailing list to call us all idiots.

        1. 1

          Bazaar was released in 2005, as was Git.

    1. 1

      Intercal (1972) was inspired by javascript (1995)?

      It’s hard to tell which part of the diagram is a joke and which is serious – I would remove the javascript section and aim for making it all serious.

      1. 9

        This is really interesting to me because it directly states a thing the other monorepo articles only implied: The author imagines a single repo as the “natural state”, and modular repos as “a thing that happens to a monorepo”.

        I’m starting to think that your opinion on monorepos depends on your personal experience:

        • work at a megacorp where monorepi were your first real DVCS experience: this is the “natural order”, and modular repos are “breaking up the repo”
        • work in modular repos, then watch a well-meaning autocrat try to merge them all into a centralized authority: the monorepo is “asserting control” by an unwelcome outside group
        1. 4

          Great point. I think the answer obviously falls somewhere in the middle - monorepos work sometimes, polyrepos work sometimes. The real answer is that making things work trumps other considerations, so if a monorepo removes more obstacles than it creates for your team, then a monorepo is a good answer for you.

          These same sorts of arguments crop up in lots of other situations as well; *Framework X is better than Framework Y” is a classic, but usually the answer is really that each framework solves things slightly different and you should use the one that solves things for your team in a reasonable way. When you get into monolithic discussions, there isn’t always one answer that is always going to be the best answer, because each project has more things to consider than is possible in the length of one article.

        1. 1

          It took me embarrassingly long to figure out that the reason this article made no sense to me is that it’s referring to the old DOS keyboards. (Undo, redo, cut, copy, and paste are all on the ZXCV keys on a modern keyboard, so that you can redo with command-shift-Z with one hand.) It’s a funny rant, but all of these ancient problems (sysrq key?!) have been replaced by new & exciting problems a decade ago.

          Would love to see a keyboard put ZXCV, F, Fn-backspace, and “next/prev tab” on dedicated keys tho, it’s true.

          1. 1

            I think the author is missing the point and tackling a strawman. As far as I can tell, the real “debate” between static and dynamic typed languages is whether the compiler uses type assertions to find errors & optimizations, and whether the coder considers those to be valuable enough to offset the extra keyboard-typing.

            1. 7

              Can someone explain to me, a Rust tourist at best, why async/await are desirable in Rust when awesome sauce concurrency because of the ownership / borrowing model have been baked into Rust since its inception?

              FWIW I also really like the idea of working groups, and I think focusing on the areas where Rust gets the widest usage is super smart.

              1. 15

                The current Futures implementation exerts a lot of “rightward pressure” when you’re trying to chain multiple future results together. It works, and works safely, but it’s a bit messy to work with and there’s a lot of nesting to deal with, which isn’t easily readable.

                The async/await proposal is basically syntactic sugar to linearize logic like that into a straight-line set of reasoning that’s a lot easier to work with.

                1. 15

                  The biggest problem with the current Futures, as far as my experience goes, is that the method-chaining style involves so much type inference that if you screw up a type somewhere the compiler has no prayer of figuring out what you meant it to be, or even really where the problem is. So you have to keep everything in your head in long chains of futures. I’m expecting async/await to help with this just by actually breaking the chains down to individual expressions that can be type-checked individually.

                  Edit: And it’s desirable in Rust because async I/O is almost always(?) going to be faster than blocking I/O, no matter whether it’s single threaded or multi-threaded. So it doesn’t necessarily have anything to do with threads, but rather is an orthogonal axis in the same problem space.

                  1. 5

                    I hope a lot of care is taken to make it easy to specify intermediate type signatures. I know that in other languages with type inference I’ll “assert” a signature halfway through some longer code mainly as docs but also to bisect type error issues.

                    1. 1

                      Totally agreed. As far as I understand (which is not much), saying async foo(); is similar to return foo(); in how the language treats it, so you should be able to get the compiler pointing quite specifically at that one line as the place the type mismatch occurs and what it is. If you have to do foo().and_then(bar).and_then(bop); then it just says “something went wrong in this expression, sorry, here’s the ten-generic-deep nested combinator that has an error somewhere”.

                      1. 1

                        Async is the easier part. async fn will be sugar:

                        async fn async_fun() -> String {
                          // something
                        }
                        
                        fn async_fun() -> impl Future<Item=String> {
                          // something
                        }
                        

                        In the back, this builds a Generator. await is setting up the yield points of the generator.

                        async fn async_fun() -> String {
                          let future = futures::future::ok(String::from("hello, i'm not really asynchronous, but i need quick example!"));
                          let string: String = await!(future);
                          string
                        }
                        

                        So yes, the type mismatch would occur at the binding of the await and the right hand side is much easier to grasp. Basically, “and_then” for chaining can now largely be replaced by “await”.

                    2. 1

                      Ah, you’re right. I SHOULD know this in fact from the bad old days of Java when “Non Blocking IO” came out :)

                      1. 1

                        This has pretty much been my only major negative with rust up to this point, i’ve got three apps underway in rust all using Futures and it just starts getting hairy when you get to a certain level of complexity, to the point you can be hammering out code and when you get to your Futures chaining it stops you dead in your tracks because it’s hard to read and hard to reason about quickly. So i’m on board with async/await reserves for sure.

                      2. 3

                        This sums it up very well. I can do everything I personally want to do with Futures as they exist now in Rust. That said, I feel like async/await will really clean things up when they land.

                        1. 2

                          That’s interesting! I guess I’d mostly thought of async/await as coming into play in languages like Python or Javascript where real concurrency wasn’t possible, but I suppose using them as a conceptual interface like this with real concurrency underneath makes a lot of sense too.

                        2. 9

                          I believe async/await are desirable in all languages that implement async I/O because the languages usually walk this path, motivated by code ergonomics:

                          1. Async I/O and timing functions return immediately, and accept a function to call (“callback”) when they’re done. Code becomes a pile of deeply nested callbacks, resulting in the “ziggurat” or “callback hell” look.
                          2. Futures (promises) are introduced to wrap the callback and success/failure result into an object that can be manipulated. Nested callbacks become chained calls to map/flatMap (sometimes called then).
                          3. Generators/coroutines are introduced to allow a function to suspend itself when it’s waiting for more data. An event loop (“executor”, “engine”) allows generators to pause each time a future is pending, and resume when it’s ready.
                          4. “async”/“await” keywords are added to simplify wiring up a promise-based generator.

                          In rust’s case, I think it was “implement generators/coroutines” which hit snags with the existing borrow checker.

                          There’s a cool and very in-depth series of articles about the difficulty of implementing async/await in rust starting here: https://boats.gitlab.io/blog/post/2018-01-25-async-i-self-referential-structs/ (I’m pretty sure this was posted to lobsters before, but search is still broken so I can’t find it.)

                          1. 8

                            “async”/“await” keywords are added to simplify wiring up a promise-based generator.

                            Going further: it follows the very general algebraic pattern of monad. Haskell has “do-notation” syntax which works for Promises but also Maybe, Either, Parser, etc.

                          2. 8

                            In addition to the great explanations of others, here are a couple diffs where the Fuchsia team at Google was able to really clean up some code by switching to async/await:

                            1. 1

                              Interesting! That speaks to the Rust 2018 initiative’s focus on ‘embedded’ in the mobile sense.

                              1. 3

                                The initiative has been surprisingly successful. Most of my clients are currently on embedded Linux and smaller.

                          1. 2

                            Whoa. This is exactly how packrattle does it already, based on a different paper from no later than 2012. Interesting that different groups have different ideas about what GLL is.

                            1. 1

                              Cool library. Yesh, GLR and GLL are simply too powerful to not try to improve. Mostvof the time I looked for GLR stuff which I submitted here. GLL needed some love, too, though. :)

                            1. 1

                              I’m robey@mastodon.technology and unsurprisingly I tend to talk about coding topics & retro computing.

                              btw I prefer to call it the “fediverse” (I didn’t make up that name) because many users are on pleroma or a server they wrote themselves

                              1. 1

                                btw I prefer to call it the “fediverse” (I didn’t make up that name) because many users are on pleroma or a server they wrote themselves

                                I do too, but since this thread was a re-make, I decided to re-use the title, but mention “fediverse” in the text.

                              1. 2

                                You can check the configuration of memory in your computer with decode-dimms command.

                                No you can’t, this is Ubuntu-specific.

                                1. 2

                                  It doesn’t work on Ubuntu either.

                                  1. 1

                                    Wait, really? At all?

                                1. 97

                                  I’m sorry to bring this up, and it’s probably considered off-topic here on Lobsters, so feel free to flag this.

                                  I know that OpenBSD and SQLite and lots of great pieces of software have been funded by the US military, and computing and military have a long and complicated relationship, but where do we as developers draw the line as to whom we are willing to accept contributions from?

                                  This is from Palantir, the company providing the technology for Trump’s deportation machine. I don’t think that this is a black/white issue, and I guess it may be possible to work at a seedy company and still do good stuff. But the docs include a FlightSearch example; is that really appropriate given the context?

                                  Regardless, thanks for releasing this as free software.

                                  1. 37

                                    Thank you very much for saying it. I think making sure these ethical topics aren’t ignored is the very least we all have a responsibility to do. It’s also entirely possible that there are people here who didn’t know about it, so it’s always worth saying.

                                    1. 37

                                      Thank you for saying this. I’m troubled by the cavalier attitude of techies toward ethics lately, and it’s nice to know I’m not alone.

                                      1. 24

                                        I don’t think a forum where this response is off-topic is worth participating in. The tech industry spends too little time thinking about the ethical implications of it’s products.

                                        1. 25

                                          Even today, we debate the ethics of using the data gathered from unethical experiments in WW2.

                                          I agree that there is a massive ethical issue working for Palatir - and I am not sure it’s ethical to use the work they have produced. Particularly if it’s a Swagger-like clone not yielding substantive value to humanity.

                                          1. 10

                                            While we’re at it, you probably typed that on a machine made by highly-exploited workers in a corrupt country that does far worse, added to the lake in the process, probably paid a surveillance-enabling company in a police state to send it over the network, and possibly wearing clothes made by kids in a sweatshop. And you did all this to get online suggesting moral folks maybe shouldn’t contribute to a HTTP/JSON thing that’s open source since a bad company might misuse [more] open source. Seems hypocritical to me.

                                            Where to we draw the line on how our consumption and contribution harms or helps others? And do you regularly do that for every product and service you buy? Most of them? Have you been active in government on laws, treaties, court cases, etc? The stuff that stops things like you describe. Or just some quick, social signaling on Lobsters getting feel-good points? If you care, I encourage you to put time into legal reform or bootstrapping alternatives to each of the things I mentioned. Maybe make for better opportunities for immigrants in whatever your country is, too. Maybe host some coding bootcamps or something for those in the slums. What you’re doing here is adding to the noise but not helping Trump’s victims or your country’s immigrants in any way.

                                            1. 71

                                              I feel like this is a great example of whataboutism.

                                              I think that if this approach was applied to tech, we’d never fix a bug because “what about the other bugs that could crash the app, this is just virtue signaling because physical compromise means game over”. Why fix a bug when you can say “What about the terrible state of security education in general, why fix a security bug when developers are just adding more?”

                                              It’s ok to make a judgement call and improve one thing in this messy world. It’s ok to try and reduce your footprint/total harm while hypocritically still participating in the system that feeds you. In fact that’s sort of core to improving those systems in a democracy.

                                              Sorry if I misinterpreted your statement, I greatly enjoy your comments across the internet.

                                              1. 11

                                                Whataboutism is a common reply on HN or Lobsters when a popular group decries their outgroup’s activities, third party points out their actions are contrary to their own beliefs, adds that the biases indicate they’re scoring political points rather than really care, and someone pops in to say third party is whataboutism to silence those views. Thing is, whatever 3rd party brings up is almost never on these forums, getting crowd support, or whatever. Always absent. Rather than likely-intended purpose, the whataboutism claim just reinforces specific types of people supporting/rejecting specific activities by silencing dissenters. I mean, if commenter really cares about Trump’s horrors or not contributing to evil organizations, why the hell are they funding evil, slaving companies to buy toys to spend so much time on the programming projects? So, they probably don’t care or are acting like it now. Then, I do to them as they do to others.

                                                Far as what I’m doing, I’ll tell you straight up. There’s been an increase over time of political comments that are about shaming people into behaving certain ways for a perceived, social good. Almost all of them are coming from hypocrits and/or slactivists. I mean, they’re talking on a forum no politician reads with low views. It’s not going to change Palantir’s or Trump’s practices. They know they avoiding stuff that can get results to spend time on Internet forums. So, they’re just getting an emotional high off attacking their opponents, looking like they’re responsible, or getting meaningless votes from people that agree with them. They also tie up our threads with that shit. So, as a real activist doing real-world work, I just call out their selfish, hypocritical bullshit to (a) deter more comments like that here and/or (b) encourage them to actually work on the causes they claim to work on.

                                                Disclaimer: In fairness, people could (and do) call me out for not putting more time into actually building and deploying secure goods rather than high-level designs posted online. Although I defended my choice, I’m probably guilty of screwing up on a reasonable ratio between the two. Anything above zero code might be better. I plan to work on that more next year after I change circumstances.

                                                Disclaimer 2: I say “almost all” cuz a few people here are legit activists or doing things at a loss to address the causes they’re talking about. I respect them a lot.

                                                “It’s ok to make a judgement call and improve one thing in this messy world. It’s ok to try and reduce your footprint/total harm while hypocritically still participating in the system that feeds you. “

                                                I totally agree with you. That’s not what the person was doing, though. It won’t stop Palantir’s contracts, it won’t stop the government’s activities, and proliferation of HTTP/JSON libraries will continue. The latter will even be FOSS so anyone, including Palantir, can use them. Maybe person complaining should start an alternative to Palantir that’s more ethical, organize boycotts of their products, get in a HR office poaching all their smartest talent (or delivering idiots), make enough money to pay off politicians to change government policies, and so on. Stuff that actually affects Palantir or Trump’s agencies.

                                                “I greatly enjoy your comments across the internet.”

                                                Thanks and same to you. :)

                                                1. 25

                                                  Maybe person complaining should start an alternative to Palantir that’s more ethical, organize boycotts of their products, get in a HR office poaching all their smartest talent (or delivering idiots), make enough money to pay off politicians to change government policies, and so on.

                                                  This objection is absurd on its face. You can’t ethically compete in a market for unethical services. An ethical alternative to Palantir is an oxymoron, because Palantir’s ethical issues are fundamental to the things that Palantir sells. You also can’t “organize a boycott” of a defense contractor. Your final two points are literally “just have enough money to fix the problem”.

                                                  How does starting a company which sells the same thing as Palantir to the same customers Palantir sells to, hires the same people as Palantir, has the same wealth as Palantir, and bribes politicians the way Palantir does, stop the problem of companies that behave like Palantir? You’re objecting to someone criticizing the status quo by telling them they should instead… further reinforce the status quo?

                                                  1. 19

                                                    I think you misapprehend what is going on here. This is a forum for highly technical people; by raising the serious ethical space Palantir exists in, it directly bears on creating difficulty in recruiting, along with decreasing retention.

                                                    You, of all people, should understand the power of words on an internet screen to influence readers: you’ve been writing long & grammatically correct essays on security across multiple major internet fora for years. I’ve seen you on Schnier and HN, :) Communication, persuasion, and discussion are an essential activist activity. (And for my money, it is substantially more effective than picketing and marching 95% of the time…)

                                                    1. 7

                                                      (I suspect this was meant as a reply to the person I replied to.)

                                                      1. 2

                                                        “by raising the serious ethical space Palantir exists in, it directly bears on creating difficulty in recruiting, along with decreasing retention.”

                                                        I agree with you. I actively do that in real life every day for customers and coworkers wanting something better in a lot of areas. I have plenty of results to show for it. That’s because I put the time in where it gets results and consistently do it rather than one-off’s we sometimes see here. Companies like Palantir use recruiting practices that cast a wide net. Anyone wanting to disrupt their recruiting should be posting such comments on sites with massive numbers of page views that are mostly developers. Big, social media sites like Twitter, Facebook, Reddit, and Hacker News. LinkedIn, too, if you can do it that way but I haven’t been on in long time. That’s why I encourage them to put political efforts in front of literally millions of developers instead of a hundred or less participating here if aiming for a big wave of change.

                                                        “You, of all people, should understand the power of words on an internet screen to influence readers: you’ve been writing long & grammatically correct essays on security across multiple major internet fora for years. I’ve seen you on Schnier and HN, :) “

                                                        You said long and grammatically correct. You gotta be messing with me on second half lmao. I agree with the power of words and persuasion as stated above. Hell, you had to have seen me do it there, esp to “Skeptical” (troll or near-perfect DOD apologist) before I left. That’s why I tell them to use that power where it gets results instead of Lobsters. Then, we keep Lobsters focused on deep, technical stuff with low noise. Anyone wanting to achieve political action can ping Lobsters, via dedicated threads or private messages, to go where the action is to get actual, Palantir-scale results.

                                                        ““It is what it is”, which is what your comment & Nick’s comment promote, simply promotes apathy; history provides many examples of change taking place. I encourage people to shake off the belief that things will always stay the same.”

                                                        That’s not true at all. I’ve just followed something like several lifetimes worth of history on the U.S. military and government under both left- and right-leaning leaders finding the military-industrial-complex just got more powerful over time. The politicians of both sides support it. The right supports companies like Palantir overtly. The left’s politicians will support the defense contractors for both payouts and to bring jobs to their districts. So, to change the situation voronoipotato describes, you have to get millions of people to vote out scumbags that take money to improve chances of elections to combat defense industry or get an anti-war, pro-immigration President in office with Congress willing to roll-back legislation.

                                                        The last election surprised most lefter-than-I liberals that were trying to make people say the correct things on forums, etc in ways we see in some threads here. I doubt they’re capable of achieving that 180 directly if keeping same practices that failed before so hard they didn’t even see what was coming. Fingers crossed that we just get lucky that Trump does so much damage and embarrassment that a reversal happens in swing states after the Democrats get on top of their shit this time. Or we centrists get a President. Fat chance on that one since few listen to moderates. ;)

                                                      2. 5

                                                        The person you’re talking to likely doesn’t even think that Defense Contracting is unethical. Being said palantir is going to keep existing, boycotting doesn’t mean anything here because we don’t even buy their products. Even under a proper organized effort if we got a different defense contractor absolutely nothing would be different. The only tactics I’m aware we can do are mitigation tactics of not giving our labor to defense contractors, but this drives up the wages to the point where someone would. You can if you work there do a labor slowdown, but your ability to act in that way is limited, and useless if it’s not a group effort.

                                                        Palantir is a bad thing but our ability to affect it is extremely limited. Electoral politics is mostly useless here. Their lobbying power affects both parties pretty evenly. IMHO it’s better to put energy into mitigation tactics into problems where it’s easier to have traction. One group has been for example paying for bail bonds for refugees.

                                                        Defense contractor spending isn’t a symptom of capitalism but rather attached to the heart, a swollen vestigial organ from mercantilism and much like the appendix may kill you if you remove it unskillfully.

                                                        I think it’s natural to see the biggest problem and try and lock horns with it, but sometimes a smaller problem you can solve is genuinely better than a larger problem you can’t. Obviously don’t work for them, there’s plenty of other places that pay you well and you won’t even have to think about all the bodies when you go to sleep.

                                                        1. 7

                                                          The person you’re talking to likely doesn’t even think that Defense Contracting is unethical.

                                                          Yes, but the person they’re suggesting this in response to does, which was the context of nickpsecurity’s original suggestion to compete with Palantir.

                                                          The only tactics I’m aware we can do are mitigation tactics of not giving our labor to defense contractors, but this drives up the wages to the point where someone would.

                                                          I don’t know what your point is. Driving up wage costs for unethical corporations is the point of organizing an effort to boycott employment at specific corporations. The goal is making things like human rights violations untenable to corporations by making them unprofitable. Yes, this is a half measure - but it’s not nothing, either.

                                                          Defense contractor spending isn’t a symptom of capitalism but rather attached to the heart, a swollen vestigial organ from mercantilism and much like the appendix may kill you if you remove it unskillfully.

                                                          So your point is, we should leave it alone?

                                                          I think it’s natural to see the biggest problem and try and lock horns with it, but sometimes a smaller problem you can solve is genuinely better than a larger problem you can’t.

                                                          On the contrary - refusing to work for companies like Palantir and encouraging my fellow tech workers to do the same is one of my most fruitful opportunities to fight against systemic injustices at the moment. Each of us in the tech industry have far more influence on an our industry’s actions than on the actions of things like the federal government - there are less than four million programmers in the entire US, as opposed to the vastly higher number of voters. We should be adamant about using our privileged place as one of the few labor pools left with real negotiating power to prevent our industry from committing acts of evil, not conveniently defeatist whenever someone dares to suggest the small personal sacrifice of choosing not to directly build the tools of human misery.

                                                          1. 7

                                                            Fundamental changes are achieved by many people choosing to not accept what is, and coming together to push towards a major change in the status quo.

                                                            “It is what it is”, which is what your comment & Nick’s comment promote, simply promotes apathy; history provides many examples of change taking place. I encourage people to shake off the belief that things will always stay the same.

                                                            1. 1

                                                              You said it even better than me.

                                                          2. 20

                                                            Whataboutism is a common reply on HN or Lobsters when a popular group decries their outgroup’s activities, third party points out their actions are contrary to their own beliefs, adds that the biases indicate they’re scoring political points rather than really care, and someone pops in to say third party is whataboutism to silence those views. Thing is, whatever 3rd party brings up is almost never on these forums, getting crowd support, or whatever.

                                                            No it’s a common reply when you distract from the discussion at hand to go ‘oh but what about these other unrelated issues?’ Your response is literally at the level of ‘capitalism made your iPhone you’re using to have this conversation so checkmate’ in a discussion about economic systems.

                                                            There is no ‘popular group’ here, there’s no ‘outgroup’, nobody is decrying anyone’s activities. You haven’t ‘pointed out’ any actions that are contrary to anyone’s beliefs or exposed any biases or virtue signalling. All you’ve done is responded to a post pointing out that Palantir might be an unethical company, accusing them of virtue signalling! They didn’t even say ‘Palantir is bad’. They suggested that it might be, and that it was worth thinking about and discussion. Did you then discuss it? Did you think about it? No, you just launched into an attack, said that their post was social signalling and accused them of hypocrisy.

                                                            Imagine for a moment the discussion was oil companies, and the person you were responding to had said ‘I think oil companies often act unethically and I think we should consider whether we want to be working with them and contributing to their open source software’. Your response was the equivalent of ‘you don’t have an electric car so you’re not allowed to discuss this’. I hope you can see that that is nonsense.

                                                            I totally agree with you. That’s not what the person was doing, though. It won’t stop Palantir’s contracts, it won’t stop the government’s activities, and proliferation of HTTP/JSON libraries will continue. The latter will even be FOSS so anyone, including Palantir, can use them. Maybe person complaining should start an alternative to Palantir that’s more ethical, organize boycotts of their products, get in a HR office poaching all their smartest talent (or delivering idiots), make enough money to pay off politicians to change government policies, and so on. Stuff that actually affects Palantir or Trump’s agencies.

                                                            When someone says ‘where do we as developers draw the line as to whom we are willing to accept contributions from?’ they are opening up a discussion. Maybe the result of that discussion would have been ‘anyone actually’. Suggesting that the first thing you should do is start boycotting companies before the issue has even been discussed is ridiculous. Discussions are fine. Discussions are not slacktivism. Posting ‘#stoppalantir #metoo #stoptrump’ at the end of your tweets and doing nothing else in your life is virtue signalling. Discussing issues is not.

                                                            1. 10

                                                              There is no ‘popular group’ here, there’s no ‘outgroup’, nobody is decrying anyone’s activities.

                                                              A person submitted a HTTP/JSON toolchain that they were open-sourcing. A versatile, general-purpose tool that can be used for good if someone wants to. The comment I replied to ignored the software submission entirely to tell them they’re unethical for working at Palantir since other parts of the company uses its tech to serve an unethical customer. That’s decrying activities. Such reasoning also applies to companies like Google (or other surveillance companies), Apple/Foxconn, VC-funded companies aiming for lock-in, and so on since buying their stuff or contributing to their FOSS might support all kinds of evil. Some people supporting the decrying comment even work at such companies despite other jobs being available for people with that kind of talent. Strange.

                                                              The fact that this accusation and suggestion to quit their job got 60 votes vs 7 about the submission… on Lobsters with lower numbers of votes to begin with… definitely says it’s popular. The marked difference between the people who support or question that tangent supports the existence of an outgroup relationship. I can’t say as much about what it means here since the outgroup receives more support on a lot of political divides. Lots of folks here hate companies like Palantir regardless of other beliefs. That’s what I’m leaning toward.

                                                              It’s been an interesting thread to observe, though.

                                                              1. 2

                                                                Wholeheartedly agree, there! I suspect I drew different conclusions than you, though.

                                                            2. 3

                                                              People can disagree with you without being part of a conspiracy to silence or shame you. Maybe a less emotional response would be more informative.

                                                            3. 0

                                                              One of nick’s pastimes seems to be railing against liberal “hypocrisy” on this website, mostly by deflecting into muddy tangential arguments just like so.

                                                              1. 13

                                                                Please don’t post ad-hominem attacks here. If you disagree with the argument, pick it apart politely.

                                                                Lord knows you should have enough practice by now to do so.

                                                                1. 5

                                                                  If you disagree with the argument, pick it apart politely.

                                                                  That only works if both sides are arguing in good faith though which definitely doesn’t appear to be the case with some commenters on here.

                                                                  1. 4

                                                                    If that’s the case, then arguing further with somebody in bad faith is just going to create noise and antagonize other lobsters. Best just to ignore the posts then.

                                                                    1. 3

                                                                      I do but it ruins the lobsters experience for me to see people arguing in bad faith without any censure. Some of them even seem to be encouraged as a kind of clickbait/outrage generator. It’s disheartening.

                                                                  2. 4

                                                                    Lord knows you should have enough practice by now to do so.

                                                                    This is an ad-hominem, friendly.

                                                              2. 19

                                                                Leaving whataboutism aside, I think you cannot conflate the (delusional) idea of ethical consumption with active usage and contribution of open source software.

                                                                Ethical consumption doesn’t work for the structure of the market, where the contribution of the individual gives no perceivable feedback to the system.

                                                                The Open Source world and software engineering are a much smaller world. It is a realistic goal to radicalize enough software engineers inside and outside of Palantir in order to halt their production. Your target audience has contract leverage, money and is highly connected and easily reachable.

                                                                This is a much easier and realistic goal than convince the management of some big corporation to reduce their exploitation just because a small minority of consumers is unhappy. When they realize this, instead of reducing exploitation, they invest in more marketing to wash their brand, or they simply start a new one. Much cheaper.

                                                                Don’t conflate your power as a consumer with your power as a producer, because they very different.

                                                                1. 11

                                                                  I used to work for Nokia. They did everything in their power to ethically source all their materials. It was the only phone company that did that. Other companies don’t do that because nobody demands it from them. While there is no ethical consumption under capitalism, there is slightly less terrible consumption. So where do we draw the line? As deep into their pocket books as it can go.

                                                                  1. 1

                                                                    I didn’t know that about Nokia. That’s awesome! Thanks for the tip.

                                                                    1. 1

                                                                      Now, keep in mind the new Nokia phones are made by a different company that just licenses the brand. I’m not sure if care as much.

                                                                  2. 10

                                                                    […] the lake […]

                                                                    That is horrible.

                                                                    Seems hypocritical to me.

                                                                    Ok.

                                                                    Where would you draw the line personally? Do I understand your opinion correctly as suggesting that if you use a computer, then you shouldn’t be discussing unethical behaviour, e.g. racism? It is not my intention to judge here; just genuinely curious.

                                                                    Maybe make for better opportunities for immigrants in whatever your country is, too.

                                                                    I agree with this very much, and this is something that I aspire to do. Additionally I do have friends that have been deported, and worry a bit about my own not so distant post-Brexit situation in the UK.

                                                                    1. 2

                                                                      Im glad you’re doing real work on this issue. I commend that.

                                                                      Writing it here likely isn’t is the thrust of my point. Instead, it’s just adding noise to the forum plus sending a jab at one of only folks we know in Palantir doing something possibly beneficial (eg open-sourcing software for data analysis). The people here that would agree with your position already dont work for Palantir, use their services, or vote for folks that support horrible policies on immigration.

                                                                      Those that do these thing are (a) mostly not on Lobsters where your comments bave about lowest ROI you can get and (b) usually disagree with you with no intent to change their mind based on your comment that states the obvious. So, you’re not reaching them. Goes for similar comments aiming for political impact on government-level stuff in non-political, Lobsters threads. So, I push for people not to introduce them.

                                                                      Im at work now so responses might be delayed.

                                                                      1. 5

                                                                        mostly not on Lobsters where your comments bave about lowest ROI you can get

                                                                        Yes, you are probably correct in that observation.

                                                                        I wasn’t really sharing my thoughts here expecting any impact, but rather because I’m interested in hearing what other people think. And you are right that I’m being hypocritical here, because I doubt I’d react the same to an IBM project even though they have a shameful past; and even worse, I used to work on this phone app promoting some agrochem from DOW. At first I just kept my eyes on the code, but I couldn’t justify it to myself after reading about their role in the Vietnam War and the Bhopal Disaster and all that.

                                                                        So, it was intended more of an open question about where people here draw the line.

                                                                        1. 2

                                                                          Well, you seem to be speaking out of the heart on things you’ve been close to personally. I respect that. I still say low-ROI with better results elsewhere. You were bringing it up for good reasons, though. The community response also strongly favored your comment in a way consistent with prior threads on politics showing a shift in what Lobsters wants as a community. I’ll write on that in the future.

                                                                          And it’s still cool you’re another person reusing older computers with the LiveCD tests and such. Off-topic a bit, but I was wondering if the hardware vulnerabilities they probably won’t patch on 5-10 year old machines have you considering new stuff? I always knew they were there. Now, they’re coming quickly with many eyeballs on them. Might be best reason I ever heard to get the latest and greatest from Purism, Raptor, or whoever. And then most have backdoors for (insert group) but fewer hardware 0-days for (more groups). Wait, I thought this tangent-tangent could lighten things up with easier choices… Looks just as hard… ;)

                                                                          1. 1

                                                                            Off-topic a bit, but I was wondering if the hardware vulnerabilities they probably won’t patch on 5-10 year old machines have you considering new stuff?

                                                                            I don’t know enough about this; what hardware vulns are we talking about here, and how easy are they to exploit? Although it’s not really about hardware, there’s that whole Intel Management Engine issue that is avoided by using somewhat old WinXP-era 32-bit laptops, so newer is not always more secure.

                                                                            And it’s still cool you’re another person reusing older computers with the LiveCD tests and such.

                                                                            Oh yes that thread! At least it’s a bit less harmful if we can use computers for longer. A friend of mine has a Mac that can’t get more OS X updates now, so she’s stuck with insecure versions of Firefox and all that. Gonna put Debian on it later this week, hopefully!

                                                                            Do you know of any somewhat more ethical laptop producers?

                                                                            1. 2

                                                                              re hardware attacks.

                                                                              Essentially, the hardware has always been secure with only elite pro’s focusing on it. Now, due to Meltdown/Spectre, hardware attacks have gone really mainstream with all kinds of university research, private research, folks describing stuff on blogs, and so on. All the CPU’s that were highly optimized (esp Intel/AMD) are vulnerable to them needing patches. They’re doing the attacks over the network now. Older systems used to be safer but now they’re not since attacks will get more numerous and effective over time.

                                                                              About the only things that are immune were simpler, embedded CPU’s. They’re not designed for security, though, with far less attention by defenders. So, that could reduce the hardware risk adding to the software risk. Simpler boards that can run modern, security-updated OS’s might help. I’m not sure. At lot of stuff is piling in.

                                                                              re put Debian on it.

                                                                              Ok, you’re already using that strategy. Good thinking and being helpful! :)

                                                                              re ethical producers

                                                                              I can’t remember since I was buying used ones like you. The one I see in media most with good things going for it is Purism. They try to disable the ME with software changes, too. Some folks pushing high freedom were using MiniFree to get ME-less, FOSS-firmware laptops. It had downsides. My own Core Duo 2 still handles stuff nicely outside games, highest-def content, and worst of web apps. Here’s a Guardian article I just found with some recommendations. Another said iFixit can help keep things going.

                                                                              So, not a lot of options for new hardware minimizing harm to self and others. There are options in both reuse and new categories that help us reduce harm. We can at least do that. I stay dedicating slices of my research to solving this problem. Tracking whatever can help for whoever can do it. Maybe something will shake out eventually.

                                                                      2. 0

                                                                        Additionally I do have friends that have been deported

                                                                        Sorry but are we now living in a world where the ‘standard’ left-wing political view in the Anglosphere is that any kind of deportation is bad? Because that’s how I’m reading this comment.

                                                                        Immigration policy exists for very good reasons. The American political dichotomy that either there should be zero immigration or completely unchecked immigration is, for lack of a better word, moronic.

                                                                        1. 3

                                                                          I think it’s fair to assume that the poster could be criticising the particular immigration policy that led to these deportations, instead of all immigration policy.

                                                                          1. 1

                                                                            It could be fair, if the poster denounced similar and almost identical policies under the previous President. As it stands, the poster is mostly just criticizing immigration policies that seemed totally reasonable and main stream just eight short years ago.

                                                                      3. 5

                                                                        You can’t make perfect the enemy of good. Your argument essentially seems to be that if you can’t live perfectly you shouldn’t try living better at all.

                                                                        It’s virtually impossible to operate in the modern world without using the internet, without having and using a computer. If it were possible to, for a reasonable price that I can afford but knowing I’d have to pay somewhat of a premium, buy a computer that I knew wasn’t made using exploitation of those in the third world, then of course I would buy one. But I don’t know that it is. And there are other competing priorities too, like getting a computer that is free of binary blobs and proprietary software.

                                                                        I certainly don’t pay a ‘surveillance-enabling company in a police state’ to send anything over the internet. I pay an ISP for internet access, but I don’t live in a police state and as far as I know my ISP doesn’t enable surveillance.

                                                                        In the same way that I think it’s perfectly reasonable for someone to say ‘I can’t afford to be vegan’ even though being vegan is morally important, I think it’s perfectly acceptable to say ‘I can’t afford to buy ethically produced clothes’. Plus there’s significant evidence that manufacturing things in third world countries has improving their living standards and wages considerably.

                                                                        Where to we draw the line on how our consumption and contribution harms or helps others? And do you regularly do that for every product and service you buy? Most of them?

                                                                        I like to have an idea, at least, of what goes into the things I buy, yes. It’s hard to do it with absolutely everything though, because there’s just so much different stuff.

                                                                        Have you been active in government on laws, treaties, court cases, etc? The stuff that stops things like you describe.

                                                                        That’s absolutely ridiculous. You do not have to be a member of government to have a political view. You do not have to negotiate an international treaty to have a political view. You do not have to sue someone to have a political view. Your standards are ridiculous.

                                                                        Or just some quick, social signaling on Lobsters getting feel-good points?

                                                                        Discussing important issues is not ‘virtue signalling’.

                                                                        If you care, I encourage you to put time into legal reform or bootstrapping alternatives to each of the things I mentioned. Maybe make for better opportunities for immigrants in whatever your country is, too. Maybe host some coding bootcamps or something for those in the slums. What you’re doing here is adding to the noise but not helping Trump’s victims or your country’s immigrants in any way.

                                                                        This has nothing to do with immigrants and everything to do with Palantir being a company that operates in an unethical manner. It’s a surveillance company. There’s absolutely nothing problematic about a company producing software on contract for a government that has immigration policies. The issue is that Trump’s policies are violating human rights in how they’re enforcing those laws.

                                                                        You don’t solve this problem by creating ‘coding bootcamps’ for immigrants LOL.

                                                                      4. 4

                                                                        I guess it may be possible to work at a seedy company and still do good stuff.

                                                                        Regardless, thanks for releasing this as free software.

                                                                        Every field of endeavor is welcome here. Every field of endeavor is welcome here for technical discussion, free of (without expectation of) moralizing, guilt, or shame.

                                                                        1. 2

                                                                          I personally already draw the line at technology coming from uber for ethical reasons, so I will not touch palantir things at all. Thanks for bringing that up!

                                                                        1. 1

                                                                          Nothing I didn’t know from the git-scm book, sadly

                                                                          1. 2

                                                                            It’s tough. I feel like we can’t penalize people for trying to explain things they find confusing, but yeah I agree there’s not much new ground being covered here.

                                                                            1. 2

                                                                              This is the nth in a series of articles over the last decade that confirm over and over again to me that git was the worst possible way for people to be introduced to the concepts of DVCS. RIP tla/baz.

                                                                              1. 2

                                                                                IMO git’s a great tool from a functional perspective with an AWFUL human interface.

                                                                                I’ve long thought that a few weeks of a UX designer’s time would do it wonders :)

                                                                                1. 2

                                                                                  I’ve seen people use SmartGIT and GitKraken just fine for basic stuff and esp. GitKraken looks like it could handle more advanced cases as well.

                                                                                  The number one thing is to make the four stages/states sound friendly and nice instead of scary and awkward.

                                                                                  1. 2

                                                                                    Respectfully you’re missing the point.

                                                                                    Sure, we can put nicer human interface on top of the base tools, but my point was simply that git in and of itself, has a piss poor human interface.

                                                                                    I love Git, I use it Every Single Day and have for y-e-a-r-s, but I was a release engineer for a decade and a half, I’ve administered and taught CVS, SVN, Perforce, and Git, and I feel like it’s important to be crystal clear about the good and bad in any tool.

                                                                                    1. 1

                                                                                      I find the point irrelevant.

                                                                                      Sure, the default git cli is pretty shitty, but until someone does something about it, it is what it is.

                                                                                      There are multiple GUI approaches and at least some attempts at alternative Git cli tools if that’s your preference.

                                                                                      1. 2

                                                                                        You’re telling me that a GUI can fix the problem of users not understanding the difference between a merge and a rebase? Or what it actually means for commits to be on a branch?

                                                                                        The things that make Git’s human interface awful aren’t command line parameters per se, or not JUST those, they’re the conceptual levers and gears that users have to interact with to make the system go. No GUI helps with that in my opinion.

                                                                                        I think you’re misconstruing what I’m saying to actually MEAN “Git is an awful tool”.

                                                                                        That’s not what I’m saying at all. Git is an AWESOME tool with really, REALLY awful UX.

                                                                                        You can think that irrelevant if you like, but I think you’re wrong.

                                                                          1. 10

                                                                            This claims to be 5x faster than a non-parallel version, which strongly implies that du is somehow(?) limited by computation speed instead of by disk access time, which is making me question the very mature of the universe. Can anyone explain that?

                                                                            1. 19

                                                                              No, it’s limited by disk access time, but all the disk access is done sequentially in du. stat(), stat(), stat(), … Every call must complete before the next, so your queue depth to read disk is only 1. If a dozen threads issue stat() at the same time, the disk can issue multiple reads. An SSD has a latency somewhere around 10ms, but it can complete more than one request per 10ms given the opportunity.

                                                                              1. 5

                                                                                Isn’t the solution then “make du parallel” instead of “rewrite du in a new language and introduce a second utility”?

                                                                                1. 9

                                                                                  I predict people might ask if the performance of du is actually such a bottleneck to justify the complexity. If somebody posted a patch to pthread openbsd du, I wouldn’t immediately jump on board.

                                                                                  You can sidestep such questions by dropping the code on github. Everybody says, wow, cool, that’s great, but nobody is required to make a decision to use or maintain such a tool.

                                                                                  Maybe it’s good enough leave it alone holds us back. Maybe let’s change everything and hope it’s better keeps us going in circles.

                                                                                  cc @caleb

                                                                                  1. 2

                                                                                    Relatively difficult call; the performance of du has definitely bothered me at times, but parallel c code is several kinds of hard-to-get-right.

                                                                                2. 0

                                                                                  any reason du shouldn’t be modified to use this approach?

                                                                                3. 3

                                                                                  It’s probably multi-faceted (as any benchmark data). I believe du (and dup probably) look at metadata to find file sizes, so I don’t think there is much bandwidth required. On top of that, if the benchmark is using NAND flash storage, the firmware driver may be able to parallelize read requests far better than a HDD. Even then, issuing multiple read requests to the HDD driver can allow it to optimize its read pattern to minimize seek distance for the head. I would comment on multi-platter HDDs, but I honestly know very little about the implementation of HDDs and SSDs, so someone please correct me if I’ve said anything too far from the truth.

                                                                                  You can even see speed-up in multi-threaded writing, for example in asynchronous logging libraries: https://github.com/gabime/spdlog

                                                                                  EDIT: in short, the speedup is probably from parallelizing the overhead of file system access

                                                                                  EDIT2: The benchmarks on the spdlog readme are a bad example because it uses multiple threads to write to the same file, not multiple threads writing to separate independent files

                                                                                1. 0

                                                                                  I like the idea that canonicalization moves code closer to its hylaean form.

                                                                                  1. 2

                                                                                    Chaitin uses the phrase “elegant” to refer to the shortest possible form of a program (although practically speaking, I imagine such programs would look to a human like line noise ;) )

                                                                                  1. 1

                                                                                    It’s crazy to me that this article includes no memories of IRC during its heyday in the early 1990s. All of these stories are post-September. :(

                                                                                    1. 11

                                                                                      Since there are a lot of younger people on here, we should mention that this is a parody of the 1980s-90s “Purity Test” phenomenon: https://en.m.wikipedia.org/wiki/Purity_test (cw adult humor)

                                                                                      1. 5

                                                                                        Hi, I’m a high school student.

                                                                                        This is definitely still a thing right now. (I get made fun of for getting a high score. 🤷‍♀️)

                                                                                        1. 3

                                                                                          Ooof.

                                                                                          1. 3

                                                                                            Thank you for reminding me THAT I AM SO FREAKING OLD.

                                                                                          1. 1

                                                                                            It’s a huge relief to hear that I’m not the only one who does this.

                                                                                            1. 2

                                                                                              I realize bitmap fonts are super-obscure, but if you’re interested in them, a few months ago I posted a tool to make them easier to create & edit: https://lobste.rs/s/bbnk26/font_problems_command_line_tool_for

                                                                                              1. 2

                                                                                                This is really cool work. I couldn’t ignore the nagging feeling, though, that the GC team is in a race against time, as people are forced to move to things like openJDK because of licensing issues. It must be frustrating as hell to work on awesome stuff and have your parent corporation undermining you as you go.

                                                                                                1. 10

                                                                                                  ZGC is part of OpenJDK, isn’t it?

                                                                                                  1. 3

                                                                                                    I could imagine it becoming commercial-only, but I guess RedHat’s move largely prevented that.

                                                                                                    Oracle will rather give away its own new GC than have people migrate to the GC of a different vendor, where they lack the experienced developers to fix issues.

                                                                                                    1. 2

                                                                                                      What RH move?

                                                                                                      1. 5

                                                                                                        It probably refers to Shenandoah, a GC developed by Red Hat with properties similar to ZGC.

                                                                                                  2. 4

                                                                                                    Correct me if I’m wrong, but I believe this is going to land in the openJDK, not only the Oracle JRE.

                                                                                                  1. 5

                                                                                                    if you can get past the shiny distraction of criticizing whatever web library the author used, this article is chock full of good advice that will make you more productive. i had to learn most of these lessons the hard way, and i love reading an article that makes me think, “i don’t have to write this article anymore, someone has done it better.”