1.  

    I’m curious if the author used C++11 and later since this was written and if their opinion changed.

    1.  

      Well they haven’t exactly removed much from the language, have they?

      1.  

        That’s why the article should be at least 2x longer ;)

        OTOH, adding some new features can deprecate old ones, i.e. adding an std::expected<T, E> can actually produce code that doesn’t use exceptions (not that I’m saying exceptions should be deprecated; they have their uses, just don’t use them as a substitute for return false). So adding stuff can make things better.

        1.  

          Of course adding stuff can make things better. Nobody on the C++ standards committee added features to make things worse. It’s however undeniable that the additions have made a large language even more gigantic and harder to learn.

      2.  

        As someone who is not too familiar with the details of C++11 and C++17, did they address any of the issues that the author raised?

        1.  

          No.

          Every serious C++ project I’ve worked on has banned or heavily frowned upon the STL and most language features, and C++11/14/17 didn’t change that. Each version brings a few nice things but most of it is unusable.

        2.  

          Looks like they wrote a post about what they would like to see in a new C++ replacement and C++11 and over hit some of the points. https://apenwarr.ca/log/20100721

          However, they think templates are awful and they should bad about that.

        1.  

          Does anyone have uBlock Origin filters or UserStyle to decrapify Medium?

          If not I will make one.

          1.  

            as much as I hate the name, https://makemediumreadable.com/ really helps with this

              1.  

                I use Stylus to apply custom CSS.

                .js-stickyFooter,
                .overlay,
                .js-metabar,
                .js-metabarSpacer,
                .js-postShareWidget,
                .collectionHeader,
                .progressiveMedia-image,
                .progressiveMedia-canvas,
                .progressiveMedia,
                .aspectRatioPlaceholder,
                .butterBar.
                .postMeterBar {
                    display: none;
                }
                .avatar-image {
                    border-radius: 4px !important;
                }
                
                    1.  

                      needs to cover the fullscreen popup as well

                  1. 2

                    “As you can see, by going with the ‘technical debt by default’ approach, we ended up in a scenario whereby if you create a brand-new webpage today, run it in the local intranet zone, and don’t add any additional markup, you will end up using a 1999 implementation of web standards by default. Yikes.”

                    Yikes, indeed o.0

                    1. 1

                      The article was good, can’t say I’m a fan of the clickbait-y headline though

                          1. 2

                            It appears it has been hugged to death.

                            1. 2

                              hugged to death.

                              <3

                          1. 8

                            I strongly disagree with this article. If these big tech companies can figure ways of detecting stage 0-1 cancer, that would go a long way in basically “curing” cancer and I’m pretty sure that’s what Microsoft was claiming they could accomplish by 2026.

                            1. 13

                              I think this article fails at highlighting its central point, which is unfortunate because the proper concern feels legitimate. I’m going to quote some snippets and then try to reword what I think it’s trying to say.

                              But the theory of cancer as a logic problem, rather than an evolving entity in the space and time of ecology, persists.

                              But the problem of cancer may even go beyond the cancer cell, its circuitry and shapeshifting tricks. Cancer cells can make ad hoc use of environmental cues. Caloric restriction reduces recurrence, for example, and cytokine IL6 works to block apoptosis, which explains why aspirin can reduce cancer risk.

                              Problematically, a shift in understanding cancer as a three-dimensional problem has risen of late, as we are finding that walls, which separate genetic neighborhoods, can break down, resulting in interplay between growth signals and hundreds of genes that turn on cell growth and its energy use. Cancer cells can use various shapeshifting tricks to turn into metastatic forms that travel to other sites in the body, miraculous alterations that can have nothing to do with alterations in the genetic code.

                              Basically we’re classifying “cancer” as a singular thing that is around some sort of corruption of the cells causing this massive growth, leading to an idea that cancer as a whole can be attacked with similar things. But in fact “cancer” describes a whole class of processes, and even now we’re finding new vectors for cancer growth that are totally unlike the basic idea of how this stuff works.

                              So research is going into solutions around re-engineering cells in specific ways to prevent runaway growth, but cancer ends up working through he coordination of various parts of the ecosystem (” the problem of cancer is ecological”), and attacking the problem at such a microscopic level misses the forest for the trees.

                              (I don’t think I fully got the point and I kinda disagree about the relative utility of jumping in front of at least one of he cancer-causing processes)

                              1. 13

                                One analogy that occured to me is that cancer is a policing problem of cells in a multicellular organism.

                                Curing cancer is akin to “solving crime”. Which crime? What causes crime? What causes people to commit crime? What causes cells to go cancerous? What causes cells to flip the table and unilaterally withdraw from the pact that is living in a multicellular organism?

                                1. 7

                                  This is the best analogy for cancer I’ve ever encountered!

                                  Makes me think of this snippet from The Atlantic

                                  The reality is, cancer is hundreds of different diseases, and it’s still deeply complex and far from fully understood. So since there’s no clear solution to stopping cancer, therapy is the next best answer, since patients are suffering now.

                                  1. 1

                                    Agreed, this is a great analogy and I will be stealing it!

                                2. 6

                                  Detection is different from a cure. Diagnostics has been improving for a long time now but fundamental understanding remains illusive and any cure will require a breakthrough in understanding and not detection or diagnostics.

                                  1. 2

                                    I mostly agree with you, though I’d argue that detection and diagnostics are necessary in order to achieve understanding

                                    1. 2

                                      You are right, but early warning can help to increase the survival rates and the quality of life of the patients by applying more targeted, more limited treatements.

                                  1. 2

                                    I have to wonder why unstage isn’t defined as unstage = reset HEAD. That would save keystrokes and would mean you could just type git unstage FILE.txt. Is there a situation where you want to unstage to something other than HEAD?

                                    1. 3

                                      HEAD is actually the default <tree-ish>/<commit> argument, so git reset FILE.txt and git reset HEAD FILE.txt should produce the same results.

                                      To your question, there might be a situation in which one might want to unstage something other than HEAD, but I’ve never encountered it.

                                      1. 2

                                        (misclick, sorry)

                                      1. 4

                                        I’m 110% in favor of joke repositories full of e’s (reminds me of that meme from like 10 years ago with the endless stream of AAAAAAAAAA’s actually - anyone remember that?)

                                        I confess I’m not sure what to make of “Our industry teaches a lot of people that there is nothing they cannot learn, and we have a critical mass of arrogant people in tech and on GitHub. It’s incredibly toxic and I never want to maintain a real repository this large on GitHub, paid or not.”. It’s good to have an attitude that there is nothing you cannot learn. I’m fine with telling people that they have not actually learned the thing they claim to, but not with telling them that they shouldn’t even make the attempt.

                                        1. 6

                                          My takeaway from that sentence wasn’t “don’t try to understand things” but rather “if you don’t understand something, don’t go into the comments and be an asshole”

                                          1. 4

                                            aaaaaaaaah you mean this one?

                                            I love OP’s blog colour scheme and this story a lot <3 hopefully next time, some of the people acting like jerks will feel in on the joke and create more gems like the one mentioned at the end.

                                          1. 26

                                            I love it.

                                            Low-level programming is so often filled with arrogance: Stuff like “I work on hard low level things, only above-average programmers like me can do it”. Don’t believe me? This is literally one of the first pages you read on the Os dev wiki: https://wiki.osdev.org/Required_Knowledge

                                            In fact, writing an OS is usually considered the most difficult programming task. You will need above-average programming skills before even considering a project like this. Failure to comply will make you look silly.

                                            ugh. “Failure to comply will make you look silly” Did a 7 year old write this? We don’t want to be taunting beginners or making them feel stupid, we want to be empowering them.

                                            And that’s the position Rust is taking: Rust helps anyone be a systems programmer. Maybe systems programing isn’t particularly well defined, but many people reading this will think “scary part of programming” and then “oh wait, Rust let’s me do that”. That’s awesome: A clear path forward to doing something scary.

                                            Lastly, I really do like the design. That’s obviously personal preference though, what I really like is that there is design at all. Again low level programming is littered with bad design or lack thereof: having put work into their design is another way of being more inclusive.

                                            1. 12

                                              Low-level programming is so often filled with arrogance: Stuff like “I work on hard low level things, only above-average programmers like me can do it”.

                                              At a previous workplace, there was a cohort of strong systems programmers who would emphasize the difficulty and attainability of systems programming skills. It was out in the open - this is hard, you can do it, with practice, let’s work on it together.

                                              This was accompanied with a culture of regular talks, sharing of projects, ideas, workshops to get all devs interested in systems ideas - building a shell, using flamegraphs, writing data structures, cache locality. Frontend, SRE, sysadmins, everybody was welcome. That was real great stuff, the opposite of the more common “hey, Joe Frontend, get out of here and go bang some legos together.”

                                              Anyway, not sure where I’m going with this - I guess my point is:

                                              “Systems programming is hard - if you’re willing, you can do it. Here’s some resources” is a more welcome attitude vs. “Let’s scare off these morons”.

                                              Who knows, one of those morons might get motivated, do some learning, and become a good systems programmer some day.

                                              1. -9

                                                Writing an operating system is an enormously difficult task. Scaring off people that are not ready to even begin, that so lack the fundamentally required skills that they can’t even follow basic tutorials? That’s a service to the community.

                                                It’s simply not the case that everyone can be a systems programmer. Rust is an extremely complicated language, and if someone can’t do systems programming in C they certainly won’t be able to do it in the much more complex language Rust.

                                                Systems programming is complicated and scary and difficult and it should be. People should be scared to release low level software, because of the massive implications of them getting that software wrong.

                                                Certainly we do not want to be ‘empowering’ people.

                                                1. 22

                                                  Writing an operating system is an enormously difficult task.

                                                  Writing an operating system is an enormously large task. It’s not obvious the problems posed by OSs are substantially harder than those posed by distributed systems, compilers, machine learning, UI design, game development, sys ops, etc. Certainly there is much worse tooling for os development! (Rust is one foray into making this better!) Part of the reason, I think, the tooling is bad is because there’s this notion that writing an operating system should be hard: it’s a self-fulfilling prophecy.

                                                  Scaring off people that are not ready to even begin, that so lack the fundamentally required skills that they can’t even follow basic tutorials? That’s a service to the community.

                                                  I am all for giving people basic tutorials! Scaring people, on the other hand, seems like the community is trying to weed out the weak and let only the best programmers in. That’s certainly a possible goal for a community, just not a community I want to be a part of.

                                                  Rust is an extremely complicated language, and if someone can’t do systems programming in C they certainly won’t be able to do it in the much more complex language Rust.

                                                  I guess we’ll see about that! Rust is making the claim that it’s easier to do systems programming in Rust than it is in C.

                                                  Certainly we do not want to be ‘empowering’ people.

                                                  I do :)

                                                  1. 18

                                                    Multiple universities offer a “write an operating system” class in the CS1XX level.

                                                    1. 4

                                                      I couldn’t disagree more, and one of my favorite things about the rust community is how we reject gatekeeping like this. Portraying it as a binary choice a la “either we deter people or they will write bad systems code” is intellectually dishonest at best. As @sevagh noted, it’s possible to both acknowledge the difficulty of writing good low-level code AND encourage people to learn how to do it. Providing good tools, good documentation, good learning resources, and good mentorship is, in my opinion, the best way to accomplish this, and that’s what I see the rust community pursuing

                                                  1. 3

                                                    This looks really interesting but whooo I bet confluent is not happy about this

                                                    1. 4

                                                      They’re apparently publicly upset about this.

                                                      “They’re profiting from our use of resources,” Kreps said. “We’re charging our customers for the service, paying for compute and network resources that we use.”

                                                      https://twitter.com/kmassada/status/1068553502455037952

                                                      Unfortunately I can’t find the original source.

                                                    1. 17

                                                      I’m one of the maintainers of Conjure, happy to answer questions about this project!

                                                      1. 12
                                                        1. How does this compare to gRPC and friends (e.g. Thrift), especially now that gRPC-Web is in GA? When would I pick Conjure over them?
                                                        2. Are there plans for additional language support? I’m interested in Go in particular.
                                                        1. 9
                                                          1. We’re big fans of gRPC! One downside is that it does require HTTP/2 trailers, which means if you want to make requests from browsers or curl, you’d need to deploy a proxy like envoy to rewrite the traffic. I think Conjure makes sense if you’re already relying on HTTP/JSON in production or care about browsers. It’s very much designed with simplicity in mind, and doesn’t actually prescribe any particular client or server, so allows you to get the upside of strong types for your JSON, without requiring big changes to your existing stack or API.

                                                          2. Definitely! Internally, we use go extensively so I think conjure-go is next in the open-sourcing pipeline. One interesting feature of Conjure is that since the IR is a stable format, you can develop new language-generators independently without needing any involvement from the core maintainers!

                                                          1. 4

                                                            I have the same question as 1. but with OpenAPI.

                                                            1. 6

                                                              They’re conceptually pretty similar, but we found the Java code that Swagger generates pretty hard to read. While Swagger has to add many annotations (https://github.com/swagger-api/swagger-samples/blob/master/java/java-jersey-jaxrs/src/main/java/io/swagger/sample/resource/PetResource.java#L43) to deal with any conceivable API you might define, Conjure is intentionally more restrictive in terms of what you can define and tries to focus on doing a small number of things very well.

                                                              This results in code that is as readable as a human would write (https://github.com/palantir/conjure-java/blob/1.3.0/conjure-java-core/src/integrationInput/java/com/palantir/product/EteService.java), with all the benefits of modern best practices like immutability, NonNull everywhere etc.

                                                          2. 59

                                                            How do you feel about your work being used to enable human rights violations?

                                                            1. 14

                                                              This is actually an interesting question.

                                                              1. 6

                                                                Probably terrible but also aware of the unlikelihood of escaping it. Sometimes you have an action and it has good and bad consequences and the good consequences are avoidable, but the bad aren’t. In that specific scenario it’s not wise to give up the good consequences just so you aren’t “getting your hands dirty”. Sure if you can find some way to escape the evils then you should try all available options but sometimes things are bad.

                                                                Oh I’m realizing this is specifically Palantir’s stack lmao. Nevermind yeah don’t work on that on your free time y’all, no hard feelings intended towards @iamdanfox .

                                                                1. 2

                                                                  As it seems I’m living under a rock, could you paste some link to provide the context for your question?

                                                                  Edit: never mind, found it; “Palantir provides the engine for Donald Trump’s deportation machine”

                                                                  1. 1

                                                                    Which is the same machine as previously used, right?

                                                                2. 3

                                                                  How does it compare to Twirp? (https://github.com/twitchtv/twirp)

                                                                  Update after a quick search: Conjure uses JSON whereas Twirp uses ProtocolBuffer.

                                                                  1. 2

                                                                    I think Twirp has a lot of similar motivations to Conjure - the blog post even mentions an emphasis on simplicity and it works over HTTP1.1 (unlike gRPC).

                                                                    One key difference I see is that many API definition tools are essentially monoliths, pretty much completely controlled by the originating company. We’ve gone for a different approach with Conjure and tried to decouple things so that significant additions (e.g. adding a new language) happen without blocking on the core maintainers at all.

                                                                    For example, if you wanted to add Swift support, you’d make a brand new conjure-swift repo and write a CLI that turns the stable IR format into Swift source code. We have a standardised test harness (written in Rust) that you can use to prove that your new conjure-swift code will be compatible with other Conjure clients/servers. Once your CLI works, you can package it up in a standard way and it should slot nicely into existing build tools.

                                                                  2. 3

                                                                    How is unionization in Palantir? Is there a reason why you’re still working there? Do you need support? I’m not from USA but I can point you to people willing to support workers like yourself.

                                                                    1. 2

                                                                      Hey I am really interested in the project, but I’m getting errors when going through the tutorial on the GitHub repo, specfically ./gradlew tasks was giving me an error fetching the com.palantir repos. I copy pasted the exact instructions and I’m unsure where to ask for help on this. I figured I’d at least let you know to see if you experience the same issues.

                                                                      1. 2

                                                                        Hey! Glad to hear you’re interested in the project and sorry about the issue with the getting started guide. i’ve gone ahead and updated the guide to fix the problem you encountered. Thanks for pointing out the issue. Hope you enjoy using the project and feel free to reach out with any questions, comments or concerns

                                                                    1. 8

                                                                      Still in the midst of reading this, but just have to say: worst website background ever

                                                                      1. 4

                                                                        Firefox’s reader mode is a lifesaver here.

                                                                        1. 2

                                                                          Yes, I had to use that too. I tried to read it the way it was displayed but it was too distracting

                                                                        2. 2

                                                                          I removed the background and background color via inspector which makes it a lot easier to read.

                                                                          1. 1

                                                                            I’ve done enough accessibility work on the web to announce: this site’s contrast is great, but its presentation is horrific.

                                                                          1. 2

                                                                            I feel like this is being blown way out of proportion. Mastodon is open source under the AGPL. Hiveway’s fork immediately changed all intellectual property (the logo, the name) because I would assume those are trademarked (see Firefox forks: Iceweasel, Waterfox, etc).

                                                                            Forking an open source project to make your own is par for the course. As long as the project gets licensed under the AGPL, I see absolutely no problem with this.

                                                                            1. 4

                                                                              I think the bigger issue here is how far the Hiveway people have gone to ensure that all connection with the original Mastodon project, including the authorship of individual commits, was removed. Does that violate the AGPL? I have no idea, IANAL etc, though I suspect it does. But, even if it doesn’t, that is a deeply shitty thing to do.

                                                                              1. 1

                                                                                including the authorship of individual commits, was removed.

                                                                                If that’s the case, then this is the part that should be highlighted. I, too, would question how the AGPL would affect this. IANAL either, but I think that removal of the .git directory from a fork would be an interesting topic of discussion for AGPL cohesion. Personally, I believe that since it’s part of the project and just a bunch of files, it’d be completely valid to remove it as long as you keep previous attribution to the parent project - otherwise removing any arbitrary files from the project could be a potential violation.

                                                                                EDIT: of course after typing up this comment I realize that removing a LICENSE/COPYING file and all attribution of the previous license would also be a violation. Hmmmm, this is definitely not simple.

                                                                              2. 3

                                                                                Just because it’s technically legal doesn’t mean it’s not a shitty thing to do.

                                                                                1. 2

                                                                                  I still don’t see how this is shitty. If you’re going to put your source code on the web with a license to copy it, then you absolutely must expect someone to take it and make it their own. I personally see them removing indication of Mastodon as a way of keeping themselves away from legal trouble involving trademarks.

                                                                                  1. 2

                                                                                    Intercal is right. It’s eye-roll inducing for sure, like of course some ico-idiot is going to make a quick buck off of mastodon, but who cares? The investors are the ones getting scammed. And they’re the ones not paying attention anyway.

                                                                              1. 3

                                                                                I’m assuming you’re going to try to get wycats on at some point? Considering he’s been involved with at least 3 different package managers (bundler, cargo, and yarn are the 3 I know of), it seems like he would be a great interview.

                                                                                1. 3

                                                                                  Yep, he’s already on the list of people to interview ?

                                                                                  1. 3

                                                                                    Also, the SolusOS guys recently did a lot of work with the tool they use to make packages for their package manager, so they might be worth talking especially wrt the producer-side of package managers

                                                                                    1. 3

                                                                                      Will add them to the list, thanks!

                                                                                1. 6

                                                                                  For example, my SAP analysis web interface uses three different product group structures, as the required amount of details varies between user stories. Go forces me to maintain the same code in three different places.

                                                                                  I would really like to see an example of this, if anyone has one. I can think of a bunch of alternative ways to structure “similar but different” code paths and I’m curious why they didn’t work for this author.

                                                                                  1. 2

                                                                                    Yea, I usually count myself among Go’s detractors but this point even befuddled me. I think Go has it’s share of code-reuse issues but it seems like this particular issue would be easily solved by embedding data members or a better use of interfaces.

                                                                                  1. 1

                                                                                    Is it just me or does this basically boil down to “test all the control paths in your models?”

                                                                                    1. 4

                                                                                      I see this as a temporary hype. If it is still standing strong in a few weeks, why not? But not after a few days of hyped articles on the topic. This is not judging the language, but we have these meta-posts very often where people want to promote their favourite programming language with a special tag.

                                                                                      1. 6

                                                                                        IMO, the fact that Google is now officially supporting it for android development is a pretty significant sign that it isn’t going away anytime soon.

                                                                                        1. 5

                                                                                          I see this as a temporary hype.

                                                                                          Counterpoint: if you search by stories + newest for Kotlin, there are 3 pages of “Kotlin” stories. Roughly 3/4 of the first page of results has “Kotlin” in the title. The oldest story of the first page that has “Kotlin” in its title is 3 months old. Understanding that Lobste.rs moves relatively slow, I think it’s fair to say that people are definitely posting about the language SOME of the time on here.

                                                                                          Now, because it’s recently gotten the “officially supported on Android” greenlight is probably what’s giving it temporary hype. But, I’d argue that Lobste.rs is still going to get a steady stream of Kotlin-related stories, and I’d like to have a tag for that.

                                                                                        1. 2

                                                                                          Why clickbait is better than whatever honest title you’re using?

                                                                                          Honestly, the article is good, but I am sick of click-bait and disappointed to see it on lobsters landing…

                                                                                          1. 5

                                                                                            Maybe it helps if you’re familiar with the author? I’m pretty familiar with Yegge’s writing, so as soon as I saw his domain on the entry I understood the title to be tongue-in-cheek

                                                                                          1. 10

                                                                                            It’s time to start using a modern programming language

                                                                                            How long does “modern” last? Does that mean I should already plan on moving off Kotlin in a year or two?

                                                                                            Kotlin isn’t some weird language born in academia.

                                                                                            Ugh, this trope.

                                                                                            Its syntax is familiar to any programmer coming from the OOP domain, and can be more or less understood from the get go.

                                                                                            Maybe, but semantics are really quite important so hopefully its semantics can be understood from the get go.

                                                                                            Not a very compelling article, IMO, but it is on Medium so about what you can expect.

                                                                                            1. 11

                                                                                              I’ve lost the original source so I can’t properly attribute the joke, but:

                                                                                              they’re Medium posts because they’re neither rare nor well done

                                                                                              1. 9

                                                                                                Television is a medium, so called because it is neither rare nor well-done. – Ernie Kovacs, American comedian

                                                                                                1. 2

                                                                                                  Ah, so the joke I heard was plagiarized in the first place :) Thanks for the info!

                                                                                            1. 2

                                                                                              This reminds me a little of the optional chaining and forced unwrapping syntax sugars recently added to Swift.

                                                                                              1. 3

                                                                                                I can’t find the link now, but I remember one of the rust core devs explicitly saying that swift was the inspiration for the question mark syntax.

                                                                                                1. 2

                                                                                                  That was “if let”, actually. ? Is similar but IIRC has some differences.

                                                                                                  1. 1

                                                                                                    Ah, my mistake