• 6 Posts
  • 203 Comments
Joined 3 years ago
cake
Cake day: June 18th, 2023

help-circle
  • I’m not saying that this kind of thing cannot be used for bad purposes. I’m asking the philosophical question of where our moral obligation to do everything we can to give our children the best possible life begins.

    Should we let them be born “as is”, and then have a moral obligation to do everything we can to make the best of whatever genetic baggage they have, or should we do whatever is in our power even before they’re born to give them a better shot at a good life?

    Explosives have caused enormous amounts of death, but also allowed enormous amounts of people to live in safer, more affordable houses, and have been critical for mineral extraction that essentially makes modern society possible, as well as modern transportation infrastructure. Explosives, like most technology, aren’t an inherently “evil” thing, even though they’re used for bad purposes.


  • We’re not just talking about autism here though. We’re talking about hereditary diseases, maybe a bad back, extreme allergies, etc. Their point is that if we had the technology to prevent our future child from carrying all sorts of genetic burdens (exposure to cancer, compromised immune system, terrible eyesight…) wouldn’t it be immoral to not use that technology?








  • To be fair, I think massive “switchboards” can be relatively clean. The key is that each step contains little enough logic. 1500 lines of 13-14 cases means the average block was > 100 lines, and at that point I definitely agree that it should probably have been refactored a long time ago. Just splitting that into 13-14 smaller functions, and using the switchboard as a delegator could be completely fine.


  • Oh, I definitely meant far future. While the differences are far too big today, I can see gradually increasing cooperation between e.g. the EU and African Union at some point culminating in the construction of a governmental body that has some regulatory power over them both.

    Once such a body exists, I can imagine that it over time accumulates power, bringing the two unions even closer together. The EU started out as a relatively small organ, and has grown gradually to what it is today over many decades. My point was that if some “global government” ever forms, I think that kind of gradual process is how it will happen. Starting out with trade agreements, and then gradually regulating more aspects of government.


  • These don’t need to be mutually exclusive though. A lot of the progress in Europe the past 80 years is a result of the improved cooperation brought by the EU.

    The EU isn’t like the UN, where everyone is equally represented (sans veto powers), but is a democratically elected super-national body with opposing super-national political factions. I can see a concept like that working on a global scale some time in the (relatively far) future.


  • I think something like this is the most reasonable, and we’re already closer to it than at any previous point in history. We have the EU, the African Union (AU), and I think there’s a South American union as well (?) there’s also the US, which is a bit between a union and a single state (US states have more autonomy than regional municipalities most other places, but far less than any full-fledged county).

    I think that if a “global government” ever develops, it will be due to these unions forming an overarching union. The major hurdle is that we’re a very far way off anybody wanting to concede any governing power to an organisation above the “continental union” level. Even holding the EU together is non-trivial, because a lot of people feel that too much power is concentrated far away in Brussels.

    Regarding judicial systems and military forces, the UN has showed that it’s possible to have a kind of global system for this, but it’s still a far stretch from anything that could be called a “global judicial system with enforcement powers”.



  • Of course, I’ll speak English in meetings and other settings where we’re talking about work and need to minimise the language barrier for practical purposes. I’ll also speak English in a lot of social settings, because these are nice people that I enjoy talking to.

    What I’m talking about is the silent expectation that a group of Norwegians talking at the lunch table should switch to English if one or more non-Norwegian speakers enter the room. I don’t like that silent expectation, and really appreciate the colleagues that learn Norwegian well enough that I can just keep the conversation going without feeling like I’m excluding them or feeling that I need to swap to English and fill them in on what we’re talking about.





  • Similarly, what would you gain by saying uint32_t const* x = my_var.get<uint32_t>();

    To be frank: You gain the information that MyConcreteType::get<uint32_t> returns a uint32_t, which I otherwise couldn’t infer from the docs. Of course, I could assume it, based on the template parameter, but I don’t want to go around assuming a bunch of stuff in order to read docs.

    Take an example like auto x = my_var.to_reduced_form(), it’s very clear that x is the “reduced form” of my_var, which could be meaningful in itself, but what type is it? I need to know that if I want to do anything with x. Can I do x += 1? If I do, will that modify my_var? Let’s say I want to make a vector of whatever to_reduced_form returns… and so on.

    All these questions are very easily answered by MyConcreteType x = my_var.to_reduced_form(). Now I immediately know that everything I can do with my_var, I can also do with x. This makes me happy, because I need to do less digging, and the code becomes clearer to read.


  • Thanks, that was a good read :)

    However, my impression is that he’s largely using the existence of templates and polymorphism as arguments that “we don’t really care about type”. I disagree: A template is essentially a generic type description that says something about what types are acceptable. When working with something polymorphic, I’ll prefer ParentClass&, to indicate what kind of interface I’m working with.

    Sure, it can be very useful to hide exact type information in order to generalise the code, but I think that’s a weak argument for hiding all type information by default, which is what auto does.


  • I really like C++ (I know, shoot me), and I think auto should be avoided at (almost) all costs.

    One of the things I love about a language like C++ is that I can take one glance at the code and immediately know what types I’m working with. auto takes that away while adding almost no benefit outside of a little convenience while writing.

    If I’m working with some very big template type that I don’t want to write out, 99/100 times I’ll just have a using somewhere to make it more concise. Hell, I’ll have using vectord = std::vector<double> if I’m using a lot of them, because I think it makes the code more readable. Just don’t throw auto at me.

    Of course, the worst thing ever (which I’ve seen far too often) is the use of auto in examples in documentation. Fucking hell! I’m reading the docs because I don’t know the library well! When you first bother to write examples, at least let me know the return type without needing to dig through your source code!