My first interaction with Grendel came from this post: He intentionally changed "transgender" in the title of his post to "transsexual", and his intention was to troll. He pretends to be unbiased, but he introduces a strong anti-feminist, anti-trans, pro-chauvinism tone to everything he posts. Really, I should say "anti-SJW", because that's what he thinks of it. He knows what he's doing. He's trying to infect the hubski zeitgeist with misogyny and transphobia.
Step 2. Post a bunch of subtly anti-SJW stuff, like the example I gave where he substituted an offensive word (transsexual) for a non-offensive one (transgender). Step 3. All the nerds who like the science stuff will be more inclined to trust his opinions on the anti-SJW stuff. Step 4. Reddit.
This is exactly what happened to Reddit. This is the foot-in-the-door technique of all abusers and trolls. Over time, he will escalate the tone of his posts as he gains more support in the community, all while playing the victim. I have seen this happen to more communities than I can count, and I saw it kill Reddit. Read over Grendel's comments. Ask yourself: Is this the example of permissible behavior that you want new hubski users to see and think is normal? Is this something you're willing to let snowball out of the control? Risk of allowing Grendel in our community: Eternal September, breakdown of civility, Reddit-ificiation. Benefit of allowing Grendel in our community: Some good science posts that others would be posting anyway. The rational decision is excommunication.
Step 1. Post a bunch of cool science stuff to get nerds to like you.
IMO the best out-of-the-box linux setup is Ubuntu with Gnome 3. It has the GUI config tools you're looking for (or at least, it has more than other distros I've tried). As for (2), it works like this: Configuration in linux is done primarily through human-readable text files. The same goes for how processes communicate with each other. One program will spit out a bunch of text, the next program will eat that text and spit out more text, etc. A human centipede of small programs is the unix way. And yes, if you really want to be a power user, you will probably need to learn regular expressions, which are a mini-programming language used for manipulating text. That is what the `sed` command is doing in your example. It's like find-and-replace on steroids. Once you understand what each part means, it won't look so scary. But you don't need to do that. The command is just an automated way of going through a big config file by hand and manually changing a whole bunch of entries. First, know that `sed` means "stream editor". Here's your regex:
Let's break it down into parts. First, the top-level structure of a sed command: The s means we're going to do a substitution. The foo is what we're searching for, and the bar is what we'll replace matches with. The baz on the end are options that affect other stuff, like case insensitivity or whether or not to do more than one substitution per line. In your command, the foo part is Let's break it down. This first carat will match the beginning of a line. Same as before, but now we're matching anything but a V. The . means "any character", and then id= is just taken literally. This is the interesting part of the pattern. The \( and \) introduce a "capture group". Any substring matched in a capture group will be available in our replace pattern. This is very powerful for doing complex search-and-replace stuff. Inside the capture group we have another character class. This time it's 0-9, which means any character from 0 up to 9. So basically just the digits 0123456789. And then another arbitrary character. Before we move on to the third section of the sed command, let's think about what our search pattern will match. I suspect that the author of your regex made a mistake, and wanted actual periods like in the third example. Let's look at the last two sections. The replacement pattern is just \1. \1 refers to the capture group we talked about earlier, so this \1 means "take that number you found before, and replace the whole match with just that number". This is some option that has to do with printing the inputs or something, but I don't remember off the top of my head because I don't use it that much. So, in total, the command means "Find stuff that looks like ' V.id=(some number).' and replace it with just that number." This sed command is consuming input from `xinput list`, so it's probably intended to grab the numeric ids of a bunch of devices from the plaintext output of `xinput list`. Also I just realized that hubski's formatting probably obliterated some of the regex you posted. The markup tips mention a "verbatim" option. Here's the output of `xinput list` on my machine:s/^[^ ][^V].id=\([0-9]\)./\1/p
s/foo/bar/baz
^[^ ][^V].id=\([0-9]\).
^
[^ ]
Brackets mean a character class. For example, [abc] would match one occurrence of any of those letters. If my regex was [abc]d, then it would match the strings "ad", "bd", "cd". But if the list of characters starts with ^, then the class is inverted. So [^ ] means "match one character which is anything but a space.".[^V]
.id=
\([0-9]\)
.
Vaid=31
Vbid=1p
V.id=3.
/\1/p
p
So yeah. We can see that there's a bunch of Virtual stuff with that uppercase V, and then later in the line, there's id=(some single digit). ⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ xquartz virtual pointer id=6 [slave pointer (2)]
⎜ ↳ pen id=8 [slave pointer (2)]
⎜ ↳ cursor id=9 [slave pointer (2)]
⎜ ↳ eraser id=10 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ xquartz virtual keyboard id=7 [slave keyboard (3)]
I don't think it's necessary to tell people when you've blocked them. All it does is get one little jab in, and it's to tell them you're not going to listen to their response. This normalizes the "shots fired" that signal beginning of flame wars, and it's a slippery slope from that to the degeneration of thoughtful discourse site-wide. But for the record, I already had him filtered, too. :P
You're not guilty by association, and I want to make a special point about this. I feel an ethical imperative to block people who associate with the True Guilty, such as Grendel. Without doing this, the problem of Grendel's creeping corruption of the hubski community will not be solved. He will have a second-order influence on the hubski zeitgeist through people like you who continue to interact with him. This is why I regretfully embrace the concept of collateral damage. I share things that spawn decent discussions. Grendel does not do that. He is intentionally trolling the community. You are right that he takes an opposite view. He does this on purpose. I know his type. There can be no leeway for people like him, especially during such a critical moment in a community's history, with so many new users joining the site. New users will see the things Grendel says, and even though they will see that he's 80% against the hubski zeitgeist, they'll think his behavior is maybe 15% permissible. So they'll maybe act in a 5%, or even only 2% way similar to him. But this error compounds and gets bigger and bigger as more users flood in. This is how Eternal September ruins communities. This is why reddit turned into a stupid parody of itself. Grendel's behavior is 100% unacceptable. I don't want to have anything to do with him. I want my social graph to keep him 7 nodes away from me, not 2. If I don't block people who follow Grendel, then Grendel is right there, lurking right outside my vision, influencing my filter bubble through you and others like you. I don't want Grendel to have any influence on my filter bubble at all. I don't want him to be a part of the community that I'm a part of. Hubski lets me tailor my community, and I am the sort of person who is willing to cut away some of the good flesh of the fruit to get rid of 100% of the rot. I am morally opposed to blocking you, but I feel it is ethically necessary unless you stop following Grendel.