1.  

    AWESOME!

    I own 2 BeBoxes. Was a Be developer back in the day. BeOS was my primary home OS for about 7 years and primary work OS for a couple years.

    I’ve been tracking Haiku for a long time. Looking forward to giving the beta a spin.

    1. 34

      Resting.

      1. 15

        I’m hosting my first TLA+ workshop this week. Beyond excited and beyond nervous.

        1. 2

          Good luck!

          1. 2

            Kick ass!

            1. 1

              Wish I was in Chicago! Do you ever come out to Seattle?

              1. 2

                I’d be totally down to host a workshop in Seattle!

            1. 4

              My personal one is https://www.monkeysnatchbanana.com/ but I rarely post there. Much more of my time goes into stuff on the blog where I work https://blog.wallaroolabs.com/ and for the programming language that I work on https://www.ponylang.org/blog/.

              1. 7

                Bad idea, it should error or give NaN.

                1/0 = 0 is mathematically sound

                It’s not mathematically sound.

                a/b = c should be equivalent to a = c*b

                this fails with 1/0 = 0 because 1 is not equal to 0*0.

                Edit: I was wrong, it is mathematically sound. You can define x/0 = f(x) any function of x at all. All the field axioms still hold because they all have preconditions that ensure you never look at the result of division by zero.

                There is a subtlety because some people say (X) and others say (Y)

                • (X) a/b = c should be equivalent to a = c*b when the LHS is well defined

                • (Y) a/b = c should be equivalent to a = c*b when b is nonzero

                If you have (X) definition in mind it becomes unsound, if you are more formal and use definition (Y) then it stays sound.

                It seems like a very bad idea to make division well defined but the expected algebra rules not apply to it. This is the whole reason we leave it undefined or make it an error. There isn’t any value you can give it that makes algebra work with it.

                It will not help programmers to have their programs continue on unaware of a mistake, working on with corrupt values.

                1. 14

                  I really appreciate your follow-up about you being wrong. It is rare to see, and I commend you for it. Thank you.

                  1. 8

                    This is explicitly addressed in the post. Do you have any objections to the definition given in the post?

                    1. 13

                      I cover that exact objection in the post.

                      1. 4

                        It will not help programmers to have their programs continue on unaware of a mistake, working on with corrupt values

                        That was my initial reaction too. But I don’t think Pony’s intended use case is numerical analysis; it’s for highly parallel low-latency systems, where there are other (bigger?) concerns to address. They wanted to have no runtime exceptions, so this is part of that design tradeoff. Anyway, nothing prevents the programmer from checking for zero denominators and handling them as needed. If you squint a little, it’s perhaps not that different from the various conventions on truthy/falsey values that exist in most languages, and we’ve managed to accommodate to those.

                        1. 4

                          Those truthy/falsey values are an often source of errors.

                          I may be biased in my dislike of this “feature”, because I cannot recall when 1/0 = 0 would be useful in my work, but have no difficulty whatsoever thinking of cases where truthy/falsey caused problems.

                        2. 4

                          1/0 is integer math. NaN is available for floating point math not integer math.

                          1. 2

                            It will not help programmers to have their programs continue on unaware of a mistake, working on with corrupt values.

                            I wonder if someone making a linear math library for Pony already faced this. There are many operations that might divide by zero, and you will want to let the user know if they divided by zero.

                            1. 7

                              It’s easy for a Pony user to create their own integer division operation that will be partial. Additionally, a “partial division for integers” operator has been been in the works for a while and will land soon. Its part of operators that will also error if you have integer overflow or underflow. Those will be +?, /?, *?, -?.

                              https://playground.ponylang.org/?gist=834f46a58244e981473c0677643c52ff

                          1. 36

                            I am a maths researcher at the university of Cologne and adressed this in a thesis I wrote in 2016. See chapter 3, especially the first part of section 3.1.

                            Dividing by zero is totally well defined for the projectively extended real numbers (only one unsigned infinity inf) but the argument for the usual extended real numbers (+-inf) not working is not based on field theory, but of infinitisemal nature, given you can approach a zero-division both from below and above and get either +inf or-inf equally likely.

                            Defining 1/0=0 not only breaks this infinitiseminal form, it‘s also radically counterintuïtive given how the values behave when you approach the division from small numbers, e.g. 1/10, 1/1, 1/0.1, 1/0.001…

                            lim x->0 1/x = 0 makes no sense and is wrong in terms of limits.

                            See the thesis where I proved a/0=inf to be well-defined for a!=0.

                            tl;dr: There‘s more to this than satisfying the field conditions. If you redefine division, this has consequences on higher levels, in this case most prominently in infinitisemal analysis.

                            1. 8

                              I used to be a maths researcher, and would just like to point out that some of the people who define division by zero to mean infinity do it because they’re more interested in the geometric properties of the spaces that functions are defined on than the functions themselves. This is the reason for the Riemann sphere in complex analysis, where geometers really like compact spaces more than noncompact ones, so they’re fine with throwing away the field property of the complex numbers. The moment any of them need to compute things, however, they pick local coordinates where division by zero doesn’t happen and use the normal tools of analysis.

                              1. 2

                                Thanks for laying this out and pointing out the issue with +/- Inf

                                Could you summarize here why +Inf is a good choice. As a practical man I approach this from the limit standpoint - usually when I end up with a situation like this it’s because the correct answer is +/- Inf and it depends on the context which one it should be. Here context means on which side of zero was my history of the denominator.

                                The issue is that the function 1/x has a discontinuity at 0. I was taught that this means 1/0 is “undefined”. IMO in code this means throw an exception.

                                In practical terms I end up adding a tiny number to the denominator (e.g. 1e-10) and continuing, but that implicitly means I’m biased to the positive side of line.

                                I think Pony’s approach is flat out wrong.

                                1. 6

                                  It is not +inf, but inf. For the projectively extended real numbers, we only extend the set with one infinite element which has no sign. Take a look at page 18 of the thesis which includes an illustration of this. Rather than having a number line we have a number circle.

                                  Dividing by zero, the direction we approach the denominator does not matter, even if we oscillate around zero, given it all ends up in one single point of infinity. We really don’t limit ourselves here with hat as we can express a limit to +inf or -inf in the traditional real number extension by the direction from which we approach inf in the projectively extended real numbers (see remark 3.5 on page 19).

                                  1/x is discontinuous at 0, this is true, but we can always look at limits. :) I am also a practical man and hope this relatively formal way I used to describe it did not distract from the relatively simple idea behind this.

                                  Pony’s approach is reasonable within field theory, but it’s not really useful when almost the entire analytical building on top of it collapses on your head. NaN was invented for a reason and given the IEEE floating-point numbers use the traditional +-inf extension, they should just return the indeterminate form on division by zero in Pony.

                                  1. 6

                                    NaN only exists for floating point, not integers. If you want to use NaN or something like it for integers, you will need to box all integer numbers and take a large performance hit.

                                2. 1

                                  Just curious, but why isn’t 1/0=1? Would 1/0=Inf not require that infinity exists between 0 and 1?

                                  1. 2

                                    I’m not sure I understand your question. Does 1/2=x require x to be between 1 and 2?

                                1. 8

                                  For those wanting the rationale, this is in the same Pony article:

                                  “From a practical perspective, having division as a partial function is awful. You end up with code littered with trys attempting to deal with the possibility of division by zero. Even if you had asserted that your denominator was not zero, you’d still need to protect against divide by zero because, at this time, the compiler can’t detect that value dependent typing. So, as of right now (ponyc v0.2), divide by zero in Pony does not result in error but rather 0.”

                                  1. 5

                                    I’m going to be (when I have time) writing a longer and more detailed discussion of the issue.

                                    1. 7

                                      Im sure many of us would find it interesting. I have a total, mental block on divide by zero given it’s always a bug in my field. This thread is refreshingly different. :)

                                      1. 7

                                        I’ll post it on lobste.rs when its done and I’ve had several people review and give feedback.

                                        1. 3

                                          Thanks!

                                    2. 4

                                      This is very true. The fact that division by zero causes us to write so many guards can cause major issues.

                                      I wonder, though, won’t explicit errors be better than implicit unexpected results which may be caused by this unusual behavior?

                                      1. 1

                                        I guess if you write a test before writing code, it should be possible to spot the error either way?

                                        1. 2

                                          It would be good to push this to the type system exactly so that we don’t have to remember to test for it.

                                          1. 1

                                            Totally, but I am saying that there are specific cases where this may still throw people off and cause bugs - even when the typing is as expected here.

                                          2. 1

                                            Sure… if you write a test…

                                      1. 11

                                        A couple of notes:

                                        1. I when I have more time (work is very busy) will be writing up the rational and features etc that lead Pony to the place that a decision like this had to be made. No one on the Pony team liked ending up there. But fortunately we are a 1.0 language and can continue to evolve and change things. We also thought it was very important to call to call out the issue because it is surprising.

                                        2. It’s easy for a Pony user to create their own integer division operation that will be partial. Additionally, a “partial division for integers” operator has been been in the works for a while and will land soon. Its part of operators that will also error if you have integer overflow or underflow. Those will be +?, /?, *?, -?.

                                        https://playground.ponylang.org/?gist=834f46a58244e981473c0677643c52ff

                                        1. 2

                                          @SeanTallen, glad to see another milestone. Nice release notes!

                                          1. 1

                                            Thanks @msingle.

                                            Was a team effort across the board, including the release notes.

                                          1. 6

                                            There is no technical content in that post :(

                                            1. 3

                                              Ah sorry. I wasn’t sure how focused this site was meant to be on tech. I’d delete the post but there is no feature for that here.

                                              1. 26

                                                Personally, I found the post interesting.

                                                1. 5

                                                  Same here. This is political, and as much as we might like to pretend otherwise, all technology is inherently political. +1 for this kind of post, and more of them.

                                                  1. 2

                                                    This is political, and as much as we might like to pretend otherwise, all technology is inherently political.

                                                    I dislike this justification being used to shoehorn politics into spaces which previously had functioned somewhat as a refuge from the sturm und drang of the times. I’ve also never seen a good stacktrace for the sentiment.

                                                  2. 1

                                                    Lots of things are interesting but have better homes elsewhere.

                                              1. 1

                                                This is two years old. Seems like a rather odd submission given how the content is very much of a time period and to my eye, provides minimal value now.

                                                1. 1

                                                  I’d never heard of this operating system, and it has never been submitted to Lobsters before.

                                                  1. 2

                                                    Then why not submit the operating system itself, not some dated “first linux distribution with ZFS” content that is outdated.

                                                    https://antergos.com/

                                                    1. 1

                                                      Because there is nothing on their homepage that explains what makes them relevant/interesting/unique. This post does that nicely.

                                                    2. 1

                                                      From the submission guidelines:

                                                      When the story being submitted is more than a year or so old, please add the year the story was written to the post title in parentheses.

                                                      1. 1

                                                        Done!

                                                  1. 7

                                                    I don’t get it, is this something that only matters for OOPy languages? Kind of Design Patternish, isn’t it? That book always struck me as trying to patch Java.

                                                    I mean, I understand you could emulate what they’re talking about in languages other than Java and C#, but… huh? Do we really need to avoid if blocks that badly?

                                                    1. 3

                                                      I’ve done the same sort of thing in Scheme (and other non “OO” languages) in the past. Rather than an if block, use polymorphic functions that are supplied. It takes a little getting used to for the reader but the testability of the code is much higher. I’ve also done the same thing in other languages using various forms of type-level programming.

                                                    1. 7

                                                      The architecture of open source applications should be real-world enough

                                                      1. 3

                                                        I don’t know is AOSA is what @hwayne is looking for, but for anyone reading, its a great series of books and I’d advise everyone to check them out.

                                                      1. 17

                                                        I’m often amused to remember that there are developers who want “bleeding edge” and rolling release and consider that to be “developer friendly”.

                                                        What I want more than anything else is to have my computer work the same day-to-day without fear of it breaking. When I do an update, I want to be to easy rollback if something breaks. When I do an update, I want it update the smallest possible number of components to get the change that I needed.

                                                        I’d be far more appreciative of articles like this if it was “why I like Arch” rather than “its developer friendly”. Its not “developer friendly”, its “you friendly”. I used Arch for a bit. Its a nightmare for someone like me, and… I’m a developer. That’s fine though. I don’t use it. For my Linux systems, I prefer point releases + long term support.

                                                        1. 7

                                                          I’m a developer too. At my workplace, the Arch users just upgrade their packages, and have a stable system for a decade, with a small risk of having to configure or force-install a package every N years. The Ubuntu/Mint people do a distro-upgrade or reinstall the system every N years.

                                                          I’m not sure which is worse, but there is more cursing and complaints from the Ubuntu/Mint camp.

                                                          1. 2

                                                            Maybe it’s just me (I like occasionally hacking on drivers and such), but I consider “developer friendly OS” to mean “friendly to developing the OS itself” (which is why I run FreeBSD -CURRENT).

                                                            Developing apps is not that special and doesn’t require much “friendliness”, IMO. Just having not-ancient versions of all common libraries/runtimes/etc. is enough.

                                                            That said, mainstream Linux distros like Debian/Ubuntu/Fedora do have an “unfriendliness” in terms of splitting headers into separate -dev / -devel packages. What are they trying to do, save 10kb of disk space per shared library?! Artificially inflate package counts? This is infuriating: “What do you MEAN pkg-config can’t find this lib– OH DAMMIT I need the dev package! What, why is libwhatever-dev not found, oh I need to search because it’s called whatever01despacito-dev-69420.0.0002 WHO EVER THOUGHT THIS IS A GOOD IDEA”

                                                            1. 2

                                                              I haven’t used Arch but I have the same intuition. I run debian stable on my desktop and servers and have very rarely found myself wanting anything more cutting edge.

                                                            1. 4

                                                              “Hooray! We have forked an already small community into yet another smaller community because…”

                                                              Well, the “because” doesn’t really matter, even though they make extremely valid points! In an already incredibly fragmented community (how many derivatives of OpenSolaris does this make?) this makes the problem bigger…

                                                              I don’t follow illumos very closely, but are there reasons that community won’t assist in pushing towards solving the concerns that sparked unleashed? Surely illumos is also an operating system that “developers want to use,” no?

                                                              1. 10

                                                                As always, we’re happy to work with people who want to push changes to illumos-gate!

                                                                1. 5

                                                                  xkcd 1095 seems relevant. :^)

                                                                  1. 1

                                                                    Yeah, maybe. :)

                                                                  2. 4

                                                                    If the illumos community were healthy I would agree with you and I wouldn’t have bothered to create this fork. Sadly, I think the illumos community has problems and the people that truly have a lot of say where the project goes either don’t see them or like the status quo.

                                                                    Two years ago when I started Unleashed, I had a dilemma: should I fork illumos or ditch it for one of the BSDs. When I realized that there were other people that were just as unhappy with the (lack of) direction illumos had, making a fork sounded like a good option. That’s how we got here.

                                                                    Now where do we go from here is an open question. It is completely possible that Unleashed will fizzle, at which point I can say that no real harm was done. The illumos community will remain as small as it was two days ago, with major contributors like Delphix bailing on illumos in favor of Linux. If Unleashed takes off and in the process kills off illumos, the overall ecosystem will be better off. There might be a person or two grumpy that they can’t run their emacs binary from 1994, but in my opinion that is a small price to pay.

                                                                    Surely illumos is also an operating system that “developers want to use,” no?

                                                                    That is the reason I considered and ultimately went with a fork instead of bailing on it. The technology in Solaris/OpenSolaris/illumos/Unleashed is great, and I didn’t want to give it up. I wanted to give up the hugely inefficient and ultimately counter-productive contribution process.

                                                                    Happy hacking!

                                                                    1. 4

                                                                      Thanks for taking the time to respond. I know my post probably came off as aggressive, and if I’m honest, it was half intended to be. I think forks are very disruptive, and wish, of course, to minimize these sorts of things when at all possible.

                                                                      When I realized that there were other people that were just as unhappy with the (lack of) direction illumos had, making a fork sounded like a good option.

                                                                      This makes total and reasonable sense. I didn’t mean to imply that you hadn’t thought this through! And appreciate that you used it as a sort of last resort.

                                                                      That is the reason I considered and ultimately went with a fork instead of bailing on it. The technology in Solaris/OpenSolaris/illumos/Unleashed is great, and I didn’t want to give it up. I wanted to give up the hugely inefficient and ultimately counter-productive contribution process.

                                                                      Thanks for doing what you’re doing, and I wish Unleashed success (and maybe either domination or an eventual merge of the communities again)!

                                                                      1. 3

                                                                        Thanks for taking the time to respond.

                                                                        No problem. I really had no choice - someone on the internet was “wrong” ;)

                                                                        I know my post probably came off as aggressive, and if I’m honest, it was half intended to be.

                                                                        The phrasing certainly made me go “urgh, not one of those…” but it sounds like we both agree that forks are disruptive, but you think that it’s a negative thing while I think it is a positive thing. A reasonable difference of opinion.

                                                                        Thanks for doing what you’re doing, and I wish Unleashed success (and maybe either domination or an eventual merge of the communities again)!

                                                                        Thanks, that’s the idea :)

                                                                        1. 2

                                                                          The phrasing certainly made me go “urgh, not one of those…”

                                                                          There’s really nothing I can offer as a legitimate excuse for that. I’m sorry.

                                                                          but you think that it’s a negative thing while I think it is a positive thing. A reasonable difference of opinion.

                                                                          The additional context you’ve provided makes me feel that it probably is the right, and positive choice in this case. I’m not vehemently against forks if there’s a legitimately good reason [and just to be clear, moving on from supporting legacy stuff is the important divergence I’m seeing, as it frees up resources to move faster]. I am against forks that don’t offer some radical divergence in philosophy, though. These are often rooted from deep bikeshedding on topics that don’t matter in the grand scheme of things.

                                                                          Two examples of justified forks in my opinion: @rain1 recently forked filezilla because it was incorporating “unwanted extra nonfree software.” Devuan is a fork of Debian that replaces systemd – a topic that is far beyond bikeshedding at this point, as it’s had (and will continue to have) a drastic effect on the portability of software to other ecosystems.

                                                                          1. 1

                                                                            There’s really nothing I can offer as a legitimate excuse for that. I’m sorry.

                                                                            No worries. Hopefully my initial response didn’t come across as too harsh either. If it did, my apologies.

                                                                            I am against forks that don’t offer some radical divergence in philosophy, though.

                                                                            Agreed. Although sometimes it is hard to tell if there is a justification for the fork.

                                                                            1. 2

                                                                              I am against forks that don’t offer some radical divergence in philosophy, though.

                                                                              Agreed. Although sometimes it is hard to tell if there is a justification for the fork

                                                                              I wonder when we started to need a justification.

                                                                              Why?

                                                                              1. 11

                                                                                I wonder when we started to need a justification.

                                                                                You do you, man. You do you.

                                                                                In my mind, there are two types of forks we’re talking about. One of them is a “fork” on github, where I clone the repo, make some changes, contribute it back to the original author (or maybe not!), and live a happy life. These types of forks are almost always ok. It’s the “You do you, man. You do you.” response.

                                                                                The other “fork” is far more challenging, and far more likely to cause a rift in spacetime. Those are the large, and by all accounts, successful projects that as a result divide a community, and make it difficult for users and would be contributors to find the right thing to use. These projects fork very publicly, and are rather uncomfortable, to be honest.

                                                                                In many cases, these forks occurred because egos were hurt (I wanted it yellow) – a social issue – not a technical issue. In other cases, there’s a large philosophical difference that impacts the general direction of the technology. This may be licensing, whether or not to support obscure platforms, a radical new idea or focus… etc. In all cases, even if there are legitimately great outcomes (OpenBSD comes to mind), there’s a period of confusion and frustration from users who are now forced to choose where to put their effort. They are forced into taking sides, and that’s unfair.

                                                                                1. 1

                                                                                  These are marketing concerns. Market share issues, to be precise.

                                                                                  They are valid for open source projects that are basically marketing tools, but they are pointless for free software that maximizes hackers’ freedom to hack.

                                                                                  Feeling the need to justify a fork, is the first step towards asking permission.
                                                                                  The PATENTS file in projects like Fuchsia’s kernel sources just push for that.

                                                                                  1. 5

                                                                                    Sorry, my friend. Most people don’t share your principles on what a ‘hack,’ or a ‘hacker’ is. More often than not, the people using, and writing software care more about getting the job done quickly, and without frustration, and a fork makes that harder. It doesn’t matter how you classify it.

                                                                                    1. 0

                                                                                      people using, and writing software care more about getting the job done quickly, and without frustration

                                                                                      And this is fine!

                                                                                      But, my friend, you need to understand the tools you use!
                                                                                      If you pick up a free software that is distributed “WITHOUT ANY WARRANTY” just because it’s free of charge, and you completely miss the culture of the people who develop it, you won’t get your job done. Same if you pick an open source software controlled by Google (or whoever) and you fork it to successfully challenge their market share.

                                                                                      In both cases, you’ll face surprises, unexpected costs and frustration.

                                                                                      Understanding the environment you operate in, is strategic to “get the job done”.

                                                                                      Most people don’t share your principles on what a ‘hack,’ or a ‘hacker’ is.

                                                                                      Interesting! Do you have world-wide statistics to prove such claim?

                                                                                      Not that it matters: “principles” stand to “artifacts” like “postulates” stand to “theorems”. How many people accept the postulates/principles is irrelevant.

                                                                                      I know that some people don’t share my principles. And I’m fine with it.
                                                                                      Do you know that some people don’t share your principles?
                                                                                      Are you fine with it?

                                                                                      1. 2

                                                                                        But, my friend, you need to understand the tools you use! If you pick up a free software that is distributed “WITHOUT ANY WARRANTY” just because it’s free of charge, and you completely miss the culture of the people who develop it, you won’t get your job done. Same if you pick an open source software controlled by Google (or whoever) and you fork it to successfully challenge their market share.

                                                                                        In both cases, you’ll face surprises, unexpected costs and frustration

                                                                                        I read this several times and can’t figure out what you’re saying.

                                                                                        Why do I need to understand the culture of a tool I use? As long as it fulfills my technical needs and I know what I’m prohibited to do by law, I can use it to get my job done.

                                                                                        1. 1

                                                                                          Why do I need to understand the culture of a tool I use?

                                                                                          Some example of the issues you might face:

                                                                                          • an security update could be delayed
                                                                                          • an update upstream could break your work in production
                                                                                          • you (or one of your customers) could be sued for patent violation (even if you are not actually violating it)
                                                                                          • the project might contain backdoors and your image could be associated with it

                                                                                          and so on…

                                                                                          You could ignore the culture of tools you get for free, and be lucky.
                                                                                          But in my job, I would call that short-sight and unprofessional.

                                                                                          Software is not like an hammer: even if you take it free of charges, there are strings attached.

                                                                                          1. 2

                                                                                            Some example of the issues you might face…

                                                                                            There are ways around much of these concerns. I have a support contract, or trust in a distribution (say, Canonical for Ubuntu or Red Hat), which provides vuln disclosures, and updates for me to apply. I have a development process that includes QA, and automated CI infrastructure so that breaking changes are caught before production… etc.

                                                                                            But, to the meta point:

                                                                                            But, my friend, you need to understand the tools you use!

                                                                                            Demonstrably this is not at all true. It’s easy to do a survey of 100 people – 10 people even, and ask them if they understand their tools. How are their tools implemented? How does the relational database they store and query data into/from store data on disk? How does the map type work in their favorite language? How does the VM work? How does the ORM work? How does the templating language they use work? How does the image processing library they use work to resize images, or rotate images, or whatever work? How does TensorFlow do all it does?

                                                                                            What you’ll find is that a large portion of engineers have no idea how things work. And they don’t need to know. Their job is to build CRUD apps for people who could care less if something takes a little bit longer. The developer themselves, in many cases, could care less about BTREE indexes vs. HASH indexes, and doesn’t really know the difference. For the amount of data they manipulate, doing full table scans 3 times an hour (because they literally have 3 queries an hour) is completely sane, reasonable, and still puts a smile on the face of the Administrative assistant who no longer has to go to a type writer to type out a bunch of labels. Or, who no longer has to print 10,000 college applications to give to admissions reviewers… or any number of other tasks where even the worst technology choices, recommended by underskilled developers can make a ginormous (and) positive difference on the process.

                                                                                            1. 0

                                                                                              There are ways around much of these concerns.

                                                                                              Sure, but the simplest one is to understand the tools you use.

                                                                                              And actually, trusting Debian (or OpenBSD or whatever) or signing support a contract with Canonical (or Red Hat or Microsoft or whatever) requires the cultural understanding of such people I was talking about.

                                                                                              Demonstrably this is not at all true. […]
                                                                                              …even the worst technology choices, recommended by underskilled developers can make a ginormous (and) positive difference on the process.

                                                                                              Practically you are saying: “everyone can become rich without working: just win the lottery!”. Well, this is not false. Stick on boring low-hanging fruits all your life and you will never face the issues that a professional developer has to consider every day.

                                                                                              What you describe is not to “get the job done”.
                                                                                              People die because of people who work this way.

                                                                                              In Italy we use to say: “even a broken clock can be right twice a day”.
                                                                                              Yes, incompetent developers can occasionally improve the life of someone, but for most of time, they just mess up things beyond repair.

                                                                                              1. 4

                                                                                                Practically you are saying: “everyone can become rich without working: just win the lottery!”. Well, this is not false. Stick on boring low-hanging fruits all your life and you will never face the issues that a professional developer has to consider every day.

                                                                                                What you describe is not to “get the job done”. People die because of people who work this way.

                                                                                                I believe this comment really lacks perspective. What you are saying is the Shamar-style of development is the only correct style of development and anyone not doing it that way is not only doing it wrong but putting people’s lives at risk.

                                                                                                The industry I work in produces a lot of software and consumes a lot of software, however no company in this industry would consider itself a tech company. We have people whose job title is “Software Engineer”. But, for the most part, they make pretty bad technical decisions and are fairly unskilled relative to the engineers at most tech companies. But, they aren’t “trying to get rich without working” or “win the lottery”. They are very hard working. The industry just has a different set of values where the software is incidental to the actual problem the company is solving. A lot of the things you brought up in an earlier post about why one needs to understand the culture of the software they consume doesn’t actually apply in the industry I’m in. Security updates and backdoors are almost never going to be a concern because these systems are not open to the outside. The data they consume is entirely generated and processed inside the walls of the company. In the industry I’m in, we’re actually saving lives too! I mean that literally.

                                                                                                I hate to use this word, but your comment is elitist. Anyone not solving problems how you say is not a professional and just causing damage “beyond repair”. Your comment lacks humility and perspective yet is extremely assertive. It might be worth stepping back and questioning if what you assert so strongly is an ideal, a belief, or reality. Or perhaps it’s a challenge with the language and you don’t realize how assertive your comments sound relative to how assertive you meant them to be. But insisting people not following your development principles are killing people is a pretty strong statement, in any case.

                                                                                                1. 0

                                                                                                  But insisting people not following your development principles are killing people is a pretty strong statement, in any case.

                                                                                                  I was not talking about software development in particular.

                                                                                                  Incompetent engineers build bridges that fell off.
                                                                                                  Incompetent phyisicians do not cure mortal deseases properly. And so on.
                                                                                                  They can get some work done, but it’s lucky, like winning te lottery.

                                                                                                  As for software, I do not means that a competent software developer cannot adopt a cheap half-working solution instead of an expensive “right” one (whatever it means in the context).

                                                                                                  On the contrary!
                                                                                                  I mean that to make a choice you need competence.

                                                                                                  I’m saying that only a competent professional that knows the tools she use can really “get the job done”.
                                                                                                  An incompetent one can be lucky some times, but you cannot trust her products and thus the job is not done.

                                                                                                  Or perhaps it’s a challenge with the language

                                                                                                  Actually, I’m rather surprised by the opposition such a simple and obvious concept is facing. All other craftmen I know (the real ones, not the software ones) agree that it takes years to “own” their tools.

                                                                                                  Probably we have diverged too much from the original topic, and we are facing a deep cultural mismatch.

                                                                                                  In Europe (that, let me say, is not living up to its own values these days) we are used to be very diverse and inclusive (note: it took centuries of wars, rapes, debates, commerce, poetry, science, curiosity and many other contaminations to get here).

                                                                                                  But we do not meld the meaning of words just to include more people.

                                                                                                  We clearly see and state the differences, and happily talk about them.

                                                                                                  And this is not elitism, it’s efficient communication.

                                                                                                  When we say “job” or “done” we convey a precise message.
                                                                                                  And if a bridge fell off and kills someone, we call the engineers who built it liars because the job was not done. At times they even stop being called engineers at all.

                                                                                                  1. 2

                                                                                                    You don’t give an inch, do you? I’ve explicitly said that I work in an industry that does not do software development like you have expressed it should be done and your response is to keep on insisting on it. On top of that, you did this annoying thing where this discussion has clearly been about software development but when I pushed back you move the goal post and start talking about bridges and medicine. It’s extremely challenging and frustrating to communicate with you, I need to work on not doing that. Thanks for the discussion, it was insightful for myself.

                                                                                                2. 3

                                                                                                  Looks like someone got a degree in being right on the Internet! There’s no point in engaging with you, and if there was a feature to block users, I would make use of it.

                                                                                                  1. 0

                                                                                                    I’m sorry about this.

                                                                                                    If you lack arguments to support your assuptions, I can suggest to simply state such assumptions clearly. For example:

                                                                                                    Users and companies are entitled to get work and value from software developers for free, because they are in a rush to get their job done.
                                                                                                    FS and OSS forks hurts this right.

                                                                                                    I would deeply disagree on such premise.
                                                                                                    But I wouldn’t argue against the conclusions.

                                                                                                    1. 2

                                                                                                      Did you just tell me to go fuck myself?

                                                                                                      1. 1

                                                                                                        Ok, this must really be a language problem.

                                                                                                        I cannot find a translation of what I wrote that can be interpreted that way!

                                                                                                        Anyway: No, I’m not telling you to fuck yourself.

                                                                                                        1. 2

                                                                                                          I just spent 30 minutes carefully crafting a response to your absurd notion that everyone must be highly skilled or people will die. But, it’s just not worth it. You’ll find a way to twist it into something it’s not, and yell loudly about how I’m wrong without considering that you may be shortsighted in your assumptions.

                                                                                                          1. 0

                                                                                                            I’m sorry for the time you wasted.

                                                                                                            I do not think that “everyone must be highly skilled or people will die”.

                                                                                                            I think that everyone should be professional in his own job.
                                                                                                            Which, at the bare minimium, means to understand the tools you use.

                                                                                                            you may be shortsighted in your assumptions.

                                                                                                            I woudn’t even engage if I woud not assume this to be possible: there would be nothing to learn.

                                                                        2. 3

                                                                          Question that I have that isn’t clear from the post. Do you intend to maintain enough compat with Illumos that you would be able to get improvements that were done n something like SmartOS? Are you planning on continuing to pulls changes from Illumos? Planning to try contributing changes back? Or is this a hard fork where you don’t imagine there would be cross pollination?

                                                                          1. 4

                                                                            Good questions!

                                                                            1. Source-level compat, yes until it stops to make sense. Binary compat, no.
                                                                            2. I’ll continue git-pull from illumos-gate until it starts to be too cumbersome due to divergence. Once that happens, I’ll probably still take commits from illumos-gate but I’ll be more selective. In addition to illumos-gate, we cherry-pick changes from the illumos downstreams (omnios, illumos-joyent, etc.). This is open source, if those repos have good changes I’d be stupid not to take them because they were authored “outside”.
                                                                            3. I have no plan to get changes back into illumos, however the code is open so others can do it. As an example, Toomas Soome took one of the cleanups in Unleashed and got it into illumos-gate (87bdc12930bfa66277c45510e399f8a01e06c376). He also has a work-in-progress to get our cpio-based boot_archives into illumos, but I don’t know the status of that.

                                                                            Hopefully I covered everything.

                                                                      1. 14

                                                                        This blog post: a case study in being a jerk to someone who is being a jerk, only since Linus is a “jerk” you get off scott-free. Unsurprisingly, this is written by someone who has never contributed to the Linux kernel and who was uninvolved in the discussion he’s picking apart.

                                                                        The revised email at the end does lose information. Contrary to what hipsters write blog posts complaining about, 99% of Linus’s emails are cordial. The information that’s lost is the conveyance that this is more important to Linus than most subjects.

                                                                        1. 20

                                                                          This comment: a case study in being a jerk to someone who is being a jerk to a jerk.

                                                                          In all seriousness, I don’t believe that Gary Bernhardt is being a jerk at all. There’s a line between being critical of a piece of work and calling someone brain damaged, and hopefully, we all can see the difference.

                                                                          Aside: I love when people use the word “hipster” to invalidate other viewpoints. Apparently, there are two modes of being: Being Right and Being A Hipster.

                                                                          1. 2

                                                                            To the unserious comment, I don’t think I was being a jerk. I called him a jerk, which I guess you could argue is a jerk move under any circumstances, but if I’m being a jerk then so is Gary.

                                                                            To the serious comment, I just want to note that “brain damaged” is a meme among old school hackers which isn’t as strong of a word as you think.

                                                                            To the aside, I don’t use hipster as an insult or to imply wrongness, but I do use it to invalidate his point. Gary is a Ruby developer. Linus is a kernel developer. The worlds are far removed from each other.

                                                                            1. 50

                                                                              I’ve put tens of thousands of lines of C into production, including multiple Linux kernel drivers. In one case, those kernel drivers were critical-path code on a device used in strain testing the wings of an airplane that you might’ve flown in by now.

                                                                              I’m not a stranger to the kernel; I just left that world. Behavior like Linus’ in that email was part of the reason, though far from the only reason.

                                                                              With all of that said: having written a bunch of systems software shouldn’t be a prerequisite for suggesting that we avoid attacking people personally when they make programming mistakes, or what we suspect are programming mistakes.

                                                                              1. 10

                                                                                Exactly. I’ve also met many people that do high-performance, embedded, and/or safety-critical code in C that are more polite in these situations. Linus’ attitude is a separate issue from what’s necessary to evaluate and constructively criticize code.

                                                                              2. 17

                                                                                “brain damaged” is a meme among old school hackers which isn’t as strong of a word as you think.

                                                                                Yikes. That “meme” is a whole other thing I don’t even care to unpack right now.

                                                                                I don’t use hipster as an insult or to imply wrongness, but I do use it to invalidate his point. Gary is a Ruby developer. Linus is a kernel developer. The worlds are far removed from each other.

                                                                                Gotcha. Kernal developer == real old-school hacker. Ruby developer == script kiddie hipster. Are we really still having this argument in 2018?

                                                                                1. 2

                                                                                  Yikes. That “meme” is a whole other thing I don’t even care to unpack right now.

                                                                                  “Brain damaged” is a term from back in the Multics days, Linus didn’t make that one up for the occasion. If you’re unfamiliar with the “jargon file” aka hacker dictionary, you can see the history of this particular term here: http://www.catb.org/jargon/html/B/brain-damaged.html

                                                                                  1. 1

                                                                                    Yikes. That “meme” is a whole other thing I don’t even care to unpack right now.

                                                                                    Listen, cultures are different and culture shock is a thing. I’m in a thread full of foreigners shocked that customs are different elsewhere. You better just take my word for it on “brain damaged” because you clearly aren’t a member of this culture and don’t know what you’re talking about.

                                                                                    Gotcha. Kernal developer == real old-school hacker. Ruby developer == script kiddie hipster. Are we really still having this argument in 2018?

                                                                                    How about you quit putting words in my mouth? Do you really need me to explain the world of difference between Ruby development and kernel hacking? In 2018? It’s not a matter of skill. Gary is great at what he does, but it has almost nothing to do with what Linus does. The people who surround Gary and the people who surround Linus are mutually exclusive groups with different cultural norms.

                                                                                    1. 20

                                                                                      You can’t use “it’s our culture” as a panacea; calling someone an idiot, moron etc. is a deliberate attempt to hurt them. I guess if what you’re saying is, “it’s our culture to intentionally hurt the feelings of people who have bad ideas,” well, then we might be at an impasse.

                                                                                      1. 21

                                                                                        The kind of toxic exclusivity and “old school hacker culture” elitism that you’re spouting in this thread is not what I expect to see on Lobsters. It makes me genuinely sad to see somebody saying these things and it also makes me apprehensive of ever being involved in the same project or community as you. Software development today is not what it was 20 –or even 5– years ago. Today it is far more about people than it is about software or technology. You may not like this, but it is the reality.

                                                                                        1. 7

                                                                                          Lobste.rs always had a few vocal people like this in threads. But note that they’re in the minority and generally are not upvoted as much as the people who aren’t elitist, racist, or just generally being a jerk.

                                                                                          1. 5

                                                                                            “old school hacker culture” elitism

                                                                                            Near 40, I can agree to be called old. But not elitist.
                                                                                            And I cannot accept to be associated with racist.

                                                                                            Not all software developers are hackers. Not all hackers are software developers.

                                                                                            Is stating this “elitism”? Is it “racism”? Is it being “jerk”?
                                                                                            Or is just using terms properly?

                                                                                2. 5

                                                                                  The information that’s lost is the conveyance that this is more important to Linus than most subjects.

                                                                                  So add “I want to stress that this issue is really important to me” at the end of the revised email.

                                                                                  I think that making an issue out of this particular information being lost is missing the point - that it would be possible to say the same thing as Linus did without being abusive.

                                                                                  Contrary to what hipsters write blog posts complaining about

                                                                                  You’re falling into the same trap that the post discusses. This derision isn’t necessary to make your point, and doesn’t make it any stronger - it just adds an unnecessary insult.

                                                                                  1. 9

                                                                                    Contrary to what hipsters write blog posts complaining about, 99% of Linus’s emails are cordial.

                                                                                    That may well be true, but do we need that last 1% in a professional setting?

                                                                                    1. 9

                                                                                      (I am not defending Linus’ behaviour here, please don’t put those words in my mouth.)

                                                                                      I strongly take issue with American ideas of “professionalism”, and an even more so with the idea that we get to decide whether this project is “a professional setting” or not. What exactly makes this a “professional setting”? What is a “professional setting”? Why do we hold some interactions to higher standards than others?

                                                                                      I suspect “money changing hands” is the thing that makes this “a professional setting”, and that grinds my gears even further. Why are we supposed to hold ourselves to different standards just because some people are getting paid for doing it?

                                                                                      1. 3

                                                                                        Right, “professionalism” implies that you only need to be nice to somebody when you want them to something for you or want their money. This should actually be about “respect”, whether or not you want a Linux contributor to do something for you or want their money.

                                                                                      2. 12

                                                                                        The Linux kernel is not a professional setting. Besides, I argue that the 1% is useful, even in a professional setting - sometimes strong words are called for. I’ll be That Guy and say that people should grow a thicker skin, especially people who weren’t even the subject of the email and have never been involved in kernel development.

                                                                                        1. 14

                                                                                          If I look at who the contributors to the Linux kernel are, it would certainly appear to be a professional endeavor.

                                                                                          A large chunk of contributions to the kernel are made by people who are getting paid by the companies they work for to contribute. Sounds like a professional setting to me.

                                                                                          1. 4

                                                                                            Linux development is only “a professional endeavour” (which is a phrase I have strong issues with, see above) because some people decided to build their businesses in Linus’ craft room. We can like or dislike Linus’ behaviour, but we don’t get to ascribe “professionalism” or lack thereof (if there even is such a thing) to Linus’ work or behaviour, or that of any of the contributors.

                                                                                            Even if “professionalism” is an actual thing (it’s not; it’s just a tool used by people in power to keep others down) it’s between the people doing the paying, and the people getting the pay, and has nothing to do with any of us.

                                                                                            This idea that people should behave differently when there’s money involved is completely offensive to me.

                                                                                            1. 7

                                                                                              But it’s not. It’s a collaboration between everyone, including professionals and hobbyists. The largest group of kernel contributors are volunteers. On top of that, Linus doesn’t have to answer to anyone.

                                                                                              1. 8

                                                                                                So, having a hobbyist involved means that you can be dickhead? Is that the conclusion that should be drawn from your statements?

                                                                                                1. 3

                                                                                                  No. I’m saying that Linus is not a dickhead, Linux is not a professional endeavour, and neither should be held to contrived professional standards.

                                                                                                  1. 2

                                                                                                    “I’m saying that Linus is not a dickhead”

                                                                                                    His comments are proving otherwise given the main article shows the same information could’ve been conveyed without all the profanity, personal insults, and so on. He must be adding that fluff because he enjoys it or has self-control issues. He’s intentionally or accidentally a dick. I say that as a satirist whose a dick to people that give me headaches in real life. Although it doesn’t take one to know one, being someone whose always countering dicks and assholes with some dickish habits of his own makes what Linus is doing more evident. If no mental illness, there’s little excuse past him not giving a shit.

                                                                                                    1. 5

                                                                                                      “doesn’t behave according to my cultural norms” == “mental illness”

                                                                                                      Seriously?

                                                                                                      I would really appreciate it if you could stop expecting that your cultural norms have to apply to everyone on the planet.

                                                                                                      1. 1

                                                                                                        Im identifying the cultural norm of being an asshole, saying it applies to him at times, and saying the project would benefit if he knocked if off. Im not forcing my norms on anyone.

                                                                                                        Your comment is more amusing giving someone with Linus’s norns might just reply with profanity and personsl insults. Then, you might be complaining about that. ;)

                                                                                                        1. 1

                                                                                                          Then, you might be complaining about that. ;)

                                                                                                          No, I’d just accept that people from different cultures behave differently.

                                                                                                          Let’s face it, most people hate getting told they are wrong, regardless of the tone. That’s just how we are as humans.

                                                                                                          Taking offense about the tone just seems very US-specific, as they are accustomed to receiving some special superpowers in a discussion by uttering “I’m offended”.

                                                                                                          Some of the best feedback I received in my life wouldn’t be considered acceptable by US standards and I simply don’t care – I just appreciate the fact that someone took his time to spell out the technical problems.

                                                                                                          Here is a recent example: https://github.com/rust-lang/cargo/pull/5183#issuecomment-381449546

                                                                                                          1. 1

                                                                                                            Here is a recent example: https://github.com/rust-lang/cargo/pull/5183#issuecomment-381449546

                                                                                                            I’m not familiar with Rust, so maybe I’m missing crucial context, but I read this feedback as firm but unproblematic overall. Compared to Linus’ email:

                                                                                                            • Comment admits that there are multiple points of view, gives case for their take on it.
                                                                                                            • Focuses on the problems at hand rather than speculating on characteristics of any individuals involved, beyond acknowledging other viewpoints.
                                                                                                            • Doesn’t include any personal insults.
                                                                                                            • Doesn’t include any profanity that I noticed, certainly not gratuituous profanity.

                                                                                                            It could be nicer, sure. But it seemed respectful, in the “you can do what you’re doing but consider these things:” kind of way…? The author event went out of their way to acknowledge being unconstructive.

                                                                                                            To my reading it seemed closer to Gary’s email than Linus’.

                                                                                                            To put it another way: if Linus wrote emails like this (only shorter, probably) then I don’t think Gary would have written a blog post about it.

                                                                                                            (For the record: I’m not American, but I do fall on the gee-it’d-be-great-if-Linus-stopped-abusing-his-colleagues side of this debate.)

                                                                                                            1. 1

                                                                                                              I didn’t intend to imply that this was comparable to Linus’ mail, but that people who would be offended by Linus’ writing would also be offended by that comment.

                                                                                                              It’s a slippery slide where every honest-to-go comment that expresses real feelings starts getting replaced by “this is an interesting idea, but did you consider …” corporate lingo, even if the code is horribly wrong.

                                                                                                              1. 2

                                                                                                                I didn’t intend to imply that this was comparable to Linus’ mail, but that people who would be offended by Linus’ writing would also be offended by that comment.

                                                                                                                I understand this is your point, but I think there is no evidence for this. The people complaining about Linus’ conduct are complaining about specific things, and these things are not present in the comment you linked.

                                                                                                                Did anyone in the Rust community (generally considered a “nicer” community than kernel development) raise concerns about this comment?

                                                                                                                There is a difference between “not overtly nice” and “openly abusive”, even accounting for cultural context.

                                                                                                            2. 1

                                                                                                              Then you and I arent that different in how we look at stuff. Ive just layered on top of it a push for project owners to do what’s most effective on social side.

                                                                                                        2. 2

                                                                                                          I believe it’s intentional. He does not want to be bothered by nurturing the newbs, so he deters them from going to him directly and forces them to do their learning elsewhere.

                                                                                                        3. 2

                                                                                                          These numbers suggest it is a professional endeavor:

                                                                                                          https://thenewstack.io/contributes-linux-kernel/

                                                                                                          1. 2

                                                                                                            Those numbers just break down the professionals involved, and don’t consider the volunteers. If you sum the percentages in that article you get around 40%. Even accomodating for smaller companies that didn’t make the top N companies, that’s a pretty big discrepancy.

                                                                                                  2. 6

                                                                                                    Linus himself is working in a professional capacity. He’s employed by the Linux Foundation to work on Linux. The fact he is employed to work on an open source project that he founded doesn’t make that situation non-professional.

                                                                                              1. 5

                                                                                                The lack of anything meaningful in this content is really concerning. Especially as it managed to make the front page on more than 1 site.

                                                                                                1. 1

                                                                                                  What’s the difference between Pulumi and Ballerina which was posted here the other day?

                                                                                                  1. 2

                                                                                                    Ballerina is a programming language.

                                                                                                    Pulumi is more like Terraform. It allows you in variety of languages to control your cloud based infrastructure.

                                                                                                  1. 6

                                                                                                    We’ve been using Pulumi as part of the private beta for a couple weeks now. We found out about it right at the tail end before it was opened up. So far, loving it. @pzel has been doing most of the work with it so far and might be able to give folks details if they are interested.

                                                                                                    1. 1

                                                                                                      Thanks for sharing, the documentation left me a bit confused, so knowing it works in a real world scenario makes me want to know more about it.

                                                                                                      1. 2

                                                                                                        What won me over is the fact that it really is infrastructure-as-code – with emphasis on code. This gives me hope that the ever-encroaching complexity of configuration management can be corralled using tactics developers know from ‘regular programming’: refactoring, abstraction, etc.

                                                                                                        1. 1

                                                                                                          This would actually be a very good argument for using a Lisp/Scheme flavor (or Lua, for that matter) as a default configuration language for any tool, instead of all then INI, XML, Toml, Yaml, JSON and others. I think GNU kind of tried to put Guile everywhere, at least on the desktop programs.

                                                                                                          1. 3

                                                                                                            Perhaps there is an alternate reality somewhere where people are not allergic to S-Expressions and XML/Json & friends were never invented. I’m not holding my breath, though. Also: Guile + Guix are beautiful tools, and I’d love to see them used more. Alas, that isn’t the case :(

                                                                                                            For what it’s worth, Pulumi lets you drive the engine using any language that can speak gRPC, so there’s really no technical reason why a Scheme or Lua front-end to it can’t be built.

                                                                                                            1. 1

                                                                                                              Ha! That would be nice :) I find XML an interesting case: the early drafts of XSLT were like Lisp, so people thought about that and then backtracked. That being said, I find XML/XSLT a very powerful combination, although the ergonomics are rather questionable.

                                                                                                    1. 19

                                                                                                      While I do find Pony interesting from a technical perspective, I’ll admit that publishing every point release changelog to lobsters is an extremely generous understanding of what some of us would like the “release” tag to showcase.

                                                                                                      Major features? Sure. Security fixes, yes. But:

                                                                                                      Pony 0.23.0 is primarily a bug fix release but does also include some additional changes. Upgrading is recommended. There is a single breaking change caused by the implementation of RFC 56.

                                                                                                      is arguably less interesting.

                                                                                                      1. 4

                                                                                                        Yeah, I’d be fine with a post when notable, interesting things have been added/removed/changed. Pony is an interesting language! But yeah, posting this one seems like it is wasting a bit of goodwill.

                                                                                                        1. 2

                                                                                                          as I write this, this story is hidden by 8, +10, -5 spam, which indicates to me that might be better to refrain unless there is a major milestone, or an interesting new feature that might spur some discussion.

                                                                                                          Adding some additional commentary about why the breaking type change is interesting or useful might help; there are enough language implementation nerds who read lobsters regularly that it could generate some discussion, especially since the capability types are one of pony’s most compelling and novel features.

                                                                                                          1. 4

                                                                                                            I wont be posting releases to lobsters anymore.

                                                                                                            1. 3

                                                                                                              I don’t think anyone wants you to stop posting releases. They are just expecting more from each post.

                                                                                                              1. 1

                                                                                                                Perhaps. Either way. Not submitting them anymore.