1. 1

    The last time I was on a Mac, about three years ago, I simply could not adjust to not having highlight-and-middle-click paste. I hardly ever touch the rodent, but when I do that is what I need it for.

    Are there any good solutions to adding that feature to a Mac now? At the time all the “solutions” were workarounds that came with their own set of new problems.

    1. 2

      I use BetterTouchTool and a mouse with extra side buttons, and bind copy and paste to the side buttons. Also both Apple’s Terminal and iTerm2 support middle click paste.

      1. 1

        Thanks. This is yet another workaround, though.

        For one thing, being able to copy without having to click a button - on the keyboard or on the mouse - is very streamlined. Call me spoiled.

        But more importantly, being able to paste with the middle mouse button means that I don’t have to first click or alt-tab to focus the receiving window. I just move the mouse over the non-focused window, middle-click and that window gets focus and the paste. With a dedicated “paste” key one would have to first focus the field that is to accept the paste.

        Therefore the proposed solution is less streamlined on both sides of the operation.

    1. 1

      Being a +10y Linux user, I have sometimes looked at Apple side with desire for the homogenous ecosystem (or Golden cage depends on my mood). For users that had make the switch what did you loose besides the freedom to chose many alternatives? What did you gain?

      1. 2

        I didn’t switch, but for a few months my work laptop was a Mac. My biggest gripes were:

        1. No highlight-middle-click-paste. I’ve asked elsewhere in this thread if there is a solution to that today.

        2. I’ll use KDE terminology, because every system redefines the same terms. I have two physical monitors. In KDE they are called Screens and I have assigned a keyboard shortcut to move an app from one to the other. I believe that this cannot be done (at the time) on a Mac.

        3. The two Screens are inside a Desktop, of which I have two. One Desktop is called Communication, which permanently has Slack and Telegram on the left screen and Thunderbird on the right screen. The other Desktop is called General and I’ll have my IDE, console, web browser, Anki, LibreOffice, Keepass, and other apps open as needed. On the Mac, switching a Desktop (collection of applications each which is on a Screen) would only change the visible apps on a single monitor. Id est, in KDE Screens are inside Desktops but on a Mac Desktops are inside Screens.

        The only other problem that I had with the Mac was working on the train with it. My Kubuntu laptop would draw no attention, and if somebody did happen to notice that I’m using a Linux distro, and also saw fit to say something, then I would find myself having a conversation with a smart individual. But with the Mac, almost every day some giddy stranger would start telling me how great their Mac is, and how great their iPhone is, and wow he’s a coder too, I should see what he wrote in JavaScript this week.

        1. 1

          As someone who switched to linux from Apple everything 4 years back:

          • An awful lot of things look the same because they are electron apps or well-written cross-platform apps (eg: sublime text hasn’t changed, vscode hasn’t changed, slack hasn’t changed). I haven’t found a visual git client I like as much as gitx. Mail clients suck on linux, but they also suck on osx, so I’m calling that a wash.
          • I switched intending to do a lot of configuring. As a result, everything I use on linux is non-portable to other systems (not a problem for me) whereas every mac has the same keyboard shortcuts (baffling and undocumented as they are, learn them once and take them everywhere).
          • The performance difference for your money is pretty damn stark (from a MBP to a desktop, the test suite for $WORK went from 50m down to 8m for less money).
          • I added an mp3 file to my itunes library, plugged in my iphone, synced the song to my phone. Phone refuses to play the song; “This song is not available in your country or region”. I can listen to it with VLC, but the homogenous ecosystem can definitely be a cage.
          1. 1

            Yep, sounds like a lot of different feedbacks I get sometimes. I think I am just jealous of the hardware ecosystem (the iPad Pro in particular) but too much to loose to make that change, at least it seems.

            1. 1

              The basics (itunes sync) can be had with virtualbox and a free windows vm.

        1. 1

          The ideas look nice, but to be actually useful it would need to support CardDav for syncing with Android and iPhone address books.

          1. 8

            Gawk has all of these. Don’t port anything.

            At some point, however, awk’s limitations start to show. It has no real concept of breaking files into modules, it lacks quality error reporting, and it’s missing other things that are now considered fundamentals of how a language works.

            1. 3

              GAWK is not portable. You could possibly say “neither is Python”, but I would bet that Python is more available than GAWK. and even if it isnt, if youre going to have to install a package anyway, wouldnt a butcher knife be better than a plastic kids knife?

              I like AWK, I have used it for many years and would consider myself an AWK expert. But when the question is “what is the right tool for the job”? The answer is rarely AWK or GAWK.

              1. 10

                The right tool is obviously Perl in this case.

                1. 7

                  and the tool is a2p since forever.

                  1. 2

                    Came here to say that very thing. The syntax maps more precisely and the idioms fit more completely thanks to Perl’s history for this almost exact purpose. The right tool for the right job.

                  2. 6

                    What do you mean “gawk is not portable”? Name one platform that has awk and python that does not have gawk?

                    The point is you can either spend your time rewriting or you can just keep using the same code with extensions.

                    And if you really really want to rewrite, Perl is a lot closer. This whole article just seems like someone who has arbitrarily decided that python is a “real” language so it’s inherently better to use it.

                    1. 8

                      The author blurp has:

                      He has been programming Python since 1999

                      Looks like a case of hammer, nail to me.

                      (and the examples with the yields only convince me more that python is not the better choice)

                      1. 2

                        To be fair, I know far more carpenters with Python hammers than with Awk hammers.

                        I myself have but a ball peen Awk hammer, compared to my sledge Python hammer. So for really stubborn nails, Python is the better choice for me.

                        1. 1

                          I’ve been using Awk for even longer though.

                          The story in https://opensource.com/article/19/2/drinking-coffee-awk was in 1996.

                        2. 0

                          Um, Debian, BSD? should I go on?

                          1. 4

                            I suppose you mean that gawk features are not portable among the default awk on different OSes, so you shouldn’t use them and pretend that the script will work on any awk. That is totally true.

                            But the OP likely means that you can use gawk explicitly, treating it as a separate language. Gawk is available on almost all Unix OSes, so it is portable.

                            1. 2

                              My point is if your going to have to install a package, you might as well install $proper_programming_language instead of AWK. Unless what you need can be easily done with GAWK alone, its not really worth using.

                              Keep in mind that even with GAWK, proper support for indexed arrays is not available, nor first class functions, private variables in AWK are footguns, no HTTP client, no JSON, etc.

                    1. 6

                      In all honesty, Fritzing is pretty subpar software in general.

                      It starts the user out with a breadboard-like view of “schematics” which is extremely counterproductive. Users should be taught how to draw proper schematics. All too often people will post breadboard screenshots from Fritzing on various electronics forums and will ask for help with their circuit, and almost always the response is, “draw a real schematic, and then we’ll help you” because nobody wants to try to decipher Fritzing’s breadboard views.

                      Looking through their getting started page

                      “The schematic view instantly shows the circuit you built in breadboard view as a circuit diagram, and is handy for those of you who are used to or wish to learn about standard circuit symbols.”

                      Learning schematics is not optional if you want to make anything meaningful with electronics. Just like you can’t say you have a programming environment where the primary programming interface is Scratch, but it automatically generates something like Javascript and says it’s there for those who “wish to learn about Javascript” and also say that full-featured software should be made with the system.

                      It makes no sense.

                      Then when it mentions the PCB view (which they write as “pcb view” for some reason…)

                      “The pcb view features an Autoroute function, which is a great time saver.”

                      Again, just going to lead to users making badly routed boards because autorouters are almost invariably terrible unless you know how to use them. Making a schematic and clicking autoroute is not going to go well. Sure it might work, but your board will look ugly and it will be absolutely obvious to anyone who looks at your board that you had no idea what you were doing. Learn to route boards by hand. It’s not hard to make really nice looking boards once you know a few guidelines. There’s no reason that software meant for creating relatively simple circuits like Fritzing is should have an “autoroute” function front-and-center.

                      1. 5

                        I agree with you that Fritzing is not the ideal tool to get started. Our university uses it to get started on drawing schematics, and I wanted to write a simple guide for our students to explain how to go from creating these horrible Fritzing schematics to creating schematics in Kicad which are actually usable.

                        To create this guide, I needed Fritzing to draw my examples, using exactly the problems you just described, like autorouting. This was when I discovered what Fritzing was doing.

                        1. 4

                          That’s great that you’re doing that! Thank you for helping teach people how to actually learn electronics design and not rely on horrible crutches that hold them back. KiCad is my EDA software of choice and it’s super satisfying to draw up a project with a really nice schematic and routing a board by hand and making it look pretty.

                          Those students will definitely appreciate learning how to do things properly!

                          1. 4

                            Thank you! I really appreciate the motivational words and we share a common love for well designed schematics! :)

                            Edit: So I’ve been reading your blog and we also share a common love for hating Arduinos in production.

                            1. 3

                              So I’ve been reading your blog and we also share a common love for hating Arduinos in production.

                              Oh goodness yes.

                              Arduinos are not a microcontroller! They’re a devboard!

                              I find them incredibly valuable for development, but once I really get a project hashed out, I quickly start building up a schematic with the individual parts on a custom PCB. I also despise the whole putting an Arduino on header pins to make it part of a final board.

                          2. 2

                            I would love to see your guides. I just installed Kicad 5.1 inspired by your post.

                            1. 2

                              It isn’t a guide yet, but I’ve written an actually an extended rant about Fritzing: https://bowero.nl/blog/2019/11/13/the-right-tool-for-the-job-designing-schematics/

                              I’m glad to see you on the right track! I’ll give you an update when the guide’s finished.

                              1. 2

                                Thank you! That is absolutely terrific.

                                I understand that some mistakes were intentionally introduced, but there were a few that I do assume were errors. For instance, the following paragraph appears twice:

                                This is still relatively easy to use. It doesn’t look very neat, but it’s easy to build on this drawing. However, the problem is already becoming visible. Imagine if we were to add five more motors to our robot:

                                If you would like me to proofread it when you are nearing completion I would be happy to.

                                1. 2

                                  Thank you very much! You are obviously correct, that should not have been there twice.

                        1. 13

                          Big fan of Firefox, have used it for years as my primary browser. Just a few days ago, I updated to 69 will happily piggyback this v70 announcement.

                          In case anyone of you uses a user stylesheet on Firefox and wonders why stuff doesn’t work in FF 69 anymore, the reason is that they disabled reading user stylesheets by default. You can enable it again by setting toolkit.legacyUserProfileCustomizations.stylesheets to true.

                          Don’t go down the same rabbit hole like me and try to figure out why the one thing you did in the user stylesheet doesn’t work anymore. You’ll find zillions of people with opinions - and none of their proposed solutions will work(;

                          1. 4

                            I hope that you have telemetry enabled. When a feature becomes not the default, that means that it is on the cutting block. If you’re not reporting that you are using a user stylesheet, then don’t be surprised when it is removed a few versions down the line.

                            1. 3

                              Thank you! This was driving me crazy!

                              1. 2

                                can you elaborate? Are you talking about userContent.css, or Stylus and similar?

                                1. 1

                                  Sorry for the late answer. I was talking about userContent.css.

                              1. 0

                                The whole premise of the question is wrong, the “problem” of cutting the square cake into 9 pieces each with equal cake and frosting (which is on the sides and top) has a trivial solution.

                                Grandma could cut her cake diagonally, making four equal triangles. Then each triangle is cut into three subtriangles, each with equal base (side with frosting). Since they will all have the same height (not cake height, but base-to-vertex height), they thus have the same area, thus the same amount of cake and top-level frosting. And since the base sides are equal, they also have equal amounts of base-side frosting.

                                1. 7

                                  That leaves 4 x 3 = 12 pieces, that cannot equally be divided into 9. Or am I missing something?

                                  In any case, the situation you’re describing is just a special case of the one discussed in the linked post. .

                                  1. 3

                                    Then each triangle is cut into three subtriangles, each with equal base

                                    Even just trisecting a line segment isn’t quite trivial, as a geometry problem. But on the other hand, the solution given seems to rely on measuring and evenly dividing the cake perimeter, so it’s not pure geometry.

                                    1. 1

                                      It’s still not that trivial. The nonzero thickness of the icing will mean the cake is no longer perfectly square on the corners, and even if you could keep it perfectly square (perhaps with a try square or cake-making jig), the ratio of icing to cake will vary around the perimeter (unless Grandma adjusts the icing thickness accordingly, but by the time I’ve explained that she’s switched to a circular pan).

                                      1. 3

                                        The source of the puzzles is a list with the title “Math puzzles for dinner”. It’s implicit that the icing has zero thickness but is still very desirable to eat.

                                        1. 3

                                          Now we’re off into spherical cow territory! I think it would still work with nonzero-thick icing if Grandma just doesn’t ice the corners or edges of the cake, so that the icing is just an extrusion of the cake surface. Grandma’s pretty good with icing, she can probably do that.

                                    1. 1

                                      Was really impressed when I tried it as well, and then letdown because my private mobile phone isn’t ever on the same wifi as my company laptop.

                                      1. 1

                                        This really is the biggest limitation. At the office, I actually can connect my mobile to the company wifi and use KDE Connect. But at home, my mobile is my wifi connection (via the phone’s hotspot feature). In this configuration, KDE Connect does not work.

                                      1. 15

                                        I’m a bit disappointed that the interviewer didn’t mention a single question regarding addiction or any ethical dimension. It’s kind of been assumed that not liking pornography is just a conservative, right-wing thing, but I don’t think that’s correct. I personally perceive it to be pushing harmful stereotypes (both as in what women should look like, or how intimacy should look like), and then there’s the problem with trafficking, and never knowing what’s actually going on behind the scenes. Chomsky says it well.

                                        Setting aside things like these, which should be enough to say something isn’t right, but knowing the digital world (where creating addictions has become a common and often even necessary business model) reading

                                        you have to be clever to innovate at the bleeding edge of the web.

                                        makes me somewhat uneasy. Especially a front end developer should have to think about these questions. They are the ones tasked with creating “seamless experiences”, ultimately, disregarding the influence it has on people’s daily and personal life’s. I don’t think the interviewer should have just glossed over this. YouTube has hateful or harmful videos, but their raison d’être isn’t hosting them. PornHub will have it a bit harder that hosting and spreading pornography isn’t a big part of what they are.

                                        From the technical perspective it’s somewhat interesting, I guess. It’s about the problems of high-demand video streaming, probably above the level of most other video sites, but still way below sites like YouTube. That’s like having an interview with a slaveholder on what kind of whips they have found to have the best quality CIA agent on what the best strategies are to manipulate a foreign election.

                                        Edit: Rewrote a few sentences to avoid confusion, and replaced my analogy with a different one.

                                        1. 13

                                          I’m a bit disappointed that the interviewer didn’t mention a single question regarding addiction or any ethical dimension.

                                          Porn has been around a really long time. I’m pretty sure there’s nothing new to be discovered or discussed almost anywhere on earth on the topic, much less here.

                                          Like, the human race has brute-forced about every part of that solution space we can. There is not a dirty thought we can have that hasn’t occurred to scores of other people at one point in history or another–of this I’m certain.

                                          1. 21

                                            Porn has been around a really long time.

                                            Not in the way it is now, as an endless torrent on demand. Modern porn has demonstrably changed society in ways that ancient porn did not. For example, women now believe that pubic hair is unclean and as a result of excessive pubic hair removal are getting health problems that pubic hair can prevent.

                                            Also, just being around forever does not categorise something as innocuous or beneficial.

                                            1. 3

                                              Hairstyles have been coming and going in fads ever since we left the trees and discovered hair can be cut and washed. Having this apply also to pubic hair is not exactly a huge change.

                                              1. 3

                                                As the article notes, gynecologists disagree, but what do they know, I guess.

                                            2. 8

                                              Like comparing chewing coca leaves to mainlining cocaine.

                                              1. 3

                                                Quantity acquires a quality of its own, you know. Not to mention that quality is altogether different as well: 4K video isn’t the same as a blurry black and white photo. There’s a strange blindness to this effect in the tech industry, whether it comes to social media, endless tsunami of content on Netflix, or indeed porn. Much like Facebook’s idea that more communication is unconditionally better has backfired spectacularly, maybe it’s the same with porn. And then of course there’s also all the engineered “engagement” in all these areas. Don’t be so quick to say it’s all totally harmless.

                                                1. 0

                                                  Well-put.

                                                2. 6

                                                  I’m a bit disappointed that the interviewer didn’t mention a single question regarding addiction or any ethical dimension.

                                                  The audience is web developers wanting to read something interesting about web development at a big company. They also want most of them to enjoy the article. Talking about the damage they might be doing doesn’t serve either purpose. Most would’ve just clicked the little X or otherwise moved on.

                                                  There’s been a lot of good writing on that subject for anyone looking for it. The key words are easy to guess.

                                                  1. 6

                                                    You’re kinda circling back to the same point. Yes, talking about ethical implications of our jobs is hard, and uncomfortable, but it’s necessary. Of course nost people don’t want to do it, off course most people don’t want to read about it. But it’s our responsibility to talk and to read about those things. “I don’t like doing it” is not a valid excuse for not doing something it’s your responsibility to do.

                                                    That said, the comparison with slavery is a bit out of place, imo.

                                                    1. 10

                                                      You’re doing that trick many people do here where it becomes all or nothing in every post, forum, etc. The stress of introspecting on these topics make many people do it at certain times and read relaxing content at other times. They’re fine splitting it up. Dare I’d say most people prefer that based on that simply being most popular way content is done online.

                                                      Then, other people think they should be mentally engaged on these topics at all times in all articles, forums, etc due to their importance. They also falsely accuse people of not caring about social responsibilities if they don’t discuss them in every article where they might come into play. You must be in that group. Author of the original post and their audience is not. Hence, the separation of concerns that lets readers relax just focusing about web tech before optionally engaging with hard realities of life at another time in another article.

                                                    2. 2

                                                      This isn’t a “what if my open source library was used by some military”-kind of question, I think that there is a much stronger connection between the two. Front end design is related to user behaviour, and I still consider this relation to be a technical question (UI design, user protection, setting up incentives, …).

                                                      If the interviewer had asked these questions, and the interviewee had chosen not to comment, that would have been something, but the article currently just brushes it away affront by saying “ Regardless of your stance on pornography, …”.

                                                      1. 3

                                                        I’m a bit disappointed that the interviewer didn’t mention a single question regarding addiction or any ethical dimension

                                                        A tech-related, Lobsters-worthy discussion of the topic would focus on how they collected user behavior, analyzed it, measured whether they were reaching their goals, strategized for how to achieve them, and specific methods of influence with associated payoffs. It would actually be more Barnacles-like since marketing is behind a lot of that. These technical and marketing techniques are politically-neutral in that they are used by many companies to measure and advance a wide range of goals, including pornography consumption. They could be discussed free-standing with little drama if the focus was really on the technology.

                                                        You were doing the opposite. That quote is an ethical question, even says so, where you have political views about pornography consumption, you wanted theirs explored, and you might have had some goal to be achieved with that. The emotional language in the rest of your post further suggested this wasn’t about rational analysis of a technology stack. You also didn’t care what the writer or any of their readers thought about that. So, I countered representing the majority of people who just wanted to read about a web stack. A mix that either doesn’t care about ethics of porn or does with it being a depressing topic they want to handle at another time.

                                                        I was on 2nd cup of coffee when you wanted me to be thinking about lives being destroyed instead of reading peaceful and interesting things easier to wake up to. Woke up faster in a different way. Oh well. Now, I’m off this drama to find a Thursday submission in my pile.

                                                        1. 2

                                                          A tech-related, Lobsters-worthy discussion of the topic would focus on how they collected user behavior, analyzed it, measured whether they were reaching their goals, strategized for how to achieve them, and specific methods of influence with associated payoffs.

                                                          I think these kinds of things were missing from the article. I know this isn’t the place to discuss pornography, and I try not to go into it in the comments. What I just brought up was a disappointment in the style and focus of the interview, and it being one-sided.

                                                          The emotional language in the rest of your post further suggested this wasn’t about rational analysis of a technology stack.

                                                          Well I do think it’s important, so I apologize for being a tad emotional. But other than what I wrote, I don’t have anything else to contribute. I neither run nor plan to run a streaming site, so I end up not having too strong opinions on what is being used in the backend stack ^^.

                                                          A mix that either doesn’t care about ethics of porn or does with it being a depressing topic they want to handle at another time.

                                                          I understand that, that’s why I prefixed my top comment with what you quoted. I furthermore feel obligated to apologise if anyone had to go through any inconvenience thinking about the “ethics of porn” because of my comment, I guess? No but seriously, bringing up a concern like this, which I explicitly tried to link back to a technical question, should be ok.

                                                          1. 1

                                                            “I furthermore feel obligated to apologise if anyone had to go through any inconvenience thinking about the “ethics of porn” because of my comment, I guess? No but seriously, bringing up a concern like this, which I explicitly tried to link back to a technical question, should be ok.”

                                                            There’s quite a few people here that are OK with it. I’m not deciding that for anyone. I just had to remind you that caring people who want a break in some places exist and that you do more good by addressing the porn problem where it’s at. I appreciate you at least considering the effect on us.

                                                            “I neither run nor plan to run a streaming site”

                                                            The main problem is consumer side where there’s mass demand following by all types of supply and clever ways to keep people hooked. You can’t beat that since they straight-up want it. What you might do is work on profiles for porn sites with tools such as NoScript that make them usable without the revenue-generating ads. Then, lots of people push for their use. If there’s any uptake, they get a temporary hit in their wallet but maybe an offset with ad-free Premium. I’m not sure the effectiveness. I just know they’re an ad model with tools existing to attack that.

                                                            Griping about it on technical sites won’t change anything because… most viewers aren’t on technical sites and those that are rarely changed. So, it’s just noise. Gotta work on porn laws, labor protections for those involved, ethical standards in industry itself, ad blocking, etc.

                                                    3. 6

                                                      If you would like to discuss the ethical aspects go to a different forum. I would rrecommend the community around Thaddeus Russell’s podcast for a critical and reasoned take from people that actually interact with sex workers https://www.thaddeusrussell.com/podcast/2

                                                      1. 3

                                                        I’ve mentioned it elsewhere, but I’m not here to discuss the ethical aspects, not am I in a position to be able to. My comments are related to the interviewer and his choice of questions.

                                                        1. 1

                                                          Your gave opinions, stated as scare-hints without support:

                                                          “then there’s the problem with trafficking,”

                                                          “which should be enough to say something isn’t right,”

                                                          … and then based upon the now well-built pretext that porn “isn’t right” (and is therefore ethically ‘wrong’) - you commented on what the interviewer should have done - i.e. they should have had the same opinions and conceptions as yourself - and they should have turned the interview into one about ethics.

                                                          The interview was interesting to read, because of the info about the tech. As bsima says, please take ethical discussion elsewhere.

                                                          1. 2

                                                            As you said, I prefixed the controversial parts by saying that it was my opinion. But I don’t think that the interviewer must have shared my views. The point I was raising was that I thought it wasn’t appropriate for the interview to just ignore a quite relevant topic, since this was about PornHub specifically, not their parent company.

                                                            IMO, a just final question like

                                                            “What are you doing to enforce age restrictions?”

                                                            or

                                                            “Due to recent reports, do you think that doing something against pornography addiction among younger generations can be tackled technically or does it need more (social) effort?”

                                                            would have been more than enough, as to just show this is being considered. I’m not a journalist, so I don’t know how these questions could be phrased better, but I hope you do get my point.

                                                          2. 1

                                                            I’m not here to discuss the ethical aspects

                                                            …and yet, it’s the ethical aspects that you brought up.

                                                            1. 3

                                                              Looking at this thread, I didn’t respond to people who started talking about the harmfulness of pornography or the lack thereof. This even though I would like to – yet I understand that it is off topic. In fact most of this sub-thread has been more about the meta-discussion.

                                                              All I can say is that I will be more careful not be too provoke these kinds of discussions in the future. I was thinking critically a lot about the topic the last few months, so my comment might not have been as neutral as some might have wished.

                                                        2. 5

                                                          That’s like asking an interview with a slaveholder on what kind of whips they have found to have the best quality.

                                                          This is more than a little hyperbolic.

                                                          1. 4

                                                            My analogy is that the direct consequences of technical questions are being more or less ignored, which I think is fair in both questions. Of course it’s not identical, but that’s stylistic devices for you.

                                                          2. 2

                                                            I could come up with quite a few objections to pornography, but the chap in your video link is not only not convincing, he is also hinting that he watches porn even though he denies it. He backs up his statement “porn is degrading to women” by qualifying “just look at it” which implies that he does that enough to have an opinion.

                                                          1. 30

                                                            This is just wrong. Did the author just skip the part of the documentation which shows this example?

                                                            // Reset message
                                                            $message = 'hello';
                                                            
                                                            // Inherit by-reference
                                                            $example = function () use (&$message) {
                                                                var_dump($message);
                                                            };
                                                            $example();
                                                            
                                                            // The changed value in the parent scope
                                                            // is reflected inside the function call
                                                            $message = 'world';
                                                            $example();
                                                            

                                                            Yes, PHP Does Have Closures.

                                                            (edit: if you’re unconvinced, here’s a small closure-based counter-generator and here’s a website you can paste it into. I’m no PHP fan but I worked with it for years and this kind of uninformed bagging serves nobody.)

                                                            For what it’s worth, C++ lambdas are the same — they copy by default unless you specify you want a by reference capture, by prepending a &, just the same.

                                                            1. 6

                                                              Wellons usually makes a good point. I think he was blinded by PHP hate on this one.

                                                              I think use is actually a little better than the JavaScript approach because A) an ordinary closure is a reference, but use lets us choose between value or reference, and B) in the long run, explicit is usually better than implicit.

                                                              If someone’s closing over so many variables that it becomes a hardship to enumerate them in a use clause, they already have bigger problems. Combine the implicit JS approach with its liberal interpretation of what a valid program is, and it is just too easy to accidentally close over a variable there.

                                                              1. 3

                                                                I agree. I bristled at first when I hit this kind of closure declaration in C++, but soon found I appreciated declaring exactly what I care about and whether I wanted my own copy, as with any well-designed function.

                                                                1. 1

                                                                  I happen to agree that explicitly declaring the variables to be used is better. I disagree that having to do so is “closing over” the environment.

                                                                  1. 5

                                                                    When all else fails, there’s Wikipedia:

                                                                    Joel Moses credits Landin with introducing the term closure to refer to a lambda expression whose open bindings (free variables) have been closed by (or bound in) the lexical environment, resulting in a closed expression, or closure.

                                                                    So a function value that uses variables defined in the enclosing scope is always a closure, regardless of whether the referencing has to be done manually or not.

                                                                    1. 1

                                                                      I disagree that having to do so is “closing over” the environment.

                                                                      If the only difference is whether you specify which variables are included, then we’re really splitting hairs. Whether the language automatically brings in all free variables or asks you to list them doesn’t make a difference: it’s binding free variables/closing open bindings – a closure. Given PHP’s laxity in variable declaration, one could argue this is the best way to do closures in the language.

                                                                2. 6

                                                                  The author does mention that in the “references” section, although is quick to dismiss it.

                                                                  This entire article reads like “they didn’t do it in my favourite way, therefore it’s invalid!”. While I’m generally not especially impressed by most aspects of PHP I personally rather like the explicit closures. Implicit closing over variables can be problematic in many languages and generally I feel The Zen of Python got it right with “explicit is better than implicit”.

                                                                  A better article would at least address the motivations the PHP authors had for using these semantics instead of just dismissing it out of hand as “dumb”.

                                                                  1. 5

                                                                    “-1 incorrect”

                                                                    I would love for you to elaborate!

                                                                    1. 0

                                                                      By the way, that was not me that downvoted, even though I disagree!

                                                                      1. 1

                                                                        All good! Even if you did that’d be fine.

                                                                    2. 4

                                                                      Is that really a closure though? The $message parameter is actually an implicit argument to the function. The function is not closing over an environment, it is closing over a list of parameters that have implicit arguments from the environment, in addition to the regular explicit parameter list.

                                                                      These are function values, not closures.

                                                                      1. 5

                                                                        Imagine you could write use (&*) to list every variable – in what way would it substantively differ from your idea of closures? What’s an example?

                                                                        1. 3

                                                                          The function is not closing over an environment

                                                                          &$x means you want $x inside the function body to refer to the current environment. As an example:

                                                                          function f($a) {
                                                                            return array(
                                                                              s => function($v) use (&$a) { $a = $v; },
                                                                              g => function() use (&$a) { return $a; }
                                                                            );
                                                                          }
                                                                          

                                                                          would not work correctly if the environment was not being closed over.

                                                                          1. 2

                                                                            The only real difference I see from “true” closures is that it’s not automatic. I would hope that most languages with Real Closures don’t capture the entire lexical environment - they analyse the function body to do the same thing as PHP (edit: and C++), without requiring the user to specify which variables to capture. This thing about references is a red herring.

                                                                            1. 2

                                                                              I’ve not looked at the implementation details, but the ability to dynamically reference properties, i.e. with eval(),, suggests that “true” closures do capture the entire static environment. That is pretty much the definition of, and the etymology of, the term closure. “Closing over” a specific instance of an environment.

                                                                              1. 2

                                                                                That surely depends entirely on the language and capabilities of eval therein (Racket requires some hoop-jumping for eval to be able to reference the enclosing lexical environment, for instance). There’s no need to keep variables that are never referenced; that’s a pretty easy optimisation. This is getting away from the original point, though.

                                                                                1. 1

                                                                                  i.e. with eval(),,

                                                                                  No.

                                                                                  Absolutely not.

                                                                                  eval() doesn’t have anything to do with closures.

                                                                                  Scheme didn’t have eval until R5RS, and even its eval can’t do what you’re suggesting.

                                                                                  PHP has closures, end-of.

                                                                          1. 11

                                                                            The only consistent property of PHP is how badly it’s designed, yet it somehow remains widely popular. There’s a social dynamic at play here that science has yet to unlock.

                                                                            Yeah, PHP certainly has its issues. First theres the inconsistent syntax, like strpos vs base_convert. Then you have other issues like no method to return input with a newline, like Python print(), forcing explicit newline like echo "hello\n";.

                                                                            But its widely popular because it works. Its significantly smaller than Python to install, and I would argue faster than Python in many cases. As a simple test, time how long it takes to do php -r 'echo "hello\n";' versus Python or frankly any other scripting language. I think the only faster language is Perl, and I usually stay away from Perl, as I view it as a “write only” language.

                                                                            There’s no reason for that: I don’t write programs in PHP, never had to use it, and don’t expect to ever need it.

                                                                            Author doesnt use PHP, and yet they felt compelled to write 900 word screed about it?

                                                                            I recently came across a link to the PHP manual, and morbid curiosity that caused me to look through it.

                                                                            Here is another point, the PHP manual. Again, PHP has its warts, but I would argue the PHP manual is the best programming language manual I have ever read. Every function gets its own page, not everything crammed into a giant page. This allows documentation to expand as the writers dont have to worry about an ever expanding megapage. Each page tells you the return value, what arguments are optional, whether values or references are expected, related functions. And important, comments. Look at this comment:

                                                                            https://php.net/function.opendir#83990

                                                                            It provides an algorithm for iterative traversing of a directory. An algorithm I use myself, as its pretty good. If author wants to slam PHP thats their business, and maybe justified in some narrow cases. But I think its unfair coming from someone who doesnt even use the language. In case anyone thinks Im biased, I maintain a comparison of programming languages:

                                                                            https://cup.github.io/autumn

                                                                            and above are just some of my thoughts after using 7 different languages over the last year.

                                                                            1. 6

                                                                              I usually stay away from Perl, as I view it as a “write only” language.

                                                                              How ironic that you include this prejudice against another language while explaining the wrongness of prejudice against this one :)

                                                                              1. 6

                                                                                As a Perl enthusiast, there’s a lot of truth in that statement. Perl is so flexible and so fun that individual Perl hackers soon develop their own instance of TMTOWTDI, so the output of one Perl hacker can be hard to read for another.

                                                                                I don’t have much confidence in my own cleverness so I try to minimize this, but the more you learn, the easier it is to use map and friends to “collapse” an assignment via an explicit loop to a oneliner. It’s no problem for me as this is an idiom I’ve leaned and grown comfortable with, but it does constitute an “internal slang” that others might not get, depending on their background and skill level.

                                                                                Bondage-and-discipline languages like Python don’t have quite this issue.

                                                                              2. 3

                                                                                https://cup.github.io/autumn

                                                                                This is really neat, thanks for sharing!

                                                                                1. 2

                                                                                  Here’s another site that lists common tasks in multiple languages. When learning a new language, I often consult these resources.

                                                                                  http://www.rosettacode.org/

                                                                                2. 2

                                                                                  I think the only faster language is Perl

                                                                                  I assume that means “I think the only faster interpreted language is Perl” or “I think the only interpreted language whose interpreter starts up faster than PHP’s is Perl” or something? Obviously an assembly version of hello world would be significantly faster than even just waiting for the Perl interpreter to get to the beginning of its main() function :P

                                                                                  Author doesn’t use PHP, and yet they felt compelled to write 900 word screed about it?

                                                                                  It can be interesting to analyze how something works even if you don’t personally use that thing. Criticism can be valid even when it’s not coming from someone who uses the thing being criticized. I agree though that some parts of this article isn’t good criticism; the part about closures is good (assuming it is correct, which it looks like it might not be), but just throwing in unsubstantiated claims like “The reason PHP has sigils is that Perl had them and PHP copied Perl without knowing why Perl had them” is unnecessary.

                                                                                1. 6

                                                                                  This, in conjunction with greater limitations on plugins for ad-blocking, seems like a bit of a longer term play to “keep serving ads” at all cost. Hopefully I’m wrong about this being a longer term play, and chrome/google will also support the “use-application-dns.net” method1 for disabling DoH, or simply keep with what they have proposed in the article (enabling only when DoH and dns configuration intersects with a few chosen dns provides), so folks can keep using things like pi-hole if they choose.

                                                                                  1. 5

                                                                                    Presumably you can run a DoH server on a pi-hole, right?

                                                                                    1. 1

                                                                                      I’m not sure why you’d want to?

                                                                                      1. 4

                                                                                        So you can connect clients that want to use DoH.

                                                                                        1. 2

                                                                                          Not sure why I would need DoH on my switched (not a hub) home LAN to talk to my local pihole instance, when the native resolver works fine…but sure… Why not. Seems like that could be useful for some folks.

                                                                                          1. 2

                                                                                            If, say, chrome were to decide to go DoH only for Security Reasons (tm)?

                                                                                      2. 1

                                                                                        Of course you can. Or on a VPS you’re hosting something else on.

                                                                                      3. 3

                                                                                        Your concern is addressed at the very beginning of the article. DoH will be enabled (at least for now) only for specific white-listed DNS providers who are known to support DoH. If you have configured a different DNS server, then regular port 53 will be used.

                                                                                        Additionally, there exists (at least for now) a flag to disable the feature.

                                                                                        1. 3

                                                                                          My concern is not addressed, since it is about what chrome may do in the future.

                                                                                          Also, I did reference that part about the feature currently being enabled for intersection of chosen providers and configs in my comment already. Weird.

                                                                                      1. 20

                                                                                        Sad :-( I still think Mercurial far better meets the needs of most people, and that the chief reasons for git’s popularity are that Linus Torvalds wrote it, GitHub, and that Linus Torvalds wrote it.

                                                                                        That said, I did end up switching from BitBucket/mercurial to GitHub/git a few years ago, simply because it’s the more pragmatical thing to do and I was tired of paying the “mercurial penalty” in missed patches and the like. I wrote a thing about it a few ago: https://arp242.net/git-hg.html

                                                                                        1. 6

                                                                                          Why do you think hg is better for most people? I honestly find it vastly more complex to use.

                                                                                          1. 15

                                                                                            The hg cli is light years ahead of git in terms of intuitiveness.

                                                                                            1. 6

                                                                                              I’d say it’s years behind ;)

                                                                                              1. 10

                                                                                                How long have you been using Mercurial? I find most people who dislike Mercurial’s UI, are mainly coming from years of experience with Git. I disliked Mercurial at first as well, but after a few years of forced usage it clicked. Now I appreciate how simple and well composed it is and get frustrated whenever I need to look up some arcane Git flag on StackOverflow.

                                                                                                In general, I’d say you need several years experience with both Git and Mercurial before you can draw a fair comparison.

                                                                                                1. 3

                                                                                                  I used mercurial for about 2 years before using git.

                                                                                                  1. 3

                                                                                                    Sorry if my post came across a bit accusatory (not my intent). In that case I guess to each their own :).

                                                                                                  2. 3

                                                                                                    but after a few years of forced usage it clicked.

                                                                                                    I’m pretty sure that git clicked for me in a much shorter timeframe.

                                                                                                    1. 1

                                                                                                      Me too, but I know many (otherwise perfectly competent engineers) 5-10 years in who still don’t get it and aren’t likely to.

                                                                                                  3. 9

                                                                                                    I’m going to strongly disagree. I’ve used git intensively and I find Mercurial to be a well-designed delight. I’ve run across features that Mercurial supports flawlessly, with a nice UI, and Git requires a hacky filter-branch that takes hours to run and doesn’t even behave correctly.

                                                                                                    IMO, a lot of the badness in projects is down to Git badness. it doesn’t scale and people feel compelled to break things down into tiny sub-projects.

                                                                                                    The only reason Git is winning anything is GitHub’s support of it.

                                                                                                    1. 3

                                                                                                      The only reason Git is winning anything is GitHub’s support of it.

                                                                                                      Why then was github ever used in the first place? Kind of a strange proposition.

                                                                                                      1. 1

                                                                                                        Network effect of the social network is pretty important.

                                                                                                        1. 1

                                                                                                          Why would there ever be a network effect in the first place if git was so bad that github was the only reason to use it. I get that the argument technically holds but it seems very unlikely.

                                                                                                2. 8

                                                                                                  You find mercurial more complex to use than git? That’s an… unusual view, to say the least. The usual recitation of benefits goes something like this

                                                                                                  • Orthogonal functionality in hg mostly has orthogonal commands (compare git commit, which does a half-dozen essentially unrelated different things).
                                                                                                  • hg has a somewhat more uniform CLI (compare git branch -a, git remote -v, git stash list).
                                                                                                  • hg either lacks or hides a bunch of purportedly-inessential and potentially confusing git functionality (off the top of my head, partial commits aren’t baked into the flow a la git’s index/staging area; and rebasing and history rewriting are hidden behind an extension).

                                                                                                  I personally prefer git, but not because I think it’s easier or simpler; I’m more familiar with it, and I find many of those purportedly-inessential functions to be merely purportedly, not actually, inessential.

                                                                                                  1. 5

                                                                                                    One more thing I like about mercurial that the default set of commands is enough for >90% of people, and that everything else is “hidden” in extensions. This is a very different approach than git’s “kitchen-sink” approach, which gives people 170 commands (vs. Mercurial’s 50, most of which also have much fewer options/switches than git).

                                                                                                    Git very much feels like “bloatware” compared to Mercurial.

                                                                                                    1. 3

                                                                                                      I used git for many years, and then mercurial (at FB) ever since we switched over. The cli interface for mercurial is definitely more sensible, crecord is delightful, and overall it was fine. But I was never able to build a mental model of how mercurial actually worked. git has a terrible interface, but it’s actually really simple underneath.

                                                                                                      1. 1

                                                                                                        I didn’t think that underneath they were different enough to matter much. What differences do you mean? I guess there’s git’s remote tracking stuff. Generally, it seems like they differ in how to refer to and track commits and topological branches, locally and remotely. (IMHO, neither has great mechanisms for all the things I want to do.) Mercurial is slightly more complex with the manifest, git is more complex with the staging area that feels absolutely critical until you don’t have it (by using hg), at which time you wonder why anyone bothers with it. I’m a heavier hg user than git user, but that’s about all I can come up with.

                                                                                                      2. 2

                                                                                                        You find mercurial more complex to use than git?

                                                                                                        I actually found – in a professional shop – mercurial far more complex to use. Now, the fact is that mercurials core – vanilla hg is IMHO absolutely without doubt vastly superior to git. Git keeps trying to make the porcelain less painful (including a release just a bit ago) – but I still think it is ages behind.

                                                                                                        The problem is – I never used vanilla mercurial in a professional environment. Not once. It was always mercurial++ (we used $X extension and $Y extension and do it like $Z) which meant even if I knew hg, I felt painfully inexperienced because I didn’t know mq, share, attic, collapse, evolve, and more… not to mention both the bigger shops I worked with using mercurial has completely custom workflow extensions. I suspect part of this was just the ease of writing mercurial extensions, and part of it was wanting to fall into a flow they knew (mq, collapse). But, regardless of how we got there, at each place I effectively felt like I had to relearn how to use the version control system entirely.

                                                                                                        As opposed to git, wherein I can just drop in and work from day one. It might be less clean, it might be more finicky and enable things like history rewriting by default. But at the end of the day, the day I start, I know how to generally function.

                                                                                                        I am curious how Mercurial would have faired if instead of shipping default extensions you had to turn on – if they had just baked a little more functionality, to try to cover the 80% of what most shops wanted (not needed, I think most could have gotten by with what vanilla mercurial had) – if the shop to shop transition would have been easier.

                                                                                                        1. 2

                                                                                                          mq, I think, is responsible for many of the “mercurial is too complicated” complaints people have. Evolve, if it ever stabilized and ships with core hg would really enable some killer capabilities. Sadly for social and technical reasons it’s perpetually in beta.

                                                                                                        2. 1

                                                                                                          whoa, no index? Admittedly I didnt really use index as intended for several years, but now its an important part of my workflow.

                                                                                                          1. 1

                                                                                                            In Mercurial, commits are so much easier to make and manipulate (split, fold, move), that you don’t miss the index. The index in git is just a limited special cased “commit”.

                                                                                                            1. 3

                                                                                                              The index in git is just a limited special cased “commit”.

                                                                                                              I disagree.

                                                                                                              The index is a useful way to say “these lines of code are ready to go”. If you are making a big commit, it can be helpful to add changes in logical blocks to the index as you go. Then the diff is not polluted with stuff you know is already fine to commit.

                                                                                                              You might say, “why not just make those changes their own commits, instead of trying to do one big commit?” That’s a valid question if you are talking about a 200 line commit or similar, but sometimes the “big” commit is only 50 lines. Instead of making a bunch of one line or few line commits, its helpful to “git add” small chunks, then commit at the end.

                                                                                                              1. 0

                                                                                                                You can as well amend to a commit instead of adding to the index.

                                                                                                                1. 3

                                                                                                                  True, but all thats doing is bastardizing the commit process. If you are committing a one line change, just to rebase minutes or hours later, thats not a commit.

                                                                                                                  Rebase to me is for commits that were intended to be commits, but later I decided it would be better to squash or change the history. The index is for changes that are never meant to be a full commit on their own.

                                                                                                                  1. 1

                                                                                                                    Having a distinction between draft and published phases in mercurial I think makes it easier to rewrite WIP work. There’s also a number of UI affordances for it. I don’t miss the index using mercurial. There’s also academic user interface research that shows the index is a big conceptual barrier for new users.

                                                                                                                    1. 1

                                                                                                                      There’s also academic user interface research that shows the index is a big conceptual barrier for new users.

                                                                                                                      this isnt really a valid point in my opinion. some concepts are just difficult. if some goal can be achieved in a simpler way i am on board, but I am not a fan of removing useful features because they are hard to understand.

                                                                                                                      1. 1

                                                                                                                        But the point is the index is hard to understand and unnecessary.

                                                                                                                        There’s no need to have a “commit process”. Just commit whatever you want and rewrite/amend it for as long as you want. As long as your commits are drafts, this is fine.

                                                                                                                        Is the problem the word “commit”? Does it sound too much like commitment?

                                                                                                                        There’s no need to have two separate ways to record changes, an index, and a commit, each with different degrees of commitments. This is multiplying entities beyond necessity.

                                                                                                                        1. 1

                                                                                                                          That’s your opinion. The index is quite useful to me. I’d rather make a proper commit once it’s ready, not hack together a bunch of one line commits after the fact.

                                                                                                                          1. 2

                                                                                                                            The index is a commit. Why have two separate ways of storing the same sort of thing?

                                                                                                                            Also, it’s not my opinion that it’s hard to understand and unnecessary; it’s the result of usability studies:

                                                                                                                            https://spderosso.github.io/oopsla16.pdf

                                                                                                                            You’re also not “hacking together” anything after the fact. There’s no more hacking together after the fact whether you use git amend (hypothetically) or git add. Both of those mean, “record additional changes”.

                                                                                                                            1. 0

                                                                                                                              It seems you have a fundamental misunderstanding of the difference between add and commit. Commit requires a commit message.

                                                                                                                              1. 1

                                                                                                                                This isn’t a useful distinction. You can also create commits with empty commit messages in both git and Mercurial.

                                                                                                                                With both git and Mercurial you can also amend commit messages after the fact. The index in git could well be implemented as a commit with an empty commit message that you keep amending and you wouldn’t notice the difference at all.

                                                                                                                                1. 1

                                                                                                                                  you keep amending and you wouldn’t notice the difference at all.

                                                                                                                                  yeah, you would. again it seems that you either dont know git, or havent used it in some time. when you amend a commit, you are prompted to amend the message as well. another facet that doesnt exist with git add, because add doesnt involve a message.

                                                                                                                                  if you wish to contort git internals to suit your agenda thats fine, but git add has perfectly valid use cases.

                                                                                                                                  1. 0

                                                                                                                                    you are prompted to amend the message as well.

                                                                                                                                    This is UI clutter unrelated to the underlying concepts. You can get around that with wrappers and aliases. I spoke of a hypothetical git amend above that could be an alias that avoids prompting for a commit message.

                                                                                                                                    Don’t git users like to say how the UI is incidental? That once you understand the data structures, everything else is easy? The UI seems to have locked you into believing the index is a fundamentally necessary concept, but it’s not. It’s an artifact of the UI.

                                                                                                                                    1. 1

                                                                                                                                      The UI seems to have locked you into believing the index is a fundamentally necessary concept, but it’s not.

                                                                                                                                      Nothing has locked me into believing its a necessary concept. Its not necessary. In fact, for about 7 years I didnt use the index in any meaningful way.

                                                                                                                                      I think what you are missing is that Im not compelled to use it because its the default workflow, I am compelled to use it because its useful. It helps me accomplish work more smoothly than I did previously, when I would just make a bunch of tiny commits because I didnt understand the point of the index, as you still dont.

                                                                                                                                      The argument could be made to move the index into an option, like somehow make commit only the default workflow. Im not sure what that would look like with Git, but I dont think its a good idea. It would just encourage people to make a bunch of smaller commits with meaningless commit messages.

                                                                                                                                2. 1

                                                                                                                                  You have a set of things you want to accomplish. With git, you have N+1 concepts/features/tools to work with. With hg, you have N (because you drop the index). That means you have to expand your usage of the remaining N.

                                                                                                                                  Specifically, since you no longer have this extra index concept, you now expand commits to cover the scenarios you need. Normally, you’d make an initial commit and then amend a piece at a time (probably with the interactive curses hunk selector, which is awesome.) If you’re unsure about some pieces, or you have multiple things going on that you’d like to end up in separate commits, you can always make a series of microcommits and then selectively collapse them later. (In practice, it’s even easier than this, because of the absorb extension. But never mind that.)

                                                                                                                                  Yes, those microcommits need commit messages. They don’t need to be good ones, because they’re temporary until you squash them out of existence. I usually use a one word tag to specify which of the separate final commits they belong to. (If you don’t have separate final commits, you may as well amend, in which case no messages are needed.)

                                                                                                                                  …or on the other hand, maybe mercurial ends up with N+1 concepts too, because phases really help in keeping things separate. As I understand it, one reason git users love the index is because it keeps rapidly changing, work in progress stuff separate from mostly set in stone commits. Phases perform the same purpose, but more flexibly, and the concepts are more orthogonal so they compose better. In my opinion.

                                                                                                        3. 6

                                                                                                          I never particularly liked git and find it unintuitive, too.

                                                                                                          I wouldn’t consider myself a git poweruser. But whenever I had to work with alternatives I got the feeling that they’re just inferior versions of git. Yeah, maybe the usage was a bit more intuitive, but all of them seemed to lack things that I’d consider really basic (bisecting - hg has that, but e.g. svn has not - and shallow copying - not avaible in hg - are examples what I often miss).

                                                                                                          1. 3

                                                                                                            Mercurial was actually my first DVCS, and like you I ended up switching to git not out of a sense that it was technically better, just more pragmatic. For me, the change is more of a mixed bag, though. It is definitely the case that Mercurial’s UI is worlds better, and revsets in particular are an amazing feature that I sorely miss, but when I made the switch I found that the way git handles branches was much more intuitive to me than Mercurial’s branch/bookmark system, and that the affordances around selectively editing commit histories were very much worth the risk in terms of being able to manage the narrative of a project’s history in a way that makes it more legible to others. Ultimately, I found that git’s advantages outweighed its downsides for my use case, since learning its UI idiosyncrasies was a one-time cost and since managing branches is a much more common occurrence for me than using revsets. That said, I think this is a really unfortunate development.

                                                                                                            1. 2

                                                                                                              I occasionally convert people’s git repos to hg for my use. Stubborn like that.

                                                                                                            1. 25

                                                                                                              With respect to email, don’t forget that pull requests were once intimidating too - as anyone who frequently works with onboarding new developers to its workflow can attest. To help make onboarding users with email easier, I wrote this tutorial:

                                                                                                              https://git-send-email.io

                                                                                                              I also wrote a rebase guide which applies to both workflows for making your changes more consistent and easier to review:

                                                                                                              https://git-rebase.io

                                                                                                              1. 26

                                                                                                                https://git-send-email.io

                                                                                                                That nicely outlines how to send patches, but I think people have far more difficulty receiving patches via email. Not everyone uses mutt, aerc, or runs a patchwork instance. Many mail clients, that people are otherwise generally fairly happy using, are just super not great at handling emailed patches. Emailed patches also generally don’t show a CI status that you can view ahead of time (I have heard of some, but I don’t ever remember seeing it firsthand in the wild).

                                                                                                                It’s great that it (an email patch workflow) works well with your workflows and tooling, but for some people it just… doesn’t work as well.

                                                                                                                1. 4

                                                                                                                  I mean, those people who don’t have such a mail client are missing out. It’s like arguing that we should use SVN because not everyone has git installed, in my opinion. And testing your patches against SourceHut CI is pretty easy, before or after it’s sent.

                                                                                                                  1. 26

                                                                                                                    I think one issue is that for most of us, sending and receiving patches is a very small part of what we do with email, so choosing a mail client on that basis doesn’t make sense.

                                                                                                                    1. 1

                                                                                                                      But we aren’t forced to use only one mail client. I use several depending on context / the task at hand.

                                                                                                                      1. 1

                                                                                                                        I am curious about your multiclient workflow. Do you use multiple addresses, or use filters and one shared address? Or just all the mail in all of them?

                                                                                                                        1. 4

                                                                                                                          Whether you use local maildir or imap, mail stores are designed for concurrent access. How many people check email on their phone and not their phone?

                                                                                                                          1. 1

                                                                                                                            Sure, but my question was specifically about their workflow with it.

                                                                                                                          2. 2

                                                                                                                            As it happens I do use multiple accounts for multiple “hats”, but that’s slightly orthogonal to multiple clients, which I use even for a single account. My daily driver is mutt; I use thunderbird for rare occasions when I need to see rendered html properly or perform a search (still haven’t got mairix or not much etc set up) and I often use ios mail app but mostly read only.

                                                                                                                            At work we use Gmail. I do check that from ios mail app too. I recently started configuring mutt to read my work mail too but it’s a work in progress so I still regularly open the Gmail website.

                                                                                                                      2. 23

                                                                                                                        I mean, those people who don’t have such a mail client are missing out. It’s like arguing that we should use SVN because not everyone has git installed, in my opinion.

                                                                                                                        To me it sounds a bit more like arguing “anyone who doesn’t ride a penny-farthing to work every day is totally missing out”.
                                                                                                                        Well…maybe.. I do find it unlikely that is going to convince very many people who weren’t already riding them, or weren’t already inclined to do so. Even if it is amazing.

                                                                                                                        Sidenote1: I may be wrong, but it even appears that Mutt itself uses gitlab instead of email based patches. If true, I find that oddly humorous.

                                                                                                                        Sidenote2: I have nothing against email based patch flows, and if I am going to contribute to a project, I generally contribute in whatever form a project requires (within reason). But for my own projects, I do not desire an emailed patches based workflow (EPBW), nor do I desire to run/manage/admin/moderate(remove spam) a mailing list. That’s just me though.

                                                                                                                        1. 7

                                                                                                                          To me it sounds a bit more like arguing “anyone who doesn’t ride a penny-farthing to work every day is totally missing out”.

                                                                                                                          I don’t really like this take. Having sunk thousands of hours into the GitHub, Gerrit, and email-driven workflows, I can confidently assert that the email-driven workflow, even setting aside the many respects in which it is politically and technically superior, is simply the most efficient for both contributors and maintainers. The penny farthing comparison is unfair.

                                                                                                                          Sidenote1: I may be wrong, but it even appears that Mutt itself uses gitlab instead of email based patches. If true, I find the humorous.

                                                                                                                          Mutt uses Gitlab and mailing lists and Sourcehut, actually. The dominant avenue of contributions to mutt is through its hosted mailing list. They use Sourcehut CI, however.

                                                                                                                          Sidenote2: I have nothing against email based patch flows, and if I am going to contribute to a project, I generally contribute in whatever form a project requires (within reason). But for my own projects, I do not desire an emailed patches based workflow (EPBW), nor do I desire to run/manage/admin/moderate(remove spam) a mailing list. That’s just me though.

                                                                                                                          That’s why Sourcehut can do it for you.

                                                                                                                          1. 9

                                                                                                                            I don’t really like this take. Having sunk thousands of hours into the GitHub, Gerrit, and email-driven workflows, I can confidently assert that the email-driven workflow, even setting aside the many respects in which it is politically and technically superior, is simply the most efficient for both contributors and maintainers. The penny farthing comparison is unfair.

                                                                                                                            A bit of an “Ipse dixit”, but I’ll take it at face value anyway. To be clear, my comment was in response to your statement:

                                                                                                                            I mean, those people who don’t have such a mail client are missing out.

                                                                                                                            Which is what I made the comparison against. You have now pulled in other concerns in your response, and attributed them to the comment I made. I find that a bit uncharitable. I guess at this point we can just agree to disagree.

                                                                                                                            Mutt uses Gitlab and mailing lists and Sourcehut, actually. The dominant avenue of contributions to mutt is through its hosted mailing list. They use Sourcehut CI, however.

                                                                                                                            That’s odd. I looked through the last 2 months of their mutt-dev mailing list, and saw no mailed patches, but several gitlab PRs. Maybe I saw the wrong mailing list? Maybe I didn’t go back far enough? Overlooked it?
                                                                                                                            It doesn’t really matter, and I’ll take your word for it that they predominantly use emailed patches.

                                                                                                                            1. 2

                                                                                                                              The last 2 months have only seen one patch on Gitlab:

                                                                                                                              https://gitlab.com/muttmua/mutt/merge_requests?scope=all&utf8=%E2%9C%93&state=merged

                                                                                                                              After reviewing it myself I have to correct myself, I reckon that Gitlab and the mailing lists are at about an even pace these days.

                                                                                                                              1. 2

                                                                                                                                Do note: that was merged PRs. There were a couple of more (not many though!) in All which is what I looked at.

                                                                                                                        2. 5

                                                                                                                          Not everyone is productive using such mail client. Personally, I just plainly cannot remember more than a few shortcuts, which is already a massive roadblock for effectively using CLI tools as for most of them rely on shortcuts to increase productivity, they also do not provide me with options of what I can do, and I cannot for my life remember what can I do for all the possible contexts, cause of course options on what you can do are dependent on the context which you are currently in. Some people just aren’t productive using CLI tools, and saying that they “are missing out” because they plainly cannot effectively use the tool is simply gatekeeping.

                                                                                                                          1. 3

                                                                                                                            saying that they “are missing out” because they plainly cannot effectively use the tool is simply gatekeeping.

                                                                                                                            This is absurd. If a mechanic decides that he “is not a ratchet person” and will only ever use open-end wrenches, then I will question his professionalism just as I would question a software developer that “is not a CLI person” and will not learn to use a CLI mail client.

                                                                                                                            He doesn’t need to use the CLI mail client for his day-to-day email, but he should be capable of learning how to use it to handle the occasional emailed patches.

                                                                                                                            1. 5

                                                                                                                              Or this person will work with whatever, when paid for (professionals are paid for their work by definition!), but will only work with tools he/she finds enjoyable when doing charity. Thus FLOSS projects forcing inconvenient, last century methods with arrogant communication are missing contribution.

                                                                                                                              I thing the FLOSS community should focus on this kind of openness more, instead of CoCs.

                                                                                                                              1. 3

                                                                                                                                Good point. For work I’ll use whatever tools get the job done, no matter how gruesome. But for FOSS contributions, I agree that if the tool is difficult or simply frustrating to use, then it may as well not exist.

                                                                                                                              2. 1

                                                                                                                                Wrong assumption. Difference between using GUI and CLI clients is not like between open-end and ratcheted wrenches. Using those wrenches is basically the same. Meanwhile the experience between using CLI and GUI mail client is a lot bigger. I’d compare it to using automatic and manual wood planes. You can work with higher precision and similar speed with manual hand plane, but most carpenters would choose automatic hand plane, as it “just works” and doesn’t require that much skill and learning to do.

                                                                                                                                And why should you care what kind of wrench does your car mechanic uses, if he does the job well? This isn’t a problem not using better tools, but a problem of tool abilities. The tools that an average developer uses does not represent the tools that are created for that workflow. And that is a problem.

                                                                                                                                1. 2

                                                                                                                                  I’ll entertain the analogy to a wood plane, though I’m unfamiliar with the devices. You say it yourself: the manual wood plane is useful in certain circumstances but requires skill. So does the CLI mail client. Use the automatic wood plane where it fits, but at least learn the skill to use the manual wood plane where the higher precision is necessary.

                                                                                                                                  A developer that refuses to acquire a skill is simply not professional.

                                                                                                                                  1. 1

                                                                                                                                    It’s not like it requires much skill. It is the basically the same skill. The difference is, you need to move the manual wood plane along the plank 10 times, while with automatic you only need to move it once and the motor does its job. Some people just don’t have the patience and/or physical stamina to use manual wood plane. Manual hand plane is in fact more configurable, and can be used in more specialized scenarios. So enthusiasts use hand planes. Your average carpenter does not.

                                                                                                                                    1. 2

                                                                                                                                      The analogy was not mine.

                                                                                                                              3. 0

                                                                                                                                Consider acme?

                                                                                                                                1. 2

                                                                                                                                  I am unable to find such email client. And the point is, for a workflow to be usable by a wide range of people, it should require as little new tools that do the same as the ones they use. And in case of email clients, most people probably like their current email client, and they do not want to change it. So they, in turn, do not want to switch to this new workflow, which, while potentially increases productivity, requires them to switch to tools they do not like.

                                                                                                                                  1. 4

                                                                                                                                    acme is a text editor which can be easily coaxed into being a mail client.

                                                                                                                                    Consider as well that you needn’t discard your daily mail client in order to adopt another. What difference does it make if some technology is backed by email or by some other protocol? Just because you already have an HTTP client (e.g. your web browser) doesn’t mean another isn’t useful (e.g. curl).

                                                                                                                                    1. 7

                                                                                                                                      Acme does not seem like general user friendly. My colleagues all use JetBrains IDE’s and use Thunderbird as their mail client. And acme would be a downgrade for their experience. I might use it, but they wouldn’t. If I cannot offer them a good GUI email interface, there is no way they would switch to email-based workflow.

                                                                                                                                      1. 0

                                                                                                                                        I was recommending acme particularly for you, given the following:

                                                                                                                                        I just plainly cannot remember more than a few shortcuts

                                                                                                                                        If your colleagues won’t join you I consider your colleagues to be in the wrong, not the software. A bicycle is easier to use than a car but it’s not going to get you to the other end of town in time for the movie.

                                                                                                                                        1. 14

                                                                                                                                          If your colleagues won’t join you I consider your colleagues to be in the wrong, not the software.

                                                                                                                                          Don’t you think peace within a team is more important than any particular software or workflow? Or, to put it another way, the feelings of people are more important than any workflow, so if a large group of people reject a workflow, it’s better to conclude that the workflow is wrong for those people than to say that those people are wrong.

                                                                                                                                          1. 7

                                                                                                                                            My colleagues wouldn’t join me because the workflow is bad, but because there is no tooling suitable for them and the workflow. If tooling for a specific workflow just isn’t comfortable for me, I’m just not going to use it.

                                                                                                                                      2. 2

                                                                                                                                        So they, in turn, do not want to switch to this new workflow, which, while potentially increases productivity, requires them to switch to tools they do not like.

                                                                                                                                        What happened to using the right tool for the job?

                                                                                                                                        1. 1

                                                                                                                                          The question here is not about “the right tool for the job” but about the usability of those tools for the wider audience. Currently I do not see the majority of the developers switching to email-based workflow purely because of the usability of tools. “Rockstar developers” think that CLI’s are very usable and productive, but that is not the case for the average programmer.

                                                                                                                                          1. 3

                                                                                                                                            “Rockstar developers” think that CLI’s are very usable and productive, but that is not the case for the average programmer.

                                                                                                                                            Good to know that we were all rockstars for decades without realizing it!

                                                                                                                                            This is probably just an age thing but I don’t know any professional programmers who aren’t comfortable with CLIs.

                                                                                                                                            1. 3

                                                                                                                                              There is CLI, and there is CLI application. Git is used through CLI. Vim is a CLI application. Surely you know at least one professional programmer that isn’t comfortable with Vim and alike.

                                                                                                                                  2. 3

                                                                                                                                    I am not particularly experienced at using git with email. One problem I have had in the past is when I want to pull in a patchset from a mailinglist archive, where either I am not subscribed to the mailinglist, or wasn’t subscribed at the time when the patches were sent. Can these mail clients help me with this problem? (By contrast, I find it very easy to add a branch / PR as a remote and pull or cherry-pick commits that way)

                                                                                                                                    1. 3

                                                                                                                                      lists.sr.ht, the sourcehut web archive for mailing lists, has a little copy+paste command line thing you can use to import any patch (or patchset) into your local git repo. Here’s an example:

                                                                                                                                      https://lists.sr.ht/~sircmpwn/aerc/patches/7471

                                                                                                                                      On the right, expand the “how do I use this” box and a short command is given there.

                                                                                                                                      Integration directly with your mail client would require more development but isn’t necessarily out of the question.

                                                                                                                                      1. 3

                                                                                                                                        That’s good to see, but presumably doesn’t help for non-sourcehut mailinglists?

                                                                                                                                        1. 3

                                                                                                                                          No, I’m afraid that there are fewer good solutions for non-sourcehut mailing lists. Patchworks has a similar feature, if the list in question has that set up. You could also ask someone else for a copy of the mail. I don’t think this damns the idea, it just shows that we need better software to support the idea - which is what sourcehut tries to be.

                                                                                                                                2. 2

                                                                                                                                  I am still trying to find some time to check out Sourcehut. My only concern is how to configure it to run CI builds on mailing list patches as I couldn’t find it anywhere in the docs.

                                                                                                                                  1. 1

                                                                                                                                    This hasn’t been implemented yet, but it will be soon.

                                                                                                                                    1. 1

                                                                                                                                      Great. If that happens I will think about migrating some of my personal projects to the Sourcehut as it seems pretty as a pretty nice solution.

                                                                                                                                1. 6

                                                                                                                                  Culture. It’s the same reason that food is better in France.

                                                                                                                                  I’ve heard it stated that Heaven is an American salary, Chinese food, an English house, and a Russian wife. Of course, the corollary Hell is a Russian salary, a Chinese house, English food, and an American wife.

                                                                                                                                  1. 4

                                                                                                                                    English mansion, maybe, but sure as hell not regular English housing. I feel like most housing here is miserable.

                                                                                                                                    1. 1

                                                                                                                                      Interesting, thanks for the perspective. Maybe the adage needs to be updated.

                                                                                                                                      s/house/healthcare/g
                                                                                                                                      
                                                                                                                                      1. 2

                                                                                                                                        Nah you definitely don’t want that.

                                                                                                                                  1. 2

                                                                                                                                    Fascinating. I wonder how antiquated our run -> read log file -> debug -> code -> run process will look to my own children in forty years.

                                                                                                                                    1. 2

                                                                                                                                      Smalltalk users will tell you you’re already working like on a mainframe ;)

                                                                                                                                      1. 3

                                                                                                                                        I like being able to share my programs and interact with the outside world.

                                                                                                                                      2. 2

                                                                                                                                        I rarely need to run -> read log file -> debug -> code -> run . Love the red squiggles, the path of blood is the only way out of the woods.

                                                                                                                                      1. 1

                                                                                                                                        My colleagues always ask why I leave PhpStorm for grep. Usually, it is not necessary, but sometimes I might need to awk around a bit and it’s good to already be in the right environment.

                                                                                                                                        If you haven’t seen it yet, check out ag, the “silver surfer”. It’s the only “grep replacement” that I could get behind after two decades of using grep.

                                                                                                                                        1. 18

                                                                                                                                          In this case, isn’t it better to reply to the comment, explaining why you think it’s misunderstood?

                                                                                                                                          1. 7

                                                                                                                                            This seems right to me. If you want to convey something specific to the person you’re downvoting, then reply to them. The categories, as I understand it, exist to curb reflexive downvoting.

                                                                                                                                            1. 7

                                                                                                                                              There are plenty of times I downvote without leaving a comment. Either because I’ve tried leaving a comment before and they were hostile/unreceptive, or because others have tried leaving a comment and failed to make any noticeable impression. It’s much easier to just downvote and move on than it is to engage in a hopeless battle to change someone’s behavior.

                                                                                                                                              1. 7

                                                                                                                                                Regrettably, downvoting without explanation provides very weak signal and as a community norm is toxic.

                                                                                                                                                1. 17

                                                                                                                                                  There’s a lot more that’s toxic about this place than downvotes. Other than certain members who continue to be inflammatory (which is not a synonym for “expressing opinions I disagree with,” as so many like to believe), for example, I think a legitimate argument could be made that upvotes are more toxic than downvotes. We continually have short, low-efffort, low-content comments upvoted, usually because they are “clever” or are a “zinger.” The upvotes, at minimum, encourage this type of behavior. If I want that shit, I’ll go to r/programming.

                                                                                                                                                  Either way, one can’t be expected to do battle with folks whose comments are so predictably tired and inflammatory, that I can often say, “oh there’s one comment, and given the title of the post, I can bet that so-and-so said something like such-and-such.” There’s just no point. And then you have other members that just repeatedly grind the same ol’ political axe any chance they get. Nobody has the energy to respond to all of these comments. And even when you do, you’ll invariably be accused of tone policing (or similar) and “shutting down alternative opinions.” So then you have to deal with those folks too.

                                                                                                                                                  So, from my perspective, we have a culture we’ve established here of very light moderation, and a very high tolerance for asinine/unconstructive behavior. Every time I come here, I more and more think about just deleting my account and leaving. I don’t see any of this changing, and my guess is that it’s only going to get worse as the number of members increase.

                                                                                                                                                  1. 15

                                                                                                                                                    The downvote category I have wished for much more often than the proposed one is “Rude”. Replying to an inflammatory or ad hominem comment often just makes the commenter escalate, and best-case it derails the discussion. “Troll” isn’t right because the commenter isn’t deliberately trolling (at least I’d like to think things aren’t that bad). If someone is being blatantly uncivil I’d like to be able to downvote that behavior, regardless of content.

                                                                                                                                                    1. 2

                                                                                                                                                      I could go for a category like that. Anything along the lines of: mean, disrespectful, uncharitable.

                                                                                                                                                    2. 8

                                                                                                                                                      I often get a lot of ‘troll’ down votes mixed with lots of up votes. I don’t think I am a troll, so don’t really know what to do when that happens and nobody says anything. It is just an anonymous ‘fuck you’ from someone out there for some reason I don’t understand.

                                                                                                                                                      One thing I found is If you want to make long form comments and have people see it, you are better off making a submission or blog post than trying to convince a single person of anything via comments.

                                                                                                                                                      anyway, if it was me who annoyed you, sorry about that, its not something I’m doing on purpose.

                                                                                                                                                      1. 6

                                                                                                                                                        I hear you. I don’t have an answer - if I did, I’d be doing it.

                                                                                                                                                        I definitely agree that there’s a trap where short jokes rise to the top. I think upvotes do have some value in letting people feel good for saying something that was received well, but it’s an open question whether the benefits outweigh the costs.

                                                                                                                                                        I don’t have any special insight to offer on the other issues you mentioned, other than to say that for a place to be a community requires members to be committed to positive engagement. It isn’t easy.

                                                                                                                                                        1. 4

                                                                                                                                                          Yeah, indeed, it is quite hard. IMO, probably the only path is to 1) convince existing moderators or new moderators to devote more time to policing this place and 2) shift the culture of the community to welcome stricter moderation of content. That’s… hard for any number of reasons!

                                                                                                                                                        2. 5

                                                                                                                                                          We continually have short, low-efffort, low-content comments upvoted, usually because they are “clever” or are a “zinger.” The upvotes, at minimum, encourage this type of behavior.

                                                                                                                                                          How often does this happen, though? Anecdotally, I only ever see the low-effort comments once in a while - usually on the more popular posts that have been simmering on the front page for more than a day. And usually those replies aren’t ever top-level, usually a reply to something else. In my experience, the vast majority of posts on this site feel thoughtful and sincere. When the “clever” posts happen, I’m actually relieved and reminded, “oh yeah, lobste.rs folks do have a sense of humor”, even if it wasn’t all that clever or funny.

                                                                                                                                                          Either way, one can’t be expected to do battle with folks whose comments are so predictably tired and inflammatory, that I can often say, “oh there’s one comment, and given the title of the post, I can bet that so-and-so said something like such-and-such.”

                                                                                                                                                          This is something I endorse. I will often see people attacking other peoples’ opinions directly on this website. I’m sure that a certain subset of folks here toe the line between “strong opinion” and “inflammatory”, and they know they’re toeing the line, but they haven’t done anything technically against the rules - but after reading their comments, there’s a bad taste left in your mouth. They may use harsh language directed at the person they’re replying to, or deliberately insult a piece of what they’re saying in a curt manner, or being just plain rude. Perhaps a “arguing in bad faith” or “rude” downvote option might help, but then again, we already have a “troll” downvote option - so that may just be what we want to use in those situations.

                                                                                                                                                          I suppose I don’t really browse the site as often as other people here, so my experience may not be in line with yours. Thoughts?

                                                                                                                                                          (postscript: I’m always worried I’m going to misunderstand someone’s argument and then have a whole thing where it feels like I’m arguing in bad faith when in reality, I’m being confident about the entirely wrong thing because my reading comprehension sucks. When faced with “post opinion” or “delete and avoid possible misunderstanding” I will more often than not choose the latter to avoid uncomfortable confrontation.)

                                                                                                                                                          1. 7

                                                                                                                                                            I personally feel like I see those low effort zingers a lot. The linked thread from this meta thread has them, for example. On the one hand, I think humor is good, but on the other, a lot of it that I see here do it at the expense of others. I see a lot of comments in the style of n-gate.com, which I personally think is just a complete and total pile of garbage, although it’s perhaps less on-the-nose in comments here at lobste.rs.

                                                                                                                                                            But, everyone is likely to have their own standards for what kind of conversations they want to see here. I’d prefer to keep high standards. We already have places on the Internet where the n-gate style of humor is encouraged and accepted. In contrast, we have precious few places where we can expect continued high quality discussion. Lobste.rs is decent in the grand scheme of things; I’m likely a harsh critic because I sense the potential to be something better.

                                                                                                                                                          2. 1

                                                                                                                                                            I think a legitimate argument could be made that upvotes are more toxic than downvotes.

                                                                                                                                                            (my emphasis)

                                                                                                                                                            Why? A comment with a large number of upvotes is not promoted in any way apart from the small number inside the arrows. There’s no sorting algorithm like on Reddit that promotes this.

                                                                                                                                                            If you believe that people are changing their commenting style for karma points, thus degrading the site for everyone else, you may have a point. But “toxic” is a very strong word.

                                                                                                                                                            1. 5

                                                                                                                                                              I don’t really want to get lost in definitions of words. I used toxic because friendlysock did. If you want to choose a different word for describing both situations that is less strong, then sure, go right ahead. Also, saying it’s about karma kind of undervalues it. Most of us are human, and it’s not unlikely that we get a dopamine hit when we say something that is popularly validated.

                                                                                                                                                              1. 2

                                                                                                                                                                There’s a big difference between a forum which is genuinely toxic - where newcomers are looked down upon and insulted, where snark reigns supreme, and trolls run unchecked - and a forum that might tend towards silliness and unseriousness but doesn’t literally make people anxious to visit.

                                                                                                                                                                I’m fine with zingers and one-liners being downvoted - “me-too” and “off-topic” work for this - if the community feels they have no place here. I don’t see it at this moment in time as a big deal though.

                                                                                                                                                          3. 2

                                                                                                                                                            What if a comment couldn’t be downvoted unless it has at least one reply? Or a given person is not allowed to downvote unless they have left a reply?

                                                                                                                                                            1. 3

                                                                                                                                                              That would just play into the hands of literal trolls. A downvote is all the response a troll comment deserves.

                                                                                                                                                          4. 3

                                                                                                                                                            I’ve done this too. My comment above was solely in the case where it seems as if a commenter has specifically misunderstood a post or a comment. In that case, I believe it’s more constructive to reply and ask for clarification, instead of leaving a hypothetical “misunderstood” downvote.

                                                                                                                                                            1. 3

                                                                                                                                                              I’d prefer that the default behavior was moving on with no action.

                                                                                                                                                              1. 2

                                                                                                                                                                Oh I don’t mean to suggest anyone has a responsibility to reply whenever they downvote. I think I’ve done the same thing. I only mean to say that if you do want to communicate something specific, they say it.

                                                                                                                                                                1. 1

                                                                                                                                                                  Aye yeah, that makes sense!

                                                                                                                                                            2. 4

                                                                                                                                                              I’m of the opinion that the reply should be in addition to the downvote, to keep the discussion on track. Otherwise the comment will have the same moderation value as other comments, increasing its exposure and causing more confusion.

                                                                                                                                                              1. 3

                                                                                                                                                                I would echo this, misunderstandings happen, it doesn’t necessarily warrant a downvote. If you feel like clearing it up, that keeps the conversation going in what is hopefully a constructive way. If you don’t feel like clearing it up, that is also fine.

                                                                                                                                                                And perhaps I am misunderstanding here, but a downvote says you were wrong to misunderstand and I may or may not clear up the misunderstanding.

                                                                                                                                                              1. 2

                                                                                                                                                                Urgh. I wanted to like USB-C. The whole point is that you’d just have one kind of cable for connecting consumer electronics to each other. This is pointless.

                                                                                                                                                                The USB spec also cannot simply mandate that all USB-C cables have the maximum number of wires all the time because that would vastly increase BOM cost for cases where the cable is just used for charging primarily.

                                                                                                                                                                Such a cable ought to be physically welded to the wall wart that it comes with, then.

                                                                                                                                                                1. 1

                                                                                                                                                                  Then how could I use the same wall wart with an Arduino / iPhone / USB 3 device / mini drone / etc?

                                                                                                                                                                1. 1

                                                                                                                                                                  This is probably the best explanation of any technical subject I’ve ever seen. I’ve never worked with hardware nor video signals before, yet I was able to follow the whole thing. This video is going into a very short list of videos to save for when my children are a bit older.