1. 3

    In case anyone is unaware, Salvatore rejected any terminology change in response to an issue raised 2+ years ago.

    https://github.com/antirez/redis/issues/3185

    1. 6

      Jenkins really is a love / hate piece of devops kit for me. My users love the ease of creating simple, ad-hoc form UIs for parameterized jobs. The fact that all the configs are stored on the filesystem instead of a proper database makes it really difficult to host in a cloud environment. I know Jenkins was designed for CI / CD but it works really well as a cron-plus for arbitrary batch jobs. I desperately wish for it to be better for admins like me.

      1. 2

        I know Jenkins was designed for CI / CD but it works really well as a cron-plus for arbitrary batch jobs.

        You might laugh, but this is exactly how a developer evangelist of Jenkins has once introduced it at a talk at our local Ruby users group.

        1. 1

          I’m not surprised in the least. This has been our main usecase for over 6 years. Prior to adopting Jenkins the whole team had to coordinate with a single crontab and had to jump through all sorts of hoops to avoid scheduling conflicts and to implement multi-stage jobs.

          What I find funny is that Jenkins’ main competitors seem to be in the CI / CD market and no one I’m aware of is targeting the need for a devops command & control center. Apache Airflow and Rundeck might be potential alternatives, but neither of them are really well suited for cloud deployments either.

          What are other folks here using for this?

        2. 2

          Fixing the storage issue is something KK has been working on for a while, and a bit part of “Jolt” as I understand it.

        1. 2

          I appreciate the simple presentation and the interactive implementation. But… APL is good for vector/matrix manipulation. What else is new? An implementation of a algorithm with greater functionality has existed on Rosetta Code since May of 2011. You’ve implemented an important algorithm, and the implementation is rather elegant—I don’t claim it to be trivial enough for me to implement—but I fail to see how this makes the case for ML development with APL on the whole. Nothing personal, just trying to be a good skeptic & cut things down to size.

          1. 2

            A previous article about APL attracted a comment complaining that too often we see the same “game of life” program being analyzed when talking about APL:

            https://lobste.rs/s/ghbrnt/apl_at_its_core#c_fchgdi

            I’ve only been learning the language for about a year. This algorithm and implementation came from last year’s Dyalog competition. An acquaintance, who introduced me to APL, mentioned on twitter they were implementing k-means in C other day, so I thought it would be fun to show off my APL version.

            It’s difficult to strike a balance when writing about APL for a general audience. There are few people fluent in the language, so most contemporary treatments start with the introductory fundamentals. However, even though this isn’t a state-of-the-art version of k-means, I feel like I succeeded in presenting a solution to a real-world problem while keeping it accessible to the uninitiated. Do you agree?

            Thank you for the feedback. What would you like to see written about APL?

            1. 2

              Probably my favorite article about APL, which I couldn’t find upon searching, was a criticism of its discoverability, i.e., the path by which one learns new features of the language is rough & unclear. I think we need to face these less “pretty” sides of the language if we want to start talking about it as a generally applicable tool, and perhaps develop some useful solutions/workarounds.

              I really like what you’ve done here, my criticism is mainly of the title I suppose. I would be really happy to see APL’s theoretical capabilities being applied to actual ML problems. It will probably always be weaker on the side of readability & friendly development environment, but I hope these can either be mitigated in the language / its descendants as they exist, or else addressed in a suitable successor.

          1. 1

            This goes to an empty page. What is this?

            1. 3

              Looks like it got deleted, I archived it here: https://hastebin.com/boniyocefe.apl

              1. 1

                Uh oh, i thought that dpaste was supposed to keep it for a year… sorry!

                The “cached” link above has a copy https://archive.is/http%3A%2F%2Fdpaste.com%2F3Z4K4B0

                1. 1
              1. 4

                If the book is so bad, then what is the publisher doing? Isn’t it their job to weed out bad content?

                1. 6

                  I wanted to explore that question some more in the post, but it got out of scope and is really its own huge topic.

                  The short version is that perhaps, as readers, we think they are asking “Is this content any good?” when what they’re really asking is, “Will this sell?”

                  1. 5

                    In the preface of the second edition it says that the first edition was reviewed “by a professional C programmer hired by the publisher.” That programmer said it should not be published. That programmer was right, but the publisher went ahead and published it anyway.

                    Can you expand slightly on this? I understand that the second edition contains a blurb that someone they hired reviewed the 1st edition and decided it should never be published. I’m slightly lost in meaning here.

                    1. Did they hire a person for the second edition, to review the first edition where the conclusion was ‘that should have not been published’?
                    2. Hired a person to review the first edition, the conclusion was to not publish but they still decided to publish and included a blurb about it in the second edition?

                    I guess the question is, did they knew before publishing that it’s this bad.

                    Additionally was the second edition reviewed by the same person and considered OK to be published?

                    1. 5

                      Here’s a longer excerpt from the second edition’s preface.

                      Prior to the publication of the first edition, the manuscript was reviewed by a professional C programmer hired by the publisher. This individual expressed a firm opinion that the book should not be published because “it offers nothing new—nothing the C programmer cannot obtain from the documentation provided with C compilers by the software companies.”

                      This review was not surprising. The reviewer was of an opinion that was shared by, perhaps, the majority of professional programmers who have little knowledge of or empathy for the rigors a beginning programmer must overcome to achieve a professional-level knowledge base of a highly technical subject.

                      Fortunately, that reviewer’s objections were disregarded, and “Mastering C Pointers” was released in 1990. It was an immediate success, as are most books that have absolutely no competition in the marketplace. This was and still is the only book dedicated solely to the subject of pointers and pointer operations using the C programming language.

                      To answer your question, then, all we can conclude is that a “professional C programmer” reviewed the first edition before it was published, recommended against publishing it, but the book was published anyway. If the quoted portion were the reviewer’s only objection, then we could surmise that the reviewer didn’t know much either, or didn’t actually read it.

                      1. 1

                        little knowledge of or empathy for … a beginning programmer

                        This is an important point I feel that has been left out of the discussion of this book. Yes the book contains harmful advice that should not be followed. It is probably a danger to make this text available to beginners, and it serves as little more than an object of ridicule for more experienced readers.

                        However, I think there is something to be gained from a more critical analysis that doesn’t hinge on the quality or correctness of the example. This reviewer takes a step in the right direction by trying to look at Traister’s background and trying to interpret how he arrived at holding such fatal misconceptions about C programming from a mental model seemingly developed in BASIC.

                        Traister’s code examples are in some cases just wrong and non-functioning, but in other cases I can understand what he wanted to achieve even if he has made a serious mistake. An expert C programmer has a mental model informed by their understanding of the memory management and function call semantics of C. A beginner or someone who has experience in a different sort of language will approach C programming from their own mental model.

                        Rather than pointing and laughing at his stupidity, or working to get this booked removed from shelves, maybe there’s something to be gained by exercising empathy for the author and the beginner programmer. Are the mistakes due to simple error, or do they arise from an “incorrect” mental model? Does the “incorrect” mental model actually make some sense in a certain way? Does it represent a possibly common misconception for beginners? Is it a fault of the programmer or the programming language?

                        1. 1

                          …an opinion that was shared by, perhaps, the majority of professional programmers who have little knowledge of or empathy for the rigors a beginning programmer must overcome…

                          What utter nonsense. This is inverse-meritocracy: claiming that every single expert is blinded by their knowledge & experience. Who are we to listen to then?

                          It seems like they’d prefer lots of terrible C programmers cropping up right away, to a moderate number of well-versed C programmers entering the craft over time. Which, now that I think about it, is a sensible approach for a publisher to take.

                    2. 3

                      Cynically? The publishers job is to make money. If bad content makes them money, they’ll still publish it.

                      1. 2

                        Exactly. There’s tons of news outlets, magazines, and online sites that make most of their money on fluff. Shouldn’t be surprised if computer book publishers try it. The managers might have even sensed IT books are BS or can risk being wrong individually given how there’s piles of new books every year on the same subjects. “If they want to argue about content, let them do it in the next book we sell!” ;)

                        1. 2

                          I recommend a scene from Hal Harley’s film “Fay Grim” (the sequel to “Henry Fool”) here. At a point, Fay questions the publishers decision to publish a work (‘The Confessions’) of her husband - she only read “the dirty parts” but still recognized the work as “really, really bad”.

                          Excerpted from a PopMatters review: “One proposal, from Simon’s publisher Angus (Chuck Montgomery), will lead to publication of Henry’s (admittedly bad) writing and increased sales of Simon’s poetry (on which royalties Fay and Ned depend to live). (Though the writing is, Fay and Angus agree, “bad,” he asserts they must press on, if only for the basest of reasons: “We can’t be too hard-line about these things, Fay. Anything capable of being sold can be worth publishing.”)”

                    1. 16

                      Unbelievable! Is this the first time Apple has acqui-killed a product and brought it back? I wonder how that happened. I appreciate anyone behind the scenes that helped along in the process of gettimg some good tech back into hands of the masses. Even more than original since it’s FOSS.

                      A FoundationDB developer is on HN right now if anyone wants to ask them questions.

                      Edit: Reading the HN comments from developers, which are great btw, I find they just open-sourced part oc it instead of all. One dev indicates it’s one of hardest parts that got FOSS’d. Another says the storage part is missing with a SQLite substitute. Another is saying some layers on top are missing. So, Apple open-sources parts of FoundationDB is more accurate.

                      1. 7

                        re: sqllite

                        tl;dr its always been sqlite

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

                        1. 3

                          “ a fairly heavily modified asynchronous version of sqlite’s btree”

                          Wording of one comment saying it’s just SQLite and one saying heavily-modified variant made me wonder if they swapped the custom thing for a vanilla version.

                          1. 3

                            Yes, but one of those comments was from some random person, and the other appears to be one of the foundationdb co-founders.

                            1. 3

                              That’s a good point. The one I bolded was the developer. It clarifies it’s a highly-modified version of SQLlite’s storage. A great choice given its robustness.

                        2. 2

                          Is this the first time Apple has acqui-killed a product and brought it back?

                          Not hardly, although this is the first instance I can think of where they’ve released open source. My favorite example: FingerWorks. I wish I’d hung on to my iGesture Pad, just for the collectible value.

                          1. 3

                            The code for Turi Create was closed when that company was acquired. The project was opened again late last year: https://github.com/apple/turicreate

                        1. 4

                          Brainfuck and Piet are esoteric but AFAIK both are designed to work by addressing memory locations, either on a stack or by address, and they have no notion of a named variable or function.

                          I don’t know whether eschewing naming was a design goal for them, but neither of these languages are especially easy to use directly.

                          [edit added]

                          Make has “implicit rules” and “automatic variables” that can prevent the need for naming targets, or even writing any code at all. For example, even without a makefile you can type “make foo” and if “foo.c” exists, it will run the compiler using implicit rules.

                          1. 3

                            How about fewer than 30 lines?

                            .SYNTAX PROGRAM
                            
                            OUT1 = '*1' .OUT('GN1')
                                 / '*2' .OUT('GN2')
                                 / '*' .OUT('CI')
                                 / .STRING .OUT('CL '*)
                                 .,
                            
                            OUTPUT = ('.OUT' '(' $OUT1 ')' / '.LABEL' .OUT('LB') OUT1) .OUT('OUT') .,
                            
                            EX3 = .ID .OUT('CLL '*)
                                / .STRING .OUT('TST '*)
                                / '.ID' .OUT('ID')
                                / '.NUMBER' .OUT('NUM')
                                / '.STRING' .OUT('SR')
                                / '(' EX1 ')'
                                / '.EMPTY' .OUT('SET')
                                / '$' .LABEL *1 EX3 .OUT('BT ' *1) .OUT('SET')
                                .,
                            
                            EX2 = (EX3 .OUT('BF ' *1) / OUTPUT) $(EX3 .OUT('BE') / OUTPUT) .LABEL *1 .,
                            
                            EX1 = EX2 $('/' .OUT('BT ' *1) EX2 ) .LABEL *1 .,
                            
                            ST = .ID .LABEL * '=' EX1 '.,' .OUT('R') .,
                            
                            PROGRAM = '.SYNTAX' .ID .OUT('ADR ' *) $ ST '.END' .OUT('END').,
                            
                            .END
                            

                            http://www.ibm-1401.info/Meta-II-schorre.pdf

                            1. 2

                              And my implementation of a bytecode runtime and assembler for META comes in under 500 lines:

                              % wc -l meta.c meta.h metas.c
                                   189 meta.c
                                    61 meta.h
                                   225 metas.c
                                   475 total
                              
                              1. 2

                                Heh. Mine came in at exactly 500 lines in a single C file.

                              2. 2

                                You beat me to it haha. If he can use a scripting language, then other contenders should be able to use meta-languages since they’re actually easier to implement than even Python. Them plus the source for Python might be easier to implement than Python itself in C.

                                1. 1

                                  Hm what language does this recognize? The META II language itself?

                                  Is that a Turing complete language or a syntax description language?

                                  Technically that is a compiler, but I’m not sure it generalizes to say a language like Python or C.

                                  I have seen it before in posts on PEGs, but I don’t quite get what it does and how it works. PEGs also have metagrammar – a PEG that describes the syntax of PEGs. Is that what this is?

                                  Also this paper seems somewhat related: http://www.vpri.org/pdf/tr2010003_PEG.pdf

                                  Although to be honest I am not as interested in it because of the Scheme “restriction”.


                                  EDIT: Also I should note that this thread is not about 100-line compilers. It’s about compilers where the overall structure is described in 100 lines. My compiler is 8000 lines.

                                  1. 3

                                    Hm what language does this recognize? The META II language itself?

                                    yes

                                    Is that a Turing complete language or a syntax description language?

                                    yes

                                    Technically that is a compiler

                                    The best kind of compiler ; )

                                    generalizes to say a language like Python or C.

                                    Schorre’s paper also includes an Algol-like language recognized by the META compiler.

                                    1. 2

                                      After a brief look at the paper you linked, yeah there’s a direct lineage from Schorre’s work to Viewpoints, although META predates PEGs by about 40 years. My link is citation #9 in yours.

                                  1. 6

                                    That’s the most sensible and collectivism-free piece of RMS’s writing I’ve read in a long time. Bravo.

                                    1. 26

                                      collectivism-free

                                      What does that even mean

                                      1. 1

                                        I’ll let @Sophistifunk speak for emself, but I read this as referring to Stallman’s fundamental mistrust of proprietary anything.

                                        1. 4

                                          Ok, now why is that supposed to be “collectivist”?

                                          1. 1

                                            What the hell is “nur”?

                                            1. 2

                                              A typo made by my oversensitive Samsung keyboard on my phone, which was set to German. “Nur” is German for “only so ultimately, it wasn’t that horrible.

                                            2. -1

                                              OK, let’s look at the definition:

                                              col·lec·tiv·ist kəˈlektivəst/ adjective adjective: collectivist

                                              1.
                                              relating to the practice or principle of giving a group priority over each individual in it.
                                              "collectivist cultures had disciplined and cooperative work forces"
                                              

                                              Stallman’s basic assertion is that individuals should not profit from the creation of software. They may profit from supporting said software, but in his view, software should always be free. I see this as a fundamentally collectivist philosophy.

                                              1. 9

                                                Stallman’s basic assertion is that individuals should not profit from the creation of software.

                                                What, no:

                                                Actually, we encourage people who redistribute free software to charge as much as they wish or can. […] Distributing free software is an opportunity to raise funds for development. Don’t waste it!

                                                https://www.gnu.org/philosophy/selling.html

                                                1. 2

                                                  Setting aside that “the definition” is rarely a good argument in open-ended discussions, like these, Stallman doesn’t say that Individual aren’t allowed to profit from Free Software. It’s explicitly allowed and I remember having have read that Emacs used to be sold this way, before the internet, to fund the FSF. And secondly, it doesn’t matter if the software is sold by one person (an individual) or a company (a collective), the rules the GPL sets up stays the same: share your source while distributing software, recursively, exactly by intelligently twisting copyright law back against itself.

                                                  And in the end, the four software freedoms were formulated to protect individuals from harmful sodtware, as well as give them the ability to improve upon it, based on their needs.

                                                  This is just another example of how empty of an actual meaning the word “collectivism” actually is in practice.

                                              2. 2

                                                What the hell is “emself”?

                                                1. 8

                                                  A polite way to refer to someone when you don’t know their gender.

                                                  1. 3

                                                    I’ve never seen that before. What’s wrong with “themself”? Does it in some way discriminate against one of the two genders?

                                                    1. 2

                                                      “themself” isn’t an established word either so i guess people pick and choose

                                                  2. 7

                                                    At the time of writing I had no idea whether @Sophistifunk was a him or a her. https://en.wikipedia.org/wiki/Spivak_pronoun

                                                    1. 5

                                                      That’s one of the better singular pronouns I’ve seen. It reads like a shortening of plural “them”.

                                                      1. 8

                                                        “they” and “them” are already well established in usage as singular pronouns.

                                                        1. 3

                                                          So you’re saying “I’ll let @Sophistifunk speak for themself” is correct usage in this case?

                                                          I’m not a grammar expert, so I’ll defer to your greater knowledge. I like and use Spivak because, as @pushcx said, it’s a polite way to express “I have no idea what the gender of the person I’m referring to is.”

                                                          1. 7

                                                            Singular “they” has been used in English for hundreds of years. “Themself” is also ancient but was replaced by “themselves” in the 16th century. However, it has recently made a comeback.

                                                            “I’ll let @Sophistifunk speak for themselves” is perfectly correct formal English. “I’ll let @Sophistifunk speak for themself” is also correct by any reasonable standard, but may be considered informal by some readers.

                                                            The OED has a blog entry about ‘themself’.

                                                            1. 2

                                                              I still like Spivak, but thanks for the pointer. That’s good to know :)

                                                            2. 3

                                                              Mirriam-Webster has examples of how “they” is used for indefinite gender and number: https://www.merriam-webster.com/dictionary/they

                                                              They don’t have an entry for the word “themself” and suggest “themselves” instead: https://www.merriam-webster.com/dictionary/themself

                                                  3. 1

                                                    I mean that it’s free of the “narrow-scope-communism” he’s usually on about. I don’t think I’m putting false words in his mouth if I say he firmly believes non-communal ownership of software (in the sense you can restrict what others do with it) is some sort of moral wrong and should be fought on all fronts. But I don’t want to call him a communist in the general sense, because he doesn’t go around saying private property in general is evil, just private property in the form of bits.

                                                    1. 5

                                                      Maybe everything to your left looks communist-ish, but I can tell you for sure he’s not a communist. More like a typical left-leaning liberal, but not too much.

                                                      1. 1

                                                        But I don’t want to call him a communist in the general sense, because he doesn’t go around saying private property in general is evil

                                                        Was that somehow unclear?

                                                1. 8

                                                  What was the reason behind the 600MB tracking pixel?

                                                  1. 5

                                                    Protest against lobste.rs april fools theme, intentionally abusing the new functionality.

                                                    Somehow nobody is bothered that i shouldn’t have been able to get the visitor information in the first place.

                                                    1. 8

                                                      I hated the AF joke too, but now I’m more irritated at you for taking it out on us other victims though cell fees instead of directing your lack of gruntle at the admins.

                                                      1. 7

                                                        Protesting by harming the visitors of the page is very odd. You are not abusing new functionality, you are abusing peoples trust into the website. Also, you haven’t harmed lobste.rs, but its visitors.

                                                        Maybe people protest because tracking doesn’t make lobste.rs worse then any other page they visit, but burning mobile bandwidth of that size is rather unusual? That’s a direct economic damage and people on visit outside of their country might suddenly be caught with no data. Just sayin’.

                                                        1. 0

                                                          Honestly, i thought mobile users were a small minority. So, the data plan drain wasn’t intended.

                                                          1. 6

                                                            Intention is an very bad defense. Maybe think stuff through next time.

                                                            A “sorry”, for example, would go a long way.

                                                        2. 6

                                                          Embedding a big hotlinked animated gif in your sig, which you then grep Apache logs for to get traffic info, does feel very 2002.

                                                          1. 3

                                                            Somehow nobody is bothered that i shouldn’t have been able to get the visitor information in the first place.

                                                            I’m very surprised at the lack of reaction about this, too. This was my first thought when I realized you weren’t an admin.

                                                            1. 2

                                                              I added an clarification note to the top of the post… i think people did miss im just a regular user.

                                                            2. 2

                                                              Gotcha, I thought you were an admin/mod when I read the blog entry.

                                                              How did you get the visitor information? Was that from requests to pull your tracking pixel?

                                                              1. 2

                                                                The AF joke enabled a privacy vulnerability via hotlinked images which allows for third-party tracking.

                                                                1. 2

                                                                  Exactly. All pictures in the signatures caused GET requests to user-chosen urls.

                                                                2. [Comment removed by author]

                                                                  1. 1

                                                                    Context you are missing: It was him who removed it.

                                                                    1. [Comment removed by author]

                                                                      1. 1

                                                                        And that changes things? It’s an obvious and reasonable first response, not precluding anything else.

                                                                      2. 1

                                                                        I’d agree 100% – the fact that it’s an abuse of trust makes me vote for a perma-ban.

                                                                  1. 3

                                                                    What is MVT? Is this a specialized APL implementation? A collection of APL routines? Something else?

                                                                    1. 3

                                                                      MVT is a version of MVS, the operating system for the IBM System/360 mainframe. This is a customized distribution built from sources, which is rebuilt especially to run on modern systems via an included customized Hercules emulator.

                                                                      IBM APL\360 is a seminal release of the APL system, which is described in depth in APL\360: An Interactive Approach. You can find further information via the Computer History Museum APL\360 site, which hosts the source code used to build the package.

                                                                      The APL\360 system goes beyond a mere application. It “took control of the whole machine. It implemented a complete timesharing operating system in addition to a high-level language.”

                                                                      1. 1

                                                                        Since it runs on contemporary systems, would it be useful as a “daily driver” alternative to GNU APL or is it more interesting as an historical curiosity?

                                                                        1. 3

                                                                          Probably quite limited as a “daily driver” because the maximum workspace size is 432000 bytes (expansive in the late 1960s/early 1970s), interacting with the host system beyond the keyboard would involve (painful) virtual tapes and EBCDIC conversions, and the license only allows for non-commercial use.

                                                                          It’s somewhat better than a mere curisosity, however, as this very software was used, extensively, in actual production environments, doing real work and solving actual problems.

                                                                          1. 2

                                                                            It’s possible I use tech on a regular basis that was built for this system. The UI sure as heck would fit in the memory. The one you submitted similarly sounded like a great way to keep employees off Solitaire and the Web until you said non-commercial use. (sighs) Back to deleting files out of Windows, Mac, or Linux installs. Haha.

                                                                          2. 1

                                                                            See What is APL? (An Introduction to APL\360 and Solving Sudoku with APL\360 for examples of the system. Granted, nothing you can’t do in other APL’s, of course.

                                                                      1. 6

                                                                        A trivial counterexample to this is inheritance for actors in games, e.g., “EliteMook” extends “Mook”, adding smarter target selection or something.

                                                                        1. 7

                                                                          Games these days will often drop inheritance in favour of using an entity component system or data oriented approach. This is much more cache friendly than the more naive taxonomic inheritance hierarchy, especially when you have thousands or tens of thousands of entities you need to process.

                                                                          1. 2

                                                                            Quite right, at scale.

                                                                            For small games, or for games that don’t have a gigantic update loop, a taxonomic approach you’d see from OOP works fine.

                                                                            My example wasn’t the end-all-be-all, it was just a case where inheritance works pretty nicely. No approach, of course, is going to work forever.

                                                                          2. 5

                                                                            I found it interesting that Eiffel is dropped into the article but 6 additional variants on inheritance are described by Bertrand Meyer:

                                                                            https://archive.eiffel.com/doc/manuals/technology/oosc/inheritance-design/section_05.html#HDR8

                                                                            1. 7

                                                                              Because Eiffel imposes that preconditions are contravariant and preconditions are covariant with inheritance, it does impose “subclass means subtype” out of all of the possibilities.

                                                                              1. 6

                                                                                The ironic thing is that while Eiffel preconditions are contravariant, the argument types are covariant. That leads to type errors at runtime and an extremely ugly hack in the Eiffel language to get around it.

                                                                                1. 1

                                                                                  I’ve never programmed in Eiffel so I have no insight into the language specifically. I only meant to point out that the author’s ontology of inheritance is not comprehensive.

                                                                                  1. 2

                                                                                    think of it as a minimal reproduction case for the bug.

                                                                              2. 4

                                                                                Even that counter-example breaks- what happens when the behavior that makes an EliteMook different than a regular Mook also needs to be incorporated into bosses- we have an EliteBoss now. Which sort of touches upon what the article is talking about, because really we’re talking about different kinds of inheritance.

                                                                                1. 4

                                                                                  the existence of a counterexample is merely lucky happenstance, when the thesis is “most of the time this situation is not true”. Particularly the ontology of a computer game (or indeed any game; D&D went for decades before multiple inheritance was added) can be more simplistic than one for a business process.

                                                                                  1. 4

                                                                                    Perhaps a more accurate title would’ve been in order “Why inheritance often does not make sense.”