1. 22

    So I think we can agree that there is one design rule, or ‘pattern’ by analogy, that always holds:

    Make it simpler.

    “Make it simpler” ignores all the many, many practical factors that push code to be complex. What if the “simple” code is so slow people hate using your software? What if the “simple” code would be in a different language? What if there’s a difference between local and global simplicity? What if the simple code is much harder to test and deploy? What about the Law of Requisite Variety?

    In architecture, where the problems that buildings and city planning need to solve don’t change, a set of patterns can be expected to be distilled after some time and to remain more or less comprehensive. But the nature of code is very different. Once something is solved in code, it doesn’t has to be solved again. The analogy is completely inapplicable.

    Do you know this? Have you ever done architecture or city planning? I’ve been talking to a lot of cross-discipline programmers as part of a longform project, and they all agree we completely misunderstand this.


    I’m burnt out on “simplicity” essays. What even is simplicity? We all use it but don’t have a consensus, or even good definitions. Which is simpler: shared memory concurrency, or message passing concurrency? Shared memory is much, much simpler, requiring fewer primitives, fewer moving parts, fewer axioms, fewer abstractions. It also leads to much more globally complex and error-prone code.

    1. 8

      Simple code also requires a simple problem, and a simple world to be modeled by the code. Text is simple if you ignore any language other than English, somewhat simple if you ignore any language outside of Western Europe as long as you add complexity for ß upcasing to SS as opposed to any single letter, still pretty simple if you ignore any language which does not use the Latin alphabet as long as you add another hack to account for dotted and dotless I in Turkish…

      Once you move on to most of the world, solving the general problem of text is hard. It requires complicated code because you’re trying to capture an organic system, and the only reason Latin script languages are as simple as they are is because you’re getting a pre-chewed version hammered down by printing presses and typewriters, and shorn of things like scribal abbreviations and most ligatures and even “missing” a few letters like yogh and wynn, not to mention the long s, which coexisted with the short s for a good, long time.

      1. 1

        Yeah, in some code reviews I did, I was surprised to find disagreement with fellow programmers when I tried to use argument of “simple” - in that we saw simplicity in different ways (esp. in architectural choices).

        1. 1

          Do you know this? Have you ever done architecture or city planning?

          I haven’t, so this is just an assumption, an attempt to understand why design patterns may have been appealing seeing that they don’t add the promised (or expected) value in practice.

          What even is simplicity? We all use it but don’t have a consensus, or even good definitions. Which is simpler: shared memory concurrency, or message passing concurrency? Shared memory is much, much simpler, requiring fewer primitives, fewer moving parts, fewer axioms, fewer abstractions. It also leads to much more globally complex and error-prone code.

          I agree, we don’t have good definitions and that sucks, because not having a set of rules to follow always feels bad. For me simpler at least means easier to understand. It is very hard to do hard measurements of whether something is easy to understand. However, it is not impossible to say whether one approach is easier to understand than another, in other words, if a refactor was valuable or not.

          I am afraid I don’t know of a better practical tactic to decide on the adequacy of a structure than just changing code and seeing if I made it easier to understand. Given that functional requirements are met, of course, and given all circumstances, conditions and consequences. I agree that this is not stated explicitly in the article.

          I think the example of choosing a concurrency model is a great one. Do we prefer global complexity and the potential for pitfalls over the complexity of a larger number of moving parts? I believe that acknowledging that there is no general answer to this question is better than believing that I should be able to solve this with a pre-defined pattern if only I would have studied pre-defined patterns enough.

          1. 1

            What even is simplicity? We all use it but don’t have a consensus, or even good definitions. Which is simpler: shared memory concurrency, or message passing concurrency? Shared memory is much, much simpler, requiring fewer primitives, fewer moving parts, fewer axioms, fewer abstractions. It also leads to much more globally complex and error-prone code.

            I can only recommend Rich Hickey’s Simple Made Easy, which helps answer why just having fewer parts doesn’t make something simple.

            1. 3

              A few months back I asked people on Twitter to give me two samples of code, in the same language and doing the same thing, but one had to be “simple but not easy” and the other “easy but not simple”. Most of the responses ended up contradicting each other. I don’t think we have a sense of what “simple” means.

              1. 1

                I think the problem with such a challenge is that what is easy will differ from person to person — I think we should be able to agree on whether a thing is simple vs. complex, but if you ask for easy or not easy (which both sets of responses are also trying to answer) it will come to depend very much on who’s answering.

          1. 25

            I’m surprised Gitea isn’t linked, for when you want more than cgit/gitweb but find sr.ht’s setup a bit too intense.

            1. 7

              I’m a perfectly-happy user of Gitea for my personal code. It was easy to install on one of my VPSs, it provides a web interface that looks pretty much like github’s, and it means that Github can’t decide that they don’t want to host my code anymore for any arbitrary reason and delete it.

              1. 9

                Same, happy user of www/gitea in OpenBSD’s ports. I run tarsnap daily and include a pgdump in that backup.

                I keep public-facing projects on GitHub because ~network effects~, but everything private/exclusively personal use/pre-public goes on gitea.

                1. 2

                  Your hat confuses me. What should I interpret into a GitHub dev using Gitea?

                  1. 21

                    Nothing particular, was just wanting to disclose early (in case someone saw me elsewhere wearing and decided to call me out here), and perhaps contribute to an image of .. I dunno, open-mindedness in GitHub/Microsoft devs? The sentiment here for us can be negative, and I get why — in the past I’ve boycotted both MS and GH! — but I do know from the inside we’ve many reasonable people doing our best. Does that make sense? Anyway. I think projects like Gitea are a good idea, and I enjoy their use too.

                    1. 9

                      People aren’t their employers. I used to work for a company that created secure crypto stuff that was also used by some militaries. Doesn’t mean that I had a Patriot missile launcher in my garden (even though I heard that the crypto stuff was used there). Now I work for Google, Chrome OS even, and use Firefox on my non-Chromebook devices (of which there are still several) and even on some of the Chromebooks.

                      Do I use the products of my team (and others of my company) and recommend them to friends and family who might benefit from that? Sure, I do. I also explain what’s going on under the hood so they can decide the trade-offs (e.g. that Google Photos does large scale analysis over everything you upload, if only to find faces, if your account has that feature enabled).

                      One simple reason I could imagine for a GitHub dev to use gitea for their personal projects: to keep work and hobby entirely separate. For legal reasons perhaps (there’s some corporate overreach in many contracts when it comes to copyrights to personal work) but there’s also little that is more grating than working on your hobby on a Sunday morning and running into an issue that you would be well equipped to fix professionally.

                      1. 1

                        I feel something alike: there is what we choose for ourself to use because it fits our core values, and what we choose for ourself to get paid because it fits our core values.

                        It is obviously easier to satisfly the former.

                2. 4

                  Author here. Gitea looks great. Added to the article.

                  1. 1

                    Same. I wanted to run sourcehut, but I don’t have the cycles for that level of sysadmin work in my spare time right now. Gitea was just “set up the database, run the binary, set up forwarding from my main webserver, run the github migration script”.

                    My only gripe with gitea is that people have to set up accounts to post issues, but anyone who doesn’t want to do that can email me.

                    My github repositories are now clearly marked as being mirrors (possibly not quite up to date) of my gitea repositories.

                  1. 10

                    While I agree with the practical suggestions of this article in principle, what’s being suggested here effectively sounds like “host your own git repositories so you’re free of all criticism and can let your toxic behavior go unchecked”? I think there’s a difference between GitHub taking action on things that are legitimately offensive and would go against any Code of Conduct, and the true political censorship GitHub has been enforcing over the last months, such as barring users to access their site based on their location.

                    1. 16

                      Presumably, people disagree with Github about the what constitutes “toxic” and “legitimately offensive”.

                      Or (like me) they are uncomfortable with a service enforcing their views, even if the views themselves are reasonable.

                      1. 14

                        Personally, I would like it if the services I used barred people who don’t think I deserve to exist from participating in the same things I participate in.

                        1. 7

                          I would like it if the services I used barred people who don’t think I deserve to exist

                          FWIW, I have strong issues with people who think other categories of people should not exist, and it sucks that you have to deal with them.

                          However, I don’t think this is a very good long term practical solution, especially when the moral compass of a lot of SV companies seems to be directly related to the amount of social media pressure a given issue garners. I would perhaps have a different viewpoint if companies had a well articulated, solid set of moral principles that they stuck to.

                          Even then, I see services such as code hosting as completely orthogonal to political/moral judgement. I see no reason why they should be intertwined.

                          1. 13

                            I don’t want to retread the same ground that we’ve been on 100 times before for the sake of winning an argument online, so I’ll just say that my opinion is that all social spaces are political and therefore require moderation (codes of conduct, etc) in order to be welcoming to newcomers. GitHub has a much larger precedent on this than almost all other code hosting platforms I’ve seen.

                            1. 9

                              I don’t see how every social space being political logically leads to the conclusion that they should be welcoming to newcomers. And every social space being moderated sounds like a totalitarian nightmare.

                              I can see that ‘social’ aspect of github does potentially shift it towards more of a political space, especially as they do position themselves as a place for newcomers. I would say, though, that people like the author of the article wanting to move away from that social aspect and the attendant rules is not necessarily a sign that they want create a den of free-for-all abuse and horror. Perhaps they just don’t want every space they inhabit to be political.

                              1. 11

                                Professional social spaces (that is: places where some of the people have to be there in order to keep a roof over their head) need very different rules from other kinds of space.

                                1. 5

                                  Indeed; github is in some ways more like a workplace than, say, a cafe or a park.

                                  Thinking about it in those terms helps me to clarify my objection. Github is more analogous to an office building than to an organisation. It’s a piece of infrastructure within which individuals and organisations come to work. It would seem rather bizarre if the owner of an office building enforced rules about the speech of their tenants.

                                  It’s obviously an imperfect analogy.

                                  1. 4

                                    It would be bad if every cafe and park was required to enforce the same rules as a workplace, just in case you encountered someone you knew at work there.

                                    1. 4

                                      If Github is analogous to an office building, surely a project within it is analogous to the group of people operating within it.

                                      If those people put up a sign saying “You’re welcome to come in, but don’t do X”, and you decide to do that anyways, don’t whinge when they call security (github) and ask to have you escorted from the premises (banned).

                                      (that is: projects have codes of conduct; github has very lax rules other than ‘behave on other peoples projects’)

                                      1. 4

                                        (that is: projects have codes of conduct; github has very lax rules other than ‘behave on other peoples projects’)

                                        The original article has examples of github enforcing their own set of standards.

                                        1. 3

                                          If GitHub’s own rules are that minimal, then to respond to @marisa’s original point, the relevant distinction isn’t between GitHub and self-hosted projects, but projects with an appropriate (and enforced) code of conduct and those without one. And AFAIK, there’s no reason why more project maintainers who conscientiously apply and enforce a CoC shouldn’t leave GitHub and host their repo, issue tracker, etc. under their own domain.

                                          1. 3

                                            I agree, but that’s not what the blog post sounded like :)

                                  2. 2

                                    I’ll just say that my opinion is that all social spaces are political and therefore require moderation (codes of conduct, etc) in order to be welcoming to newcomers.

                                    Even if you take this as read, and I think this statement taken in isolation is reasonable, you still need platform diversity because some platforms will settle on codes of conduct which you see as wrong, perhaps even horribly wrong. One example is TERFs: They see trans women as males invading female spaces and will work extremely hard to police that kind of thing, which is inherently unfriendly to trans people. Unless you’re absolutely sure none of the kinds of platform you want to participate in (code hosting, web hosting, issue tracking, etc.) will go a pro-TERF route, you need some kind of backup plan to avoid dealing with them.

                                    Self-hosting is simply the ultimate backup plan.

                                2. 10

                                  It’s getting annoying to have to keep a list of the services I shouldn’t use due to overly pedantic/prescriptive definitions of sex/gender.

                                  1. 1

                                    That is confusing: How sex/gender came into question with Git Hosting?

                                    Of course it is a social network that tries to map account to social identities. That is the source of the problem: Github being not only a git service but also aiming to be a part of our “lifestyle”.

                                    1. 17

                                      It’s common for queer activists, particularly trans activists, to argue that people who disagree with them on political issues related to sex and gender “think they don’t deserve to exist”, using that specific phrasing. I think this kind of rhetoric is nearly always disingenuous, designed to make it seem like their attempts to censor opposing rhetoric are unquestionably-righteous, rather than themselves a kind of true political censorship. If you think that your own freedom to publish things on the internet is important, then you should try to avoid centralized services like Github precisely because they can be co-opted by political activists (who you might not agree with) who think that advancing their cause and suppressing their opponents is more important than your freedom to publish things on the internet.

                                      1. 5

                                        I think this kind of rhetoric is nearly always disingenuous, designed to make it seem like their attempts to censor opposing rhetoric are unquestionably-righteous, rather than themselves a kind of true political censorship.

                                        There is a difference between censorship and trying to maintain a level of basic human decency in a community.

                                        In order for a larger community to function you need to set at least some rules in place to determine what kind of behavior and speech is not welcome. The worst you allow sets the bar. I can think of at least one genuinely “censorship”-free place and we all know how pleasant of a corner of the internet that is.

                                        So assuming we can agree that at least some rules are needed, the question – and I’m by no means saying it’s an easy one – is where to draw the line. For me, unsolicited opinions about trans people are very far from simply “disagreeing on political issues”. They’re actively harmful. How can you “disagree” with someone’s lived experience? Is that not, in itself, a form of invalidation, of erasure?

                                        The kind of behavior and speech you allow also effectively silences people who would otherwise like to be part of the community by forcing them out or discouraging them from joining in the first place. But somehow, people are more worried about censorship. I’m more concerned about the people who didn’t even get to say anything in the first place.

                                        1. 4

                                          When I become king, this will be stapled to the doors of GitHub, Twitter, the BBC…

                                          I might run out of staples.

                                          1. 9

                                            I think this kind of rhetoric is nearly always disingenuous, designed to make it seem like their attempts to censor opposing rhetoric are unquestionably-righteous, rather than themselves a kind of true political censorship.

                                            Whenever I hear or read someone saying “trans people are too pushy” I mentally substitute them saying “women are too shrill”, or “black people are too uppity”, and I afford their utterance precisely the amount of respect it deserves.

                                            1. 7

                                              You’re proving @Hail_Spacecake’s point.

                                              What you just said can be logically reduced to “whenever I hear someone say x, I substitute that with some y that they didn’t actually say.”

                                              This is exactly the kind of straw-manning disingenuous argument style that we’ve all become accustomed to when engaging this specific flavour of political activist.

                                              1. 4

                                                I’m saying that there’s no qualitative difference in the arguments against trans rights than in past arguments against the rights of women, gays, or people of color.

                                                1. 7

                                                  A criticism of an underhanded debate tactic used by a group is not a tacit denial of that group’s rights.

                                                  I mean, look at it the other way around: You’re arguing against me. Does that mean you don’t believe I deserve equal rights?

                                              2. 4

                                                trans people are too pushy

                                                But that’s really not what @Hail_Spacecake is saying, is it? He points out that there are queer/trans activists who reduce opposition to the personal attack that one “don’t deserve to exist”, which if it is a “common” thing, would be a legitimate criticism. Other than that, I don’t see how what you say related to the discussion? If anything, you would want decentralised systems so that those who do actually say “X are too Y” don’t control you, or inhibit you in acting according to your intentions.

                                              3.  

                                                It’s common for queer activists, particularly trans activists, to argue that people who disagree with them on political issues related to sex and gender “think they don’t deserve to exist”, using that specific phrasing

                                                Do they? Do they, really?

                                                Might it be that those people who “merely” “disagree with them on political issues related to sex and gender” are actually opposing their existence? Like, say, by supporting bathroom bills - which are aimed at removing gender non-conforming folks from the public eye - by opposing anti-discrimination laws, or by trying to make access to treatment more difficult?

                                                Might it be that their “disagreement on political issues” is also, most of the time, accompanied by behaviours that go beyond mere disagreement, and that “I just disagree with [homosexuality|transsexuality]” is never just that?

                                                designed to make it seem like their attempts to censor opposing rhetoric

                                                Is it really censorship if someone says “you suck” at the Westboro Baptist Church because of what they say? I thought both had a right to express their opinion.

                                                Oh, sure, maybe hearing “you suck!” over and over again might make them think twice before opening their mouth.

                                                Is that censorship? In any case, is it wrong? And, do you think that LGBT+ people are immune to it?

                                                I feel like getting told, over and over again, “trans people are mentally ill”, “there is only two genders”, “they are just doing it for the attention”, might have a chilling effect on that population.

                                                1.  

                                                  Is it really censorship if someone says “you suck” at the Westboro Baptist Church because of what they say? I thought both had a right to express their opinion.

                                                  No, but it is censorship for github to bar them from using their SaaS product because of what they say. It’s definitely censorship for trana activists to attack the entire concept of decentralized github alternatives for the specific reason that it would make it harder for github to enforce a code of conduct requiring that they be barred from github for what they say, which is what several people in this thread about decentralized alternatives to github have done. We’re all the Westboro Baptist Church in someone’s eyes, and I don’t want Github making that judgment call for everyone who writes open source software.

                                                  1.  

                                                    It’s definitely censorship for trana activists to attack the entire concept of decentralized github alternatives

                                                    Where, exactly, are they doing that?

                                                    Because I’m looking pretty hard at this thread and I can’t seem to find “trans activists attacking the entire concept of decentralized github alternatives”, or doing so because “[decentralized alternatives] would make it harder for github to enforce a code of conduct”.

                                                    I saw a few people expressing their worry and disappointment, how they felt unwelcome in some spaces because of petty, discriminatory asshats, and how an article starting with “controversy resulting from GitHub censoring” - listing events often described as “those damned S-J-Ws want to destroy open source” - might be read as endorsing alternative spaces as free from censorship and, by extension, free from “SJWs” and “political correctness drama”.

                                                    As one example of a censorship-free, “SJW”-free spaces is Voat, you can see how it might be concerning to some.

                                                    There wasn’t much else here, which is both disappointing and funny. Why, “those spaces cannot be censored and might become a free-for-all” sounds more like an endorsement than an attack.

                                                    We’re all the Westboro Baptist Church in someone’s eyes,

                                                    Yes, yes, yes. Trivially true, and yet irrelevant.

                                                    We are all the Westboro Baptist Church in someone’s eyes. We are all monsters in someone’s eyes. We can also avoid trite platitudes such as this one.

                                                    1.  

                                                      Where, exactly, are they doing that?

                                                      https://lobste.rs/s/s0s8fu/why_not_github#c_g1rymt

                                                      1.  

                                                        The only argument against decentralization I can see there is this mild statement:

                                                        decentralization can be harmful in unexpected ways (see: all of Bitcoin)

                                                        And I really don’t see how you determined that @rebecca is a “trana*(sic!)* activist”. I certainly could not from her About page.

                                              4. 5

                                                It matters when you are a gender/sexual minority and want to avoid being shat on for factors beyond your control

                                                1. 7

                                                  It is easy to people in the majority to say “it’s not that painful to be in the minority”. Until they face another situation, for which they belong to the minority and suddenly change the reaction toward “it’s a nightmare everyday”.

                                                  We all are in one majority for some topic. We all are in a minority for some other topic.

                                                  If one hesitate between “Do I include the minority and be frown upon by the majority” and “Do I exclude the minority and be safe with the majority”, then it’s all about asking to ourselves: “in that other case in which I am the minority, would I appreciate to be included by the majority?”.

                                                  Then the choice becomes obvious to me: treat the 10% minority as a first class citizen and fully give it the 10% it deserves without reserve.

                                                  1. 1

                                                    What you pulled off at Alpine Linux was definitely under your control. Its not because your sexual preference or gender identity, its your behavior. I’m wary of you because i know, when we two will ever have an argument, or a disagreement (even on just a technical detail), you’ll throw a tantrum and it will be my fault because i’m presumably a “white straight cis-male” and you are the one oppressed.

                                                    You, Madam, need a dose of self-reflection.

                                              5. -6

                                                I’m left-handed. For now, this is just a simple fact which to me is totally natural while others wonder how I am able to do anything at all without fumbling all the time given that they belong to the right-handed majority. When people in that group describe my particularity they use terms like ‘south-paw’. There is a Wikipedia page on bias against left-handedness. So far, so good, I’m left-handed like Kermit the frog is green-hued and have yet to make a song about the fact, unlike Kermit.

                                                Give it a few years on the current course and my left-handedness will have turned into an identity marker, yet another artificial boundary separating my clave from all the others. Give it a few more years and there will be left-handed people clamouring for the removal of right-handers who have been caught using ‘derogatory’ terms like ‘south-paw’.

                                                I do not relish this prospect as I do not feel the need for others to ‘take up my cause’ in calling for the removal of people just because they think I’m an oddity. Let them think whatever they want, as long as they’re not out in the streets calling for pogroms against left-handed people their words won’t hurt me. I would certainly not want them to be banned from services I use because that would only lead to more balkanisation.

                                                Ignore the loud-mouths, their liberty ends where yours begins. The same is true vice-versa, you can not force them to accept your particularity just as they can not force you to accept theirs.

                                                1. 24

                                                  To be clear, there are, in fact, people out in the streets calling for pogroms against lgbt folk, and in many countries they have state backing.

                                                  1. 26

                                                    YIKES. This colour doesn’t look good on you.

                                                    You have not been removed from your family because of your handedness. You have not been fired because of your handedness. You have not been threatened with death because of your handedness. You are not vilified daily because of your handedness. You do not have your personhood disconfirmed because of your handedness. You do not have your sanity questioned because of your handedness. You are not at extremely heightened risk for suicide due to societal and familial rejection due to handedness. etc etc etc etc etc etc

                                                    as long as they’re not out in the streets calling for pogroms against left-handed people their words won’t hurt me

                                                    And yet this is tantamount to what we’re talking about.

                                                    Ignore the loud-mouths, their liberty ends where yours begins.

                                                    Would that it were so. :/

                                                    1. 17

                                                      you could have used the minutes spent to write this extremely in-bad-faith argument to do literally anything else

                                                      1. 0

                                                        In what way do you deem my argument to be in bad faith? It is not. The balkanisation of society into identity groups is a threat which needs to be countered or we’ll all end up behind walls glaring at each other.

                                                2. 5

                                                  For other readers’ info: https://help.github.com/en/articles/github-and-trade-controls

                                                  GitHub themselves don’t really have much choice in the matter, but if you live outside the US, it makes perfect sense wanting to host in your same country, so that you don’t have to deal with two different sets of laws at once.

                                                  1. 2

                                                    Author here. Added this link to an update to the article. Thanks.

                                                  2. 2

                                                    Interesting, I hadn’t heard about that. Looking into it, though, I do agree it’s a much bigger concern than those mentioned in the article.

                                                    1. 2

                                                      barring users to access their site based on their location.

                                                      They and everyone else have to follow the law.

                                                      1. 4

                                                        While that is true not everyone using GitHub lives in the US. So in many cases it really is using GitHub rather than being more independent causing that particular issue.

                                                        Of course that applies to similar central hosting platforms and other countries and therefor laws as well. I’d also not read that as anti-GitHub in particular, but to a large part anti-centralization.

                                                    1. 2

                                                      It is also a bit pedantic to disagree with the FSF, on the grounds that they are too pedantic.

                                                      1. 2

                                                        Can you expand on this comment? I don’t see the connection.

                                                      1. 1

                                                        Animats’ comment hits on an important advantage of Go that Rust will take a while to achieve.

                                                        1. 2

                                                          It’s also untrue, though; why did Google make a new HTTP/2 implementation in their Go gRPC libraries when, y’know, there’s the Go stdlib? (These days there’s a function you can call that lets you use the Go-native one, but “Performance and features may vary between the two paths. ServeHTTP does not support some gRPC features available through grpc-go’s HTTP/2 server, and it is currently EXPERIMENTAL and subject to change.”)

                                                          What Google hands out as open source is often inferior to what they use internally.

                                                          1. 1

                                                            Oh yeah, I forgot they do that. Then, just whatever parts they were using heavily and needed to work right.

                                                        1. 45

                                                          RustTL;DR: It’s a very impressive language with a clear vision and priorities, but the user interface needs a lot of work. Also, the collection library is much better than Scala’s.

                                                          • Generics with <>. It’s 2017 by now, we know it’s a bad idea. One of the reasons why the language suffers from abominations like the “turbofish” operator ::<>.

                                                          • Strings don’t offer indexing, because it doesn’t make sense for UTF-8. Correct! But Strings offer slicing … WAT?

                                                          • Misuse of [] for indexed access. Having both () and [] doing roughly the same thing, especially since [] can be used to do arbitrary things, doesn’t make sense. Pick one, use the other for generics.

                                                          • Inconsistent naming. str and String, Path and PathBuf etc.

                                                          • :: vs. . is kind of unnecessary.

                                                          • Mandatory semicola, but with some exceptions in arbitrary places: struct Foo; vs. struct Foo {}

                                                          • Arbitrary abbreviations all over the place. It’s 2017, your computer won’t run out of memory just because your compiler’s symbol table stores Buffer instead of Buf.

                                                          • Can someone decide on a casing rule for types, please, instead of mixing lowercase and uppercase names? Some types being “primitive” is an incredibly poor excuse.

                                                          • Also, having both CamelCase and methods_with_underscores?

                                                          • Library stutter: std::option::Option, std::result::Result, std::default::Default

                                                          • iter(), iter_mut(), into_iter() … decide prefix or postfix style and stick with it.

                                                          • Coercions do too many things. For instance, they are the default way to convert i32 to i64, instead of just using methods.

                                                          • Also, converting numbers is still broken. For instance, f32 to i32 might result in either an undefined value or undefined behavior. (Forgotten which one it is.)

                                                          • Bitcasting integers to floats is unsafe, because the bits could be a signaling NaN, causing the CPU to raise an FP exception if not disabled.

                                                          • Forward and backward annotations: #[foo] struct Foo {} vs struct Foo { #![foo] }. Also /// for normal documentation, //! for module level documentation. Documentation already uses Markdown, so maybe just let people drop a markdown file in the module dir? That would make documentation much more accessible when browsing through GitHub repositories.

                                                          • Also, documentation can cause compiler errors … that’s especially fun if you just commented a piece of code for testing/prototyping.

                                                          • Type alias misuse: In e.g. io crate: type Result<T> = Result<T, io::Error> … just call it IoResult.

                                                          • Macros are not very good. They are over-used due to the fact that Rust lacks varargs and abused due to the fact that they require special syntax at call-site (some_macro!()).

                                                          • Pattern matching in macros is also weird. x binds some match to a name in “normal” pattern matching, but matches on a literal “x” in “macro pattern matching”.

                                                          • println! and format! are very disappointing given that they use macros.

                                                          • Compiler errors … ugh. So many things. Pet peeve: “Compilation failed due to 2 errors” … 87 compiler errors printed before that.

                                                          1. 7
                                                            • Library stutter: std::option::Option, std::result::Result, std::default::Default
                                                            • Type alias misuse: In e.g. io crate: type Result<T> = Result<T, io::Error> … just call it IoResult.

                                                            How ya gonna square that circle?

                                                            1. 2

                                                              I think std::io::IoResult would be fine – it would solve the issue of having vastly different Results flying around, while not having single-use namespaces that are only used by one type.

                                                              1. 1

                                                                The general pattern is to import Io instead. When doing this, IoResult would be jarring.

                                                                use std::io;
                                                                
                                                                fn my_fun() -> io::Result<T> {
                                                                
                                                                }
                                                                
                                                            2. 13

                                                              It’s 2017,

                                                              I have some news for you, @soc.

                                                              1. 3

                                                                Haha, good catch. Now you see how old this list is. :-)

                                                                The only thing I got to delete since then was “get rid of extern crate”.

                                                              2. 3

                                                                What’s your preferred alternative to generics with <>?

                                                                1. 6

                                                                  [], as it was in Rust before it was changed for “familiarity”.

                                                                  Unlike <>, [] has a track of not being horribly broken in every language that tried to use it.

                                                                  1. 5

                                                                    How is <> broken?

                                                                    1. 16

                                                                      It complicates parsing due to shift and comparison operators.

                                                                      1. 2

                                                                        Ah, yeah, that makes sense.

                                                                      2. 19

                                                                        Pretty much no language has ever managed to parse <> without making the language worse. The flaws are inherent in its design, as a compiler author you can only pick where you place the badness; either:

                                                                        • Add additional syntax to disambiguate (like ::<> vs. <> in Rust).
                                                                        • Have weird syntax to disambiguate (like instance.<Foo>method(arg1, arg2) in Java).
                                                                        • Read a potentially unlimited amount of tokens during parsing, then go back and fix the parse tree (like in C#).
                                                                        • etc.

                                                                        In comparison, here are the issues with using [] for generics:

                                                                        • None.

                                                                        For newly created languages (unlike C++, which had to shoehorn templates/generics into the existing C syntax) it’s a completely unnecessary, self-inflicted wound to use <> for generics.

                                                                        More words here: Why is [] better than <> for generic types?

                                                                        1. 2

                                                                          Those are good reasons to not use <>, but as a Haskeller I personally find either style somewhat noisy. I’d rather just write something like Option Int. Parentheses can be used for grouping if needed, just like with ordinary expressions.

                                                                          1. 2

                                                                            Haskell feels like it is in the same category as D, they both just kicked the can a tiny bit further down the road:

                                                                            Both need (), except for a limited special-case.

                                                                            1. -1

                                                                              I don’t see how Haskell kicked the can down the road. The unit type is useful in any language. Rust has a unit type () just like Haskell. Scala has it too.

                                                                              I’m not sure what “special case” you are referring to.

                                                                              1. 2

                                                                                The fact that you still need () for grouping types in generics as soon as you leave the realm of toy examples – just as it is in D.

                                                                                (Not sure what’s the comment on the unit type is about…)

                                                                                1. 4

                                                                                  Ah, I understand what you’re saying now. But that’s already true for expressions at the value level in most programming languages, so personally I find it cleaner to use the same grouping mechanism for types (which are also a form of expressions). This is especially applicable in dependently typed languages where terms and types are actually part of the same language and can be freely mixed.

                                                                                  However, I can also appreciate your argument for languages with a clear syntactic distinction between value expressions and type expressions.

                                                                    2. 1

                                                                      D’s use of !() works pretty well. It emphasizes that compile-time parameters aren’t all that crazy different than ordinary runtime parameters.

                                                                      1. 1

                                                                        I prefer my type arguments to be cleanly separated from value arguments (languages that fuse them excepted).

                                                                        I find D’s approach slightly ugly, especially the special-cases added to it.

                                                                        1. 1

                                                                          I prefer my type arguments to be cleanly separated from value arguments

                                                                          Well, in D they aren’t type vs value arguments, since you can pass values (and symbol aliases) as compile-time arguments as well. That’s part of why I like it using such similar syntax, since it isn’t as restricted as typical type generics.

                                                                          I find D’s approach slightly ugly, especially the special-cases added to it.

                                                                          The one special case is you can exclude the parenthesis for a single-token CT argument list and actually I thought I’d hate it when it was first proposed and I voted against it… but now that it is there and I used it, I actually like it a lot.

                                                                          Sure does lead to a lot first timer questions on the help forums though… it certainly isn’t like any other language I know of.

                                                                    3. 2

                                                                      Also, converting numbers is still broken. For instance, f32 to i32 might result in either an undefined value or undefined behavior. (Forgotten which one it is.)

                                                                      Yeah, I kind of feel the same way. Even with try_from() dealing with number conversions is a pain in Rust.

                                                                      1. 1

                                                                        You saved me a lot of typing. 100% agree.

                                                                        1. 1

                                                                          Thanks! I’d love to know the reason why someone else voted it down as “troll” – not because I’m salty, but because I’m genuinely interested.

                                                                        2. 1

                                                                          2 pains I have with Rust right now:

                                                                          • I would like to be able to connect to a database (Teradata specifically)
                                                                          • I want to launch a subprocess with other than the default 3 stdio descriptors (e.g. exec $CMD $FD<>$PIPE in sh)
                                                                          1. 2

                                                                            I know it’s technically unsafe and that might preclude it from your use, but does CommandExt::pre_exec not fit your bill?

                                                                            1. 1

                                                                              That could work. I’m still new to Rust so I haven’t fully explored the stdlib.

                                                                          2. 1

                                                                            Ahahaha, this is a great list. I’m curious about a couple things though, since you’ve obviously put a lot of thought into it…

                                                                            Bitcasting integers to floats is unsafe, because the bits could be a signaling NaN, causing the CPU to raise an FP exception if not disabled.

                                                                            The docs for f32::from_bits() and such talk about precisely this, but I considering the misdesign of signaling NaN’s really don’t see how it could possibly be made better. Any ideas?

                                                                            …They are over-used due to the fact that Rust lacks varargs…

                                                                            What little experience I have with programming language design makes me feel like varargs are a hard problem to deal with in a type-safe language, at least if you want to allow different types for the args (instead of, say, forcing them all to be what Rust would call &dyn Display or something). Do you know of any language which does it Right?

                                                                            1. 1

                                                                              The docs for f32::from_bits() and such talk about precisely this, but I considering the misdesign of signaling NaN’s really don’t see how it could possibly be made better. Any ideas?

                                                                              Rust could have disabled the trapping of signaling NaN’s on start up, but I think Rust fell into the same design mistake of C:

                                                                              Scared of making the use-case of the 0.01% (people who want signaling NaN’s to trap) harder to achieve, they made life worse for the 99.99%.

                                                                              varargs are a hard problem to deal …

                                                                              Agreed, it’s safe to say that language designers hate them. :-)

                                                                              … at least if you want to allow different types for the args

                                                                              I think this is only partially the reason. You can still have only same-typed varargs at runtime, but allow recovering the individual types of the arguments in macro calls – which is exactly the case for format! and friends.

                                                                              Do you know of any language which does it Right?

                                                                              I think in the case of format strings, focusing on varargs is the wrong approach. If you imagine how you want an ideal API to look like, you probably want to interpolate things directly inside the string, never having to go through the indirection of some vararg method.

                                                                              Instead of having the formatting parameters in one place, and the to-be-interpolated values in a different one, like in …

                                                                              let carl = "Carl"
                                                                              let num = 1.234567;
                                                                              format!("{}'s number is {:.*}, rounded a bit", carl, 2, num)
                                                                              // -> "Carl's num is 1.23, rounded a bit"
                                                                              

                                                                              … wouldn’t it be much nicer to write (this is Scala):

                                                                              val carl = "Carl"
                                                                              val num = 1.234567
                                                                              f"$carl's num is $num%.2f, rounded a bit"
                                                                              // -> "Carl's num is 1.23, rounded a bit"
                                                                              
                                                                              1. 1

                                                                                Julia has nice string interpolation too. I honestly don’t understand why more programming languages don’t have it. Does everyone just forget how useful it is in bash when they come to design their language?

                                                                          1. 16

                                                                            C++: Gives me so much power to hang myself and decorate my body beautifully. I love and hate you so much.

                                                                            Ruby: You were the chosen successor to Smalltalk, but never adapted the VM and the powerful GUI runtime editor. Instead, you eloped and married Rails.

                                                                            Rust: So elegant, until I get to an inextricable line, and with the compiler fighting me, that line is as painful and takes about as long as giving birth.

                                                                            1. 4

                                                                              Rust: So elegant, until I get to an inextricable line, and with the compiler fighting me, that line is as painful and takes about as long as giving birth.

                                                                              I feel this in my soul. You can tell the compiler is trying its hardest to tell you what you’re doing wrong, but when you have a lifetime error or an error with a trait object and you’re just not getting it, and you wish there was a “well screw this” button you could press to at least get the damn thing to compile… sigh. The things we do for love.

                                                                              1. 3

                                                                                and you wish there was a “well screw this” button you could press to at least get the damn thing to compile

                                                                                There is: you fall back to reference counting for just that. Then, you get its safety and performance benefits everywhere that borrow checked with just that part costing you. Then, you can figure it out later if it’s worth it.

                                                                                1. 4

                                                                                  99% of my horrible issues revolve around manual lifetime annotations. For some reason, I tend to get along with the borrow checker the vast majority of the time.

                                                                                  e.g. this line using clap was exceptionally painful:

                                                                                  type HelpFn<'a> = fn(App<'a, 'a>) -> App<'a, 'a>;

                                                                                  1. 5

                                                                                    That looks horrific. I mean, Lisp at least looks more consistent even as it horrifies some newcomers.

                                                                                    1. 5

                                                                                      At some point one of my projects acquired a struct member with the following type:

                                                                                      Option<&'subj mut &'c mut dyn FnMut(&[u8]) -> Option<(Vec<u8>, Vec<u8>)>>
                                                                                      

                                                                                      I don’t know how it happened or when, but there it is.

                                                                                      1. 3

                                                                                        I just realize something. This language might overtake Java in lock-in and job security one day. Just with a smaller number of companies.

                                                                                        1. 1

                                                                                          Yikes. I’m guessing the 'subj lifetime must be guaranteed to outlive the 'c lifetime?

                                                                                          1. 3

                                                                                            Indeed – the structure it’s defined in is struct Subject<'a: 'd, 'r, 'o, 'd, 'i, 'c: 'subj, 'subj>. Don’t look at me like I meant for this to happen.

                                                                                      2. 3

                                                                                        I’ve tried to learn Rust, and lifetimes are where I ran into a brick wall and gave up. The ownership/borrowing concepts and the borrow checker wasn’t a problem.

                                                                                  2. 2

                                                                                    Ruby: You were the chosen successor to Smalltalk, but never adapted the VM and the powerful GUI runtime editor. Instead, you eloped and married Rails.

                                                                                    Sooo much good snark potential wasted there! You left out the usual rant about glyphs and the perl syntactic sugar!

                                                                                    1. 3

                                                                                      Glyphs? You mean sigils? I don’t have a problem with those because they indicate scope and not types (like last time I used Perl was years ago), which is useful for making methods with same name as instance variables (@). I’d agree with complaints about the obliquely named global variables like $$. I actually prefer Ruby over Python when dealing with lots of regular expressions because it’s a language built-in.

                                                                                      The VM + GUI runtime editor (like Smalltalk had) I mention I feel is a massive missed opportunity because of Ruby’s incredible runtime introspection, metaprogramming capabilities, and dynamic reload. It would have helped better distinguish itself from Python with these strengths, but I feel like the train is passed on that though.

                                                                                      1. 1

                                                                                        The VM + GUI runtime editor (like Smalltalk had) I mention I feel is a massive missed opportunity because of Ruby’s incredible runtime introspection, metaprogramming capabilities, and dynamic reload. It would have helped better distinguish itself from Python with these strengths, but I feel like the train is passed on that though.

                                                                                        I agree. Even things like RubyMine don’t go nearly far enough. You could still build one! Although tbh ruby has the same problem Python does in that there aren’t very many superb cross platform GUI environments for it, so you’d need to design one of those too (Not that every Smalltalk implementation didn’t do that too :)

                                                                                  1. 1

                                                                                    fish to turn every git alias into a shell alias:

                                                                                    git config --list | perl -lne '/^alias[.]([^=]+)/ and $1 ne "alias" and print "alias $1=\"git\\ $1\""' | source
                                                                                    

                                                                                    bash:

                                                                                    eval "$(git config --list | perl -lne '/^alias[.]([^=]+)/ and $1 ne "alias" and print "alias $1=git\\ $1"')"
                                                                                    

                                                                                    My history just looks like this:

                                                                                    s
                                                                                    h
                                                                                    tf
                                                                                    cx
                                                                                    a
                                                                                    vim app/controllers/syntax_highlighting_controller_methods.rb
                                                                                    tx origin
                                                                                    c
                                                                                    cb kiv-enable-darkship-globally
                                                                                    d
                                                                                    ,
                                                                                    

                                                                                    It looks arcane but having git be so near at hand makes it very easy to move fast.

                                                                                    1. 3

                                                                                      I love continuing to watch your work over the years :)

                                                                                      Always good to see more stdlibs containing the parser for the language itself!

                                                                                      1. 2

                                                                                        Here’s what I know — the term cloud is very misleading. it makes you think all my stuff is up there in the atmosphere, floating around, being protected by Jesus. In reality, when you send all your digital files to the cloud whether it’s your photos on your phone your emails music, whatever, … you’re really just sending stuff to someone else’s much bigger computer.

                                                                                        It’s mostly flippant, but there’s actually some fun insights.

                                                                                        1. 8

                                                                                          Does this really need to be on a site about technology? If I wrote “What can a software developer do about motorcycle safety?”, an article which explicitly opens with “this essay isn’t about technology”, would that be a good fit for lobsters?

                                                                                          1. 11

                                                                                            Motorcycle safety affects motorcyclists. Climate change affects everyone, terminally.

                                                                                            1. 4

                                                                                              “What can a software developer do about medicine”, then.

                                                                                              (to be clear: I disagree with Wilhelm - IMO an article specifically targeting software developers which contains actionable advice is on-topic for the site - but I also think you’re misrepresenting their point).

                                                                                              1. 3

                                                                                                Medicine is a professional field that is difficult to impact without expertise. We are not facing extinction-level events due to (in)action in the field of medicine, so leaving the world’s best and brightest to continue their research is probably optimal. Climate change is a process everyone contributes to, in the small by our direct actions, and in the large by the people we choose to represent ourselves in governments.

                                                                                                There should be a “What can an X do about climate change?”, for all values of X (including “software developer”), because it’s precisely by people not knowing how they, a lowly X, could possibly do to change the course of climate change that we’ll end up destroying life as we know it. This doesn’t apply to motorcycle safety, medicine, etc.

                                                                                                1. 2

                                                                                                  Let’s try yet another comparison. First aid saves life. Everyone can learn it, and the more people do the more deaths will be averted. Nevertheless, is this website the right place for an article about cardiac massage?

                                                                                                  I am not saying I don’t want to see articles like that on lobste.rs though. Just that it is a valid question.

                                                                                                  1. 1

                                                                                                    First aid does not prevent an extinction-level event, so I fail to see how it is comparable…

                                                                                              2. 2

                                                                                                That’s clearly not my point. Lobsters is a computing-focused community centered around link aggregation and discussion, launched on July 3rd, 2012 (from the about page). What is computing-focused in this political article about climate change, which opens with “this essay isn’t about technology”? I don’t have any against fighting climate change, but this is so massively off-topic, so I ask: Is this a good fit for lobste.rs?

                                                                                                1. 3

                                                                                                  Because most people here are software developers or have something to software development, and this article has to do with software developers? Just because the solution isn’t technical, doesn’t mean the question doesn’t have to be asked from and for our perspective.

                                                                                                  1. 3

                                                                                                    This article has practically nothing to do with software developers. You being a software developer changes nothing, remove any mention of software and the content of the article does not change in meaning or value.

                                                                                                  2. 1

                                                                                                    You’re right — if the article stopped halfway, I’d say it was off-topic. But once you hit the heading “It’s a good to be a software developer” that changes — it describes circumstances that apply to software developers, and reframes the question from “what do we do about climate change” to “what are software developers enabled to do about climate change that don’t apply generally to the broader population”. And I think that’s valuable to have!

                                                                                                    I know it’s a small part of the article, and I don’t think you’re wrong for questioning whether it belongs here, or even that you’re 100% wrong for saying it doesn’t, but I do believe that on balance it does.

                                                                                                    (Indeed, I think it’s really important to have the discussion of whether it belongs because we all want lobste.rs to keep being lobste.rs and not turn into a facsimile of HN/reddit/digg. The +49/-21 off-topic this article gets right now represents there’s maybe even a policy decision that should be made.)

                                                                                              1. 6

                                                                                                A month ago I switched to a remote job after working at a busy and social company for three years. There are many benefits in working remotely, but by far the most important drawback is that not having other people around for most of every working day is simply incredibly lonely.

                                                                                                “Go out more” as advertised in this article seems to miss this point. Meeting people out of work hours doesn’t solve the unnatural state during the default day. If you see a chimpanzee spend most of his days in an isolated part of the forest, something is probably wrong with it. I think the same holds for humans.

                                                                                                I would say that the only really healthy approach to remote work is to rent a space with a number of other remote workers (not necessarily from the same company) that you can get to know on a personal level. Which is what I’m lucky enough to be doing now.

                                                                                                1. 21

                                                                                                  Comments like this always remind me of something I read a while ago. Someone said: “Introverts think extroverts are different. Extroverts think introverts are broken.”

                                                                                                  Most people I met are like you, but some of us aren’t. And I’ve been working mostly remotely with short interludes for more than a decade without ever experiencing loneliness.

                                                                                                  Totally agree with you that after work socializing is a poor substitute for those who need this social contact.

                                                                                                  1. 6

                                                                                                    I’m the same way. I’ve never been lonely, and I’ve worked remote for almost 4 years now. If anything, I probably know my coworkers better because there’s a bit more incentive to talk on slack since we are (mostly) all remote.

                                                                                                    1. 4

                                                                                                      I consider myself mostly an introvert. Still, being around people, even without interacting with them, almost seems like a necessity of life. I feel that especially for introverts, who are less likely to spontaneously catch up with people outside of work, the company of people during work is quite essential.

                                                                                                      Perhaps it is just a matter of getting used to a new situation, but so far it strikes me as odd that in discussions about remote work, this issue is usually brushed off with “get out more often!”.

                                                                                                      1. 6

                                                                                                        I feel similarly; I have always considered myself an introvert, and after 8 years of working in offices, I was really happy to accept a remote position.

                                                                                                        After two and a half years I started paying for a permanent desk in a coworking space in the city, because sitting in my home office in the suburbs all day was driving me crazy. I’d go out for a walk every day, usually have lunch out just to be out and about more, but it was still not enough. It’s been a year since I started working in the coworking space and every now and then I’ll have a reason to stay home (waiting for a package or getting something at home fixed), and it reminds me how lonely it is.

                                                                                                        (I’m glad not everyone has this experience! But I don’t think the divide is as clean cut as extrovert/introvert.)

                                                                                                        (edit: reading @technomancy’s comment below makes me realise the part where I’m working remotely across timezones — and indeed, in an “unpopular” timezone (UTC+10/11) — probably makes the biggest difference of all. I think it’d be much different if my team was in my timezone.)

                                                                                                    2. 7

                                                                                                      Why aren’t you interacting with your team? I’m on slack and have multiple video calls with teammates per day. It’s actually slightly better than being in the office, because the office creates the sense that if someone is not there (but working elsewhere) they’re inaccessible.

                                                                                                      1. 3

                                                                                                        I take issue with the assumption that multiple video calls a day is an appropriate level of interaction for all remote teams. It may work if you’re all working collaboratively on a small set of projects, but that definitely isn’t a given, and without the need for that level of collaboration and communication, it’d be hard to justify interrupting the work of the rest of your team to satisfy your personal social requirements.

                                                                                                        1. 2

                                                                                                          Sometimes that’s not possible. I remoted from China for about three months when I was visiting my partner out there. The team was distributed in Europe and the Americas. The language barrier and the huge timezone difference were very isolating. Definitely started to go a bit crazy spending so much time alone, and I’m definitely on the more introverted side.

                                                                                                          Now we’re in MXCD and it’s significantly better. Loads of (10+) co-working spaces within walking distance, whereas Guangzhou only had 2-3, with about an hour commute each way, and people are awake/online, so lots more slack based interaction.

                                                                                                          We also have an apartment dog, which I would recommend to anyone if you’re animal inclined. It’s really nice having a doggy friend when working from the apt, and she provides a good incentive to take regular breaks instead of powering through the day.

                                                                                                          1. 9

                                                                                                            I remoted from China for about three months when I was visiting my partner out there. The team was distributed in Europe and the Americas.

                                                                                                            Working with a team across a time zone difference is usually done remotely, but it’s a vastly different thing from working remotely with people in the same or adjacent time zones that it’s misleading to draw conclusions about one from experience in the other.

                                                                                                            1. 2

                                                                                                              There are multiple additive factors. Radical timezone differences, difficulty communicating with locals, and being physically isolated (working from a home office) all significantly contribute to a feeling of general isolation. It’s not just about being physically separate from your team.

                                                                                                              The move from Guangzhou to Mexico City highlighted for me how each of those factors contributed to that feeling of loneliness, and how, as each one of them was addressed, remote work needn’t be so isolating.

                                                                                                              My experience mirrors @kivikakk, and @thev in that I’ve found co-working spaces can help significantly. They help not just with the feeling of physical isolation, but because they tend to attract people in a similar industry, and if you are overseas, because they tend to attract a higher percentage of expats who generally have similar in-country experiences, and who may speak your native language.

                                                                                                        2. 2

                                                                                                          Speak for yourself, pal. I work for a mostly-remote company, and we’re not all basement-dwelling losers, and as far as I know nobody’s secretly dying of loneliness. Back when I was commuting to a cube farm, I wasn’t there to hang out with friends, I was there to pay the rent.

                                                                                                          1. 1

                                                                                                            My friends started a company together and they’re not all in one place so they spend their time on a Discord call together, which I always thought was kind of clever.

                                                                                                            1. 1

                                                                                                              I love spending days at home alone. I feel much more peaceful and balanced. Be careful not to generalize from your own experience.

                                                                                                            1. 5

                                                                                                              Java and XML everywhere? When was this written? 2006?

                                                                                                              1. 2

                                                                                                                It’s probably safe to assume it was the last time the author used Java. This essay is just tired clichés.

                                                                                                              1. 2

                                                                                                                I guess he’s right, but I’m not sure why this is so terrible. Except for points 5 and 6, his list applies to my simple ballistic calculator as well. I mean isn’t one of the great things about ElasticSearch is that is so easy download, setup, and cluster?

                                                                                                                1. 4

                                                                                                                  I felt like everything about this discussion was confusing, but the author clarified he thought it was a positive characterization: https://news.ycombinator.com/item?id=20913261.

                                                                                                                  1. 3

                                                                                                                    I don’t get the read that it’s terrible/bad/negative at all, reading these tweets. Maybe people just anticipate that calling something monolithic is automatically bad?

                                                                                                                    1. 4

                                                                                                                      Yeah, if your feeds/reading/community has a lot of the consulting world in it, “Monolithic” means “really bad, just terrible, and you should spend thousands of consultant hours replacing it with something that requires four times as many staff to support”.

                                                                                                                  1. 4

                                                                                                                    Any lobsters planning on putting a Librem 5 in their claws? Would love to hear more about it.

                                                                                                                    1. 9

                                                                                                                      I backed it, but I’ve been continually thinking about unbacking it. As much as I want to like what they’re doing, there’s a lot I’ve not been impressed with (e.g. poor release communication, their handling of the librem.one service); I’ve been on the fence. Even after reading this, I have no idea what year my device will ship in. It reads like they’re slipping deadlines again, but don’t want to come out and say that. We’ll see, I guess.

                                                                                                                      1. 2

                                                                                                                        Same on both counts. I also had a poor experience with a Librem notebook that I ended up returning; that soured me on their products in general.

                                                                                                                      2. 11

                                                                                                                        Ordered mine… looking forward to it.

                                                                                                                        I guess I’m way too literal a person. I read licences. I read words and expect them to mean something.

                                                                                                                        People have been trained if they see an “I Accept” button, you click it and carry on.

                                                                                                                        It causes me mental anguish every damn time.

                                                                                                                        I’m just not the sort of person who can blindly do that.

                                                                                                                        I loathe “I Accept” buttons.

                                                                                                                        I think a lot of people have a mindset “Purism is free software, it should be cheaper and higher spec’d hardware”,

                                                                                                                        They forget usually phones are heavily subsidized by the network providers so they can lock you in and load you up with shitware and spyware and strap you down with EULA’s.

                                                                                                                        Yes, the privacy part will be a very nice to have. I want that.

                                                                                                                        But not nearly as much as I don’t want the lock in and shitware and spyware and EULA’s.

                                                                                                                        Not nearly as much as I want to be able to tinker and improve and feed my improvements into the ecosystem.

                                                                                                                        Not nearly as much as I want the acceptance and expectation from the people I pay my money to that…

                                                                                                                        I AM gROOT!

                                                                                                                        1. 3

                                                                                                                          o/ here!

                                                                                                                          Backed their crowdfunder back … when? 2017? I plan on redeeming one from one of the later batches, so the review will takes some time still. Until then, my Nexus 5 will do fine.

                                                                                                                          1. 1

                                                                                                                            o7 to you who still uses the Nexus 5. I used mine until late 2017 when I picked up a Pixel. I’m on a Pixel 3 now and can’t imagine using a N5 still.

                                                                                                                            1. 1

                                                                                                                              I’m still using mine. It, uh… works?

                                                                                                                              I mean, it’s a mobile device, so I don’t expect it to be pleasant, but once I got ublock origin installed it became pretty tolerable.

                                                                                                                          2. 1

                                                                                                                            I pre-ordered one way back when they had the crowdfund. I find this tiered release rather confusing, TBH. But it’s good that they’re finally starting to ship!

                                                                                                                            1. 1

                                                                                                                              I pre-ordered a few months ago. I wasn’t sure I’d use it enough to justify the cost (I seriously doubt it’ll cover everything I want in a daily driver device) but I decided it was worth it, because it’s something I want to see exist, so given I can afford it, I should support it. The Google/Apple mobile duopoly we currently have isn’t a great situation, so more competition (even in a very niche form) is welcome. I’m still sad about the Palm Pre, to be honest!

                                                                                                                              However, this shipping announcement really rankled. Another 6-10 months to get a phone with a case that fits? I appreciate that they’re offering to bump people down the list, and I’ll definitely take them up on it if needed, but it feels quite disingenuous to claim “we hit our deadline” with this sort of half-baked rollout. I’m considering asking for a refund and judging the final result before committing to it now.

                                                                                                                              1. 1

                                                                                                                                I was moments away from putting down for one, but then I checked the specs on the modem and backed out. The set of supported LTE bands was spotty enough that I couldn’t see myself using this overseas or even on certain domestic carriers without constantly fighting reception issues.

                                                                                                                                1. 1

                                                                                                                                  I preordered one at the beginning of the year and just got an email from Librem with effectively the same information as this blog post, promising more info in a few weeks.

                                                                                                                                1. 2

                                                                                                                                  I wonder if they heard of the annotation code feature of sourcehut prior to/while implementing this feature.

                                                                                                                                  1. 3

                                                                                                                                    They’re unrelated; semantic has been in development for more than 4 years, and codenav has been a planned use for a long portion of that.

                                                                                                                                  1. 17

                                                                                                                                    Screenshots in the README would make this exciting!

                                                                                                                                    1. 4

                                                                                                                                      Okay, I just added ONE animated gif. I’ll add more as I go!

                                                                                                                                      1. 1

                                                                                                                                        Nice!! 👍

                                                                                                                                      2. 3

                                                                                                                                        you’re right! thanks for the feedback. I’ll try to get those up this week. :)

                                                                                                                                      1. 8

                                                                                                                                        Reminded of Rob Pike’s 2000 Systems Software Research is Irrelevant, not because they espouse the same viewpoint, but because both fill me with a sense of potential and wonder. Things could be so different if only we could lift ourselves out of our current quagmire of thought.

                                                                                                                                        1. 3

                                                                                                                                          Things could be so different if only we could lift ourselves out of our current quagmire of thought.

                                                                                                                                          To overcome the current thinking, you must design a programming environment that is small, extensible, and reasonably performant. It must speak to a different needs than most industrial languages, favoring individual power over institutional concerns.

                                                                                                                                          This has all been done before: Lisp, Smalltalk, Rebol, Forth, Wirth, etc. The only missing ingredient in most hacker’s minds is the imagination required to see that their computing substrate should not require millions of dollars of investment to operate.

                                                                                                                                          That, unfortunately, is a much harder problem to solve.

                                                                                                                                          1. 1

                                                                                                                                            The reason most of us are in a quagmire of thought is that it’s how we earn our paychecks. Improvements in software change just what it is that we’re working on in the quagmire. I call it the aggravation conservation law.

                                                                                                                                          1. 19

                                                                                                                                            The hardest part about e-mail setup is to not get flagged/rejected as spam. As for this:

                                                                                                                                            I would add a few things to that list but this highlights that some people are already “golden”, just by setting up proper rDNS, SPF and DKIM.

                                                                                                                                            I dispute that this is factually accurate. I have run my mail server since years from the same IP, and had all of these set up properly for years. outlook.com still rejected my mail outright, and gmail delivered my mail to the spam folder.

                                                                                                                                            One thing not mentioned here is signing up for so-called “feeback loops” at the big e-mail providers. But creating an account somewhere at some U.S. company I don’t have direct business with is something I simply don’t want to do.

                                                                                                                                            On a sidenote, I ever only had problems delivering to U.S.-based e-mail providers. Everybody else seems to not have had any problem with my mail.

                                                                                                                                            1. 6

                                                                                                                                              I also can confirm this point. I frequently have to resend critical emails, using my gmail account, twice if I dont hear back after a day or two. I’ve been slowly unrolling my own email server and going back to gmail full time solely because of this.

                                                                                                                                              I also get a lot more spam than my much more publicly listed gmail address. spamassassin and greylisting are much easier to beat than Google’s dedicated team of paid professionals.

                                                                                                                                              1. 5

                                                                                                                                                That’s precisely what they want you do to!

                                                                                                                                                I’m going to maintain that it’s an intentional, anti-competitive practice on Google’s side that demands legal scrutiny.

                                                                                                                                                1. 4

                                                                                                                                                  I’m not entirely sure it’s done with malice. Federated just means open to spam and abuse in many cases.

                                                                                                                                                  1. 7

                                                                                                                                                    I agree with the “cock-up before conspiracy” principle, but a sufficiently advances conspiracy is indistinguishable from a cock-up. ;)

                                                                                                                                                    1. Google is one of the largest email providers
                                                                                                                                                    2. Small independent servers/providers are disproprortionately affected
                                                                                                                                                    3. No other provider rejects so much legitimate email
                                                                                                                                                    4. Google often rejects them silently, without sending DMARC reports even if DMARC address is configured
                                                                                                                                                    5. It’s profitable for Google if people give up and switch to GMail
                                                                                                                                                    6. Google is known to engage in anti-competitive practices, such as making their services Chrome-only and lowering the search rating of websites that aren’t using AMP

                                                                                                                                                    In this situation, possibility that it’s intentional shouldn’t be rejected.

                                                                                                                                                    1. 2

                                                                                                                                                      In this situation, possibility that it’s intentional shouldn’t be rejected.

                                                                                                                                                      Especially if the incentives and past practices tied to incentives line up to make something likely to happen. You covered that in 5 and 6. I’m adding this for emphasis. You could add Google services on Android to that list, too, given how that plays out on stock vs phones focused on privacy or user freedom.

                                                                                                                                                2. 3

                                                                                                                                                  You can also use something like FastMail that’s cheap, respects your privacy, and I’m told is faster due to less surveillance tech in their apps.

                                                                                                                                                  1. 2

                                                                                                                                                    This is what I did after I was sick of disappearing mail from my nice setup with opensmtpd. I didn’t mind administering it, but email is useless if it’s unreliable.

                                                                                                                                                  2. 2

                                                                                                                                                    I also get a lot more spam than my much more publicly listed gmail address. spamassassin and greylisting are much easier to beat than Google’s dedicated team of paid professionals.

                                                                                                                                                    I suppose their approach is to better reject a legitimate mail than to allow a spam e-mail.

                                                                                                                                                    I’ve been slowly unrolling my own email server and going back to gmail full time solely because of this.

                                                                                                                                                    I found a counter-measure, as I mentioned in other threads on the topic. You can use an SMTP relay provider, i.e. relay all your outgoing e-mail through a third party’s SMTP server. You’d then have to pay for the SMTP relay provider, though.

                                                                                                                                                    1. 1

                                                                                                                                                      I also get a lot more spam than my much more publicly listed gmail address. spamassassin and greylisting are much easier to beat than Google’s dedicated team of paid professionals.

                                                                                                                                                      rspamd is very, very effective at killing spam in my experience. Give it a try if you haven’t already.

                                                                                                                                                    2. 1

                                                                                                                                                      I spent a number of years working for an Email Service Provider that shifted enough emails to saturate a gigabit connection; we always had issues with Gmail and Hotmail (sometimes but not often Yahoo, everyone else seemed to play along nicely) even with a direct hotline to the respective engineers at their ends.

                                                                                                                                                      Their systems would often purposfully drop incoming email with various error responses that often were seemingly random in nature and nothing to do with anything our end, sometimes they would accept email as deivered while silently dropping it.

                                                                                                                                                      Nowadays I use tutanota for simplicity, someone else can manage the maintenance :)

                                                                                                                                                    1. 16

                                                                                                                                                      GitLab have had CI/CD for ages and it works great, I get that git hub ci is also nice but it feels overly hyped? Does it bring something that other providers lack?

                                                                                                                                                      1. 12

                                                                                                                                                        I don’t get how OP can write such a post and not mention GitLab. Reminds me of Apple’s habit of adopting old tech (e.g. NFC) and calling it “innovative”.

                                                                                                                                                        1. 1

                                                                                                                                                          This reads a lot like a paid advertisement. Fail to consider alternatives that have existed for years? Check. Do not mention anything bad/negative? Check.

                                                                                                                                                        2. 5

                                                                                                                                                          Yeah, doesn’t look to me like there’s anything that Gitlab hasn’t been doing for a while already. I guess I can understand the hype though, a few months I set up Gitlab CI for one of the project I’m working on at my current job and to somebody who’s never done this before it looks cool and exciting.

                                                                                                                                                          1. 2

                                                                                                                                                            Something that surprised me was the ability to schedule workflows to run regularly – it eliminated a cronjob from a VPS and keeps the schedule with the code.

                                                                                                                                                            1. 5

                                                                                                                                                              You can do this in gitlab-ci too.

                                                                                                                                                              1. 1

                                                                                                                                                                Neat! I had no idea.