1. 6

    Rust was eliminated for lack of nested functions, which is entirely fair. Although I understand why it was not included in Rust (because of safety problems), I sometimes miss it.

    Clueless people on HN are arguing why closures are not sufficient. Well, because it’s a different feature.

    1. 6

      How is it different? Other than the lack of mutual exclusion enforcement in D, Rust closures seem the same to me. What am missing?

      1. -2

        A nested function can modify a variable in the enclosing scope. I don’t think Rust can do that.

        https://dlang.org/spec/function.html#nested

        Edit: Whoa, whoa, RESF, just one of you was enough.

        1. 2

          A closure can. A fn can’t.

          1. 2

            Rust can do that: http://play.rust-lang.org/?gist=cbedf929dc6ee3a45b8e5fa5787460a4&version=stable&mode=debug

            I wrote it a little differently than D’s example because of the borrow checker. It’s just an example after all, so I don’t feel that bad about it, but if you want to be a stickler to match D’s example more precisely, I’d probably just use interior mutability: http://play.rust-lang.org/?gist=16d817b9a819518d2c51436730b48e75&version=stable&mode=debug

            Go can also do this as well.

            1. 1

              Man, I really have a hard time reading Rust. Why did they have to pick such a weird syntax that looks like nothing else?

              1. 4

                Looks fine to me. I was never bothered by it, even when I first started, when the syntax was considerably noisier (before 1.0).

                But then again, I can’t remember the last time I ever bothered to complain about the syntax of anything. I realize people disagree with me, but as long as it’s reasonableish, I don’t think it matters very much.

                I also think discussions about syntax are mildly annoying, primarily because most of it probably isn’t going to change. Either you’re willing to live with it or you’re not.

                edited to soften my language

                1. 1

                  So it turns out that OCaml is a strong inspiration for Rust and that’s why it looks foreign to me. I didn’t know that.

                  1. 1

                    I don’t know OCaml either, but I have done a fair amount of work in Standard ML. That got me used to the tick marks used as lifetime parameters (type parameters in SML).

                    Types after names I think is in Go, which I’ve also done a fair amount of work in. I don’t know if Go originated that though. I’d guess not.

                    Most of the rest of the syntax is pretty standard IMO. Some things are too abbreviated for some folks’ taste, but I don’t really mind, because once you start writing code, those sorts of things just disappear. They are really only weird to virgin eyes. Some other oddities include using ! in macros and perhaps the different syntaxes for builtin pointer types, e.g., &mut T. (Probably defining macros themselves looks really strange too, but there are a relatively small amount of rules.)

                    Maybe the closure syntax is weird too, I don’t know. I think it’s similar to Ruby’s syntax? I definitely appreciate the terseness, as found in SML, Haskell and heck, even Javascript’s arrow functions, particularly when compared to Python’s or Lua’s longer syntax. Go’s is also mildly annoying because there’s no type inference, and you need to write out the return keyword. But, you don’t use closures as much in Go as you do in Rust as parameters to higher order functions (in my experience) because of the lack of generics. It’s for loops all the way down.

                    As long as it’s within a broad realm of reasonableness, syntax mostly just bleeds into the background for me.

                    It’s also worth mentioning that the use of interior mutability can lead to more noise in the code, especially in an example as terse as the one up-thread.

            2. 2

              You can if the closure borrows a reference to the value (which is necessarily how it works in D). Sharing a mutable reference requires an explicit Cell/RefCell/UnsafeCell, though. UnsafeCell would presumably have the same semantics as in D.

              1. 2

                Edit: Whoa, whoa, RESF, just one of you was enough.

                Instead of being a troll about it, you might consider that we all started responding around the same time and didn’t know others had already done so. (e.g., When I clicked post, Steve’s comment wasn’t on my page.)

                1. 1

                  Well, the RESF is pretty strong. I make one off-hand wrong comment and three of you, whether intentionally or not, jump on it. I practically never get that many comments in quick succession in Lobsters. I obviously struck a nerve by speaking a falsehood that must be corrected immediately.

                  I’m also slightly unhappy that we can’t ever talk about D without “I would like to interject for a moment, what you are referring to as D is in fact Rust or as I’ve taken to calling it, CRATE+Rust”.

                  1. 3

                    I called out the RESF effect here. Hit Twitter immediately haha. Ive been keeping an eye out since. Ive seen no evidence of an active RESF here or on HN. Just looks like a mainstream language with a lot of fans, areas of usefulness, and therefore lot of comments. I see more comments about Go than Rust.

                    And then there’s Pony. Now, that one comes across as having an evangelism team present. ;)

                    1. 1

                      that one comes across as having an evangelism team present

                      Where? :) I’d like to read more actual articles about Pony, but all I’ve seen so far are links to minor release announcements…

                      1. 3

                        It was an inside joke about the Pony fan club we have here on Lobsters. Sometimes I see more Pony articles than those for mainstream languages. They usually have plenty of detail to be interesting enough for the site. Only exceptions are release submissions. I’m against release submissions in general being on this site since people that care about that stuff will likely find the release anyway. Might as well use that slot for something that can teach us something or otherwise enjoyable.

                    2. 3

                      The OP mentions Rust, and you were talking about it too. Scanning the posts tagged with D, I see exactly one substantive discussion involving Rust other than this thread. So I’m going to have to call shenanigans.

                      Well, the RESF is pretty strong.

                      Just stop. If you have an issue, then address it head on instead passive aggressively trolling.

                      D and Rust are used to solve similar sets of problems. This invites comparisons, not just on the Rust side but on the D side too. A lot of people who haven’t used Rust get their claims mixed up or are just outright wrong. I see nothing bad about politely correcting them. That’s what I did for your comment. What do I get in exchange? Whining about syntax and some bullshit about being attacked by the RESF. Please. Give me a break.

                      Do you want to know why you don’t see me talking about D? Because I don’t know the language. I try not to talk about things that I don’t know about. And if I did, and I got something wrong, I’d hope someone would correct me, not just for me, but for anyone else who read what I said and got the wrong idea.

            1. 2

              I’d really like to write more D. In my particular case, I couldn’t have a GC in play (self-imposed memory constraints), but there’s a lot about it that’s attractive to me. I don’t have any desire to choose Go over it - power of the language is considerably greater from my limited experience.

              That said, Go does have a big package community behind it like Rust.

              1. 14

                Stick a @nogc on your main function and you have a compile-time guarantee that no GC allocations will happen in your program.

                1. 5

                  Neat - I didn’t realize this. Too late now for the current project, but good to know for the future. I’m particularly interested in its C++ FFI story. There’s a couple of specialized C++ libraries I’d like to use without having to write flat-C style wrappers just to call them sanely from Rust.

                  Thanks for that!

                  1. 2

                    That’s exactly the kind of tip I was hoping for in the comments. Thanks!

                    1. 4

                      It always the same arguments with D discussions:

                      • I don’t like D that has a GC!
                      • Just use @nogc!
                      • But then some stuff from the standard library does not work anymore!
                      • How much of the standard library?
                      • Nobody knows and how would you measure it anyway?
                      1. 1

                        It’s at least a pattern that’s solvable. Someone just has to attempt to compile the whole standard library with no GC option. Then, list the breakage. Then, fix in order of priority for the kind of apps that would want no-GC option. Then, write this up into a web page. Then, everyone shares it in threads where pattern shows up. Finally, the pattern dies after 10-20 years of network effects.

                        1. 2

                          People are doing that. Well, except for the “write this up into a web page” part. I guess you are thinking of web pages like http://www.arewewebyet.org/

                          1. 1

                            Yeah, some way for people to know that they’re doing it with what level of progress. Good to know they’re doing it. That you’re the first to tell me illustrates how a page like that would be useful in these conversations. People in D camp can just drop a link and be done with it.

                  2. 2

                    I find D has a lot of packages too. Not an explosive smörgåsbord, but sufficient for my purposes.

                    https://code.dlang.org/

                    The standard library by itself is fairly rich already.

                    https://dlang.org/phobos/

                    1. 1

                      I guess the question would be whether unsafe or smart pointers are about as easy to use in D as C or C++. If so, the GC might not be a problem. In some languages, GC is really hard to avoid.

                      Maybe @JordiGH, who uses D, can tell us.

                      1. 5

                        I write D daily. Unsafe pointers work the same as in C or C++. I wrote a GC-less C++-like smart pointer library for D. It’s basically std::unique_ptr and std::shared_ptr, but no std::weak_ptr because 1) I haven’t needed it and 2) One can, if needed, rely on the GC to break cycles (although I don’t know how easy that would be do to currently in practice.

                        1. 1

                          D is a better C++, so pointers easier to use than C++. As I understand, the main problem is that it used to be the case that the standard library used GC freely, making GC hard to avoid if you used the standard library. I understand there is an ongoing effort to clear this but I don’t know the current status.

                          1. 3

                            It depends on which part of the standard library. These days, the parts most often used have functions that don’t allocate. In any case it’s easy to avoid by using @nogc.

                      1. 13

                        In short, my experience is that if a feature is not present in the language, D is powerful enough that the feature can be implemented in a library.

                        This is D’s killer feature in my opinion. Its metaprogramming is really flexible, almost lisp-like. One of my favourite things with D is to bend it to my will and make it do what I want. I don’t often get this sense of freedom with other programming languages.

                        1. 27

                          In Mexico we have a saying, “tanto peca el que mata la vaca como el que le agarra la pata” – he who kills the cow sins as much as he who holds her leg. It’s a general principle I’ve taken to heart when choosing my jobs, and I hope that I’ve managed to do so. Good on you for being able to uphold it too.

                          1. 5

                            I must be the only person ever who would want the reverse: C for C++ users. I honestly find C a lot weirder than C++.

                            Due to a curious historical accident, in 1998 the AP Board (a US high school educational thing) decided to use C++ for a single year to teach AP Computer Science. Normally they go with Pascal, Java and I think right now it’s Python. But for one glorious year, they decided to go with C++. So that was my first “real” programming language, i.e. the first I learned in a classroom setting. This means I really did learn C++ without knowing C.

                            This makes me a feel a bit different from nearly everyone else who considers C to be the foundation and is baffled by C++.

                            1. 5

                              Really to get to C from C++ you mostly just have to remove features. I’m curious what specific confusions you’ve run into that such a guide could cover?

                              1. 1

                                I don’t understand memcpy, malloc, free, strcpy, strncpy.These are not functions you use in C++. Why do I have to do struct foo x; if foo is a struct type instead of just doing foo x;?.The general syntax for structs is really weird in C. You have to typedef, you can’t just declare new structs? And I can’t declare looping variables, I have to instead declare it outside the loop. Ah, and no single-line coments, // is not a valid comment starter. What’s with all the pointers? We don’t use nearly that many pointers in C++. Arrays are confusing as shit. I always forget when do arrays become pointers and when do they not. Why is there no actual array type?

                                I think newer versions of C have made some of these things more like C++, but you still run into a lot of C that has to be written in an older way. C is just very foreign if you use C++.

                                1. [Comment removed by author]

                                  1. 1

                                    I think I already understand most of these things, but what I was trying to convey was that C is foreign, not so much looking for an explanation.

                                    It is entirely possible to know C++ and find C to be weird and foreign.

                                  2. 1

                                    I’ll try to summarize these.

                                    memcpy, malloc, free, strcpy – the best source for these is their manpages, which are generally well-written

                                    You do not use typedef to define structs in C (though some people confusingly choose to add a typedef as well). The name of the type is struct foo so that’s why you say struct foo x to declare variable.

                                    The reason C89 doesn’t allow variable declaration in for loop is for consistency (new things can only be added to the stack after an open brace) – there was no one “right way” semantic for the special case – however C99 dispensed with this so it’s the same as C++ now.

                                    Single line comments weren’t in C89 probably because no one thought having two comment syntaxes would be easier than just having one. C99 added the second one if you prefer it.

                                    All the C++ I’ve ever seen is still full of pointers – do you routinely pass full object instances on the stack? Anytime you say new in C++ you have created a pointer.

                                    Arrays in C are always “converted” to pointers when used in a value context. Declared arrays have their own semantics for sizeof, etc (since they are of “array type”). In arguments, int x[] is just sugar for int *x

                                    Hopefully those are helpful.

                                    1. 1

                                      Arrays are confusing as shit. I always forget when do arrays become pointers and when do they not. Why is there no actual array type?

                                      http://www.torek.net/torek/c/pa.html

                                      1. 1

                                        That still confuses me. I always need to refer to this document which I always forget.

                                        http://c-faq.com/aryptr/index.html

                                        Btw, I wasn’t looking for an explanation. I was trying to impress upon you how weird and foreign C is for a C++ person. I can look up these explanations, but C will always be weird and foreign to me because I was raised on C++.

                                  3. 2

                                    I went from Pascal straight to C++. My parents happened to buy me Stroustrup’s C++ book. I only had to learn to read C later as I started encountering C libraries.

                                  1. 2

                                    AFAIK no valid licence means “all rights reserved” all over the world.

                                    This means that if GPL is not valid in a country, no one can use that software in that courty.

                                    1. 1

                                      Not always. e.g. the creators of the EUPL argue that under EU law, GPL, LGPL, MPL, etc are all equivalent and compatible in any direction (because you can’t enforce copyleft on anything above file level)

                                      1. 1

                                        Can you share some legal sources to back this statement?

                                        I’ve never listen such argument, but I have listened an opposite one, stating that software copyright is based on literary one, so that you can translate a C GPL software into Python only under GPL, as a derived work (with a caveat I do not remember). That’s different from common wisdom, as such protections are usually demanded to patents not copyright.

                                        So I’m very curious about your sources.

                                        And BTW file level copyright doesn’t means that, without a license you can use that file…

                                        1. 2

                                          And BTW file level copyright doesn’t means that, without a license you can use that file…

                                          Correct, but it means that e.g. the viral part of the GPL is entirely gone, as it only applies to a single source file, not to any binary artifacts, intermediate compilation products, or other sources.

                                          See https://joinup.ec.europa.eu/collection/eupl/eupl-compatible-open-source-licences#section-3 on why clauses on linking, in the eyes of the authors of the EUPL, have no legal validity.

                                          1. 1

                                            Thanks this has been a great read for several reasons. I’ll double check with an European lawyer.

                                            If this interpretation is confirmed, I will probably write an new stronger copyleft for my code instead of using AGPLv3.

                                        2. 1

                                          We’ve had this discussion before, and I don’t think that your interpretation of the interpretation of the EUPL authors is correct.

                                          https://lobste.rs/s/oroz5k/google_loses_android_battle_could_owe#c_wxup7r

                                          1. 1

                                            In the discussion you admitted that you interpret it the same way, as them saying that based on written law, this would be the case, but there is no case law.

                                            Generally, under civil law (which is what’s used in the relevant EU countries), decisions from courts rarely rely on previous court rulings, only on the written law. That’s why the US-american fixation on case law is a bit weird (and not exactly helpful).

                                            1. 1

                                              GPLv3 was written with consideration to EU law. It is why several of the legal terms in it were changed, to fit a more global perspective than GPLv2. I think Eben and his team are fairly competent at international law. I am aware of some difference between the legal traditions around the world, and I still think it’s uncertain that your interpretation of their interpretation is accurate.

                                              I don’t see consensus that copyleft is invalid in Europe. It remains, as far as I can tell, a minority opinion, and despite the different usage of jurisprudence in Europe, successful legal challenges against copyleft still would give some credence to the interpretation that strong copyleft is currently null in Europe (with the patronising insinuation that copyleft is just some silly colonial idea).

                                              After all, the VMWare case was brought up in Germany and it wasn’t immediately thrown out because copyleft is considered null. The judge seemed to consider copyleft to be worthy of consideration, if Hellwig could demonstrate sufficient copyright ownership over his kernel code.

                                              1. 1

                                                (with the patronising insinuation that copyleft is just some silly colonial idea).

                                                What do you mean?

                                                Btw, the EUPL authors does not say that GPL be void. Just the reciprocity would be invalidated (what some people call “virality”).

                                                1. 2

                                                  That’s why the US-american fixation on case law is a bit weird (and not exactly helpful).

                                                  This statement sounds a bit like a European doesn’t like that a foreign legal document with its silly foreign ideas is being discussed in Europe.

                                                  One aspect of the hereditary nature of the GPL is exactly what was being considered in the VMware case in Germany. The judge there didn’t seem to think that strong copyleft was unworthy of consideration.

                                      1. 24

                                        I was thinking of writing this blog post too. Maybe I still will, because I want to emphasise something different about this topic.

                                        Mailing list workflows also make people write a different sort of commit, where the diffs are short and readable and the commit messages are persuasive as to why the diff should be accepted. That’s because these diffs and commit messages are going to be much more prominent in people’s mailboxes, so both should be as readable as possible. Extraneous things such as style fixes or whitespace changes within the same diff are frowned upon because they bring clutter and hinder readability (it’s okay to throw those into a separate commit and thus a separate email, though).

                                        I find this style of commits immensely useful when reading the project’s history, but their value is hard to convey to someone raised on Github, which strongly discourages this style of commits. Most Github users I’ve seen never read the project’s history, because they value neither writing nor reading it.

                                        1. 9

                                          Most Github users I’ve seen never read the project’s history, because they value neither writing nor reading it.

                                          My impression as to why that is that because navigating the history of a particular code segment in GitHub is hard to do, people do it less often. Because they seldom read the history, they don’t value writing it (why waste effort in something that no-one will read?), instead they worry about the pull request message, which is out of band information for the VCS.

                                          Because commits are easy to navigate using Emacs’ vc-annotate mode, I’ve found valuable information written down 7+ years when working in FLOSS projects where the original author was long gone. And since then I tend to value well written commit messages.

                                          1. 10

                                            As I was saying in HN, I think Github did to commits and commit messages what Gmail did to email and top-posting: hide most of it so that nobody has to bother with writing it properly and thus doesn’t have to read it either.

                                          2. 8

                                            I’m 100% with you on this. I think this is a consequence of GitHub’s “code first” attitude; the UI presents code front and center, so that’s what people come to care about. Commit messages and project history are second class citizens on GitHub, which saddens me - there’s a lot of useful information locked away in there! If you get around to writing that post, I would very much like to read it!

                                          1. 1

                                            The vcs tag doesn’t really apply here, I would say.

                                            1. 16

                                              I disagree. Both git and Mercurial were built with a mailing list workflow in mind. This is why git has the commands git am, git format-patch and git request-pull and Mercurial has hg export and hg import as well as hg email.

                                              Also, mailing lists were the original distributed VCS. The versions are all there, in everyone’s mailboxes. There’s a lot of mailing list heritage in the functionality of our current VCSes.

                                            1. 3

                                              The most exciting thing I learned about this post is that Walter is a wargamer:

                                              http://classicempire.com/

                                              I am also a bit dismayed to see how he falls into the whole trap of how on the internet nobody cares who you are and only your code matters, while simultaneously being blind to the fact that this attitude seems to have resulted in DConf being almost all a bunch of dudes:

                                              https://cdn-az.allevents.in/banners/ccc4c15561ade2964b0206b8ab4ad707-rimg-w2048-h1516-gmir.jpg

                                              Your biases are there, and you are unintentionally encouraging only certain kind of people to participate, and when you say you don’t care about anything about code you are making statements that scare certain kinds of contributors away, despite your best intentions.

                                              1. 2

                                                Yeah, he is missing out on some potential contributors. So, maybe a Code of Merit with some be civil clauses on top of it. Then, promotional activities geared towards getting minority members into the project based on what worked in the past. That maximizes focus on code, minimizes the ability for political groups to obtain leverage, and aims to be inclusive. How about that?

                                                1. 0

                                                  Sigh, it’s the same sort of shit. It’s like responding to “Black Lives Matter” with “All Lives Matter”.

                                                  1. 2

                                                    You seem very quick to shoot down other’s methods. What are you suggestions?

                                                    1. 0

                                                      Suggestions for what? How to fight your biases? Just be aware that you have them. Everyone does. Denying your biases is like saying you don’t speak with an accent or you don’t have any politics. Or that you don’t have any opinions, which like assholes, everyone has.

                                                      Trying to come up with a code of merit that says people should not express their identity is more or less the same thing as saying that only the identity of the ones who framed the code of merit matters. It seems well-intentioned but it just results in reinforcing the biased status quo.

                                                    2. 1

                                                      It’s more like a project was created for the purposes of code by a number of people, a person shows up demanding it focus on specific people enforcing specific politics of small part of nation, and someone responds in an apolitical way. The Code of Merit was specifically designed to block what you were doing. I back them since people pushing politics into FOSS projects or forum discussions are rarely honest about what their policies would achieve. I’ll give you credit personally for being clear instead of sneaky on your views in these discussions, though.

                                                      Far as All Lives Matter, the BLM slogan was one of the dumbest things I’ve ever seen happen from a marketing perspective. When creating a campaign message, you tie the ideas and language to the target audience you’re trying to convert. The target audience were presumably white people who saw media with a mix of people leaning toward white. They also didn’t spend all day thinking about specific areas with cops shooting black people. A quick message from black people in their feed of mostly white people specifically saying “Black Lives Matter” will be hastily interpreted as “only black lives matter.” I mean, it’s black people saying ignore everything but black people for a moment despite other minority races, esp natives, having big problems. The reaction I saw coming a mile away was for them to dismiss it saying, “All lives matter! Stop thinking only of yourselves.” And you just did it again personally by assuming I’d agree with your mockery of white reaction instead of being an activist thinking it was a failed campaign by design that wasted countless peoples’ worth of potential to actually improve the situation. Hey, at least all those shouting felt important and got spotlight for a while. I guess that’s better, eh?

                                                      Interestingly, the black folks supporting that missed a perfect opportunity to attempt to team up with right-leaning whites. The gun nuts especially are highly concerned about “police militarization” where they’re ignoring civil rights, loading up on military hardware, civil forfeiture, and doing stuff like Waco. A multi-race campaign showing police stormtrooping on everyone from whites to blacks with a focus on decent people, not thugs, being victimized might have gotten something done. Especially if it came with mandates ending civil forfeiture, having body cams, and police standards from better outfits not doing so much damage. It would have both left and right supporting it. That’s the kind of thing I promote with lots of agreement in-person from every kind of person except occasional authoritarian right-wingers.

                                                      Instead, they wanted a black thing focused only on black people with all non-black people just getting in line behind them saying or signing whatever they demanded. A power play. Yeah, that doesn’t ever work no matter what the group or political idea is. Should’ve tried a message tied to the audience instead of mocking them. There was one person that did heavily tie his message and campaigns to those people’s concerns instead of mocking or subordinating them. He’s President now. (sighs)

                                                      1. 1

                                                        Can you rephrase this in a shorter way?

                                                        1. 2

                                                          Most projects are about writing software. The goal of those projects, along with articles about them, is to get people using the software, improving the software, etc. They’re mainly focused on getting the code, it working, and using it.

                                                          Some groups goals are to advance specific forms of politics, get it mandated in every project/forum, pull in more like them, and push out those that aren’t via moderation. These can include the core contributors of a project which dies without them. Political compliance > useful code that works.

                                                          This thread is example of No 2: a post about creating a language gets a first comment talking about number of white people involved. Comment calls for political/cultural changes in project. The resulting discussion had 7 out of 7 comments not about goal of the post. Just political maneuvering.

                                                          Those focusing on software creation and maintenance over politics often want to block that. The Code of Merit is specifically designed for that. If D adopted it, only D-related comments would be allowed. Those wanting more minority members could teach them D, help them write useful apps in it, write libraries, improve compiler, and so on. Their respect and status goes up with their D-related contributions. Everything else outside the scope of the project is blocked.

                                                          That’s the theory anyway. My version modifies it where I disagree a bit. ;)

                                                1. 8

                                                  Maybe I should be talking more about Mercurial this week.

                                                  1. 2

                                                    Since version 3.4 (launched around August of 2016), diff supports the –color flag print colorised output in the terminal.

                                                    Sadly, Debian 8 doesn’t have it yet, but hey there is colordiff too :)

                                                    1. 2

                                                      Eh? Debian 8 is oldstable. It will never have it?

                                                      Debian 9 has it! And I too was relying on colordiff, and I knew the patch for –color was sitting in the diff repo for a while. It’s nice that it finally landed! GNU moves slowly.

                                                    1. 3

                                                      For a good laugh, look here at this PR.

                                                      1. 17

                                                        It’s both easier and more polite to ignore someone you think is being weird in a harmless way. Pointing and laughing at a person/community is the start of brigading. Lobsters isn’t big enough to be competent at this kind of evil, but it’s still a bad thing to try.

                                                        1. 6

                                                          https://github.com/tootsuite/mastodon/pull/7391#issuecomment-389261480

                                                          What other project has its lead calmly explaining the difference between horse_ebooks and actual horses to clarify a pull request?

                                                          1. 3

                                                            And yet, he manages to offend someone.

                                                            1. 4

                                                              Can someone explain the controversy here? I legitimately do not understand. Is the individual claiming to be a computer and a person? Or do they just believe that someday some people will be computers and desire to future-proof the messages (as it alluded to in another comment)?

                                                              1. 7

                                                                This person is claiming they think of themselves as a robot, and is insulted at the insinuation that robots are not people.

                                                                Posts like this remind me of just how strange things can get when you connect most of the people on the planet.

                                                                1. 6

                                                                  So, I tried contacting the author:

                                                                  http://mynameiser.in/post/174391127526/hi-my-name-is-jordi-im-also

                                                                  Looks like she believes she’s a robot in the transhumanist sense. I thought transhumanists thought they would be robots some day, not that they already are robots now.

                                                                  I tried reading through her toots as she suggested, but it was making me feel unhappy, because she herself seems very unhappy. She seems to be going through personal stuff like breaking up from a bad relationship or something.

                                                                  I still don’t understand what is going on and what exactly does she mean by saying she’s a robot. Whatever the reason, though, mocking her is counterproductive and all around a dick thing to do. Her request in the PR was denied, which I think is reasonable. So “no” was said to something, contrary to what zpojqwfejwfhiunz said elsewhere.

                                                                  1. 6

                                                                    As someone who’s loosely in touch with some of the transhumanist scene, her answer makes no sense and was honestly kind of flippant and rude to you.

                                                                    That said, it sounds like she’s been dealing with a lot of abuse lately from the fact that this Github thread went viral. I’m not surprised, because there are certain people who will jump on any opportunity to mock someone like her in an attempt to score points with people who share their politics. In this case she’s being used as a proxy to discredit the social justice movement, because that’s what she uses to justify her identity.

                                                                    Abuse is never okay and cases like this require some pretty heavy moderation so that they don’t spiral out of control. But they also require a pretty firm hand so that you don’t end up getting pulled into every crazy ideascape that the internet comes up with. If I was the moderator of this GitHub thread, I would have told her, “Whatever it is you’re trying to express when you say ‘I am a robot,’ the Mastodon [BOT] flag is not the right way to do it.” End of discussion, and if anyone comes around to try to harass her, use the moderator powers liberally so as not to veer off-topic.

                                                                    Then you could get into the actual meat of the discussion at hand, which was things like “If I have a bot that reposts my Twitter onto Mastodon, could that really be said to ‘not represent a person’? Maybe another wording would be better.”

                                                                    In the end she’s just a girl who likes to say she’s a robot on the internet. If that bugs you or confuses you, the nicest thing you can do is just take it like that and just ignore her.

                                                                    1. 8

                                                                      I don’t think she was rude to me. She’s just busy with other things and has no obligation to respond to every rando who asks her stuff. I’m thankful she answered me at all. It’s a bit of effort, however slight, to formulate a response for anyone.

                                                                      1. 3

                                                                        I mean, I can kind of see where you’re coming from, but I’d still argue that starting with “You should develop your software in accordance to my unusual worldview”, followed by flippantly refusing to actually explain that worldview when politely asked, is at least not nice.

                                                                        Regardless, that might justify a firm hand, but not harassment, because nothing justifies harassment.

                                                                        1. 2

                                                                          I see this point of view too. But I’m also just some rando on the internet. She doesn’t owe me anything, If someone needed to hear her reasons, that would have been the Mastodon devs. They handled it in a different way, and I think they handled it well, overall.

                                                                          1. 1

                                                                            I’m inclined to agree on that last point, though it’s hard to say for sure given all the deleted comments.

                                                                            And I do hope she can work through whatever she’s going through.

                                                                    2. 4

                                                                      I don’t know, personally, anyone who identifies as a robot, but I do know a bunch of people who identify as cyborgs. Some of it’s transhumanist stuff – embedding sensors under the skin, that sort of thing. But much of it is reframing of stuff we don’t think of that way: artificial limbs, pacemakers, etc, but also reliance on smartphones, google glass or similar, and other devices.

                                                                      From that standpoint, robot doesn’t seem a stretch at all.

                                                                      That said, I agree that the feature wasn’t intended to be (and shouldn’t be) a badge. But someone did submit a PR to make the wording more neutral and inclusive, and that was accepted (#7507), and I think that’s a positive thing.

                                                                      1. 2

                                                                        Actually, that rewording even seems clearer to me regardless of whether someone calls themself a robot or not. “Not a person” sounds a bit ambiguous; because you can totally mechanically turk any bot account at any time, or the account could be a mirror of a real person’s tweets or something.

                                                                      2. 1

                                                                        That’s unfortunate. It’s always difficult to deal with these things. I, too, understood transhumanism to be more of a future thing, but apparently at least some people interpret it differently. Thanks for following up where I was too lazy!

                                                                      3. -6

                                                                        American ‘snowflake’ phenomenon. The offendee believes that the rest of the world must fully and immediately capitulate to whatever pronoun they decided to apply to themselves that week, and anything other than complete and unquestioning deference is blatant whatever-ism.

                                                                        1. 16

                                                                          Person in question is Brazilian, but don’t let easily checked facts get in the way of your narrative.

                                                                          1. -5

                                                                            Thanks for the clarification. Ugh, the phenomenon is spreading. I hope it’s not contagious. Should we shut down Madagascar? :-D

                                                                            1. 3

                                                                              TBH I think it’s just what happens when you connect a lot of people who speak your language to the internet, and the USA had more people connected than elsewhere.

                                                                              1. 0

                                                                                It definitely takes a lot of people to make a world. To paraphrase Garcia, “what a long strange trip it will be”.

                                                                          2. 3

                                                                            She says “she” is a fine pronoun for her.

                                                                      4. 1

                                                                        It’s wonderful. :)

                                                                      5. 3

                                                                        What is happening there? I can’t tell if this is satire or reality

                                                                        1. 2

                                                                          That’s pretty common with Mastodon; there’s an acrid effluence that tinges the air for hours after it leaves the room. That smell’s name? Never saying no to anyone.

                                                                          1. 12

                                                                            Seems “never saying no to anyone” has also been happening to lobster’s invite system :(

                                                                            People here on lobsters used to post links to content they endorse and learn something from and want to share in a positive way. Whatever your motivation was to submit this story, it apparently wasn’t that…

                                                                            1. 4

                                                                              The person who shared the “good laugh” has been here twice as long as you have.

                                                                              1. 1

                                                                                I’m absolutely not saying you’re wrong, but I’m pretty confident there’s something to be learned here. I may not necessarily know what the lesson is yet, but this is not the first or the last situation of this kind to present itself in software development writ large.

                                                                        1. 1

                                                                          It’s a well-intentioned proposal, but I think C++ is pretty strict about backwards compatibility. I doubt it will be accepted.

                                                                          1. 2

                                                                            Somewhat surprisingly, both C and C++ standards committee accepted the proposal. Source: https://twitter.com/jfbastien/status/989242576598327296

                                                                            1. 1

                                                                              Whoa. That is pretty crazy. Interesting! So overflow will no longer UB?

                                                                              1. 1

                                                                                Well, scroll up a bit… The accepted proposal is that representation is defined to be two’s complement, but overflow is still UB.

                                                                                1. 3

                                                                                  :|

                                                                          1. 4

                                                                            Oh man, the memories. Great video, thanks for sharing – I doubt I would have run across it otherwise.

                                                                            1. 2

                                                                              tl;dw, what is it about? A documentary about the game?

                                                                              1. 6

                                                                                It’s really an overview of adventure games during the late 80s through the 90s all the way to today - with a focus on the Monkey Island games and SCUMM-built games (as well as their competitors). If you love that style of adventure game you’d probably get a lot out of this video.

                                                                                1. 2

                                                                                  Ah, alright! Thanks! I’ll take a look later when I have time.

                                                                                  1. 1

                                                                                    I watched the one about Quake from the same channel. It was nicely done, but a bit long and minor repetitive. Will keep this one for later since I still want to play Monkey Island unspoiled one day :)

                                                                              1. 4

                                                                                How does one do P2P on a web browser? Do you open WebRTC connections with other Peertube users?

                                                                                1. 8

                                                                                  P2P in the browser is done via WebTorrent, which uses WebRTC connections as transport channels to other browsers watching the video. It then uses the BitTorrent protocol for the actual data transfer.

                                                                                  1. 4

                                                                                    They mention the use of WebRTC on their FAQ: https://joinpeertube.org/en/faq/

                                                                                    1. 1

                                                                                      What question is it under?

                                                                                      1. 1

                                                                                        “Why broadcast PeerTube videos through peer-to-peer?”

                                                                                        Peer-to-peer broadcasting allows, thanks to the WebRTC protocol, that Internet users who watch the same video at the same time exchange bits of files, which relieves the server.

                                                                                  1. 12

                                                                                    A web search for “Eeek! page_mapcount(page) went negative! (-1)” returns 303 results for me.

                                                                                    The searches seem to indicate that users have been periodically running into this error message since 2007.

                                                                                    This report from 2008 seems to indicate a way to reproduce it, someone seems to have found a commit that introduced the bug. The bug is closed with an unsatisfying

                                                                                    as the package user-mode-linux has just been removed from the Debian archive unstable we hereby close the associated bug reports.

                                                                                    1. 3

                                                                                      Sure, so maybe it was reproducible. All that Matt said is that until a pattern emerges, cosmic rays are a reasonable conclusion.

                                                                                      1. 7

                                                                                        If it’s reproducible, meaning there is a sequence of actions you can take to generate that condition, I’d say unlikely to be a cosmic rays.

                                                                                        I’d say that responding to a bug report with “cosmic rays” is unprofessional. There is a stock answer that goes “Sorry, can’t reproduce. Closing, please re-open if you can give me steps to reproduce” that is much more helpful and less antagonistic.

                                                                                        I work with pretty friendly people and so I look at reports of the hostility in software with a skeptical eye, but little things like this remind me that life in the software development world can get nasty for no reason at all.

                                                                                        1. 7

                                                                                          There was no reproducibility at that time, and it could be explained by cosmic rays.

                                                                                          Matt is one of the nicest Linux hackers I know. Mercurial is nice and has a good UI because Matt cares about being nice. His detailed explanation here of why it’s reasonable to blame cosmic rays until a pattern emerges (which hadn’t at the time he wrote that), is a very nice and detailed way of explaining why they did not want to look into the problem any deeper.

                                                                                    1. 4

                                                                                      Honestly, the driving script in bash feels like it’s cheating. It actually feels like despite all the new toys, metaprogramming in C++ still isn’t that powerful.

                                                                                      Couldn’t this be done more easily with lisp macros? I can sort of see how to do it with D compile-time structures.

                                                                                      1. 3

                                                                                        I don’t think there’s much point comparing such exercises across languages. For instance, with Template Haskell, you can run arbitrary Haskell code and even do IO at compile time, you could even write a 3D shooter, but I’d still say C++ templates are more powerful than TH in many aspects, due to the way they interact with the rest of their respective languages.

                                                                                        1. 1

                                                                                          Maybe I shouldn’t have said “powerful”, but “convenient”? I think it does make sense to have these comparisons at least for this example. In both Lisp and D, you have all of the language at compile time, so you can do just about anything.

                                                                                          It appears that even when attempting a ridiculous feat, thus accepting some inconvenience, C++ compile-time features are still too onerous to put the whole game loop into them.

                                                                                          Edit: After thinking about this for a second, I’m not sure it’s possible in D anymore since compile-time D functions have to be deterministic.

                                                                                          1. 2

                                                                                            I understand your point about the convenience, but my point is that the real purpose of the metaprogramming features isn’t to write interactive games. What matters is how it interacts with the run-time features. For instance, C++ templates are more powerful than Template Haskell, because of template argument deduction and due to how template instantiation can cause other templates to be instantiated seamlessly. Whereas in TH, you cause all template expansions by hand. Without considering the interaction with the rest of the language, the best metaprogramming would simply be generating C++ code using C++, then running that program as a preprocessing step. That’s why I think comparing the power of metaprogramming features accross languages through non-metaprogramming things you can do with them is pointless.

                                                                                            1. 1

                                                                                              Ah, it does sound inconvenient in TH to not have automatic instantiations.

                                                                                              1. 1

                                                                                                Yeah, it is, TH is much more bolted-on in Haskell compared to templates in C++, but on the other hand, Haskell’s type system is vastly more powerful without metaprogramming, so you rarely really need it. As I said, hard to compare across languages :)

                                                                                        2. 2

                                                                                          In Lisp you have the full language in disposal at compile-time, so it’s way too easy.

                                                                                          1. 1

                                                                                            That was my first thought, that the actual game loop is still implemented at runtime (with a bash runtime), which is sort of cheating. On the other hand, since one of my research areas is modeling game mechanics in formal logic, it somehow feels natural to accept an implementation of a state->state' transition function as morally equivalent to an implemention of a game. :-)

                                                                                          1. 5

                                                                                            My revulsion is only surpassed by my awe.

                                                                                            1. 3

                                                                                              I bet this would look so much nicer in that programming language I keep talking about.

                                                                                            1. 3

                                                                                              I’m disappointed that companies who own significant copyright in Linux (like RedHat or Intel) and industry groups like the BSA don’t go after intellectual property thieves like Tesla. There are plenty of non-Linux choices if companies don’t want to comply with the GPL’s license terms. Other car companies seem to be happy with VxWorks and similar.

                                                                                              What’s the point of asking China to comply with American IP if the US won’t even police its own companies?

                                                                                              1. 10

                                                                                                I’m pretty unsurprised that a company like Intel or Red Hat wouldn’t sue. Lawsuits are expensive, and it’s not clear a GPL suit would produce any significant damages (can they show they’ve been damaged in any material way?), just injunctive relief to release the source code to users. So it’d be a pure community-oriented gesture, probably a net loss in monetary terms. And could end up a bigger loss, because with the modern IP regime as de-facto a kind of armed standoff where everyone accumulates defensive portfolios, suing someone is basically firing a first shot that invites them to dig through their own IP to see if they have anything they can countersue you over. So you only do that if you feel you can gain something significant.

                                                                                                SFC is in a pretty different position, as a nonprofit explicitly dedicated to free software. So these kinds of lawsuits advance their mission, and since they aren’t a tech company themselves, there’s not much you can counter-sue them over. Seems like a better fit for GPL enforcement really.

                                                                                                1. 8

                                                                                                  a GPL suit would produce any significant damages (can they show they’ve been damaged in any material way?

                                                                                                  This is generally why the FSF’s original purpose in enforcing the GPL was always to ensure that the code got published, not to try to shakedown anyone for money. rms told Eben in the beginning, make sure you make compliance the ultimate goal, not monetary damages. The FSF and the Conservancy both follow these principles. Other copyleft holders might not.

                                                                                                  1. 3

                                                                                                    Intel owned VxWorks until very recently. Tesla’s copyright violations competed directly with their business.

                                                                                                    1. 2

                                                                                                      I’m not a lawyer but the GPL includes the term (emphasis added)

                                                                                                      1. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.

                                                                                                      Even if monetary damages are not available (not sure if they are), it should be possibile to get injunctive relief revoking the right to use the software at all. Not just injunctive relief requiring them to release the source.

                                                                                                      1. 3

                                                                                                        This is from GPLv2.

                                                                                                        GPLv3 is a bit more lenient:

                                                                                                        However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.

                                                                                                        Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice.

                                                                                                        Now, I think people should move to GPLv3 if they want this termination clausole.

                                                                                                        And in any case, 5 years are completely unrespectful of the various developers that contributed to Tesla through their contribution to the free software they adopted.

                                                                                                        To that end, we ask that everyone join us and our coalition in extending Tesla’s time to reach full GPL compliance for Linux and BusyBox, not just for the 30 days provided by following GPLv3’s termination provisions, but for at least another six months.

                                                                                                        As a developer, this sounds a lot like changing the license text for the benefit of big corporates without contributors agreement.

                                                                                                        When I read these kind of news I feel betrayed by FSF.
                                                                                                        I seriously wonder if we need a more serious strong copyleft.

                                                                                                        1. 2

                                                                                                          It is not without contributor agreement. Any contributor who does not agree is free to engage in their own compliance or enforcement activity. Conservancy can only take action on behalf of contributors who have explicitly asked them to.

                                                                                                          The biggest problem is that most contributors do not participate in compliance or enforcement activities at all.

                                                                                                          1. 1

                                                                                                            Conservancy can only take action on behalf of contributors who have explicitly asked them to.

                                                                                                            Trust me, it’s not that simple.

                                                                                                            The biggest problem is that most contributors do not participate in compliance or enforcement activities at all.

                                                                                                            Maybe contributors already agreed to contribute under the license terms and just want it to be enforced as is?

                                                                                                            I’m sincerely puzzled by Software Freedom Conservancy.

                                                                                                            Philosophycally I like this gentle touch, I’d like to believe that companies will be inspired by their work.

                                                                                                            But in practice, to my untrained eye, they weaken the GPL. Because, the message to companies is that Conservancy is afraid to test the GPL in court to defend the developers’ will expressed in the license. As if it was not that safe.

                                                                                                            I’m not a lawyer, but as a developer, this scares me a bit.

                                                                                                            1. 3

                                                                                                              If contributors want they license enforced they have to do something about that. No one can legally enforce it for them (unless they enter an explicit agreement). There is no magical enforcement body, only us.

                                                                                                              Conservancy’s particular strategy wouldn’t be the only one in use if anyone else did enforcement work ;)

                                                                                                              1. 1

                                                                                                                You are right. :-)

                                                                                                    2. 2

                                                                                                      They’re asking China to comply with the kind of American IP that makes high margins, not the FOSS. They’re doing it since American companies are paying politicians to act in the companies’ interests, too.

                                                                                                    1. 2

                                                                                                      On the story of NaN, it’s kind of interesting what R has done with it. It uses a special NaN pattern to represent NA (not applicable). So they are trying to make a distinction between NaN-the-erroneous calculation (e.g. 0/0) and NaN-the-missing-value.

                                                                                                      The funny thing is what this special NaN pattern they chose is: Robert Gentleman’s birthday.