1. -10

    Money quote:

    Why are you leaving? Little bored. Not learning as much as I used to. I’ve been doing the same thing too long and need a change. […] I want to build something new again. I don’t want to get stuck in a comfortable rut.

    I hope the author, who has so far worked on Go at Google, reignites his learning through something relatively more sophisticated like Rust or Haskell.

    1. 61

      This is an incredibly patronizing thing to say.

      1. 27

        Agreed, I usually downvote and ignore such comments, but I can’t help but point this out in light of the recent “Lobsters Is Better than Hacker News thread” [1] (which I also found to be “low effort”)

        The comments on this same article on HN are significantly more enjoyable and positive to read than this thread:

        https://news.ycombinator.com/item?id=22161383

        It reminds me of the “low effort” framing here regarding open source participation.

        https://lobste.rs/s/8pvhsl/my_foss_story#c_r697kv

        Leaving aside the fact that the comment is patronizing (and IMO should just be deleted), it just has so little effort behind it that it contributes nothing.

        I try to ignore the many low effort / tribal comments on lobste.rs, but sometimes the noise overwhelms the signal. I think the relatively aggressive HN moderators have done a good job. I understand why people dislike the site, but that’s because it’s big and the bad stuff jumps out at you.

        https://www.newyorker.com/news/letter-from-silicon-valley/the-lonely-work-of-moderating-hacker-news

        Anyway I write this in hopes that people will put some more effort into their comments. I didn’t submit my last 7 blog posts here and it wasn’t a loss. One post was submitted to HN yesterday and that was plenty of feedback – at least 80% of it not “low effort”.


        [1] https://news.ycombinator.com/item?id=22146746

        https://lobste.rs/s/bxuqzy/why_lobste_rs_is_better_than_hacker_news

        1. -1

          I didn’t submit my last 7 blog posts here

          With all due respect, personally I havent missed it. I admire what youre trying to do with the Oil project, but its not of personal interest to me and I havent found a way to filter it out. To be candid it feels as if you use Lobster as a advertising platform sometimes. I think it would be better if you posted more non-Oil topics. Looks like 12 of last 15 were Oil Shell:

          https://lobste.rs/newest/andyc

          Good luck to you.

          1. 37

            I hate advertising as much as the next guy, but this is very unfair to Andy. For one, the pieces aren’t just about Oil shell. Most of them are about topics inspired by Oil shell, things like motivations, facets of the system, different techniques used to implement it. He’s also written tons of comments on other people’s submissions. He’s a good-faith member of the community.

            1. 13

              I agree he definitely interacts more than simple link dumping and while Oil isn’t interesting to me, so are a lot of other technologies that I can’t filter out. I think he should be welcome to share his links so long as they contain new information and not a repetition of existing information. For example I probably would be interested in how he stays so productive and how he manages tasks, and how he decides what to work on next. I hate to admit it but I’m probably more likely to click it if a product name isn’t in the title ;).

            2. 18

              Disagree strongly. @andyc’s blog posts are exactly the kind of content that should be submitted to lobsters. Please don’t stop Andy!

              1. 13

                Strongly disagree. If @andyc content is not for lobsters, what is? Each of the posts is technically sound, and I learned many things from them, even tho I’m not interested in Oil per se.

          2. 19

            Interestingly, a sentence immediately below, which however didn’t make its way into above “money” quote, is:

            It’d be nice to primarily work in Go rather than work on Go.

            1. 19

              How good of a programmer does one have to be before they can reject Haskell or Rust have it reflect something other than their own ignorance?

              1. 4

                Sorry, I don’t understand your question/statement. Could you please rephrase it, English is not my mother tongue. I’m not sure if you ask about the skill level one has to have to be able to reject Haskell or Rust on a non-ignorance base without prejudice of other developers, or something completely different?

                1. 5

                  Some fervent proponents of programming languages will imply that programmers that like or use other languages simply do not understand the unique benefits they convey. Paul Graham wrote a whole article that may be the root of some of this thinking.

                  Rust and Haskell stereotypically attract these followers more than many languages. But other languages are not immune to this criticism; I’m a Lisp weenie and as we all know, Lisp is still #1 for key algorithmic techniques such as recursion and condescension.

                  I read cgag’s comment (and upvoted it) as a tongue in cheek joke: a fervent follower of language X will always consider a criticism of X or a desire to not use X as a position rooted in ignorance of X’s capabilities.

                  1. 3

                    Some fervent proponents of programming languages will imply that programmers that like or use other languages simply do not understand the unique benefits they convey. Paul Graham wrote a whole article that may be the root of some of this thinking.

                    This is true a lot of the time. It’s certainly possible for two people who have both used language X to disagree on whether the style of programming that language X facilitates or encourages is good; but a lot of the time a person who likes language X is making the case that language X is good to programmers who haven’t used it and don’t care to (which is fair enough - it takes a decent amount of time and effort to learn a novel programming language well enough to have an informed opinion about it, and it’s reasonable to decide that you don’t care about forming an informed opinion about a language and doing something else with your time instead).

                    1. 1

                      Oh, I think you and pg make a good point: sometimes there really are advantages that you can’t see when you look up from blub to language X, and the only real way to get it is to learn X. But I think it’s important to think about looking down the ladder too.

                      When I’m in X slinging macros to build a DSL that makes my life easier, I’m making a decision that forces the next programmer to look at my code to deeply understand my DSL and all the decisions therein. What multiplies my productivity might quarter theirs.

                      Sometimes you look down and the forced simplicity of blub looks OK :)

              2. 8

                I spent a little bit of time on both Rust and Go and I learned a lot more with Go. Rust is pretty standard and sane, calling into libc, using LLVM. Go goes wild and does its own thing everywhere, it even does its own linking. It’s a lot of fun.

                1. 4

                  I believe I understand what you meant, Go has a goal of simplicity, Rust and Haskell are more feature rich. Working on the Go compiler as a result can feel like polishing the same thing over and over, spending tremendous effort to make small improvements. The way you phrased it though appears as though you think Rust and Haskell are “smarter” or “superior” in some way. Implying some language is “smarter” or “more sophisticated” is a good way to make everyone hate that language.

                  1. 6

                    Implying some language is “smarter” or “more sophisticated” is a good way to make everyone hate that language.

                    I would only ask that while some fans of other languages can become overly zealous that we try to not anthropomorphize the language itself by applying a label of hate to it. I think we can all agree that the GP comment is of poor quality.

                    1. 3

                      I can see that. I doubt anyone truly “hates” a language any more than they hate broccoli or brie. I love broccoli and I love brie, but I have heard some people hold strong negative opinions before.

                    2. 1

                      I think he just means Go isn’t that great of a language. I don’t really blame him for having that opinion. Go reminds me a lot of Java, it got adopted because a giant tech company “sponsored” it

                      I mean just replace “Go isn’t that good” with “C++ isn’t that good” or “Java isn’t that good” and it suddenly becomes way less controversial.

                      1. 4

                        i first played with go before it was 1.0, and immediately liked it because it got so many things right, even back then. easy compilation, easy definition of packages without additional magic files, binaries that can just be copied. it’s just optimized for sanity if you want.

                        so, imho: it got adopted because smart, experienced people got as much time as they wanted to carefully build something.

                        1. 2

                          Yea from what I’ve heard/experienced, the Go tooling is incredible (just like the Java tooling was incredible). I think what people have a problem with is Go the language.

                          Full disclosure though, I’ve never used the language in any serious capacity (other than adding a 5-line patch to the backend code at work here and there) so I don’t have much to say. I have an irrational distaste for the language that I can’t put my finger on. I’m not sure if it’s the weird syntax or what. Tooling seems great though. I’ve been meaning to install 9front on one of my computers.

                          1. 1

                            most, if not all of the weird choices were made deliberately, the faq explains some of them. imho these things make the language great. for example, the “backward” declarations really feel natural for me, compared to c style declarations.

                            the rest of the language is really boring, but the single features really work well together. that’s what makes it great. maybe it’s like watching a anthony bourdain episode where someone cooks a great meal in a single wok over a wood fire outside. it’s about how the tools are used, not how complicated the tools are :)

                            1. 1

                              Hm maybe I should check it out then. I really like Lua and C for the same reasons you like Go

                      2. -10

                        It’s better to be hated than to be incorrect.

                        1. 16

                          That’s a ludicrous false dichotomy. Being incorrect isn’t good, sure, but being hated is also bad. But good news, you can be correct and not hated! The secret is to communicate humanely and not conflate abrasiveness with intelligence.

                          1. 3

                            You can’t always avoid being both correct and unhated. If enough people sacralize or tie their identities to a particular falsehood, someone who says things that are consistent with the truth will be hated.

                            1. 8

                              Sure you can. You do it by being quiet.

                              Of course, that’s often undesirable for other reasons.

                              In the case of the comment that sparked this chain, it was more-or-less the optimal choice, since Brad does not (to my knowledge) read the comments here.

                          2. 8

                            Hmm sometimes yes, sometimes no.

                            If you are hated over an inconsequential disagreement where you were correct then you probably didn’t take the right dialogue tree. There are many ways you can share ideas without being hated and correct.It’s also important to note that most people in this kind of situation merely think they are correct, are incorrect and are hated. For example someone with hostile communication strategies would say “No if you are correct you will be hated” , fight tooth and nail, and be nonetheless incorrect and hated. They will think they are more correct because they are hated, but they are probably wrong.

                            1. -1

                              I think people here are quick to jump to giving an uncharitable reading of my comment. Rust and Haskell are unquestionably sophisticated (and arguably technically superior) in regards to the type system when compared to Go. My goal was to get people curious, and not harbor hatred.

                              Where I may have erred is in suggesting that author take that route. I just think there is not much you can learn, from a PL standpoint, by staying in Go and similar languages. But then, for all we know, the author may care about other things than PL.

                              Speaking personally, I have passionately used Go (among other languages) in the past. Curiosity and need naturally lead me to discover other languages and, today, I’m extremely delighted to use Haskell for real world software.

                              I also recommend reading http://www.paulgraham.com/disagree.html (especially when emotions run high).

                              1. 4

                                I’m a functional programmer so you’re preaching to the choir and I think it is valuable when interfacing with others to be particularly careful when saying that you have a better approach. Even if you are right, people often hold the idea that they are what they do. If you appear to be saying what you do is better than what they do, then they are likely to read it as “I think I am better than you”. Now you probably don’t think you’re better or smarter than they are, after all its just a different tool. Nevertheless this can be how it is received if you are not careful. Since when we write we are often writing to an audience, how the audience receives our message can really matter in advocacy and outreach. I think your original post was unfortunately ambiguous about what you thought of others. So even though that might not have been what you felt or thought, it still is how it will be received, even to a generous listener. The second post is much clearer that you don’t look down on others. You probably didn’t think to explicitly spell that out because well it’s probably not how you felt. However many readers really benefit from clarifying that point because for many writers that IS what they intend. They are trying to make someone perceive themselves to be inferior, small, or useless. For the record I don’t use go, and I don’t particularly enjoy writing it, I was merely laying out ground rules for interaction because I would not appreciate it if someone talked to me in that way.

                                1. 2

                                  I see what you are saying. The solution that you propose to be “particularly careful” when communicating is accepted as general wisdom, yet it does not consistently work, as people will find ways to get offended regardless.

                                  First, taking offense is often a subjective response. What’s offensive to one may be neutral or naive to another. Emotions are influenced by one’s cultural upbringing.

                                  Second, intention matters more. Both parties should strive to understand the context and intention of another. And aim to take words at face value, rather than second-guessing meaning.

                                  A better course of action for people here really is to be inquisitive. And assume good faith, as Wikipedians say. So, person B is feeling offended. Instead of reacting to the emotion, why not find out the facts of the matter? Personal B could respond saying “I felt X upon reading your comment. Did you really intend Y? If not, could you clarify what you mean by it if not Y?”.

                                  To me, personally, what matters first-most is my own affective state: was I feeling malice (however subtle) or not? I’ve written a whole article on this topic.

                                  1. 2

                                    To put that in practice

                                    Person A: I hope the author, who has so far worked on Go at Google, reignites his learning through something relatively more sophisticated like Rust or Haskell.

                                    Person B: Your post appears as if you are suggesting that the project he spent ~10 years as a core developer on is unsophisticated (basic, primitive, etc). This seems inconsiderate and rude. A farewell post is not the place to bring up other languages you prefer to Go. If not, could you clarify what you meant?

                                    Person A: (What is the correct response here?)

                                    1. -1

                                      This would be my response:

                                      Your post appears as if you are suggesting that the project he spent ~10 years as a core developer on is unsophisticated (basic, primitive, etc).

                                      Nope; my post was referring to Go the programming language, which is indeed unsophisticated – in the context of type system – when compared to languages like Rust or Haskell.

                                      Perhaps ‘advanced’, instead of ‘sophisticated’, would have been a more agreeable adjective?

                                      This seems inconsiderate and rude.

                                      No inconsiderateness or rudeness was intended. And making a factual observation about a set of technologies does not mean malice is intended on humans.

                                      A farewell post is not the place to bring up other languages you prefer to Go.

                                      I have never seen anyone suggest observing a social protocol of not bringing up other programming languages on a blog post with farewell theme. It seems like such an arbitrary restriction. I’m curious where you gleaned this norm from.

                                      1. 4

                                        Even you do not act maliciously and are not affected by a conflict does not mean the other party feels the same way. Like your article states “once enough people are piling on to complain or tell you what’s wrong with what you did, you’re going to feel attacked “. Sure you can’t control how other people feel but I think we should try to minimize this if it’s unnecessary. Acknowledging and understanding their emotions go a long way towards this.

                                        When coworkers leave for another job, I congratulate them and thank them for their contribution. If I didn’t like the work they did, I say nothing.

                                        [I too was becoming defensive, edited for politeness :D]

                                        1. -2

                                          Even you do not act maliciously and are not affected by a conflict does not mean the other party feels the same way. […] Sure you can’t control how other people feel

                                          Correct.

                                          but I think we should try to minimize this if it’s unnecessary.

                                          Humans having been trying this for centuries, and conflicts have not stopped. No thank you, I’ll stick to my current approach of feeling good which has been working so well for me. I’d have to be pretty silly to regress from that because of some random incidents online! (Can you now understand why Twitter can be such a raging place?)

                                          1. 9

                                            Not caring about how other people feel or are affected by your actions is the very definition of being inconsiderate. Not being malicious is not the same thing as being kind.

                                            1. 3

                                              Thank you, this much more clearly captures my thoughts.

                                        2. 9

                                          It might benefit you to take some time away from this thread, cool off, have fun with friends, then reread it and see what you think later. I know if I were in your shoes I would probably be feeling pretty defensive, as it was not your intention to downplay someone’s effort or tooling. However defensiveness here may affect your ability to see the situation clearly which would allow you to be more effective next time at sharing your informed opinions. You may decide afterwards we’re all being too sensitive, and that’s fine. It is after all your call. However I have found some people slide down the “I’m not rude, everyone is just too sensitive” trap. If everyone is too sensitive perhaps it would be more effective catering to it at least some of the time.

                                          As for your last point, I think it is possible to share new ideas when someone is ending a career path, however I think it would require quite a bit of finesse. You do not want to appear as though you are disregarding their effort and commitment. Often people who have several years into a project can feel very sad when they leave it, even if it was the right thing to do. If you propose a new path too bluntly it can appear that you are pouring salt on the wound. They are already sad about losing their job and community and now you’re telling them they are wrong. Even if what you are telling them is right, it can still hurt. If you are going to advise someone in an emotional space (big life changes, employment, relationships, home), it’s good to give them the possibility that they may be right even though they are not. After all it’s pretty logical to say that in our partial information world that few things are perfectly knowable. Then when their emotions cool off they may realize that maybe you had their best interest in mind all along and might even agree with you.

                                          1. -1

                                            You suggest that I wasn’t feeling good, and then go on to say that I “cool off”, and even indicate that I might be feeling “defensive” - but nowhere above did I say that I was feeling anything but good. So I do wonder where you get this information about my mental state from, so as to concoct such an unsolicited advice.

                                            Can you see how being “particularly careful” is working for you here? Speaking personally, feeling good before reaching for the keyboard, ensures that I never uncharitably interpret other’s words, much less project my feelings onto them.

                                            If I may suggest, instead of second-guessing other person’s feelings, take their words at face value and directly engage with their points (and I do note that you are yet to address any of my points on this topic). It makes communication so much simpler.

                                            1. 1

                                              You’re right, being careful when someone is a troll is a misstep, I’ll make sure to report you to the mods. I’m done here.

                                              1. 3

                                                srid isn’t being a troll. He is disagreeing in good faith with a majority of the thread.

                                                1. 2

                                                  Well that’s what I thought too, until he said “Can you see how being “particularly careful” is working for you here?”, and then I realized he was just being manipulative.

                                                2. -2

                                                  You’re right, being careful when someone is a troll is a misstep,

                                                  Any intelligent person who is not actively under the affective throes of offense (or whatever) that reads my comments in this thread can easily see how I was being anything but a troll[1]. Be that as it may, when I asked whether you can see how being “particularly careful” is working for you here, what I was referring to was this exchange (emphasis mine):

                                                  • [voronoipotato]: I think it is valuable when interfacing with others to be particularly careful when saying that you have a better approach.
                                                  • [srid]: The solution that you propose to be “particularly careful” when communicating is accepted as general wisdom, yet it does not consistently work, as people will find ways to get offended regardless.
                                                  • [voronoipotato]: It might benefit you to […] cool off […] if I were in your shoes I would probably be feeling pretty defensive
                                                  • [srid]: Can you see how being “particularly careful” is working for you here?

                                                  The fact that you went on to project feelings of defensiveness on to me, despite my making it clear I was feeling neither inconsiderate nor rude (much less needing to defend anything) served as a perfect example of just what the effectiveness of your proposed solution of being “perfectly careful” is … to wit: not effective at all.

                                                  Indeed, I’ve made this exact point under the Where civility falls short section of the aforementioned article.

                                                  (My delineating the situation in this manner is only done to elucidate the facts of the matter; however I also understand that it might be uncomfortable for you, as it goes against your beliefs regarding civility).

                                                  [1]: Just so there is no misunderstanding here’s what that refers to:

                                                  troll: a person who makes a deliberately offensive or provocative online post. (Oxford)

                                            2. 3

                                              There’s more to a language than its type system. Go’s runtime isn’t unsophisticated. I think it’s funny that you focus in on the type system as the primary measure of the language’s complexity, it lays bare that you have a narrow perspective on programming languages.

                                              1. 0

                                                Wow you got me!

                                  2. 2

                                    Oderint dum computant.

                                    [1] original here, correction to my Latin gratefully accepted.

                              1. 2

                                I tried enabling Markdown highlighting for an editor I use [1], but I realized that its using an incomplete and old version of Scintilla, so I would essentially need to write a new lexer. Another editor [2] I have used already has Markdown highlighting, and recently fixed some highlighting problems with YAML, so I started using it.

                                1. https://github.com/zufuliu/notepad2
                                2. https://github.com/rizonesoft/Notepad3
                                1. 1

                                  I discovered this yesterday when trying to solve this problem:

                                  https://github.com/dinedal/textql/issues/65

                                  I use Cygwin myself, so I probably couldve just used the Cygwin package. But this is neat because unlike Cygwin its a “native” package, which means the gcc.exe produces a Windows native executable instead of a Cygwin executable. Also its small, only 99 MB.

                                  Finally its up to date. The Cygwin version is still at GCC 7 (LOL?) while this is current AFAIK at version 9.

                                  Special mention to another project I found recently:

                                  https://github.com/mstorsjo/llvm-mingw

                                  1. 2

                                    It seems that despite being in development for 16 years:

                                    https://github.com/rsdn/nemerle/graphs/contributors

                                    Only one other project is using it:

                                    https://github.com/search?q=language:nemerle+pushed:>2019-01-26

                                    1. 1
                                      1. 3

                                        I am going to try to implement MarkDown syntax highlighting for an editor that I use:

                                        https://github.com/zufuliu/notepad2

                                        1. 13

                                          I find shellcheck to be invaluable when writing bash scripts. The amount of little gotchas you need to be aware of is staggering and the documentation links it spits out are pretty good as well.

                                          1. 3

                                            ShellCheck is a great tool. However I realized that for me, the problem wasnt checking my large Shell scripts. The real problem was having large shell scripts. Shell scripting is such a hard thing to get right, by that I mean POSIX portable. So I ended up rewriting many scripts in PHP or other languages.

                                            1. 2

                                              shfmt as well for making scripts look the same.

                                              EDIT: Fixed incorrect command name.

                                              1. 1

                                                Interesting, can you link it? I found https://github.com/mvdan/sh, but that seems to be include a different formatter than the one you mentioned.

                                                1. 2

                                                  That’s the one!

                                            1. 2

                                              Do you have a link to it?