Being Ridiculed for My Open Source Project (2013)
harthur.wordpress.com
harthur.wordpress.com
That brought forward a repressed/unref'd memory...
Way back in the late 00's, a teenage me was dipping his toes into contributing to open source projects. I don't recall the specific project and won't try to guess, but I can vividly recall this horrible response I got after posting some code for review.
Some presumably older person on the mailing list discovered I was, in fact, a teenager. Went on a tirade about how "children" need to stay out of programming - on the project's mailing list. Nothing about the code, just an attack on me because of my age.
I remember asking my parents what they thought. They told me I could be interested in whatever I damn well please to be, and that if I could avoid internalizing the response, reach out to this person and see whatever they had to say. Needless to say, this person didn't have anything friendly or actionable to say in a direct email either.
I think that's the first time I ever bumped into an asshat online.
Oh well, joke's on him. I only became more interested in computing and started a career in it.
My parents mostly encouraged me mostly by providing the tools and leaving me to it; I spent some of my early years (pre-teen) reverse engineering/cracking (education only, never released), then an inordinate amount of time playing the Discworld MUD.
Once I got bored of BASIC my dad bought me some books on C++ and took me to a college course on PC building with him; though initially the college were reluctant to let a child take the course (I was 12). He'd often take me to work and answer all of my questions about what he was doing; PLC/panel-building at the time, with some very cool fibre optic tech and DIN rail mounted devices of all kinds; I'd help make wiring looms and labelling.
He and I would build a new ("family") PC every year until I got my first job after uni and could pay for my own damn computer;
He just uses laptops now and hasn't built or used a desktop since the last one we built together with my first pay-packet over a decade ago.
I remember when dad first gave me the ability to use the internet by myself (2001, iirc). He told me how it was an unprecedented way of accessing information and learning, something he felt would have put him years ahead of where he was if he had it when he was in college. I discovered so many niche communities for the things I was interested in (LEGO Mindstorms, AVR, Rokenbok, model trains, etc.). I kinda yearn for the days when the internet wasn't the advertisement ridden and siloed hellscape it is today.
I work from home now, and have done since Covid; so I've spent (almost) every day of my children's lives at home with them. I'm currently trying to work out how best to set up the older child (3yo) with a computer to learn on; Something like a child-friendly / fun version of Monkeytype [0] to get her reading/spelling/typing as she's always shown an interest in what I'm doing on the computer.
I have a bunch of Pis and mechanical keyboards so I'm thinking I'll let her choose some sort of enclosure we can "print" (3D printing is just "printing" to her, because how could it have fewer than 3 dimensions?) and set her up nearby.
The internet really isn't what it was when I was a child (not too far from yourself), but I guess that's the price for it going mainstream.
One of my earliest and fondest memories is my father taking apart and fixing the family PC at the kitchen table while on the phone with Zeos support. Seeing your parents genuinely interested and doing these activities is priceless.
I've learned a tremendous amount on the internet and I'm still learning. There's never been a better time to get information, but some of it is getting harder to find.
0: https://www.instructables.com/Otto-Build-You-Own-Robot-in-Tw...
Well, half a great response
No way I would tell my kids to take up with some a-hole online that is more interested in trolling than anything else
That was my first instinct as well. But thinking about it, the second interaction seems to have solidified to him that the person didn't have any actual argument against his participation, that it was just an asshat being unpleasant.
Plus, that assessment turned out right.
I met some incredible characters in my time playing that have had as much effect on my life as any IRL person I've met. I would love to be able to get back into it again but I don't think the experience will be the same any more, decades later.
It's odd how some of us forget that once we become competent -- once upon a time, we weren't. We needed a helping hand, a tip, some advice on a problem, and we went to people and asked for help and got it.
I never ever fault anyone for being a newbie; I only fault them if they don't try. If anyone tries to do something, they should be commended for the attempt. A lot of people never bother to try anything at all!
I was honestly surprised that the teachers were surprised I loved answering the students' questions. Like, why else am I here? Maybe they can identify with me more because I'm only 12-15 years into their future rather than mid to late career like their parents.
I kinda did my 20-ish minute ramble on what studying CS looks like, what learning programming practice looks like, and getting into the tech industry after school. I tried to leave a bunch of places for them to probe and I was so happy that they did. Couldn't even get close to answering all their questions in the remaining 35 minutes.
Obviously this guys response is not nice, but I CAN understand wanting to restrict the quality of contributors I get. Trying out things is great, but do it on your time, not mine. Luckily, in real life for most projects, the number of contributors is so small that quality moderation is not a problem.
I definitely don't like replacing proper technical design and documentation by social channels. Recently I tried to use a promising framework with very little documentation of its concepts, and their answer was to seek help in their Discord channels. I quickly ran into weird problems and bugs with the framework; I wasn't surprised.
Before I could drive, my father would taxi me to computer user group meetings and such.
I've always talked too much, asked stupid questions. One time, a guy dismissed my question about tablet input devices, something like "You're too young to know about that kind of thing."
It was one of the few times I've seen my father get genuinely pissed off.
Of course once the student STUDIES.
Not because dumb questions don't exist — I've asked plenty of dumb questions (are my closed physics stack exchange questions visible anywhere?) — but because they're a necessary step to getting good.
(Fidonet was an early federated message board system)
(TinyCC was not Fabrice's project of the same name but an earlier freeware compiler that only supported the "tiny" memory model, and was therefore limited to 64kb code and 64kb data.)
My parents didn't really care for my interest in computers, thinking that I was wasting time and sacrificing school on 'games'. Although they at least humored me on getting books on more modern languages like C# so I managed to improve. For a bit I even held an immature grudge on the guy who got mad at me which motivated me to get better. Nowadays it's all just a funny memory though.
A lot of online communities have pretty inclusive rulesets also, even posting on some reddit forums you will quickly get treated like a pariah for violating some obscure syntax rule.
Speaking only for myself, they may be absolutely correct, in their criticism (I know I’m a stuffy old coot, and use “quaint” techniques, like OOP), but I’d suggest that it’s a really bad idea to participate in these fora.
This article is Exhibit A. Three people have just been called out, on the front page of HackerNews, for snarky comments they made, almost a decade ago. I can’t imagine that it’s helpful for their careers. No one wants to work with a bully. I think the author has long since moved on, as I see her GH repos have been basically abandoned, long ago, and I wish her well.
That’s a big reason that I’m a stuffy old coot. Social media can last forever, so I make a point of not engaging in online pissing matches, and being as positive and encouraging as possible, even if it garners me scorn.
"The only things that will be remembered about my enemies after they're dead is the nasty things I've said about them."
-Camille Paglia
[UPDATE] I was interested in what she has had to say, and found this: https://heathermoor.medium.com/what-happens-when-you-retire-...
It appears that she's doing fine, but not really participating so much in open source.
It looks like her detractors are probably also OK.
Don't you just love happy endings?
It is not clear to me why your concerns for the three people who were called out here should not also apply, and with more justification, to the person they ridiculed in the first place.
If calling them out gave encouragement to other people who have been discouraged by similar responses, it did some objective good. I prefer happy endings across the board.
Yes and no. Her posting probably multiplied the damage these folks did to themselves, but it probably didn’t really damage her, that much. Maybe, the opposite. I don't know if the bullying she suffered was the reason that she doesn't do open source any more. It doesn't seem to have stopped her.
Online venues (in that case, Twitter) seem to have exacerbated the propensity for human cruelty, by abstracting the consequences (but, as this thread shows, that “abstraction” is really kind of an illusion).
Most participants on HN probably fit the “geek” archetype, in one form or another, and I’ll bet most of us have been the target of relentless bullying.
It’s kind of heartbreaking, to see us then turn around, and repeat that behavior onto others.
I know, that for myself, I can be a fairly hard taskmaster. I have definite opinions on many matters. I know that some of my opinions are minority opinions.
I’ve learned to keep my opinions focused on myself, or on folks that I work with directly. Even doing that, can draw attacks. It’s up to me, how I respond to these attacks. It’s quite possible for me to make things worse. I have learned some humbling lessons.
Kindness and encouragement are not “virtue signaling.” They are also not displays of naïveté or weakness. Many of the folks that participate here, become successful, by leveraging the weakness of others, to their own advantages. That’s not always a bad thing, but it is very much a “live by the sword, die by the sword” thing.
I choose not to live in a world of conflict, rancor, misanthropy, and anger. I know that means I probably won’t be a captain of industry, but that’s never been a goal, and that’s all right.
I have, however, been bullied to a degree that many people here might find shocking. It has a lot to do with the environments in which I was raised.
In my case, instead of making me a bully, it has helped me to become a lot more compassionate.
But that was not a straightforward path. I was, temporarily, a bully (a particularly nasty one). I’m really glad that I was able to grow past it, before doing myself permanent harm.
I understand that sometimes people who are bullied become bullies themselves, but that often manifests itself in them bullying third parties who never caused any trouble in the first place. This is clearly not the case here.
Two of the more effective responses to bullying are to bring it out into the light and to encourage its victims to stand up for themselves (an act which is a great booster of self-confidence - more effective than becoming a bully oneself, as in that case, the original problem remains unresolved.)
Nothing in this position should be construed as dismissing kindness and encouragement as virtue signaling.
Linus T. is probably a 0.0001% programmer. One of the very best in the entire world. I mean, he wrote the core of Git, in what? a week?
But he is even more well-known for ... other ... attributes.
The thing is, he does best, when he constrains his invective for people contributing to the Linux kernel; one of the most important and critical pieces of software on Earth.
I can totally understand his position (although I would not do things the same way). I'm not sure that it makes me interested in becoming a Linux contributor (as if I'd be qualified, anyway). As far as I know, he has not gone onto other OS projects, and insulted their authors and maintainers.
But frankly, I'm glad that someone of his skill, that takes Quality as seriously as does he, is on the job at Linux. I am actually worried about what will happen, if he's no longer around. I hope that he has instilled as much fervor in the next generation.
Disclaimer: I worked at one of the most rigorous optical device manufacturers in the world, for most of my career. I ran into folks like that, on a regular basis. I often wanted to strangle them, but it was also an honor to work with them.
These kinds of things shouldn't have the ability to wreck someone's career or cause them grief in other ways.
Has the project been significantly rewritten and cleaned up following these posts? Was there some absurd hype cycle for this thing that didn't deliver? Did the Internet get mad at this person for some unrelated reason? What happened here?
The only difference between me and the author of this blog post is that I didn't upload my program to the internet where people could ridicule it for its simplicity.
Or is there some JavaScript additional functionality that I'm missing?
I don't care if they're not 100% feature complete, the fact I can remember how to use them for my simple everday tasks (searching, finding/replacing across many files) without needing to consult a manpage or search online for answers is enough.
I used grep daily for years and _still_ it didn't feel like it made sense. I remember reading about Ack (https://beyondgrep.com/) some time in 2009-2010 , installing it and switching over entirely within about five minutes.
Modern sed:
Modern grep:
The problem with Twitter is that it gives an equal platform to everyone's opinions even if it is without merit or reasonable discourse.
Isn't that the problem with communication in general? Wouldn't, say, HN have the same issue?
https://github.com/harthur/replace/tree/431b1e183a4bd43046af...
but it doesn't matter as those tweets are trash, specially coming from other OSS devs
I think the main context is simply that people suck sometimes. I'm not a huge fan of writing scripts or command line tools with node, but I've done it before, even in projects where js wasn't the primary language. It's a useful tool. Yes, the functionality overlaps with sed and grep, but speaking for myself I can never remember how to do anything more complex than the basic `grep text_goes_here`. If I found myself needing to do a lot of command line find and replace operations I certainly might make a little tool like this.
I think there’s still some hate towards JS now, and in 2013 it definitely was much more rampant.
Also funny to think that this project probably received so much hate because of being ahead of its time.
And if people were trying to fight that trend (which to be fair is a bad trend; I refuse to run software from the NPM ecosystem to this day), this is a weird example to pick because the point of the tool is to use JavaScript's regular expression syntax.
anyone remember babel, webpack, browserify, gulp, grunt?
Here's a program I wrote to count matches in a very large file. I wonder how long it would take to work out the equivalent bash command.
use aho_corasick::AhoCorasick;
use std::fs::File;
use std::io::BufReader;
fn main() {
let args = std::env::args().collect::<Vec<_>>();
if args.len() != 3 {
eprintln!("Usage: ./count_occurances 'pattern' <filename>");
return;
}
let f = File::open(&args[2]).expect("Error opening input file");
let reader = BufReader::new(f);
let patterns = &[&args[1]];
let ac = AhoCorasick::new(patterns);
let count = ac.stream_find_iter(reader).count();
println!("{}", count);
} grep -o $pattern $filename | wc -l
But yours has better error handling! $ echo aaaaaa | grep -c a
1Half a second, unless I'm missing something?
No objections at all to people building simpler UIs for common tasks. The classic Unix tools are like table saws without labels or safety features - confusing and rightfully intimidating. You have to read the manual carefully to avoid chopping off digits.
... but they're also like table saws in that once you know them well and are comfortable with the usage patterns that protect you from the dangerous parts, they let you achieve things with a minimum of fuss and ceremony.
Yes.
$ echo aaaaaa | grep -c a
1It's odd that people are okay with a childish and unprofessional critique of code, but not a fairly civil and well thought-out critique of the "code review."
Someone writing a quick little thing because they didn't want to use sed is absolutely great! The entire idea about computers is that they're meant to be programmed.. That also means lots of overlap in functionality and it means some programs are more specific than others.. and more polished than others.. And that's just how it should be (imo).
> Would the bad code quality justify the snarkiness on Twitter?
I think it should, because the other extreme is that any criticism is banned, no matter how polite, and everyone gets to be a special genius snowflake who can do no wrong, and our software will degrade at an even faster rate because of it.
I think think there should be more public ridicule of slow and inefficient code, especially when it comes to things like drivers, operating systems, browsers and web frameworks which play a large role in our everyday lives..
Imagine how much electricity we'd save if we were a bit more scared of the long-beards showing our dirty underwear to the world in a torrent of spite and sarcasm.
I don't like the way we're policing conversation, the bar for what's deemed acceptable is constantly raised, and while I agree with the general sentiment of "not being an asshole" I disagree with the growing tendency of virtue-signaling through condemnation and indignation in every sentence that I feel I'm being increasingly exposed to..
So, if I have to chose between grown men writing apology blog-posts for a random unthoughtful remark in a tweet, or the space where unthoughtful remarks in tweets are simply ignored.. I'll chose the latter.
The brevity of Twitter means a lot of the context is missed, even now there's some debate and confusion about what they actually meant by these comments.
Why has Twitter been pushed by the Public to moderate and ban people? Because there are enough folks out there willing to make those kinds of comments on their platform that it starts to look like an existential risk to the company.
As to ridicule, it rarely if ever causes someone to improve. You'll be much more effective at getting better more efficient code if you instead play the role of mentor or helpful hand.
Maybe people just had way higher standards in 2013, and code that seems fine now would have been farcically terrible back then. I kind of doubt it, though!
Being a little bit of an asshole sometimes is human. If these interactions were ocurring in real life, maybe Harthur would've said, "Hey, you're being an asshole" to Klabnick et al., they would've apologized, everyone could've hugged it out and had a beer, and that would've been the end of it.
Instead, a decade later suddenly random people on the internet are putting the behavior on trial.
Pretty brutal!
But the things I said are still there, and I was dumb enough to use my real name, so they are stuck there forever, under my name.
This was maybe 15 years ago
I wonder how many rejections I got for jobs based on what HR found when they googled me
Is it wrong of me to not see this as a problem? A group of grown men decided to use their large platforms to mock someone, and now - gasp - other people are seeing that they were assholes.
Seriously, what's the problem?
It seems unfair, or unhealthy, even, that those go down on your permanent record.
Even if you don't slip up in that way, the constantly looming fear that you COULD is also unpleasant.
Basically I think it's healthier for all of us if we have the ability to move on from minor transgressions, and don't have to live in fear of making a thoughtless remark or a bad joke and being tarred forever as a jerk.
Or to put it another way, I don't think Steve Klabnik is any more of a jerk than the rest of us, he just happens to have caught the attention of the eye of Sauron for a moment.
The rest of us, seeing that, will perhaps be motivated to be EXTRA careful and kind at all times, but this is basically living life under a sort of panopticon, rather than in a geniune, moment to moment way.
I had muted Klabnick on twitter some time ago because I thought he was being an asshole, and seeing something like this helps contextualize his behavior.
also, FTA, it appears they did ask for an apology, which they apparently didn't get. Another thing interactions on the internet make very hard, is that owning your transgressions when you're wrong has very little utility as the other person is easy to objectify.
I do want to point out that if you complain about someone in a medium, it's reasonable to expect the apology or explanation there. If someone is a jerk in front of other people to you, they should clarify their behavior in front of everyone, not just a direct, personal apology.
This is kind of my point - I'm not a neurologist or social scientist, but, in my opinion, we humans don't seem well equipped to deal with the group sizes the internet makes available. I think it's totally valid to point out that the problem here isn't really the individual behavior per-se, it's the behavior in the context of 10k others. In the blink of an eye, we've made it possible for virtually everyone to reach an enormous amount of people, so easily, and with so little oversight, that it falls on those people to take responsibility for engaging with the platform in the first place.
There's a pressure today to be the perfect human being from day 1 that I don't think have existed in the same way ever before throughout history.
I sure as fuck made my share of missteps. There needs to be some sort of socially enforced cut off for 'kids being kids', but it starts with everyone not putting everything online.
It's terrifying being effectively whipped in the town square and called a fraud in front of not only some hot shot's 50k followers but also your academic and professional colleagues. I was panicking because I knew I had done good work and I didn't want someone ruining either my work or the reputation I had just started building. I ended up talking with some friends, my advisor, and some mentors and ended up calming down. I ended up just muting him on twitter and walking away from the entire thing, though I have heard he still brings it up to this day any time anyone mentions this project within earshot of him.
From what I hear, it's unfortunately not uncommon for publications to go this way when performance-crowns are up for grab. I've mostly slipped off the public publishing route since I found it's not something I love, but you know some people really are assholes and, well, so it goes...
My main take away from the experiences (plural!) is that the most practical definition of “academic ethics” turns out to be “Never criticize the work of someone who is more famous than you.”
It didn't get a lot of traffic, but it was fun to see people talking about something I cared a lot about.
One day I got an alert from /r/javascript, which was surprising to me, and I clicked through.
The topic was "If you were going to design the worst javascript library imaginable, what would you include?"
The top answer was:
"I would just clone intercooler.js"
:)
To be fair, this tweet was close to a decade ago, and Steve Klabnik posted an apology at the time.
People do make mistakes from time to time, and Twitter is prone to post unfiltered brainfarts.
Its really hard to make a complex argument in 140 characters (as it was back in 2013), even if he wanted to. The short format really invites these "just a few word" opinion pieces. I think its easy to see how this, given the right ingredients, can trigger a misunderstanding or at least an incomplete understanding.
Text lacks a lot of context humans usually communicate via voice and facial expressions. Lowering the information even more by restricting the amount of text can make it hard to convey the intent.
I am not saying "his tweet was fine, just misunderstood" here btw. I do not know his indent when writing this tweet. And I think its on the author to make sure their message can reasonably be understood as intended.
But I also see how something like this can happen without malintent on the authors side.
And to be fair, "its twitters fault" is also not what Klabnik claims (as far as I can gather from his blog post).
I can easily see how it can turn normal people into dumb assholes, especially since there's the dopamine rewards of having tons of likes, retweets and comments, incentive to be extreme, by being extremely positive or extremely negative.
Then don't use Twitter to do it. Use something else, or just don't bother.
`sudo` just had an array-out-of-bounds CVE https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-4399...
So? Sudo is so notorious for being a mess that the BSD people made their own - doas.
Rewriting sudo is "for no reason" when doas already exists. You're effectively rewriting doas.
Some people need the complex features, and it's fine, and maybe they're fine with the risk of a difficult to audit codebase and risk of catastrophic failure, and we don't need any new alternative, so they can continue to use sudo as it is.
"The core of the problem was really that some people like to use sudo to build elaborate sysadmin infrastructures with highly refined sets of permissions and checks and balances" -- tedu https://flak.tedunangst.com/post/doas
So a rewrite of sudo is Rust could add value by allowing it to add complex features, and keeping memory safety, even if code auditing would stay complex, and small logic errors can have catastrophic outcomes.
Snark OTOH, especially at an individual who is only representing themself, is just mean. Of course it happens here too, but it's rare. Reddit and Twitter are completely plagued by it – it usually gets the most engagement, whereas here it's rare and gets a chilly response.
Finally, there's one more differentiator. Twitter is people-oriented, you have a profile, usually your real name, and public follower count. Twitter is designed to be a popularity contest. Both hacker news and reddit are content-oriented. Sure, there's a username, but most people don't give a shit about who you are.
(And yes, like another comment said, HN voting is also shit when it comes to certain topics like big tech. Fortunately the crappiest takes upvoted by mobs tend to be modded down by saner humans.)
Recently I had a conversation with a friend that it is always really considerate and nuanced in every conversation (and other social network), except, Twitter where it becomes kinda vicious, or it managed always express an opinion in the most polarizing way possible. I didn't seem to realized it until I show some of the tweet it posted.
I can name a number of really bad pieces of software that are widely used because nobody has time/funds to do it properly. Lots of those programs are made by pre-doc students that are learning the basics, and as soon as they get competent at coding, they are absorbed by the private sector.
All the code since then was paid for, handsomely, and almost nobody complained about it.
I think this toxicity as you called is really harming OS.
it's the js variant of the perl 'replace' script floating around and packaged. just with javascript regexp syntax. so I would find it useful for js folks.
It would be incorrect now since you know she is a she.
Defaulting to he isn't bias, it's language feature of English since people didn't like using "it" to describe people, so "he" is a default singular pronoun.
This is not really true—certainly not anymore, at least—and from my vantage point has not ever been true at any point in my lifetime. Some style guides did continue to prescribe "he" in this way up until recently (maybe some still do), but that has never matched the way that any human that I've interacted with actually spoke. And I really do mean any—even the most crotchety/unenlightened/uneducated ones. If you had used "he" this way (outside of formal contexts, where it may have still been prescribed), then people would have looked at you like you're a fuckin' weirdo. Because it would have been weird. Because nobody said "he" unless they were talking about a specific (albeit possibly hypothetical/imaginary) person with the attributes that actually call for the use of "he", rather than "they/them".
.... Did "they" get removed from the dictionary or something?
Best you can do is to either completely ignore them, or tell them to grow the f##k up and behave like adults.
A very well-respected developer recently told me to "take down your blog entry and this repo before you generate more embarrassment for yourself", because I didn't do a comprehensive literature review (and cite their code) before writing a blog post.
(They later went back and edited their comments to turn down the vitriol, but guess which version I read immediately upon waking up?)
I've been around the industry for a while and have relatively thick skin, but even so, dealing with that ruined my day.
If I was new to the industry, I can't imagine how I would have reacted – but it certainly wouldn't have been positive; I could easily imagine burning out of open-source entirely given that reception.
There's a flip side to this. People will be mean to us in life; we can't avoid it. But we can consider where they are coming from, and what is causing them to act mean.
What are they really communicating? Maybe they don't know how to cope with conflicting feelings, and are lashing out in order to normalize their thoughts. Maybe they have not yet considered the consequence of their words, or the people receiving them. Maybe they themselves have a combination of ego and the need to feel correct and use a public forum to perform this act to puff themselves up. And maybe they're just stupid and arrogant.
I spent some time with a toddler recently and her parents. Toddlers are mean!!! She told her mommy to go away, to stop talking, that she didn't like her. How cruel! But the kid didn't know what the impact of her words were. Later she was cuddling and loving on her mother, oblivious to what she had said. It's really hard for people to have a perspective outside their own, and to let that perspective lead actions, rather than acting without thinking.
So when someone is mean to you, and you don't know why, try not to take it personal. Instead, have pity on this poor soul, who is probably hurting inside, and doesn't understand that lashing out isn't an acceptable way to behave.
One of the main points I took from it (paraphrased) was, “If you are in the right frame of mind, your worst enemy cannot hurt you. If you are in the wrong frame of mind, your best friend visiting can be a horrible chore.”
To me this was empowering. While I cannot control other’s actions, I can choose how I react to other’s actions.
Was it that it was pushed as something revolutionary? I didn't see any of that either. I have probably written a half dozen utilities just like this. But never published one. They are one-off tools that end up being two-off then more.
The "Why not use grep" is a bit strange. Grep doeesn't do search/replace does it? And not all OSes have grep out of the box (On windows, I usually end up getting ripgrep, but I sure don't get a ripsed to go with it). Having a search/replace command line tool with a good regex syntax (good as in not Perl) would be fantastic. Even better if it would be a self contained executable and not requiring node - but I can see that a node tool would be useful for someone who often has node available on their machine.
Was the ridicule chiefly based on that it was made in Node.js? It's my best guess, but wth?
If anything deserves ridicule, it's this (which are the two most upvoted answers from stackoverflow on how to replace using grep). Does anyone look at this and say "well, this looks fine, can't see how that could be any less obscure"
find /path/to/files -type f -exec sed -i 's/oldstring/new string/g' {} \;
grep -rl matchstring somedir/ | xargs sed -i 's/string1/string2/g'Unfortunately the current maintainer of the active fork decided to remove the `-R` option because they think piping find(1) output into it is better.
There's some discussion at https://github.com/rrthomas/rpl/issues/9 .
It's packaged for Debian, Arch and openSUSE: https://repology.org/project/rrep/packages
You may recall the advice about waiting til next morning to hit send on that scathing email reply. You might not feel so dramatic after a cooldown period.
My working theory on why Twitter is so noxious is that it captures (then broadcasts) people's impulsiveness reaction.
I keep thinking of Marshal McLuhan's The Medium is the Message. What would he say about Twitter?
I've never grokked McLuhan's distinction between "hot" and "cold" mediums. (Makes sense; being one of the first to discuss this stuff, he had to invent a vocabulary.)
My current guess involves feedback loops and channel bandwidth. "Hot" is reactive, "cold" is deliberative. But it's not just the immediacy of the medium, it's also the interactions (feedback loops).
Face to face, there is very high bandwidth (included by not limited to backchannel, body language, facial expressions, context, etc) along with rapid feedback. So we have the information needed to keep communication from going off the rails.
Alas, Twitter's very constrained bandwidth, while maintaining the rapid feedback loop, doesn't permit any sort collaborative moderating effort.
In other words, Twitter is custom built for kneejerk clapbacks.
For contrast, I keep thinking of John Carmack's journaling via a .plan file (and the finger protocol). Twas a precursor to blogging and RSS feeds. Why didn't that medium incite virality, outrage, and pogroms? .plan files are also low band width, right? I think it's because the feedback loops simply didn't exist.
If you were just with one other programming friend, you might make reference to a repo you'd seen and say something like "yeah that approach is totally batshit", but you wouldn't say the same thing to the author in a public forum in front of many people. I think Twitter tricks our minds into behaving like the former but actually in the latter. So it's easy to forget that you may as well be directly insulting the author.
His analogy, IIRC: teens treat social media as hanging out at the food court with friends, not as public speech. To them, adults eavesdropping are the creeps, not the kids just being kids. Like, why would adults even be listening? It's just gross.
Corollary: privately, most people really are assholes (and they just suppress it when they don't feel bold/secure enough to be open about it)?
A good simple example is the way people tend to tidy their house before having guests. The cleanliness isn't "false" by most people's view.
Edit: Another perspective is that people use the company of trusted friends as a staging area for shaping their own nuanced positions. It's safer.
There's a few reasons:
They are affected by physical proximity, eye contact, body language,
tone of voice, even smell.
They lack the courage to be hostile to strangers who may possibly
retaliate with physical force.
Deeply entrenched socialisation and group norms operate mostly
on the inter-personal, face-to-face level.
These controls are so strong that people are quite unable to
dehumanise others when face to face. See Andrew Kimbrall's 2000
Schumacher lecture [1] (in particular the story of the pilot shot down
in Vietnam).Mass communications technology really requires we relearn our entire stack of socialisation skills using different signals and different brain faculties. Nobody is taught that. Nobody today has time for that.
Not really, no. Coz the type of people on Twitter, and the type of people to actually tweet (and not just lurk) aren't exactly the sanest of humanity.
These are interesting, even very important questions imho.
When asp.net came up, I wrote an ecommerce in vb.net; I read the specs and wrote the code with notepad. The system worked well for my customer and he was pretty happy. But when other programmers tried to pick up my code using their ide, it wasn't possible. So they unleased a flow of toxic waste in my mail. Now I only program for fun. I was young at the time, and was living in a new environment without friends or support. If I had a stronger spine that day, surely I would have continued.
Anyway, sorry that happened. :(
It's a bit like me and Elon having an online fight - no matter the "truth" of the matter, he has unfair advantage.
No he did not inherit that advantage. But it is still there. And I suspect one of the underlying "social media"issues is that "power" online (maybe just reach) is waaaay more unequal than IRL. Partly due to early years, partly because reach does not fully map to money, but even so people think "that's what government is for ... where is it?"
And Facebook does not want to govern.
The author of the blog is a woman. I didn't realize this at first, but as I was reading the article, something really odd was said:
> I start sobbing.
At first I almost could not believe what I was reading. I understand feeling discouraged and even somewhat down for being made fun of by some anonymous dude online. But to start sobbing? I thought this was a very weird / alien reaction. Then I thought, oh wait, is she a woman? So I scrolled up to the top of the page and indeed, the blog name indicates the author is a woman.
As far as I can tell, it's actually a woman privilige to appeal to people based on your sadness. If you're a woman and something made you sad, you are guaranteed to get sympathy and support from many people.
If something made a man cry, he would in all liklihood be ridiculed even further. At least, this is the experience of the vast majority of men. That's why, for example, "MRA" activism is not effective at all: it's a bunch of men trying to appeal to people based on their emotions. It doesn't seem to work for men.
At first I thought the sobbing line was hyperbole, then I thought "why would someone admit that?" then I saw the author had a feminine first name and thought "why is it OK for a woman to admit to crying about this?" then I thought "why would a man not admit to crying about this?" then I remembered that I'm emotionally stunted and society still thinks it is acceptable to demonise men who have emotions.
> society still thinks it is acceptable to demonise men who have emotions.
"Still". As if that will change someday. It will not.
Women are inherently valuable because they can bare children. Men have no inherent value so they must prove their value. A man sobbing over mean comments is signalling that he is of low value.
This is one of those stories that would 100% have a different ending if the author was a man.
My gut reaction to "I started sobbing" was "man, that's rough, I feel bad for them". No further assumption about their gender.
Seems to me that you're projecting your thoughts on gender on her.
I don't think it's pathetic. I think it's a truth that is considered impolite to discuss.
I'm not even complaining about it. I'm just noting it.
What an incredibly strange premise for an argument.
That's why any halfway decent person online will stick to criticizing ideas, concepts, particular constructions, etc. and make it clear they're suggesting how to improve the project rather than just launching a personal attack on an individual.
There are cases where a particular pattern of behavior by an individual over time can be legitimately criticized or held up as an example of how not to behave, but that's something of an extraordinary situation, most people are pretty decent to others.
Then again, maybe I'm not one to talk, I'm much more often on the sending than the receiving end, though hopefully not as much lately.
It is a real shame, because the language itself is pretty cool.
This is why I take all that being paragons of empathy (or whatever it is they mean by this word), inclusivity, etc with a grain of salt the size of a small boulder.
Why I think I shouldn't be too generous towards the person and the community he's been representing: they haven't let go of pile-ons and bashing, they just now are directing it at a different target. It seems socially acceptable to bash anything written in C and therefore "unsafe", without taking into account how nuanced this whole thing is. It's "impersonal" (hint: it's not), so it must be okay, right? Right?
Issues at Rust got to the point that about a year ago the moderation committee resigned. [0]
Anecdotes suggest was over quite serious irreconcilable issues[2]
The rumour mill went wild and I've no idea if we ever got clarity.
It's a rabbithole with spiralling conspiracy theories. A core member seemed to delete their Twitter too. [1]
Very concerningly the original resignation letter said to be sceptical (I think that's the word used) of core team response. This I think was recanted. I'm not sure what the circumstances of the recantation was but it's a very serious thing to say of course. Is it possible it was based on legal advice?
In my opinion there's no smoke without fire and there is far too much controversy in and around the Rust community to call it bad luck.
Something is rotten there but I guess I have no interest in finding out why. Only that I stopped going to Rust meetups at Mozilla due to the hostile atmosphere to any detractors.
[0] https://www.theregister.com/2021/11/23/rust_moderation_team_...
[1] https://www.reddit.com/r/rust/comments/qzme1z/moderation_tea...
[2] https://www.reddit.com/r/rust/comments/rclslb/the_core_team_...
https://twitter.com/kentcdodds/status/520671451829907457
I retweet them, and I laugh to myself about it.
The other day I saw a great version of my retweet policy:
https://www.reddit.com/r/mildlyinteresting/comments/y92iqm/t...
"I'm people luke cold subs, but I don't"
People say dumb stuff, unfortunately. The only way to avoid it is to do nothing.
Usually I just block these personalities as quickly as possible and move on.
I'll also note a general tendency toward zealotry regarding terms that are value loaded. "Pure", "clean", "functional", "correctness". I'll posit that if in some parallel universe FP was called "beige programming" and "pure functions" had instead been dubbed "moist functions", there wouldn't be half the zealotry in this regard, even though these are properties of the signifier and not the signified.
But you’re a genius, David. No one denies that. No one could possibly understand the depths of you. But you presume to know everything about me because you saw a program of mine, you ripped my fucking life apart. You’re a co-founder, right? Do you think I’d know the first thing about how hard your life has been, how you feel, who you are because I read a pitch deck? Does that encapsulate you?
Personally, I don’t give a shit about all that, because you know what? I can’t learn anything from you that I can’t read in some fucking powerpoint. Unless you want to talk about you. Who you are. And I’m fascinated. I’m in. But you don’t want to do that, do you, sport? You’re terrified of what you might say.
Your move, chief.
I had it happen to me when I was a college student. I spent a bunch of time at one point writing a linux kernel module to support an audio chip. All the code was working great, but I had never submitted before and had some indenting and formatting issues. The maintainer of that area just went to town flaming me over and over and over again on the list even though it was trivial to fix the formatting issues.
Somebody else had to write that driver again later probably. I just kept a fork of the kernel that I had my code in for a while as the guy was so toxic I knew I wanted nothing to do with him ever again.
Sometimes I have a theory that for a long time these people gravitated to open source projects partly because they had such toxic personality issues they couldn't function in a team environment in a company where their behavior would result in getting fired. There is so much cult of personality and self promotion in OSS.
My $.02 anyway.
But peer-to-peer SMS doesn't make you a self-proclaimed standup comedian complete with an audience and limelight, doesn't give you likes and retweets, and Twitter gives it all to you. This is all the difference: engagement and gamification.
You see, quite often, when you criticize the project, it has the tendency to leak to the person. Even if that person's hide is exceptionally thick, it just takes the right amount of acid to eat through it.
The idea of it sounded good to me - I often used to want to find files and modify them in place and used find, grep and perl (options were -pi -e? Can’t remember!) … I should have made a script to make this easier but was always on different servers so just tried to remember how.
Perhaps tools make it easier these days and this code is somehow not needed if you learn the tools - and could have been a shell alias or something.
Still, the point is you shouldn’t mock other people’s work. Would you like your child’s work to be mocked by strangers? Would you like your parent’s work to be mocked by strangers? Don’t mock people’s work. It’s easy to feel the urge to do this on the Internet where it feels like the human behind something isn’t a real person, but they really are.
I mean dear god look at these examples: https://stackoverflow.com/questions/9393607/find-and-replace....
Now somebody tell me I'm an idiot and recommend a commonly used program for the aforementioned problem please.
rename 's/foo/bar/g' *
seems pretty unbeatable. If you need to choose the files more elaborately, combine it with find (I prefer xargs to -exec): find . -name '*.txt' -print0 | xargs -0 rename 's/foo/bar/g'
-print0 and -0 use null separators so can handle filenames with spaces etc.First: I'm looking for something like this: "rename -r . s/foo/bar/g" to recurse into subdirs. It might seem trivial, but things like find's -exec (a find idiosyncrasy) and xargs (I don't always remember how xargs -I works with extra arguments etc..) can add enough friction to the process where I just end up doing it manually with mv and it's not a fun time. I usually end up having to rename a few files (less than 20) across multiple directories (like changing a naming convention).
Second: The rename command your suggesting is actually a perl script that is indirectly symlinked with /usr/bin/rename on debian-derived distributions . And there can be at least 3 versions of this perl script by different authors under different aliases. See https://unix.stackexchange.com/questions/229230/whats-with-a...
On other distros -- well at least mine -- rename is a much dumber command with a different invocation (rename [options] expression replacement file) that is restricted to glob-style patterns (which incidentally is all I usually need anyways). Oh an you can also get this version on debian & co with the util-linux package. But why do I need that when I already have mv?
Anyways, the UNIX tools have terrible UI and terrible package management and everybody knows but I felt like saying it anyways...
Do I like it like this? No. Do I think it should be better? Yeah, in a better world. But no amount of blogging on my part would ever garner this level of sympathy.
I'm confused as to why HN is collectively so concerned about this person (enough to have 245 comments on a ten year old repost) when the same or worse is happening every day. Is it the names involved?
You get used to this as soon as you get any sort of success as a creator. It says more about them that it does about you. If you are getting hate, you know you are doing something right.
I remember writing this old piece of shit around the same time:
https://github.com/iaindooley/pickdrop
The first version was a poor implementation in a number of ways and all I got were constructive contributions on how to improve it!
Why was Heather ridiculed for her comparatively well written and documented project when I received an admittedly very small but generally positive and supportive response?
edit: And errriclee's gist seems very useful. For example can go around picking some files wanting to replace a string and then can do `run sed -i 's/old/new/' {}`.
• #!/bin/bash is not portable. For example, on (some?) BSDs, bash is in /usr/local/bin/.
• But you don't use any bash-specific features, so just #!/bin/sh would work.
• Not everybody uses sudo.
• How about a Makefile instead of a shell script?
I like to speak at local Python events. I know the audience and enjoy giving back to the community in terms of sharing tips and tricks that I find useful. Some of the videos are posted online. Most have tens, maybe a few hundred views. One video got picked up by a popular coding channel and reposted on their channel. Within days it has tens of thousands of views. After the initial excitement of this development, I started to read the comments and it was not pretty.
"So boring", "Great topic, but you won't learn that from this Muppet.", ...
It took me a while to process those. Then I turned to focus on the many more positive comments. Even if it helps just one person, that's a positive impact you had on someone which is a wonderful privilege to have been able to do.
Always remember it's not the critic that counts, but the person in the arena: https://youtu.be/A311CnTjfos
you are not your code.
take criticism in stride and assess it for value. you MUST be able to gracefully and graciously handle criticism in order to be a successful developer. if someone is snarky, match their energy or elevate the discussion by honestly asking for feedback and appealing to their good will.
thick skin is necessary for open source development. that's ok.
this is a silly project. that doesn't mean she is a bad developer we're all at different places in our journey.
I think the takeaway for the developer here should be to communicate more with those around her. someone would have told her about grep and saved everyone some time.
Though he did publicly apologise, albeit probably just to save his reputation after being called out on his bullying.
People can be mean sometimes. I know a lot of people call out Twitter as particularly toxic or that it is hard to express yourself clearly in 140 chars. Personally I have a Twitter feed that is filled with positivity and reality and takes on life that educate and uplift me and give me hope for the future. (Threads, anyone?) (Sometimes the reality can be quite depressing. But I can guarantee you nobody is shitting on others like this in my feed. I know there are many problems with Twitter. But to all the people who made it possible for me to learn from so many diverse and brilliant people, a big fucking thank you for that. You have brought me immense joy and made me a more thoughtful and better educated person. I will do my best to remember that no matter what happens.)
I’m finding it hard to resist posting further negativity.
I think Kendrick Lamar said it best:
> In the land where hurt people hurt more people,
> Fuck callin’ it culture…
I know I need the reminder sometimes, as I think most people do, despite what I think are generally good intentions.
Heck the cryptocurrency community has repeatedly sent death threats to the very people working on their root of trust.
People just plain suck
Over the years I have had a number of things thrown into the spotlight. While I personally find the exposure exciting, there are always people that are just weirdly viscous.
The one I am still weirdly bothered by is a photo of myself with an AWS Snowball ended up on Reddit. Mid conversation people started discussing how my open mouth smile was going to gather flies. A person then commented that I looked like a lizard person. I think about that a lot for some reason. Comment was later deleted even, but never from my brain.
> I can’t help but think of potential future employers that are no longer potential.
I think that would be quite the opposite - people publicly showing these traits of bullying could find themselves struggling to find an employer. Whenever I worked, when someone expressed such an attitude, they were let go swiftly. Don't get me wrong - there is nothing wrong with criticism, but not in the way that contributes nothing and causes suffering. It must be constructive, respectful and devoid of one's ego.
No code is correct. It either ends up being shown to be flawed in design, inadequate for the task as we now understand it, or rotten in comparison to the wider context in which it lives, and which has now evolved.
The real value of a SWE team is having the drive and relationship strength to be constantly shipping impactful diffs, without drama.
Would be a shame if she had gotten bullied out of the craft.
"There was also a moment where several well-known, established programmers publicly made fun of some of the code I posted. This was at a time where I was still junior. It took away my confidence in my coding ability for awhile. It’s ironic because I’ve found the best way to build confidence is to do hard things you didn’t think you could do. Coding up these libraries and getting them working gave me real confidence in my coding. But, once again, I didn’t need to open source them to get that benefit.
I personally, despite a common mantra, regret many things I’ve done in my life. One of them is open sourcing all those side projects. I would have open sourced maybe a couple of them, and otherwise gotten experience from working on an established open source project, or my own projects in private."
Even back then they were champions of mentorship and teaching people to program.
If you can't handle it, then keep it private or share just with a restricted group.
So rock-on the potentially less powerful stream editor that I can end up using more than once in a blue moon (ok barring sed 's///' which is easy enough to remember and commonly useful).
I did several weeks of work, a few hours a night modernizing some docs. This included reverse engineering and rewriting a Markdown target for an autogenerated documentation generator which didn't have one. There were good responses, but people also complaining and asking why I bothered doing it.
Between this and Copilot scraping/training, I'm a lot more hesitant to put anything on GitHub.
People love to hate, to critise, but never ever create. It's extremely difficult to make anything, but extraordinary easy to talk smack.
Just look at YouTube movie or TV critics. It boils down to argghh, snark, hate and ANGRY VOICE. Not trying to create, to offer alternatives, but just to hate and tear down.
Maybe we need a community that would give valid feedback or nothing at all. No snark, no veiled snark Nada.
I suspect that a lot of people have just internalised social media as a way to casually chat with their friends, without really grokking that their comments online are quite literally potentially visible to a large percentage of the entire species, forever -- including the people being discussed. That all those rules about rudeness apply to public-space interactions that you probably think of as 'private' because the target of the conversation isn't present in the conversation yet at that precise moment.
Like.. one way or another, your great-grandkids, their spouses, and their employers are all going to be able to read every single word you ever wrote on Twitter or in a HN comment or on your blog or nearly anywhere else, and all it'll take them is a random whim to look you up. A large percentage of everything you ever write/wrote online is effectively accessible forever, now, and available to anybody with an interest and an internet connection.
Most of the usenet posts I wrote as a early teenager 30 years ago (written under my real name) are still easily accessible online, for example, and it certainly never occurred to me at the time that that'd be the case. I wonder whether today's kids, who've grown up with all of these forever-archives already in place, are generally more front-of-mind aware about the situation and more careful with what they write than we were back in the early days before we really understood what the internet was going to become.
So many times you encounter people who never tried anything or created anything or done anything than being drones being jealous or somehow otherwise angry at people who do do these things. Especially when they fail (of course sadly).
Many people fear everything so they do nothing; people have mocked my wife and myself for so many things over the decades just because they thought it was ‘weird’; moving to another country, starting companies, quitting a job to start writing or brewing etc. It’s sad people cannot just think; good for them and leave it.
So when we get a full segment we can free them all at the same time?
Sorry, couldn't resist...
We used to play the "defrag" game for hours...
I know I see lots of early learning repos on Github and wouldn't expect that kind of negativity. Usually a blog post would provide some context that such and such is a toy, learning experiment, etc to avert misguided feedback.
I imagine those folks on the article have long since moved on and forgotten about this incident
Ah hell, get a grip on reality. There isn't a single programmer I know that when told "your code sucks" wouldn't almost immediately reply "I know, right?". The fact is that the world is fundamentally built on eye-bleeding terrible pieces of critical shitware.
Besides that, it's a field so arbitrary and opinionated that anyone can immediately find 10 things wrong even with the best code ever written. Welcome to the club, don't forget to grab your complimentary thick skin at the receptionist.
A ton of women in tech have reported having to deal with things like that for years. Now consider what it’s like having something you spent a lot of time on get this kind of pat dismissal suggesting the world would be better off if you’d never given it a gift. That’s harsh for anyone who doesn’t have loads of social capital and a massive ego, and even people who might seem to roll with it often have impacts you don’t know about.
This tendency to slag people’s work is deeply engrained in the field but that doesn’t mean we wouldn’t be better off changing our culture.
> Asked if you’re in the wrong place for a job interview? Suggested you were in a CS class by mistake or to find a husband? Thought you were in a meeting to take notes?
I would imagine that's often more of a surprised blurt made without intentional ill will, even if it has vastly negative effects on the person being asked. Like seeing a male kindergarden teacher and asking which kid are they there to pick up. It's just so rare to see women in CS to the point where I didn't even realize or consider that OP is one of them.
I’d also suggest that subconscious remarks still have a weight, and there’s a ton of history suggesting that many of them are not casual gaffes. We have a certain subculture which craves wanting to be top-dog intellectually and a fair fraction hates to receive criticism from people they don’t consider peers. Not everyone goes on some kind of Damore-ean rant but I’ve known guys to hold grudges for ages with little personal consequence. We really need to change the norms to discourage those kinds of games.
Sobbing over what, Tweets? That's not behavior that I'd consider to be "normal." A grown up would look at this criticism and think "You know what? maybe my project isn't that good. Oh well, I guess I'll just learn from it and move on."
Very strange to see software engineering somewhat in the same category. I suppose though you always needed thick skin in an industry where you are likely to work alongside people much smarter than you. I at least have found it humbling.
Some mega-nerd spent an hour asking me 100 things I knew nothing about. What were the different networking layers involved in connecting to an external HTTP endpoint? What is the eden space in Java? How do you optimise memory allocation? What is big O notation?
The guy was basically getting a kick out of knowledge shaming and it went on for a good hour. I've no idea why he'd waste both of our time on it. I think he was eating in the background, maybe having a laugh with buddies.
There are complete sociopaths/bullys out there. Expect and avoid these losers.
that said. thanks to the op (harthur) for sharing this experience with us. since you gave us the chance to reflect, we might be able to learn from the experience and become better colleagues.
People will bucket you and do pile ons on that site. I just visualize them as drunk drooling assholes about to pass out at their keyboards.
And being open source has nothing to do with the comments. They are due to the public nature of the code.
If you can't handle it, then keep it private or share just with a restricted group.
I mean, this policy selects for people with a thick skin. Why is that desirable? Because having a thick skin doesn't necessarily imply one is a good programmer, or somebody who has particularly good ideas.
If you want to see someone fail their entire life, just never let them know what they are doing wrong.
or.. criticize them once, so they dont have to fail again in the future.
This is old news, criticism is the nice thing to do.
None of them stood up and said "Hey, have you considered doing X instead of Y?" or "Z might be a better approach, here's my reasoning". They just took the opportunity to make it, and by extension her, into a joke. I can completely understand being upset in that case.
If you are going to criticise, at the very least be constructive. Otherwise you aren't helping anyone.
She actually tweeted back both of them asking for details, a level of understanding neither tweet actually merited (but still a good strategy), and got no answer.
There, now you won't even need to read TFA :)