1. 12

    You may laugh at me, but let’s see who gets the last laugh when some junior lady with 1000 Twitter followers becomes your tech lead.

    Yeah. Apparently, some people even seem to optimise for this from the outset, and use a veneer of charisma, silly faces, and emoji to try to cover the fact that they clearly don’t know what they’re talking about. The charlatanry is strong in this industry, especially among the web development crowd, which is unfortunate because I count myself as among them.

    For me personally, an example of that is Redux. Being initially developed for JS, it doesn’t fit TypeScript application at all, in my opinion. But, you guessed it — it’s community-approved, which means everyone uses it, which means I have to. It doesn’t matter what I think about it when every job listing requires knowledge of Redux or MobX.

    I was with you until this point. What about Redux has anything to do with types? That’s a completely unrelated concept, and your opinion here seems totally unfounded given that Redux is essentially just a JavaScript implementation of the Elm architecture, and Elm is a typed language.

    1. 1

      Hi! ✌(◕‿-) ✌My name is Julia. I’m a full-stack developer specializing in Java and JavaScript.

      This has to be a parody account.

      1. 1

        It may even be worse than that. I thought something was suspicious about the formulaic and spammy nature of that person’s posts, and they had a similar structure to the tweets of the person who invited them.

        Both accounts have since been banned, as it appears the inviter was a sockpuppeteer.

        Utterly disgraceful behaviour. Good riddance.

    1. 3

      That’s exactly the pattern why I think decision to use Rust’s borrow checker in Facebook Libra’s new contract language, Move is a stroke of genius.

      1. 3

        This article reads more like “here’s a bunch of reasons why JavaScript is a truly awful language and you should avoid it if you can.”

        I’d be very annoyed if any interview I went to consisted of just these trivia/trick questions.

        1. 1

          Well there’s not much avoiding JS if you want to do web development. Which seems like quite a popular thing to do ;)

          But I agree, if I got more than one question like this at an interview I’d be annoyed, and doubly so if I had to just sit and reason about it - there’s a REPL on every browser tab. Have people write code in interviews, after all, that’s usually what you’re hiring them to do.

          1. 3

            You can certainly avoid writing code like this though. Any language had it’s quirks that do not what you would expect it too; the smart thing it’s not to depend on it and write code that doesn’t require this kind of knowledge instead.

            1. 1

              You’re right - I’ve seen little to no code like this for years. Modern JS, at least, doesn’t look like this and doesn’t tend to run into the kind of gotchas this post covers.

            2. 1

              I think it’s certainly worth avoiding JS as best you can. For my projects, I try and use it as sparingly as possible, and then if/when the application needs some more involved interactivity I jump straight to a compile-to-JS language.

              I have no idea why people would choose to use write everything with it. There are people who write JS for their client, server, and build system. It’s madness.

          1. 12

            This is a very well-written article. I really dislike GitHub and hate working with it. Especially for small changes, it is very cumbersome to open a pull-request and having to deal with all the kitchen-sinking. I much prefer the way to just send a patch to a mailing list, where it can be discussed and merged.

            1. 9

              Isn’t code browsing of the pull request on the web much more convenient than applying the latch locally? I’ve used both GitHub and gitlab pull request flows on a lot of commercial products, and it would’ve been a pain to go through the email process.

              TBH, I can’t remember when was the last time I used email aside from automatic notifications and some of the headhunters (most already prefer linkedin and messengers anyway).

              1. 20

                Here’s a video which demonstrates the email-based workflow using aerc. This isn’t quite ready for mass consumption yet, so I’d appreciate if if you didn’t repost it elsewhere:

                https://yukari.sr.ht/aerc-intro.webm

                1. 5

                  Wow… I’ve known for years that the git+email workflow was behind a more distributed model for open source development, but all my experience is on github and so making the switch has felt too-difficult. This article and this video together make me feel compelled (inspired?) to give it a go. aerc looks amazing.

                  1. 6

                    Consider giving sourcehut a try, too :)

                    1. 3

                      Thanks for making sourcehut!

                      I took a look a few times but I can’t seem to find any obvious documentation to setup and configure it. I fully acknowledge that I may be blind.

                      1. 5

                        I assume you don’t want to use the hosted version? If you want to install it yourself, instructions are here:

                        https://man.sr.ht/installation.md

                        There are only a small handful of installations in the wild, so you might run into a few bumps. Shoot an email to ~sircmpwn/sr.ht-discuss@lists.sr.ht or join #sr.ht on irc.freenode.net if you run into issues.

                  2. 2

                    Having tried to record a few casts like this, I know how hard it is to do a take with few typos or stumbling on words. Well done.

                    The idea of using a terminal emulator in the client is a cool idea :). I usually use either VS code or sublime text, though this gives me an idea for a terminal ‘editor’ that just forwards to a gui editor, but displays either a message, or mirrors the file contents.

                    1. 2

                      I can’t do this either :) this is edited down from 10 minutes of footage.

                    2. 1

                      I have done the same thing albeit differently in my client[0]! I don’t have any casts handy, but the whole patch apply, test, HEAD reset, branch checkout/creation is handled by the client. I’ve also started patchwork integration.

                      [0] https://meli.delivery/ shameful plug, because I keep posting only about this lately. Guess I’m too absorbed in it.

                      1. 1

                        Ah, it’s this! I filed an issue because there doesn’t appear to be any public source, and I wanted to try it.

                    3. 1

                      I think locally you can script your workflow to make it as easy as you want. However not many people take the time to do this (I haven’t either).

                    4. 2

                      This is a very well-written article. I really dislike GitHub and hate working with it. Especially for small changes, it is very cumbersome to open a pull-request and having to deal with all the kitchen-sinking. I much prefer the way to just send a patch to a mailing list, where it can be discussed and merged.

                      I think a bridge would be nice, where emails sent can become pull requests with no effort or pointless github ‘forks’.

                      1. 2

                        Worse yet, barely anyone remembers that Git is still a “real” distributed version control system and that “request pull” exists - and, yes, you didn’t mean to say “pull request”. The fact that GitHub called their functionality a “pull request” is somewhat annoying as well.

                        Edit: I’m glad the article mentions this in the P.S. section - and I should really read the entire article before I comment.

                      1. 2

                        Going out to see a lecture on hacking. Not the technical kind - the political analysis of who the “russian hackers” are and how are they connected to russian government. I also hope to meet a couple of friends on art & craft festival which is happening right next to my house, and go see Detective Pikachu.

                        I also have one song that I have to prepare for a studio session with a vocalist next week, and two more tracks that we already recorded that I need to send out for mixing. Also, write a full track out of a loop that my vocalist liked, and then adapt song lyrics for yet another one. If we continue moving with this pace, we’ll end up with a complete EP by the end of June.

                        And finally, I have this telegram bot project that I started to learn Haskell for. I had to go through several libraries (one dependent on another) to implement socks5 authentication and still wait for my PRs to get approved. Now I can finally get to implementing the functionality - and I just thought of a neat way to use monads to code up asynchronous dialogs, where each user’s reply will be received as a different HTTP request without any persistence except for the data in database. Can’t wait to finally write some code in Haskell that I wouldn’t be able to in any other language!

                        1. 1

                          A much better way to interact with OS clipboard is to prepend the command with “+.

                          Aside from that, did author really think that there exists a Vim user who thinks that Vim can’t show line numbers? Even if you just started using it and don’t know how to do that, you probably expect such a basic feature from a text editor so well known for it’s geek cred.

                          1. 3

                            Or…

                            # in your ~/.vimrc
                            set clipboard=unnamed
                            

                            This should make the system clipboard “just work”, unless you’re in tmux, in which case you need to also do this (choosing the appropriate shell):

                            # in your ~/.tmux.config
                            set-option -g default-command "reattach-to-user-namespace -l zsh"
                            
                            1. 1

                              This I indeed didn’t know, thank you!

                          1. 36

                            Although the title is correct, I don’t think it does any justice to this awesome OpenGL vs Direct3D history lesson.

                            1. 3

                              It confused the heck out of me since I immediately started readimg the answer after assuming the title was the question. Re-reading question at top, suddenly the post made a lot more sense.

                              1. 3

                                The submission guidelines say:

                                Do not editorialize story titles, but when the original story’s title has no context or is unclear, please change it.

                                So I could have added “(OpenGL/Direct3D history/comparison)”. Can’t edit it any more.

                                1. 4

                                  Since you linked to the answer and not the question, I think that you would have had a bit more freedom when it comes to choosing the title.

                              1. 2

                                Just finished the last homework assignment on Haskell cis194 course and started on a first small personal project in this language. It’s been a long time since doing something as basic felt so hard, but it’s starting to feel that it’s all really worth it.

                                1. 11

                                  I guess the author doesn’t even realize that not every developer is working with web? My deploy is pushing a binary to Google play, Apple store or Steam. By the time it gets through review and I get user reports about things being broken it will be deep into Saturday.

                                  1. 20

                                    It seems like there’s no winning strategy with interviews. I hear both of these regularly:

                                    “Boo! This company is asking me theoretical problems that have no applicability to my actual work”

                                    “Boo! This company is asking me specific problems that directly relate to what I’ll be contributing”

                                    To me the problems are when 1) the time investment is not commensurate with the company’s legitimate interest in you (the process should fail fast), and 2) the company doesn’t respect you or your time – you waste lots of hours answering the same questions, or the total time is just excessive (> ~5 hours starts to get excessive, although it can be longer for a higher level position).

                                    For context, my company regularly asks candidates to design our own system (so far we’ve never incorporated ideas from this into our systems – we’ve been thinking about the problem for years, so it’s unlikely someone will come up with something groundbreaking in an hour). It’s a great problem because we understand all the corner cases and can answer questions easily, and performance is directly associated with outcomes.

                                    1. 3

                                      “Boo! This company is asking me specific problems that directly relate to what I’ll be contributing”

                                      I don’t believe this is what the OP is saying. The issue is when the specific problems you’re being asked to solve are unanswered at the interviewing company and answers result in revenue for said company. I enjoy being asked problems in the specific problem domain I’m interviewing for, but not when my answers are actually solving company problems without compensation.

                                      we’ve been thinking about the problem for years, so it’s unlikely someone will come up with something groundbreaking in an hour). It’s a great problem because we understand all the corner cases and can answer questions easily, and performance is directly associated with outcomes.

                                      This is better. But I’m always a bit hesitant with these style of interviews because it’s easy for the interviewers to fall to knowledge bias. “This engineer isn’t a good fit because they suggested a design that is terrible, due to XYZ corner cases and performance implications [which we only know because we’ve spent years studying this problem domain. Sure we only gave them 30 minutes to come up with a solution, but how could they possibly NOT see all these ramifications that took us months to fully understand!].” It’s a dangerous road that’s only human to fall prey to.

                                      1. 1

                                        but not when my answers are actually solving company problems

                                        Is this just about the principle? Like in general you really have no way of knowing whether an interview is useful to the other party or not. To flip it around — sometimes candidates use an offer to negotiate on their current role (and I say good for them, as long as they went into the process in good faith).

                                        If the company is genuinely interested in hiring you, and you’re genuinely interested in working for that company, why does it matter if someone learns something along the way?

                                        1. 2

                                          Sorry, I may not have clearly articulated my thoughts. Yes, on principal. I’m not opposed to each learning something along the way. I think people should always be learning. I’m only opposed to the more blatant approaches, and only when uncompensated.

                                          I don’t think it’s morally right for companies to take advantage of anyone, especially potential employees! Maybe there isn’t true malice, and some of these companies are simply taking advantage of a situation to “make the most of it.” I.e. “well we have to interview, let’s see if we can also get some real work thrown in at little or not cost.” I think this is wrong. To be fair, as the interviewee there is no way for me to know this provided the interviewer is crafty enough. It’s easy to take a business scenario and make it look like a generic coding exercise.

                                          Some of my co-workers have stories of doing a full day of pairing “as part of the interview” without compensation. To me that’s terrible! It’s passed as, “Let’s just make sure you’re a good fit for the actual workload and team you’ll be a part of.” Which sounds noble, and better than your stereotypical whiteboard interview but then if that was truly the case, the company should be willing to pay a consultation fee.

                                      2. 2

                                        With one position I’ve interviewed people for, I’ve asked them to implement a particular functionality that was already implemented and released in our app, and I encouraged them to use it as a reference (although by no means a perfect one, they could feel free to improve on it).

                                        1. 1

                                          If you want to work for free you can do it, nobody is stopping you.

                                        1. 2

                                          First two weeks of may are full of state holidays in Russia, so our team decided to swap around working days and work through this weekend to enjoy continuous two-week vacation with minimum amount of actual vacation days spent. We also had a release scheduled for yesterday, but turns out we actually did it on time and with minimum hassle, so this working weekend feels like a couple of very relaxed happy days to catch up on all the minor stuff.

                                          Aside from that, I have just recorded the first track with a new vocalist and right afterwards we wrote down text and structure for two next ones, all in one evening, and I can’t wait to develop these ideas into something real. Sitting at work, I listen to reference tracks all days and occasionally write down things to steal and imitate.

                                          And if I have any time left, I’m halfway through cis134 Haskell course, and it’s the most joy I’ve gotten from programming for the last few years. I’ve never been a dynamic language kind of guy, so it’s about the first time of my life where I work in REPL most of the time – have never expected it out of Haskell and wish someone told me sooner about what a wonderful workflow it is!

                                          1. 4

                                            I feel like these kinds of posts pop up every so often, and up to now my standard response is, “well, duh, everyone knows that clever code is bad.” But just what does “clever” mean?

                                            Ultimately, I think readability is in the eye of the reader. Code that some people think is readable, other people may not think is readable. For instance, I personally think that the “ if ” idiom that is popular in Perl and Ruby makes possible is not as readable as “if ”; it doesn’t mesh with the mental model I have when I read code. But other people may think it’s perfectly fine.

                                            “Clever” here seems to be used to indicate code that is inherently not readable. “Simple” isn’t the same as “readable”, but implies it; the thinking is that if something is simple, it is understandable, and therefore it is readable. Is “understandable” subjective too? I think so; again, some things that are understandable for some people aren’t for others.

                                            With regard to the subject of this article — the {...something && { foo: "bar" }} expression — if I had not seen this before and someone said that this could either evaluate to {} or { foo: "bar" } depending on something, I would not be that surprised. I know what the spread operator does and I know what && means, so is it that much a stretch to understand that the result of this expression is either {} or { foo: "bar" }? I don’t think so. Not to say I wouldn’t like it — I would probably say that it’s weird, it doesn’t fit, there’s just something off about this. But that’s not the same thing as “unreadable”.

                                            So if we can’t pin down “readable” or “understandable” or “clever”, then what are we talking about? Perhaps readability requires a consensus: if most people think something is readable, then it is. So when we talk about “readable” do we really mean “unconventional”? “non-idiomatic”?

                                            1. 1

                                              Exactly. When writing, you should know your audience – and when writing code, it helps to know your team to be on the same page with them.

                                            1. 2

                                              On my main job, I’ve been doing everything from cutting up PSDs, laying out windows and buttons, coding animations, logic and analytics for a new feature in our game’s April’s update. It’s a basic monetisation feature that we’ve seen in similar free2play games which, hopefully, will increase our ARPPU enough before the big marketing push our publisher is getting ready for in June. Owning a thing like that, which can mean a lot for a whole company really feels good.

                                              In my free time, finally got around to learn Haskell. Going through the amazing cis194 and can’t wait to code up a small Telegram bot right afterwards, so I can finally find out if all this shiny things I enjoy in homework excersises really translate to “real world” stuff.

                                              1. 34

                                                I’m very strongly in favour of objective, civil, polite discourse. I don’t think anything is gained by penalising people if their tone is a little abrasive.

                                                To be blunt (in full acceptance of the irony here) I would much rather that people post abrasive content than risk them self-censoring for fear of appearing “unkind”. I’m afraid that lobste.rs would cease being a haven for constructive discussion, and become some sort of Stepford-esque echo chamber instead.

                                                1. 46

                                                  You can disagree with something without being a jerk about it. I think that’s something we should all aspire to.

                                                  1. 11

                                                    I agree (and think that “being a jerk” is quite a different thing to “being abrasive”, but maybe that’s just my reading of the terms).

                                                    However, I’ll take “abrasive and correct” over “nice but wrong” any day of the week, and I fear that encouraging downvotes over tone will result in the loss of some of the former.

                                                    1. 7

                                                      I’ll take “abrasive and correct” over “nice but wrong” any day of the week, and I fear that encouraging downvotes over tone will result in the loss of some of the former.

                                                      Fortunately, these are not the only two options. An ideal solution would discourage the “abrasive and correct” in favor of the “non-abrasive and correct.” In such an environment, “nice and wrong” comments are welcome because they spark informative discussions.

                                                      1. 2

                                                        Which is why a downvote, as they’re currently implemented, isn’t a good solution. Some sort of separate flag might be, though. Provide an easy way for readers to nudge posters to edit their posts for tone.

                                                        1. 1

                                                          “Nice and wrong” comments that require other people to expend effort to correct them are not kind.

                                                          1. 6

                                                            The “incorrect” flag covers those, however.

                                                        2. 4

                                                          Perhaps the “unkind” vote should have zero affect on karma, but still deprioritize the comment? That way it’s less likely to generate feelings of defensive?

                                                          1. 4

                                                            Being unkind seems very karma-related to me

                                                            1. 4

                                                              It could just be some CSS that provides visual feedback from the downvote action to the voter. Like a big red mechanical button that isn’t wired up to anything, but feels satisfying to press.

                                                          2. 6

                                                            You certainly can. But anger and frustration, like other human emotions, have circumstances where they are objectively justified and reasonable. One would say that in software development, for example, we aren’t really facing the questions of life and death, and getting worked up about something like that is silly. I agree that a lot of anger in comment sections is, indeed, silly – but not all of it.

                                                            Let me bring an example. Recently I found out that one company, which is developing a technology which have been my main “specialisation” since 2012, have decided to move around different modules and in the process deleted documentation for one of it - so from new version on, instead of automatically generated API specification, with all classes and methods, I would have to refer to guides, organised by topic. This change is completely unnecessary, and will make my day-to-day work much harder. I spend 8 hours a day, 5 days a week, at my job, and something that they have done will make me a little bit more miserable, every day. And they don’t even have any reason for it. And a forum post that I’ve written, with detailed explanation of the issue, and then tweeted at them, have gone without a single reply.

                                                            Now, if I would encounter the person who was responsible for this decision here in the comments in a relevant thread, I think that venting my frustration, while staying civilised, would be an appropriate response. Don’t you?

                                                            1. 6

                                                              And yet, being direct is often seen as being unkind. I’m strongly against ranking people on kindness – in addition to being very vague, the norms are highly cultural.

                                                              I sometimes wonder if we’d be better of getting rid of votes entirely, and rely on people using their words.

                                                              1. 6

                                                                highly cultural

                                                                But surely we’re seeking to build a lobste.rs culture?

                                                              2. 2

                                                                100% agreed. In my experience you’re also more likely to effectively get your argument across. However, it is a skill that requires effort to learn and apply – at least in my case.

                                                                1. 1

                                                                  but you can’t guarantee that people will interpret your politeness as such

                                                                2. 38

                                                                  I would much rather that people post abrasive content than risk them self-censoring for fear of appearing “unkind”. I’m afraid that lobste.rs would cease being a haven for constructive discussion

                                                                  The opposite is also true: some people stop posting after too many negative interactions, which also reduces participation.

                                                                  You call it “censorship”. Frankly, I’m starting to strongly dislike this term. It’s carelessly thrown around far too often. Every community has social norms, and online communities are no exception. If I’m an asshole to my friends then at some point they’ll start shunning me. If I join a football club (or scout group, or choir, or whatever) and act like an asshole then sooner or later I’ll be asked not to come next week. Would you call this “censorship”? I wouldn’t.

                                                                  I stopped posting on /r/programming at reddit after being called a “moron”, “idiot”, “retard”, accused of having an IQ lower than 65, was told that I “fucking suck at making software (and I guess generally anything)”, was told that my opinion was “hates speech” in two separate recent incidents (both over a technical disagreement, wtf?!), and just general unconstructive/aggressive/belittling/etc. word choice.

                                                                  It’s not that I’m that sensitive, but if you spend a lot of time writing a weblog post, or make some software, and you get told any of the above (which are all real quotes) then that’s … not great. It’s not that I get angry or “offended”, but it’s also not fun and if it happens a few times I’ll stop coming back (as happened on /r/programming). I think most people participate in these communities just for the fun of it. Sure, you also learn new stuff, but I think fun is an important – if not the most important – part for many.

                                                                  Constructive discussion can only happen if everyone feels like they can participate without the fear of being mistreated (belittling, aggressive replies, insults, etc.) If there is such a fear, then I will guarantee you that some people simply won’t post at all.

                                                                  I’m not sure (yet) if a flag is a good idea here for other reasons (I’ll make another top-level comment about that), but I do (strongly) disagree with your sentiment.

                                                                  1. 18

                                                                    I definitely use this site less over time because of the loud frequent posters who often carelessly put down people with insensitive wording. When I was junior I was able to justify spending the emotional energy listening to technically correct jerks, but nowadays it’s pretty rare that I get anything other than anger out of their childish communication. I only come on lobste.rs now when I’ve got pretty high emotional buffers, because otherwise it’s likely to just make me feel worse.

                                                                    1. 7

                                                                      I’ve only been here for a few months, so I can’t comment on Lobste.rs specifically, but I can comment on two general observations:

                                                                      • Often >90% of the problems come from ~1% of the people.
                                                                      • As a community becomes larger, it becomes harder to manage because mods don’t see most of what’s going on (making it harder to identify patterns).

                                                                      In many ways it’s the same as traffic; if you drive or cycle home you may encounter 100 drivers, so if just 1% is reckless driver then you’ll meet one most days. Also, like traffic, it’s hard to completely remove these people unless they commit gross offences. You can break traffic laws and be reckless for pretty much your entire life, and suffer very few consequences.

                                                                      Most of us act like an asshole sometimes; I know I do; I have pretty strong feelings about certain political topics, and sometimes I just have a bad day. But I’m not consistently an asshole. I think they key here is not to look at individual comments too much, but rather at long-standing patterns. There are just a few mods here, and they probably don’t see most of what’s going on. So the ability to see things like “hey, this user is responsible for 28% of all unkind flags” is the critical bit.

                                                                      I don’t know if this needs to be tied to downvoting. Could just be a separate flag. I don’t think it matters too much, as long as there’s an admin panel to see an overview.

                                                                    2. 6

                                                                      This is exactly what happened to Slashdot too. The loudest, most aggressive users gradually took over the comment section, and the more rational voices left. That site is now a quagmire of hate speech. I think it is a good idea to get ahead of it on this site, because it could happen here too. I like the discussion environment of this site, and I don’t want to lose yet another community.

                                                                      I think that the idea of shadowbanning from reddit could be combined with the stack overflow style of flagging bad behavior. If nobody can see abusive or trollish comments, then they don’t accumulate comments and effectively don’t exist (i.e., not rewarding bad behavior). Those users will either correct their behavior or stop posting altogether.

                                                                      1. 3

                                                                        I’m sorry you experienced that behaviour. I have myself, largely for holding unpopular political opinions[1] . It’s even more fun when people attack those positions in a social situation, before realising that someone in the group actually holds them :)

                                                                        The behaviour you describe crosses way beyond “abrasive” to downright abusive. I’d be okay with a flat out ban in the case of someone who called another poster a retard, for example.

                                                                        By “abrasive” I mean posts that might be terse, strongly critical, or dismissive. That is, posts that have issues with tone. Things that could be charitably interpreted as well intentioned.

                                                                        [1] I guess you’d call them Objectivist, for want of a better term. Strongly socially and economically liberal. The former is common in Australian tech circles, the latter rare. People here usually assume party-political alignment, so if you’re say in favour of open immigration, they assume you’re also in favour of progressive taxation.

                                                                        1. 1

                                                                          The reddit example is of course much more extreme than anything I’ve seen here; but it does clearly illustrate the point that people can stop posting (“self-censor”) due to lack of moderation, too.

                                                                          By “abrasive” I mean posts that might be terse, strongly critical, or dismissive. That is, posts that have issues with tone. Things that could be charitably interpreted as well intentioned.

                                                                          A good rule-of-thumb is whether a comment makes you go sigh, “eh”, “pff”, or something similar, either by actually saying it or saying it “in your head”. You can be critical of what someone said and not evoke such a response. My previous comment was critical of your post, but I don’t think if evoked a “pff” response (or at least, I hope it didn’t!) but it’s not hard to imagine that it could with some stuff rephrased.

                                                                          I know this is murky and unclear, but that’s the way language works, especially in a global community with different cultures, etc.

                                                                          I think the key thing here is that “abrasiveness” accumulates. If you encounter an abrasive comment on occasion then that’s okay. Most people are abrasive some of the time (I know I am); that’s just the way things work. The problem is when people are abrasive most of the time, and you encounter abrasive everywhere you look.

                                                                          I don’t think singular abrasive comments are a problem, or that people should be punished for it. But if they’re constantly making them then there is a problem that should be addressed. Also see my other reply in this thread: https://lobste.rs/s/xnjo8g/add_downvote_reason_unkind#c_kqtuqr

                                                                          Analogy: Lobste.rs keeps track of “self promoters”; people who frequently post links to their own websites. Is this preventing people from submitting links to their own site? Not really; but it does help keep track of people who spam links too frequently. I think a potential “unkind flag” should work the same way.

                                                                        2. 2

                                                                          “Censorship” is certainly an overused weasel-word nowadays. Moderation is (generally) not censorship.

                                                                        3. 9

                                                                          Just to clarify, this kind of “bluntness” is of course perfectly acceptable. If you’d labeled my suggestion a “crap idea” on the other hand…

                                                                          1. 4

                                                                            And that’s the rub, isn’t it? I have no problem with having my ideas called crap, but don’t like calling people “crap”. Others might be more sensitive than you, and then you have a ratchet that moves in only one direction, as people say less, challenge each other less, and so on.

                                                                          2. 4

                                                                            Just to piggy-back on this a bit. I wholeheartedly applaud the heart behind this suggestion, I prefer that the tone be kept civil and polite here. However, kind/unkind might be a bit too subjective and might unwittingly stifle conversation. My concern is that for one person, a simple disagreement with an idea could be deemed “unkind” regardless of tone. My skin might be a little thinner, so my unkind trigger finger might be more prone to fire. I think troll covers abrasive behavior and perhaps some kind of flag could be used to alert moderators when issues arise and tone sinks too low in a conversation.

                                                                          1. 4

                                                                            Vim is a genius idea with a sloppy realisation. First time I tried it, I spent a month learning it and setting everything up to be just perfect. But then I changed job and stack, and I have had to set everything up again, and I wasn’t as patient the second time. After a few more times, I understood that I can’t be bothered to spend a few weeks testing all the plugins and remembering all the shortcuts every time I need to get acquainted with a new language or change computers and operating systems – I guess it happens to me much more often than to the greybeards.

                                                                            On the other hand, modern editors like VSCode just work. They’re not ideal, and you may have to try different plugins as well, but I’m not afraid that editor will hung for a half a minute or indefinitely (which happens a LOT with vim plugins), and you don’t have to remember any magical Leader-something shortcuts: just type Ctrl/Cmd-P, and all the plugin’s functions are there, with useful search. I still install vim plugin on any IDE I use, and, of course, the support is lacking (for example, relative line numbers and relative movement over closed folds is something that plugin developers usually don’t get right), but these things I can live with.

                                                                            I wish that when I retire, I will finally have time to set up Emacs with evil mode from scratch and will finally have an editor that I can configure and program in a language that I love. But it seems as a project that would take a couple of months (during which I will not be able to use it as an editor and will often break it), and for now, I have work to do.

                                                                            1. 13

                                                                              I’m not afraid that editor will hung for a half a minute or indefinitely (which happens a LOT with vim plugins)

                                                                              I have literally never had that happen. This sounds like the “Wordpress plugin problem” to me:

                                                                              1. Install Wordpress.
                                                                              2. Install loads of crappy plugins.
                                                                              3. Get 0wned.
                                                                              4. Blame Wordpress.
                                                                              1. 1

                                                                                Well, if there are a lot of crappy plugins that turn up as first results in Google, you can definitely blame the ecosystem. And you can certainly blame the software with a plugin architecture designed in such a way that a bad plugin can bring down everything, without an easy way to isolate or at least identify the culprit.

                                                                                1. 3

                                                                                  Both modern Vim and Neovim support async operations now.

                                                                                  1. 3

                                                                                    And yet, a fresh install of spacevim on top of neovim in latest Ubuntu in WSL hangs when I try to save any Haskell file. Making a good plugin architecture is not about allowing plugins to do stuff; it’s about limiting their power to do it.

                                                                                  2. 1

                                                                                    blame the software with a plugin architecture designed in such a way that a bad plugin can bring down everything

                                                                                    You can’t edit the buffer by both a plugin and the user typing in it, so completely avoiding any locks is a logical impossibility.

                                                                                    an easy way to isolate or at least identify the culprit.

                                                                                    Profiling (:profile start vim.profile :profile file *) usually works, or vim --startuptime.

                                                                                    1. 3

                                                                                      I’m not a plugin developer for any IDE, and I’m familiar with these ecosystems only as a user. And as a user, I know that I have never seen any plugin hang Visual Studio, VS Code, Sublime or other “modern” editors, but I’ve seen it many times with Vim.

                                                                                      Now, I specifically say that I blame not the editor code itself, but the whole ecosystem. This includes not only plugin API, but also best practices that plugin developers get nudged into. From my experience with different ecosystems, I would make an educated guess that Vim plugin developers do certain things in a naive and potentially bad way (which leads to bugs and freezes that I experience) not just because they are allowed to, but because that’s how they’re taught to do it in tutorials, documentation, by looking into other existing plugins, and so on. Which, in the end, makes Vim a bad editor for me. Because just as quality of language is not only about the spec, but also about the amount and quality of libraries written for it, the quality of an editor is also about quality of plugins that I can use with it and overall level of trust or caution that I, as a user get accustomed to; that’s exactly what the word “ecosystem” stands for.

                                                                                      1. 4

                                                                                        Every ecosystem has loads of crap plugins/libraries. Sturgeon’s law: “90% of everything is shit”. Your entire arguments sounds like “I have experienced one plugin misbehave, therefore the entire ecosystem is bad”. That is actually a generous reading, as it could also be a misconfiguration or something else. I’ve seen people copy/paste some pretty silly things in their vimrc without understanding what it does.

                                                                                        If VSCode works well for you: great. Go for it! But I don’t see why you need keep repeating the strange claim that it’s somehow “normal” that Vim frequently hangs. I can assure you it’s not, and “greybeards” – as you charmingly call them – do not spend all of their days waiting for Vim, or spend their entire time configuring Vim.

                                                                                2. 6

                                                                                  I’ve never understood the point of overloading vim with plugins. On the one hand the arguments are “it’s the same everywhere” and “it’s start-up time is minimal”, etc. but all of this seems defeated when you try to turn Vim into an IDE. Unix is supposed to be the (I)DE, and vim is the editing component, while the shell is supposed to mediate between all the other tools one would use in the process (as opposed to Emacs, where Emacs itself mediates). Or that’s at least the idea.

                                                                                  1. 2

                                                                                    Well, that’s the idea that makes vim a bad full-blown editor, and one of the reasons that OP, me, and other like-minded developers quit vim even though we love the modal editing aspect of it.

                                                                                    1. 2

                                                                                      Vim is already an IDE out of the box; it comes with completion, make integration, code navigation, a file browser, and many other IDE-like features.

                                                                                      The problem is that a lot of plugins duplicate these features because they want to “make it seem like Jetbrains”, instead of using the Vim way of doing things. In many ways it’s similar to “Vi key bindings” that you get in many other IDEs.

                                                                                      1. 3

                                                                                        I wouldn’t consider any of those things to be what make an IDE. They’re not strictly vi-ish, yes, but an IDE should take things further, ideally creating a seamless interface between everything, taking charge of the more complicated parts for the user.

                                                                                        1. 1

                                                                                          Well, you could argue all day about what exactly an “IDE” is, but if we take the broad definition of “comprehensive facilities to computer programmers for software development” (lifted from Wikipedia) then think Vim fits the bill. It’s certainly a different approach than, say, Visual Studio, but I don’t think that makes it “not an IDE”. It’s certainly more than just an “editor”.

                                                                                  1. 1

                                                                                    One more thing you should be mindful when localising to different languages is UTF-16 surrogate pairs and difference between characters, unicode points and glyphs. While modern languages, like Rust, get it right from the get-go, in C#, for example, you’re stuck with UTF-16, where strings contain characters, but while a lot of code assumes that a single character is a character displayed on screen, it’s not. And if you get user input character-by-character, you might create invalid UTF-16 string when the user enters a unicode point that is built up from a surrogate pair (that contains two UTF-16 characters). But you can’t even be sure that a single unicode point is a single glyph on a screen - many emojis, like country flags, emoji numbers and skin-coloured emojis are built as a combination of several unicode points… So, you either have to find a very good and well-tested library for your language and framework of choice to handle all that, or implement it yourself.

                                                                                    1. 1

                                                                                      By far the biggest pain point in UTF-16 for me is endianness. Unless you spew BOMs everywhere, it is very easy to end up with some mojibake if you’re dealing with multiple platforms.

                                                                                    1. 1

                                                                                      This could be useful to help catch basic typos. For example the fields in if this.Latitude == that.Longitude will be coloured differently.

                                                                                      1. 3

                                                                                        Wouldn’t it be something a sane type system could take care of?