1. 1

    I think I’d got around the exec-shield issue by temporarily disabling it with the echo 0 trick described here. You can renable it immediately after the dump or restart your WSL session.

    1. 10

      I know this post will sound really bad no matter how I say it, but I wonder how much of sexism, in the present (unlikely) or future (more likely) will be more fear than misogyny.

      Womens are becoming a touchy subjects and, in today’s world where a trial is decided by the public before it goes to court, a false rape accusation does more damage than the trial itself (at least imo). If I were an employer I’d be worried of female employees, not out of hatred or anything, but because they would hold so much power to screw me over.

      I personally don’t care what gender you are or religion or species.. I even like talking to assholes as long as they have something interesting to say. (Sadly I tend to be a bit of an asshole myself) But I would still be scared of talking to random women in a context like a conference because I might say something that puts me in a really bad place. It feels like I would be talking to someone with a loaded gun in my face.

      I think the best friends I have are those who made me notice my mistakes instead of assuming the worst of me, while the tech scene today seems more like a witch-hunting marathon to me.

      On that subject, why does the world have to work with cues and aggressive stances? Why can’t we be honest with each other? I see it every day, someone above me expects everyone to catch on her cues, if they don’t, they’re the bad guys, without even letting the other end knowing anything.

      Most angry tweets and blog posts about this topic are from people who just kept everything in or bursted out in anger at them and they got defensive or responded just as aggressively (kinda to be expected, honestly). I would love to see examples of people who were made aware of their behavior and everything went fine after that.

      1. 18

        a false rape accusation does more damage than the trial itself (at least imo).

        A genuine rape accusation also does more damage than the trial itself. In both cases, the victim is affected. It’s only how we perceive it that’s different.

        I think somewhere along the line communities started to encourage angry reactions as a way of maximising engagement. Somewhere along the line, we forgot to be kind by default, in a way we weren’t offline. I meet people who spend a lot of time in online communities, and you can see (amongst some people) that their online behaviour leaks into their personal offline behaviour, but rarely the other way.

        I think the recent furore over Equifax’s CSO having a music degree is a good example of this. Nobody should care about someone’s degree, but a marketwatch piece designed to provoke angry responses, provoked angry responses on the Internet. The Twitter algorithms designed to increase engagement increased engagement and the Internet went twitter crazy.

        There has to be a way to use a combo of the tools we use for engagement to promote de-escalation and de-engagement. Deprioritising inflammatory content to make the world a better place is not losing out. It’s winning.

        That’s what I really love about lobsters. People may have issues misinterpreting context and social cues here, but generally people are kind to each other.

        1. 10

          a false rape accusation does more damage than the trial itself

          That sort of accusation could, for example, prevent you from winning an Oscar. Or become elected US President.

          1. 11

            [Note: Before reading this, readers should probably know I have PTSD from a head injury. The side effects of nervous eyes, mumbly voice, and shaky hands apparently make me look like an easy target for male and female predators alike. I’m like a magnet for assholes who I usually deal with patiently, dismiss, or stand ground. Mostly ignore them. This issue required special treatment, though, since I was always treated very differently when it as something like this.]

            Far as scenario you’re worried about, it’s a real thing that’s happened to me multiple times. Not rape claims fortunately but sexual harassment or discrimination. I think I was getting false claims to managers two or three times a year with dozens making them to me directly as a warning or rebuke but not to my bosses. They just wanted me to worry that they could or would destroy me. Aside from the random ones, it was usually women who wanted a discount on something, wanted to be served ahead of other customers, or (with employees) not wanting to do the task they were given since it was beneath them or “man’s work.” Saying no to any of that was all it took…

            However, I was in a service position dealing with thousands of people plus dozens of workers due to high turnover. With all those people, just a few claims a year plus dozens of threats shows how rare this specific kind of bully is. Those that will fully push a false, gender-oriented claim are rare but highly damaging: each claim led people [that didn’t know me well] to assume I was guilty by default since I was male, interrogations by multiple supervisors or managers, and a waiting period for final results where I wondered if I’d loose my job and house with no work reference. Employment gaps on resumes make it harder to get new jobs in the U.S.. I got through those thanks to what I think were coworker’s testimony (mostly women) and managers’ judgment that the good and bad of me they’ve seen versus straight-up evil stuff a tiny number of women were claiming didn’t match up.

            Quick example: As a team supervisor, I always gave jobs to people in a semi-random way to try to be equal in what people had to do. Some supervisors seemed to cave in if a worker claimed the work was better for another gender, esp labor vs clerical vs people-focused work. When giving an assignment, the most shocking reply I got was from a beautiful, racially-mixed woman who had been a model and so on. A typically-good, funny worker who had a big ego. She said the specific task was a man’s job. I told her “I enforce equality like in the 19th Amendment here: women get equal rights, equal responsibilities.” She gave me a snobby look then said “I didn’t ask for that Amendment. Keep it, get rid of it, I don’t care. (Smirked and gestured about her appearance) I don’t need it. And I’m not doing man’s work.” I was a little stunned but kept insisting. She grudgingly did the job but poorly on purpose to disrupt our workflow. I had to correct that bias in my head where I assumed no woman would ever counter law’s or policies giving them equality outside maybe the religious. I was wrong…

            Back to false claims. That they defaulted against males, including other men who got hit with this, maybe for image reasons or just gender bias led me to change my behavior. Like I do in INFOSEC, I systematically looked for all the types of false claims people made esp what gave them believability. I then came up with mitigations even down to how I walk past attractive women on camera or go around them if off-camera. The specific words to use or avoid is important, esp consistency. I was pretty paranoid but supporting a house of five people when lots of layoffs were happening. The methods worked with a huge drop in threats and claims. Maybe the bullies had less superficial actions to use as leverage. So, I kept at it.

            This problem is one reason I work on teams with at least two people who are minorities that won’t lie for me. The latter ensures their credibility as witnesses. Main reason I like mixed teams is I like meeting and learning from new kinds of people. :) It’s a nice side benefit, though, that false claims dropped or ceased entirely when I’m on them for whatever reason. I’m still not sure given I don’t have enough data on that one. I also push for no-nonsense women, especially older with plenty of experience, to get management roles (a) since I’ve always promoted women in the workplace on principle and because mixed teams are more interesting; (b) side benefit that a woman whose dealt with and countered bullshit for years will be more likely to dismiss a false claim by a woman. When I finally got a female boss, esp who fought sexism to get there, the false claims that took serious investigation were handled usually in minutes by her. There was just one problem while she was there with a Hispanic woman… highly attractive with excellent ability to work crowds… that wanted my position launching a smear campaign. It almost worked but she had previously tried something on same manager she needed to convince. Her ego was so strong she didn’t think it would matter because she’d win her over too. Unbelievable lol. She left in a few months.

            So, yeah, I’d not go to one of these conferences at all probably. If I do, I’m bringing at least two women, one non-white, who barely like me but support the cause. If they leave me, I’m either going outside or doing something on my computer/phone against a wall or something. I’m not going to be in there alone at all given this specific type of bully or claim will likely win by default in such a place. Normally, though, I don’t mind being alone with women if there’s witnesses around that’s a mixed crowd, I’ve gotten to know them (trust them), or they’re one of the personalities that never pull stuff like this. I’ve gotten good at spotting those thanks to the jobs I did working with strangers all day. I get to relax more than you’d think from this comment, though, since vast majority of females on my team, other teams, and customers’ like me or at least neutral. The risk reducing behaviors are so habitual after years of doing them I barely notice I’m doing them until I see a post like this.

            Not funny note: There was also real sexism and harassment against women, esp from younger crowd. We had to deal with that, too. On rare events, some physical assault and stalkers that required police and other actions to deal with. One of the problems in many organizations is people will say the woman is making it up. Then, justice won’t happen. Our women were honest enough and male assholes brazen enough that we usually knew who was lying. Similarly when the women were bullshitting about harassment. In many other places or in trials, the defense was the woman might have been making it all up to spite the male. The reason that defense often works is because of the kind of bullies and lies I describe above. I get so pissed about false claims not just since they impacted me but because a steady stream of them in the media is used to prevent justice for real victims. That combination is why I write longer and fight harder on this issue.

            1. 9

              a false rape accusation does more damage than the trial itself (at least imo)

              In our society, a woman reporting a rape has to deal with a lot of shit from a lot of different people. Stuff like victim blaming, “What did you wear?”, “Oh you must’ve been reckless” make it already very hard for women to report rape when it happens. If anything we should be more concerned with women not reporting rape cases rather than false reports – especially since the latter is very small compared to the former. Sorry for not providing any sources, I’m on mobile right now.

              1. 15

                I know this post will sound really bad no matter how I say it,

                It does sound really bad. My favorite part is when you use the phrase “witch hunting” to somehow excuse the fear of women being around.

                but I wonder how much of sexism, in the present (unlikely) or future (more likely) will be more fear than misogyny.

                Oh so very little. Do not fear for mysoginy, it will be around forever.

                1. 16

                  My favorite part is when you use the phrase “witch hunting” to somehow excuse the fear of women being around.

                  I could not find a gender-neutral term that carried a similar meaning. This is definitely a fault on my part (my english dictionary is not that rich) but I was referring to the act of persecution by one or more individuals to the intended result of ruining someone’s life, humiliating them etc.

                  Oh so very little. Do not fear for mysoginy, it will be around forever.

                  What little hope for humanity and its self-improvement you seem to have. I understand the feeling.

                  My point was not whether misogyny will go away (it won’t), but how much of the perceived misogyny will be out of outright hatred rather than fear of consequences. Someone who doesn’t interact with women will be perceived as misogynous, but maybe he might just want to stay safe from ending up in a really bad situation? My “gun pointed at your head” analogy still stands. It feels uncomfortable and you can’t expect people to behave normally in those situations.

                  You seem to be the exact type of person I’m talking about, all going on the aggressive thinking I’m your worst enemy, not giving me the benefit of the doubt. I personally find it really hard to express my thoughts (it’s not just a language barrier, sadly), and getting attacked like that makes me really demoralized and demotivated to even talk. When I am not allowed to talk my mind without people instantly getting so aggressive at me, how am I supposed to not fear doing it?

                  1. 15

                    I personally find it really hard to express my thoughts (it’s not just a language barrier, sadly), and getting attacked like that makes me really demoralized and demotivated to even talk. When I am not allowed to talk my mind without people instantly getting so aggressive at me, how am I supposed to not fear doing it?

                    Thanks for saying this.

                    1. 5

                      I’m sorry that I sounded aggressive, because I was not trying to. I’m still not angry, nor replying out of spite or hate. :) I’m not a native english speaker (either?), so it can be that. Oh, and I also never thought of you as my worst enemy.

                      I could probably hug your right now, seriously, although I’m a little unsure how to understand your analogy that interacting with women is like having a gun pointed at your head.

                      As far as I can tell, we agree that misogyny will not go away – try to destroy an idea… – but we kinda disagree about how we should deal with it. I am not in a position to lecture anyone on the topic, and deeply nested threads tend to go off-topic easily, so I’ll happily reply to your emails if you’d like to.

                      1. 2

                        Thank you for your kind words, I’m sorry I misinterpreted your reply then!

                        I hate to link to it but I think that what best describes my analogy is a scenario like what ESR described. With no proof (even though the source claimed there had been attempts already) either back then or now, that was ruled as “unlikely” at best, but the fact that it doesn’t sound completely ridiculous and could be actually be put to action by a malicious group worries me.

                        I honestly don’t think most women are like that at all, and as you said, this is going a bit off topic.

                        About “how to deal with it”, I’m not proposing a solution, I do wonder if being more straightforward with people and less “I’ll totally blogpost this unacceptable behavior” would make anything easier though.

                        For example, the author quotes Berry’s paragraph about not giving anything for granted, yet instantly assumes that assuming that females are less technical is a big drag for women in tech. What about a little understanding? With so many women in sales and PR positions, the guy might be just tired as hell of having to deal with marketers (although the CTO title should have spoken for itself.)

                        Not denying that some people are just sexist jerks, though.

                    2. 8

                      Both literal witch hunts and the more recent metaphorical sense were frequently directed at men. The notion that “witch” is female is an ahistorical modern one and simply not part of what the word means in the context of a “witch hunt”.

                      1. 0

                        …So? Are you reading that Internet comment in the 1700s when historical witch hunts were actually happening?

                        1. 3

                          The witches arrested during the Salem Witch Trials (in 1692-3, around 150 being arrested) and killed (24, 20 executed, 4 died in jail) weren’t all women. A cursory scan of the accused show plenty of male names (although it does seem to bias towards women).

                      2. [Comment removed by author]

                        1. 12

                          US Americans are usually not aware that witches were systematically persecuted and killed.

                          That’s not true. Basically everyone learns about the Salem Witch Trials either in high school or via movies and other pop culture references.

                          1. 10

                            “US American” here, 2 things you have wrong:

                            • Witches weren’t only women: http://www.strangehistory.net/2012/06/21/all-hail-the-male-witch/ (witch was the term for being accused of witchcraft, not a term for women accused of witchcraft which is at best a modern reinterpretation of history)
                            • And we most definitely do get told about the systematic persecution and killing of witches.

                            And one thing not often known by Americans of their own witchcraft shenanigans, of the 21 executed Salem witches, 8 were men. https://en.wikipedia.org/wiki/List_of_people_of_the_Salem_witch_trials#Convicted_and_executed

                            As to witches again being even predominately women, only in certain areas, in Iceland iirc it was as high as 92% of witches were men. If we’re going to get angry at the use of witch to refer to women, lets at least get facts straight about the historical context.

                            1. 8

                              Not to mention that the primary accusers in Salem were female. It certainly wasn’t just man against woman.

                              1. 1

                                I dated two. They were awesome. Too bad our family moved around a lot. One actually taught me a little about the religion: Wicca. It involved men and women who (my interpretation) were basically nature worshipers. They usually didn’t cause harm because they believed the good or evil they did “came back times three.” When being deliberate rather than spontaneous, they were moderate in actions due to their Law of Extremes saying taking anything to the extreme of left or right makes it identical. That’s incorrect in the general case but there was truth in it where extremists are usually a problem regardless of the topic.

                                So, they tended to be friendly, non-conformist people that didn’t cause trouble unless provoked where they would warn then fight if necessary. Much like the Satanists I met as their rules similarly require not harming people or animals except in self-defense. For animals, also allowed to kill for food. Only common denominator among them that might inspire the religious choices were they had a lot of outcasts and rebels. The witches I knew were usually intuitive, artistic types whereas the Satanists were often intellectual with mix of artists and non-artists. I don’t know if the artist mix is just my data sample but the intellectual part makes sense given the greatest sin for Satanists is ignorance. They’re expected to pursue knowledge and call bullshit.

                                By the data, I’d have not worried about witches or Satanists. The majority of religious persecutors and violent offenders are Christian. They also push faith in authority over reason. They’re the most dangerous in the U.S. if I had to go by religion. In reality, all this stuff varies area to area, family to family, and person to person. I accept all groups so long as they’re not causing harm. Live and let live.

                                1. 6

                                  While I’m admittedly not an expert, I suspect the witches of the early US have little to do with Wicca, which was first introduced to the public in 1954.

                                  1. 1

                                    Possibly true. In that case, my experiences with witches wouldnt apply to those. I also suspect there’s a lot of different belief systems and groups using the word witch. Its meaning probably varies by group.

                          2. -2

                            The post content here is a man relating his experience of seeing his cofounder get talked over and ignored because she is a woman, so you immediately comment about… how bothersome it is that a woman might one day accuse you of sexual assault?

                            What the actual fuck is wrong with you? You should be thoroughly ashamed of yourself. Delete your account.

                            1. 16

                              What the actual fuck is wrong with you? You should be thoroughly ashamed of yourself. Delete your account.

                              I generally avoid these topics like the plague, but this is the exact reason why. It’s absolutely appalling to me that anyone thinks this is a good response to any comment ever. If you are trying to persuade people or this person, then you have completely failed in backing up your comments with anything but insults. If you aren’t trying to persuade anyone, then you are just a troll who enjoys yelling at someone who is clearly (based on the other comments in this thread) is trying to genuinely learn. You took a teaching moment and made it a display of hatred.

                              1. -1

                                If you are trying to persuade people or this person, then you have completely failed in backing up your comments with anything but insults

                                This assertion is completely absurd. I’ve been this asshole, been told off and/or beaten up, and learned better. Violent complaint is precisely how signalling to people that their behavior is utterly abhorrent works in society.

                                1. 6

                                  How should I signal to you that your behavior here, in this thread, is utterly abhorrent? Should I threaten to beat you up? Tell you to delete your account? Scream aggressive obscenities at you?

                                  Whatever it is you think you need to hear to stop behaving this way, pretend that I said it.

                                  1. 3

                                    I’ve been this asshole, been told off and/or beaten up, and learned better.

                                    I’ll just say that I find this comment immensely more helpful than your previous comment. If you’d like to expound on how specifically you’ve “been this asshole” in the past, and what you’ve learned from the experience I’d wager that’s much more likely to convince Hamcha (and the rest of us) to change their mind and behavior.

                                2. 5

                                  I questioned the reason she was ignored and proposed a motivation for which people might fear dealing with women. I also questioned what would have happened if the guy would have put any effort in making the issue clear to the people he’s talking shit about other than vague clues before making accusations with circumstantial evidence.

                                  What is there to be ashamed of?

                                  1. 3

                                    Normal people can have conversions with members of the opposite or same gender without constantly panicking about rape allegations. Do you specifically avoid female waiters at restaurants or cashiers at supermarkets? Is this somehow different to taking to a woman in a nontechnical role? If not, why do you think it is reasonable to pretend a woman who codes is any different? Hell, how on earth can you pretend the possibility of rape allegations is a valid reason to pretend that a person does not exist while in a meeting with multiple participants?

                                    Your regurgitation of sexist crap is shameful. Your lack of thought about it is bewildering. Delete your account.

                                  2. 3

                                    Who taught you to shame people for their feelings and beliefs?

                                    1. 0

                                      Some beliefs are horrendously evil. Your freedom to believe harmful crap does not constitute immunity from being yelled at for spouting it in public.

                                1. 10

                                  Sweet, a research paper that tackles something I’ve been talking about anecdotally for years when asked why I carry a notebook and mechanical pencil with me around the office.

                                  1. 7

                                    I posted it sort of to vindicate my comments in The Return of the Hipster PDA thread, and because it actually came up just today on a site I read, The Imaginative Conservative. I decided to find and link the study to avoid discussion devolving into politics, but the original article that lead me to the survey may be worth reading for some.

                                    1. 3

                                      So when I read “The Imaginative Conservative” I had no idea what that could even mean, but I feared the worst (which probably says something about our times). I must say, however, that despite being pretty damn far to the left myself I enjoyed some of the articles.

                                    2. 6

                                      This is something I really appreciate about about my current workplace. We’ve got laptops and insane amounts of compute power around the office, but the unspoken culture is to prefer paper notebooks. It’s nice not feel out of place going scritch-scritch instead of click-clack during meetings.

                                      (It does get a little odd meeting groups of external people, however.)

                                      1. 3

                                        Many years ago, when taking my degree in physics, I noticed that for those subjects where I had made longhand notes during lectures I had a much better grasp of the details of the subject immediately afterwards - revision consisted of a quick scan over my notes. In the subjects with handouts, I was having to go over the handouts after the lectures in order to make sure that I understood everything. As a result I made a point of trying to keep notes even during lectures that came with comprehensive handouts.

                                        I’m not sure whether the note taking itself was helpful, or whether it was simply that it absolutely forced me to engage with all of the material during the lectures: Without having to make notes, I could convince myself that I was paying attention when in fact I might have been missing bits and pieces of the material that could significantly effect my comprehension later & mean I had to spend extra time going over material that, had I taken notes, I would have been familiar with already.

                                        1. 2

                                          Lately, I have found that it is extremely hard for me to think without having pencil and paper; I write down what I want to do do, I sketch a few data structures, jot dot some pseudo code I think may be relevant, etc. I find that I cannot do the same kind of exploration at a keyboard, even using a great program like org-mode.

                                        1. 4

                                          Work: finish getting ready for SIGGRAPH next week; refining the show-and-tells I’m involved in, planning a rough schedule of talks and events to attend, etc.

                                          Fun: time permitting (not so likely this week), work a bit on my little 2d vector graphics engine. Next up is path stroking with line joins and caps.

                                            1. 6

                                              What, never?
                                              [ ] No, never
                                              [ ] Well, hardly ever

                                              1. 2

                                                Don’t patronise them, sir – pray, don’t patronise them.

                                              1. 4

                                                Is anyone using Mercurial instead of Git? I thought about switching to Mercurial once, but now it seems the project is slowly dying. Are there benefits?

                                                1. 13

                                                  Mercurial development is not dead at all:

                                                  https://selenic.com/hg

                                                  http://news.gmane.org/gmane.comp.version-control.mercurial.devel

                                                  http://news.gmane.org/gmane.comp.version-control.mercurial.general

                                                  The userbase is dwindling, but the development, if anything, is speeding up.

                                                  1. 9

                                                    I use it almost exclusively for my personal projects.

                                                    1. 7

                                                      I’ve found that Mercurial’s plugin system lets you build any workflow you want straight into source control. I also don’t think Mercurial is dying off, just that Github has really pushed Git up and nobody has tried to do something similar for Mercurial.

                                                      1. 5

                                                        There’s a couple of people at bitbucket who care about really pushing the envelope with what Mercurial can do. Sean Farley is rolling out Evolve for select bitbucket beta-testers upon request.

                                                        1. 1

                                                          Any public information on this change?

                                                          1. 1

                                                            I don’t think so, no. Feel free to stop by the #bitbucket or #mercurial channels on freenode to ask questions.

                                                          2. 1

                                                            That’s good to hear. I use Mercurial on all my personal projects and strongly prefer it to Git, but reading the blog posts and announcements from Atlassian, it’s really felt like the development velocity there has much more been on the Git side of Bitbucket.

                                                        2. 5

                                                          I started using Mercurial for work, and have since grown to prefer it over Git. In large part because of it’s extensibility, but also ease of use. Mercurial makes more conceptual sense to me and is easy to figure out from the cli/help alone. I rarely ever find myself Googling how to do something.

                                                          I still like Git though, and it’s likely better for people who don’t like tinkering with their workflows.

                                                          1. 3

                                                            Lots of people, including some big names (e.g., Facebook). I find git’s merging more reliable, but prefer hg’s CLI. They both get the job done.

                                                            1. 8

                                                              I’d love to know about cases where you find git’s merging to be more reliable. Samples would be awesome, so we can figure out what’s tripping you up.

                                                              1. 4

                                                                It’s a known issue.

                                                                1. 3

                                                                  Sort of. It’s not a known issue that BidMerge (note that we’ve shipped BidMerge, which is an improvement over ConsensusMerge as a concept) produces worse results than Git. I really meant it when I said I’d appreciate examples, rather than handwaving. :)

                                                                  1. 2

                                                                    I was using hg pre-3.0 (via Kiln). The problem that BidMerge is intended to solve is the problem which gave us so much trouble. I can’t speak to how well BidMerge would have fixed that, as the company is no longer in business.

                                                                    1. 5

                                                                      Fair enough. It should be pretty well solved then. Thanks for responding!

                                                            2. 2

                                                              It may well have technical advantages, but if you’re working on a project that other people will one day work on, I’d strongly urge you to use git. Being able to use a familiar tool will be far more valuable to other contributors. Look at e.g. Python, which chose mercurial years ago but has recently decided to migrate to git.

                                                            1. 1

                                                              Doesn’t this make the author’s problem even more difficult, because now instead of libpng he’ll need to interface with a potentially unlimited number of compression libraries?

                                                              Besides, libtiff and libpng really aren’t that hard to use, and there are wrappers under every license imaginable making them even easier.

                                                              1. 3

                                                                I think the idea is that you’d just pipe it through your favorite codec utility, much the same as we do for tarballs – think foo.tar.gz, foo.tar.bz2, foo.tar.xz, etc.

                                                                1. 3

                                                                  Exactly. The convention for farbfeld is .ff as a file extension and then .gz, .bz2,… appended, for example, “.ff.bz2”. That’s it. ;)

                                                                2. 2

                                                                  As Boojum already said, use your favourite compressor and be done with it. ;) Usually, you would not decompress and compress the data inside your filter (for instance written in C), but rather use UNIX pipelines:

                                                                  png2ff < image.png | bzip2 > image.ff.bz2
                                                                  

                                                                  We just let the bzip2(1) tool do the job for us…

                                                                  libpng is one big mess. Most people I know just copy paste code examples from the web. The fun thing here is that even after hours of research, I couldn’t find examples on how to read 16-Bit PNGs properly. Given libpng is also undergoing a huge API change, it generally is not fun to use.

                                                                  In the end, I just dug myself through the documentation and wrote png2ff, and now it handles 16-Bit PNGs just fine. Feel free to write yourself a small wrapper library or something, however, it only hides the real complexity of the image libraries, effectively making your program very slow in pipelines (but well, at least my code is short! /s).

                                                                  Besides, for a pipeline, you would not want to convert to and from compressed image formats every time. separating this into external tools is the only sane solution, also in regard to what the future might bring.

                                                                  1. 0

                                                                    Sorry, but this is just poorly reinventing the wheel for no good reason.

                                                                    For quick and dirty command line image processing there’s ImageMagick, which supports a million formats and has wrappers for every scripting language around.

                                                                    For more serious (or higher performance) image processing I’ve never had problems with libpng, libtiff or one of the dozens of image processing libraries and wrappers that use them.

                                                                    Honestly, if I really need to use libpng or libtiff directly, it’s probably because I’m doing something specific to those formats and would need to read the docs anyway.

                                                                    1. 0

                                                                      I don’t think you get the point. Using imagemagick, how exactly can I get to the raw pixel data in my program? Let’s say I have an image x.png and want to invert the colours, or something more complex which I would need to program myself. What exactly should I use? What should I do?

                                                                      All those image libraries are a pain in the ass to use, so they are not an option (e.g., if you suggested just using libpng in C, hell no!)

                                                                      1. 1

                                                                        You’re not getting my point.

                                                                        Unless you’re doing something exotic and specific to a particular image format, there’s no need to ever read or write the files directly because you can use ImageMagick or some other library. The ImageMagick command line tools are just convenient utilities implemented using the ImageMagick library. That library has bindings to dozens of languages, and most people already have it installed. It gives direct access to raw pixel data, as well as higher level functionality like drawing lines and shapes, filtering, etc.

                                                                        I just don’t understand creating a new image format to avoid learning an API.

                                                                        1. 1

                                                                          I think that there is value in having very simple, easy to parse image formats; less so for storage than for custom operations. You don’t necessarily want to have to pass raw image data, still less encode and decode from something like PNG at every junction in your pipeline. I take no position on farbfeld, but when working in video, where you do often create a lot of custom one-off manipulation tools, using something trivial to decode without having to worry about implicit typing is really helpful.

                                                                          1. 1

                                                                            I actually wasn’t getting your point, now I do. Well, thing is, ImageMagick is a massive dependency, and their API is not simple enough for my taste. Use what you prefer, use ImageMagick. :) However, in my opinion it should be much simpler and you should not “force” your users to install the heavyweight ImageMagick is.

                                                                  1. 4

                                                                    I still don’t understand how people can routinely put back code into a master branch without ensuring that it even builds correctly, let alone functions as designed. When an accident happens and you break the build, or the software in general, it seems prudent to back the change out of the repository until you can understand it. Whatever the mistake was should be understood, so that you (and your colleagues) can learn from it and avoid it in future.

                                                                    Mistakes can always happen, but negligence is simply not cricket.

                                                                    1. 4

                                                                      “I still don’t understand how”: a blameless postmortem is an interesting tool to try to find out. The idea is that things that in hindsight look negligent might have seemed perfectly sensible at the time. Finding out why they seemed sensible might show gaps in tooling or training. (Eg. tests were run but not on exactly the changeset that got merged; tests have been failing for engineer X for weeks but she’s ignoring them because they pass in CI; etc.)

                                                                      GitHub has a CI-integration “protect this branch” feature: you can configure master so that a PR can only be merged if a particular CI check has passed on the branch being merged.

                                                                      1. 2

                                                                        I agree wholeheartedly that it is important not to lay blame (or worse) for mistakes. Doing a post mortem analysis of mistakes is a crucial part of avoiding repeating the same mistake over and over; to ignore the problem is to become negligent.

                                                                        If you run the tests on a patch that is not the same as the one you eventually merge, you didn’t really run the test. Discovering that this is true, and understanding that even small changes can result in unanticipated defects is an opportunity to take ownership of, and learn from, a mistake. To continue routinely putting back changes where you did not test the actual patch is, subsequently, negligence.

                                                                        If the tests routinely fail on your machine (but not on others) and you ignore those failures without understanding the cause: that’s negligence as well. Every engineer in a team is responsible for the quality of the software. This is a core part of avoiding blame games – if everybody owns, analyses, learns from and shares their mistakes, nobody need point upset fingers at others.

                                                                        1. 1

                                                                          Certainly the blameless postmortem idea is only going to work if you do something with the findings. If the kinds of mistakes you’re talking about carry on happening regularly, then yes you have a problem.

                                                                          People will still make mistakes, though. That’s the nice thing about a tooling solution like that GitHub configuration: a whole class of mistakes simply can’t happen any more.

                                                                      2. 3

                                                                        For this reason, I think more version control systems need to make an easy, visible revert part of their core functionality.

                                                                        1. 3

                                                                          Where I work, it usually happens due to portability. Someone checks in code that builds fine on their preferred dev platform and assumes it will work on the others. We have an abstraction layer that helps with differences in the system libraries, but things like mistaken capitalization in an #include will work on Windows but not Linux. Conversely the GCC linker is more forgiving about mixing up struct vs. class forward declarations than VS.

                                                                          1. 1

                                                                            Me too, the most common portability isssue we have is wchar_t = UTF-8 vs UTF-16.

                                                                            1. 1

                                                                              Yeah, developing for more than one platform can make it much more tedious to make sure your code is tested before it goes back. If this kind of failure happened more than once or twice, though, I would probably consider adding some kind of #include case check tool to be run out of make check. We do this already for things like code style checks.

                                                                              You could conceivably make it relatively easy to install the checks as a pre-commit hook in the local clone via some target like make hooks. Pushing code to a feature branch to trigger some kind of CI build/test process before cherry-picking into master could help as well.

                                                                              1. 1

                                                                                I had close to a dozen build failures in the space of an hour because someone built live-environment integration tests into the CI test process, and they depended on a dev service that was down. “Fixing” the build entailed rerunning it unchanged once the depended-upon service had been restarted. It has always been my experience that broken CI builds are due to unforeseeable problems or circumstances outside the developer’s control, not a lack of due diligence on the developer’s part; so these “build-breaker shaming” devices seem incredibly counterproductive to me.

                                                                              2. 1

                                                                                I had it happen when I changed to a job where I had to use a different IDE from the one I was used to. I was used to making the kind of change that would show up immediately as a failure in my IDE if it was incorrect; if not, I would habitually commit to master, confident that it would work. Running a command-line build or unit tests was simply not justified in terms of the cost given the level of confidence I tended to have in such a change. With the new IDE my confidence was entirely misplaced and I broke a lot of master builds until I adjusted.

                                                                              1. 2

                                                                                To me it was worth reading just to learn about the ~/ shortcut in ido-find-file, which happens to also work in helm-find-files—which I use.

                                                                                I’m wondering if he missed a few links there? I’m searching in vain for the file he refers to with this statement:

                                                                                This file is an example of PDF output using these settings.

                                                                                1. 4

                                                                                  A related cool ido-find-file trick that I stumbled over a while back was $ENV/. At work we environment variables to switch between builds, and I have a few others that I use as bookmarks to shorten paths. I was quite pleasantly surprised the day that I absent-mindedly typed one into ido and saw it get expanded.

                                                                                1. 10

                                                                                  Fine. They can call me “Dr. Boojum” instead.

                                                                                  More seriously, I take issue with all the dodging around about the various definitions and meanings of engineer and silliness about things like why graphics designers and hedge fund-managers aren’t engineers. But then there’s this line:

                                                                                  An engineer is a professional who designs, builds, and maintains systems.

                                                                                  By that definition, yes, I am a software engineer. I design software systems, build (implement) them, and maintain them.

                                                                                  I do think that one of the things going for most professional engineers is that they have the collective clout to push back and make sure they have enough time to do a solid job. If I tried to hire a civil engineer to design a suspension bridge for me but only gave them a week to do it, I’d be laughed out their office. No engineer would agree to that. Yet, too many people fail to see how absurd it is to ask the equivalent of a software practitioner.

                                                                                  1. 15

                                                                                    That “It’s really pretty simple, just think of …” tooltip totally kills me. I wonder why git seems so obvious in retrospect, but so daunting to the newcomer. Is it the unpredictable commands?

                                                                                    Kind of reminds me of learning to pay attention to state in codebases. Once you catch on to the unwieldyness of variables with too wide of a scope (e.g. globals) it leaps out of the page in less well written code.

                                                                                    If you were going to do a 10 minute git intro focusing only on the data structure used by git and none of the arbitrary command interface, what would you cover?

                                                                                    1. 10
                                                                                      1. Explain what a DAG is, if necessary
                                                                                      2. Commits are nodes.
                                                                                      3. The “parent” relationships are edges.
                                                                                      4. Branches are pointers to commits.

                                                                                      That’s really nearly everything. Then to actually use it, you map manipulation of the above into commands, which is not as straightforward as it perhaps should be but is also not as difficult as I think people make it out to be (commit, reset, branch and rebase hit probably more than 95% of uses).

                                                                                      1. 3

                                                                                        You forgot the index, it’s not really part of the storage model but using it is essential to using git.

                                                                                        1. 7

                                                                                          I would call it the “staging area” (just seems less confusing to me) and while it’s essential to use, from the user perspective it’s mostly a technical detail of git commit. Advanced use of the staging area, while very powerful, is not integral to advanced use of git.

                                                                                          (As an aside, the lack of a staging area is one of the things I really miss when using Mercurial, especially since it gets a half-assed accidental partial implementation by not automatically tracking new files anyway.)

                                                                                      2. 5

                                                                                        The commands are certainly the stumbling block in my case. I get along fine with Mercurial, and I used Monotone before that. I have no problems conceptualizing a DAG. But the Git command line just doesn’t agree with my tastes.

                                                                                        1. 6

                                                                                          I think it’s a combination of a terrible UI on top of tools for grappling with an actual hard problem. Me, I just let magit handle the nastiness.

                                                                                          1. 4

                                                                                            And now you replaced the nastiness with Emacs, which is itself another set of nasty.

                                                                                            1. 8

                                                                                              Well, right. But I have 25 years of Emacs muscle memory.

                                                                                              1. 8

                                                                                                Emacs is weird for modern users, but it’s consistent with itself and natural for the early 1980s. A frame is always a frame, a buffer is always a buffer. This hasn’t changed in over three decades of Emacs' existence. The world around Emacs changes, but Emacs fundamentals remain immutable.

                                                                                                Git is not consistent with itself. Over the years, they couldn’t make up their mind if it should be called a cache, an index, or a staging area. Thus, there are vestigial remnants of --cached or --staged in git diff, but the manpages usually call it an “index”. They couldn’t decide if interactivity should be done with --patch or --interactive, so git add and git rebase flip/flop between that. The help system is all over the place with git -h foo, git help foo, git foo --help and git foo -h all doing slightly weird and inconsistent things. The famous git koans contain more examples.

                                                                                                The git UI is about as intelligently designed as a human body full of appendices, blind spots in the retina, and fragile knees.

                                                                                                1. 4

                                                                                                  The commands are arbitrary, and not very uniform, or predictable, that’s true. But the backing data structures feel natural now. I’m fine with looking at it as New Jersey design, it fits that mold.

                                                                                                  1. 2

                                                                                                    I used to use the command-line wrapper Easy Git to fix inconsistencies in Git like the ones you mention. Easy Git changes commands, flags, and documentation to refer to concepts consistently. For example, it has eg stage and eg unstage commands, and extra documentation like eg help topic staging. It also has usability improvements like telling you in eg status when a rebase is in progress.

                                                                                                    Sadly, the version of Easy Git on its website has not been updated in a long time, and some commands no longer work with the latest version of Git – most notably eg status. But I’ve just discovered a mirror of a more-recent version that may be usable.

                                                                                                    1. 1

                                                                                                      When I have to interact with git repos, Mercurial is my improved UI wrapper.

                                                                                                2. 2

                                                                                                  Where it more often rubs me the wrong way is when the problem wasn’t very hard to begin with, but is now annoyingly complex because of git (or sometimes, because of some other infrastructure’s specific way of using git).

                                                                                                  The traditional way to send in a smallish patch to an open-source project: edit some files, run ‘diff’, mail the patch. This is pretty easy for me to do. And most projects, unlike the Linux kernel, move pretty slowly and don’t have a ton of concurrent development, so issues with patch-tracking and branches are uncommon.

                                                                                                  But now many projects (even those slow-moving ones) want contributions through git, which requires a whole song-and-dance around cloning repositories and upstream masters and local branches and pull requests… all for a 5-line patch! The song-and-dance gets even worse with the project-management stuff people have put on top of it. Github isn’t that fun to begin with, but hardly the worst… my least favorite experience was probably making a 2-line bugfix to Mediawiki, which required not only dealing with git’s nonsense, but also with gerrit’s nonsense. I’d estimate I spent about 20 minutes tracking down the bug, 2 minutes fixing it, and an hour figuring out how to submit the patch.

                                                                                                  Github seems to recognize the process is really heavyweight for small changes, so they’ve made it possible to edit projects without dealing with git at all, if you’re doing very small changes: just click “edit” in the web interface, and the whole clone/branch/commit/pull-request circus is hidden behind the scenes. I’ve used this a few times and it was a much nicer experience than the verbose way of doing it. Maybe they’ll expand this to handle more cases, which would mitigate the issue.

                                                                                                  1. 1

                                                                                                    IMO, the format-patch workflow is under-appreciated. It requires no more infrastructure than a channel of communication and already integrates well with git (as one should expect, since Linux works that way and git was explicitly written to serve Linux’s needs).

                                                                                                3. 2

                                                                                                  I would draw pretty trees on a whiteboard and repeatedly say “GIT!”

                                                                                                1. 3

                                                                                                  Boojum’s desktop

                                                                                                  Emacs on Xubuntu, nothing too fancy. Usually I have more Emacs splits, Firefox tabs, and terminals open but I just logged in relatively recently. Work machine is pretty similar except for Gnome 2 instead of Xfce, higher res, taller conky (3x the CPU bars), Pidgin above that, and usually an image viewer alongside Emacs and the terminals.

                                                                                                  1. 20

                                                                                                    Mercurial (or an extension)

                                                                                                    That is why teams I have worked on have avoided Mercurial. Because, you don’t use Mercurial – you use Mercurial + Extension Soup.

                                                                                                    “So… I just grab git and I can start working” “Yep.”

                                                                                                    versus

                                                                                                    “So, I just grab hg and I can start working” “Not exactly, you will need to enable some of the native extensions, and then you need to grab attic, bfiles, caseguard, checkfiles, checkmeta, codesmell, collapse, contains, … (30 more extensions)”

                                                                                                    … ugh. I understand the positive idea of an very extensible dvcs, but I have been in the room when that feature killed off hg use multiple times.

                                                                                                    1. 8

                                                                                                      I’m honestly a bit confused by your comment. You’ve really got two comments, which I want to treat separately:

                                                                                                      1. You need to enable a pile of extensions in Hg to make it work like Git (which is usually what people mean when they say they need extensions to make Hg “usable”)
                                                                                                      2. Having an extensible DVCS that ships with extensions is a bad idea

                                                                                                      To the first, the main extension class that Mercurial ships with disabled by default are history editing extensions. That’s it. All the other Git workalikes are there. This is done so that new users cannot accidentally obliterate their history and get into a weird state. I’m going to suggest that if a user adding a line that says histedit= to their configuration file is too complicated for them, then they probably should not be dynamically rewriting history in the first place. Lots of programs do something similar (usually labeled as something like “enable advanced mode”).

                                                                                                      Beyond that, though, extensions have been great for Mercurial. First, it helps development: team members frequently develop new functionality as extensions, then land the extension in Mercurial to see if others can take advantage of it, and then fold it into core if lots of people find it useful. That’s how caseguard (one of the only things in your list that is an actual extension) happened: the team I was on wanted to know when we were making files that could not be opened on Windows, so we wrote an extension and donated it to Hg; they shipped it as an extension and found it really useful; and it landed in core a release or two later. Bookmarks (Git-style branching) landed the same way. A curses-based improvement to record (diff hunk selection) was also developed that way.

                                                                                                      And sometimes, it’s really useful to have legitimate extensions that you do not turn on by default. The other extension you list that is real, bfiles, is a really old version of largefiles, which ships with Mercurial but is disabled. largefiles allows storing large files outside of Mercurial proper, similar to Git’s attic and lfs packages, and so is definitely a sometimes food. But unlike those packages, because largefiles is an extension and can hook deep into the underlying machinery, it can interact cleanly with Mercurial’s existing commands and existing user aliases out-of-the-box. To use lfs in Git, you have to either use a bunch of additional commands, or set up a bunch of custom aliases and hooks to keep things synced. Doable, yes, but adding a single line to your Mercurial config is a lot simpler.

                                                                                                      I sometimes wish Mercurial would fold extensions into core faster for selfish reasons, but I think Mercurial having, and making use of, extensions, is not a good reason not to use the tool.

                                                                                                      1. 4

                                                                                                        I didn’t intend it to be confusing. I have been lucky enough to be involved with a great deal of greenfield development, back to the point when version control systems are decided on. I have repeatedly seen “extensions” (and the complexity in choosing / enforcing use) be the reason teams decided not to use mercurial, that is all… that was my entire point.

                                                                                                        As for the extensions, I haven’t used mercurial in years, so I just grabbed random extensions from the list found ( https://mercurial.selenic.com/wiki/UsingExtensions ) to create my obviously mock example. I gave up on mercurial after losing too many battles (way back when git on windows was useless)… and I simply couldn’t get buy in.

                                                                                                      2. 5

                                                                                                        The extension system is optimised for people learning Mercurial who do not come with git preconceptions. The size of this userbase is larger than you may think. Personally, when I have taught Mercurial, I see that most beginners are happy to learn that they can do something if they just enable it. They never seem to be upset about enabling something they didn’t even know about.

                                                                                                        It is only when someone comes from git and wants to start rebasing, cherry-picking, and splitting hunks right away that they feel thwarted by having to enable extensions. Would you be satisfied if you only had to flip on a single switch and thus enable all of those extensions? I might write a patch to do that.

                                                                                                        1. 2

                                                                                                          I haven’t advocated for Mercurial in years, so I am not the best one to ask. I gave up on it after having extensions, popularity or github thrown in my face enough times. That said, for teams that want a git equivalent experience without having to toggle a group of extensions, having a gitsimilar switch or something might be very useful. Again, the major concern isn’t one extension… or one switch… it is an endless set of “decisions” to be made, it is decision anxiety or decision fatigue.

                                                                                                          If https://mercurial.selenic.com/wiki/UsingExtensions is up to date – “out of the box” you have to make 30 yes/no decisions on extensions. Now, you might claim “use vanilla and only add stuff as you need it!”, but teams see those as “bundled” and consider each one a yes/no decision. Extension Soup!

                                                                                                          1. 2

                                                                                                            Personally, I prefer Mercurial and have never really found enabling an extension to be a chore – besides, I figure some one could just copy a fully loaded .hgrc from someone else if they want.

                                                                                                            That said, perhaps another approach would be for Mercurial could take a page from Emacs' book. Emacs has an analogous concept of “disabled commands.” If you try to invoke one of these you get a message like the following:

                                                                                                            You have typed RET, invoking disabled command upcase-region.
                                                                                                            It is disabled because new users often find it confusing.
                                                                                                            Here's the first part of its description:
                                                                                                            
                                                                                                               Convert the region to upper case.  In programs, wants two arguments.
                                                                                                               These arguments specify the starting and ending character numbers of
                                                                                                               the region to operate on.  When used as a command, the text between
                                                                                                               point and the mark is operated on.
                                                                                                               See also `capitalize-region'.
                                                                                                            
                                                                                                            Do you want to use this command anyway?
                                                                                                            
                                                                                                            You can now type
                                                                                                            y   to try it and enable it (no questions if you use it again).
                                                                                                            n   to cancel--don't try the command, and it remains disabled.
                                                                                                            SPC to try the command just this once, but leave it disabled.
                                                                                                            !   to try it, and enable all disabled commands for this session only.
                                                                                                            

                                                                                                            One could imagine Mercurial taking a similar approach: explain that the extension is not currently enabled for safety reasons, show a bit of the help text for it, and then give a choice to go ahead anyway, go ahead and also enable it in the .hgrc, or cancel. (And possibly enable it or all extensions for a limited time, similar to sudo).

                                                                                                            1. 2

                                                                                                              It basically does this already:

                                                                                                              $ hg rebase
                                                                                                              hg: unknown command 'rebase'
                                                                                                              'rebase' is provided by the following extension:
                                                                                                              
                                                                                                                  rebase        command to move sets of revisions to a different ancestor
                                                                                                              
                                                                                                              (use "hg help extensions" for information on enabling extensions)
                                                                                                              
                                                                                                              1. 1

                                                                                                                The “chore” is two part. The first is DECIDING if you want to use an extension, and if it becomes critical to your workflow, if you want to force all other team members to use it. The second part is acquisition of non-included extensions and forcing your team to go through the acquisition process (more complex than just making a copy of a .hgrc).

                                                                                                                1. 1

                                                                                                                  On the 2nd part, is it really common to use extensions not bundled with mercurial? I could be way off, but the only extensions I’ve seen in use are the ones that ship with the default install, in which case it’s only a matter of enabling them in the config, not a separate installation process. I agree that using non-default, third-party extensions would raise the barrier to entry to your codebase, not to mention odds of something breaking during an upgrade. The docs even mildly imply that you might want to be cautious about using third-party extensions, because: These extensions are not distributed together with Mercurial. The Mercurial project provides no guarantees about these and does not maintain or test them. Note that Mercurial explicitly does not provide a stable API for extension programmers, so it is up to their respective providers/maintainers to adapt them to API changes.

                                                                                                                  1. 1

                                                                                                                    On the 2nd part, is it really common to use extensions not bundled with mercurial?

                                                                                                                    There are hundreds of 3rd party extensions, so I would hope at least some of them are in use. Additionally, as extensions are the feature I have seen be the deciding factor AGAINST Mercurial… it would be depressing if all the work of developing and supporting the feature was only intended to be used by included extensions… which could just be “features” at that point.

                                                                                                            2. [Comment removed by author]

                                                                                                              1. 11

                                                                                                                I’m sorry, but I’m getting really frustrated by people who are saying “I tried Mercurial eight years ago and it sucked” replying to threads like this.

                                                                                                                Git eight years ago was also a different beast. In modern Git, you can git co somebranch, and, if somebranch exists on origin, will automatically track that. Git eight years ago did not: you had to explicitly create the branch, then fix its tracking. Even if somebranch does not exist upstream, modern Git will track the branch you just came from, which is usually what you want for feature branches. But Git eight years ago did not: you again had to explicitly set it.

                                                                                                                Git eight years ago did not have git rerere. Git eight years ago did not have many of those 60-odd flags to git log that another commenter here loves. Git eight years ago did not work on Windows in any meaningful sense. Git eight years ago had no good GUIs. Git eight years ago required you run git gc as a cron job because Git never did incremental GC “when it was needed”.

                                                                                                                But it’s not eight years ago. It’s today. So if we’re going to talk about what is good about Mercurial, and what is good about Git, and what is bad about Mercurial, and what is bad about Git, then can we please talk about the current versions of both of those tools?

                                                                                                                Maybe I’m really biased and Mercurial is just actually inferior to Git. I don’t think so, but that’s entirely possible. But the one thing that I’ll readily grant is that Mercurial 1.0 was inferior to Git 2.5.2. And Git 1.0 was inferior to Mercurial 3.5.1. So, please, let’s at least compare the tools we have today when we’re having these discussion.

                                                                                                            1. 24

                                                                                                              Git is powerful. Even now, at version 3.1 hg help log lists about a dozen of options; git help log gives me about 60 pages of documentation.

                                                                                                              aaaaaaaaaaaaaaaaahhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh!!!!

                                                                                                              1. 11

                                                                                                                Wow. How could one think that was an argument in favor of git?

                                                                                                                1. 4

                                                                                                                  Lots of documentation is a bad thing?

                                                                                                                  1. 7

                                                                                                                    No, not at all. The point is that git-log has many many not-quite-orthogonal flags, whereas Mercurial has fairly expressive query and template languages that obviate such flags. An example is the revset “grep” operator, instead of git log –grep. The former can then be used anywhere a rev-like is accepted, whereas the latter is only useful on log and has to be documented how it behaves with respect to other flags (at least on some level). Does that make sense?

                                                                                                                    (One of the things that came out of that thread is fixing some docs and making some things more discoverable.)

                                                                                                                    1. 4

                                                                                                                      A git query language is a great idea and should be stolen from the hg guys. -G, –grep, and pickaxe could all be generalized.

                                                                                                                      1. 2

                                                                                                                        Fair enough, yeah. Most of my work is writing docs, and most of my free time has been in ecosystems where the docs are terrible, so I’m more likely to be like “oh thank God” when I see a bunch of things. :)

                                                                                                                        1. 4

                                                                                                                          I think the main problem with the git man pages is that they’re too extensive, overwhelming the curious user with extraneous information. I’m not alone in this opinion I think given the existence of http://git-man-page-generator.lokaltog.net/

                                                                                                                          1. 7

                                                                                                                            It’s also “information” that’s not explained. There are a lot of places where they reference some non-obvious concept by its name, and there’s no cross-reference to tell you where to learn what it is, and if you Google the phrase it turns out this is the only occurrence anywhere, ever.

                                                                                                                      2. 3

                                                                                                                        Yes. :)

                                                                                                                        Probably depends if you say things like “there’s so much to learn!” with a grin or a grimace. It’s (sometimes) a proxy for the complexity (difficulty) of using a tool. It makes it harder to find the option I want. There’s a cognitive load because I have to look at each option and decide whether it’s for me or not. Assuming even only a single yes/no per page, that’s 60 decisions. I’m exhausted.

                                                                                                                    2. 7

                                                                                                                      Yeah; I helped Augie draft this response. I think we both took some SAN damage over the course of this thread.

                                                                                                                      1. 3

                                                                                                                        I’m pretty sure git’s help just opens you to the manpage rather than a terse briefing.

                                                                                                                      1. 20

                                                                                                                        We live in a cosmopolitan society, and our world is becoming smaller as it becomes easier to connect and communicate. We will always encounter people with opinions different than ours in varying degrees. How we get along, work with, and co-exist with, these people is important. We can’t rid the world of everyone who disagrees with us. There is a line that is too far once crossed. I don’t know what this line is, but it is the point when we should all rise our arms and fists and say “no more”. But I didn’t see it in the twitter thread that initiated the github thread. I saw someone expressing their opinion about trans-people. Then I saw other people focus on a small phrase, and spew anger they felt from what they understood that to mean.

                                                                                                                        At some point we will have to work with people we disagree with. How we go about this will be the measure of our humanity. Sadly this seems like an unwarranted attack. And I say sadly because I feel for both sides. I don’t see the benefit of removing and ostracizing a community developer. But also those calling for expulsion must be in a great deal of anguish and pain.

                                                                                                                        1. 9

                                                                                                                          I don’t see the benefit of removing and ostracizing a community developer.

                                                                                                                          Except this is entirely poison to the development and potential commercialization of a project. Brendan Eich should be the perfect example for that, if you’re going to seek wider acceptance you shouldn’t have political land mines of your contributors acting like this on the internet. This kind of thing kills the ability of companies to sit on your foundation board or give you monetary patronage later on, because those companies don’t want the heat of having to deal with your community’s mouths.

                                                                                                                          Politics exist in OSS. There’s simple no bullshit ways to get around this so that people don’t have to become entirely political, one of those ways is to make sure that your contributors know that they will be entirely disavowed for hate speech.

                                                                                                                          Freedom of speech isn’t freedom from consequences, nobody has to give you a platform for saying whatever the hell you want. Nobody has to respect you for your opinions, and nobody has to even give you a fair shake after you’ve aired them out. Freedom of speech is about saying what you want to say and nothing more, it’s not about treating people with hateful views the same as people without them.

                                                                                                                          1. 10

                                                                                                                            if you’re going to seek wider acceptance you shouldn’t have political land mines

                                                                                                                            Freedom of speech isn’t freedom from consequences, nobody has to give you a platform for saying whatever the hell you want

                                                                                                                            I find this bullshit, frankly. This isn’t a neo-nazi, or a member of the WBC we’re talking about. Read the twitter thread - that was one remark taken out of context of a discussion about children’s surgery. The only one inappropriately seeking a platform for spouting a political agenda was the person who created that github issue.

                                                                                                                            1. 17

                                                                                                                              He spouted off conspiracy theories that sex education is about the government making 4 year olds touch each other in the classroom and that somehow by learning about LGBTQ attempting to make them gay/trans without their parents permission. followed it up with a comment about how transfolk are basically crazy and deny reality. Then backpedaled when he was getting impaled by the internet and blaming it on Twitter’s 140 char limit. Likewise he was talking to two other opal contributors. Even in his own backpedal on the reality topic he says that it’s because the government is going to convince children through sex ed that includes LGBTQ curricula to bother their parents for gender reassignment surgery.

                                                                                                                              His defender on the Opal project page (meh) has several owned repositories one of which is called “fag”: “Forums Are Gay”. Just because these people don’t have an affiliation with a known movement of prejudiced douchebags that they’re card carrying members of doesn’t mean that what they’re saying isn’t hate speech.

                                                                                                                              These are not people you want to be defending.

                                                                                                                              1. 8

                                                                                                                                These are not people you want to be defending.

                                                                                                                                I entirely disagree with his views, but I find it wildly inappropriate to somehow conflate his views with his work. In no other professional discipline would this line be as blurry as it is in tech. Can you imagine an aerospace engineer refusing to use an engine designed by someone with different moral/religious/political beliefs?

                                                                                                                                The point is not to debate his particular views - the point is that such a debate belongs in politics and not anywhere near a software project which translates one language into another.

                                                                                                                                1. 6

                                                                                                                                  For example, an engine like the Saturn V designed by Wernher von Braun?

                                                                                                                                  Don't say that he's hypocritical,
                                                                                                                                  Say rather that he's apolitical.
                                                                                                                                  
                                                                                                                                  "Once the rockets are up, who cares where they come down?
                                                                                                                                  That's not my department," says Wernher von Braun.
                                                                                                                                  
                                                                                                                                  - Tom Lehrer "Wernher von Braun"
                                                                                                                                  
                                                                                                                                  1. 5

                                                                                                                                    I assume you raised that example because the Lehrer song is criticizing the hypocrisy of the US, for being willing to work with an engineer who will happily build tools of mass murder for the highest bidder. It is certainly relevant in that light. The US did not refuse to use the results of his aerospace engineering, and by everyone’s testimony benefited enormously from them - and was justly criticized for it.

                                                                                                                                    I guess, even though it’s tangential to the thread, I should mention that the song is somewhat unfair to von Braun. The easily-knowable parts are detailed on his Wikipedia page. What I get from it is that he genuinely had a change of sympathies during the war, but that fundamentally he viewed the military conflict as less important than goals of futurism. This is most evident in his efforts after the war - certainly the appropriate time for them - to advocate for a permanent human presence in space.

                                                                                                                                    1. 2

                                                                                                                                      Fritz Haber (https://en.wikipedia.org/wiki/Fritz_Haber) is perhaps an even better example here.

                                                                                                                                      1. 2

                                                                                                                                        Perhaps. From what I understand of his life as described there, he never offered his work to the allies. Certainly a story of personal change, but I don’t see the relevance to the topic of how a person’s work and their other actions affect each other.

                                                                                                                                        That’s a fascinating thing for him to have received a Nobel prize for, considering the reason the prize was established, by the way!

                                                                                                                                2. 7

                                                                                                                                  These are not people you want to be defending.

                                                                                                                                  Regrettably, a lot of times the reasonable, good, kind-hearted people aren’t the ones who need defending.

                                                                                                                                  If only we could choose our battles…

                                                                                                                          1. 15

                                                                                                                            I’ve sometimes wondered if there isn’t something like sensory ring-buffer (i.e. active short term memory) while sleeping. I understand the theory about waking up just before the alarm, but my counter to that is that I’ve had experiences of waking up on hearing loud and unusual bangs – stuff falling or collapsing, late night fireworks, etc. – things that my sleeping brain couldn’t possibly have predicted. In each case, it still always seemed as though I woke up a second or two before hearing them.

                                                                                                                            My theory is that it might be an evolutionary response to help kickstart a swift reaction to potential danger. If you woke up because of a rustling in the bushes nearby, you’re going to want to know immediately why you woke, the nature of what you heard, how close was it, and which direction did the sound come from. If you have to wait to hear it again after you’ve woken it may be too late.

                                                                                                                            1. 3

                                                                                                                              If you find yourself frequently jumping back and forth between directories, have a look at pushd and popd. You can add specific directories to your stack and jump back to them at arbitrary times – not just back to the previous directory! http://www.eriwen.com/bash/pushd-and-popd/

                                                                                                                              1. 5

                                                                                                                                Pushd and popd are incredibly handy. For the OpenBSD ksh users out there, a basic (useful enough for me) implementation:

                                                                                                                                alias d='[ ${#DIRSTACK[@]} -gt 0 ] && for i in `jot ${#DIRSTACK[@]} 1 ${#DIRSTACK[@]} 1`; do echo ${DIRSTACK[$i-1]}; done; echo $PWD'
                                                                                                                                alias popd='[ ${#DIRSTACK[@]} -gt 0 ] && { cd "${DIRSTACK[${#DIRSTACK[@]}-1]}"; unset DIRSTACK[${#DIRSTACK[@]}-1]; }; d'
                                                                                                                                alias pushd='DIRSTACK[${#DIRSTACK[@]}]="$PWD"; cd'
                                                                                                                                

                                                                                                                                (d prints the directory stack)

                                                                                                                                1. 3

                                                                                                                                  For zsh, there’s setopt auto_pushd which I love. Basically it turns every cd into a pushd so that I always have a trail. The small downside is that the stack can get a bit messier, but the upside is that it frees me from having to predict whether I might want to pop back.

                                                                                                                                1. 3

                                                                                                                                  Asserts are intended to guard against programmer errors and should have no side effects; certainly nothing that changes program behavior. Likewise, the optimizer is not supposed to change the externally visible behavior of the program. So long as the externally visible behavior remains unchanged, I don’t see a problem with an optimizer making use of the implications of an assertion.

                                                                                                                                  To the flip that around, if an assertion does not hold it indicates that there’s an error in the program logic. One of the other classic tenets about optimizers is that it’s no sin if an optimizer breaks an already broken program (at least where undefined behavior is concerned).

                                                                                                                                  A third take: compiling out assertions is already a form of optimization, anyway.

                                                                                                                                  So yes, it’s fair game in my opinion. That said, for C or C++ at least, most production compilers have pragmas to give hints to the optimizer, e.g. ivdep. Given the precedent, that seems the better mechanism for this sort of thing. A #pragma assert(...) that promised the optimizer conditions that it might not spot on it’s own could be kind of neat.

                                                                                                                                  1. 3

                                                                                                                                    At work: getting some late breaking features in before our next beta. Nothing too crazy, just lots of polishing before hopefully shipping next month.

                                                                                                                                    At home: I got nerd sniped this past weekend. (I can’t resist a good graphics challenge.) Now that that’s done, I’ll be getting back to learning Qt and working on my little map tile art editor for games.