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

help-circle






  • Sure, I didn’t claim that the bad ecosystem makes the language as such bad (although it is still bad, for other reasons). It’s just an additional disadvantage of developing software on the Java platform.

    That said, I do think some of the bad code out there is an effect of trying to work around flaws or missing features in the language. Libraries like Spring add an additional configuration layer that is practically like an additional language on top of the base language. Instead of coding Java, you’re coding Bean configurations and filter chains. Unfortunately all of that comes without useful debugging tools, so you’re left scratching your head why the system isn’t doing what you want. Log4J is another such complex configuration system that - unfortunately - customers are encouraged to change themselves which leads to confusing failure modes and insufficient user interfaces.


  • Well it’s always about finding a good balance isn’t it. Too many features like in C++ has negative consequences. Preferably you want something that lets you do all that you need to do, but not more. The trick to designing a good language is to let developers achieve as much as possible with as few features as possible, while keeping the code easy to reason about and understand.

    This is obviously both subjective and highly dependent on what problem you are trying to solve, but I can’t think of any situation in my career where C# would not have been a better a choice than Java from a strictly technical perspective. It’s not just that the C# language is better, it’s that the Java ecosystem is founded on poor design choices that result in code bloat and implicit behavior that is hard to troubleshoot and secure. See e.g. Spring, which automatically picks up and loads any logging library that happens to be in the user’s path, even if that is an exploitable version of log4J. Java has become corrupted by enterprise architects. This satirical project demonstrates what I mean.

    I say this as someone who is currently developing a FOSS Java library in my spare time, out of frustration with the Java code I had to endure at work.






  • I like how you think but I’m not sure if that alone will hold water. A variable can vary wildly even though it’s not very relevant to the property you’re interested in, and PCA would consider such a variable to be very significant. Perhaps a neural network could find a latent space. But ideally we want the components to have some intuitive meaning for humans.


  • I’ve been thinking about this now and again. IMO gender, if one insists on tracking it at all (which I mostly find counterproductive), would need to be a vector / tuple of floating-point values. The components would be something like:

    1. Sexual Development Index: Encodes chromosomal sex, genitalia, and other primary sexual characteristics (X/Y chromosome ratio).
    2. Hormonal Balance & Secondary Sexual Characteristics: Combines hormonal levels and the resulting secondary traits (body hair, muscle mass, etc.).
    3. Brain Structure: A dimension indicating how a person’s brain structure aligns with typical male or female patterns.
    4. Gender Identity: A measure of self-identified gender, representing the psychological and social dimension.
    5. Fertility/Intersex Traits: A combined measure of fertility potential and the presence of intersex traits (e.g., ambiguous genitalia, mixed gonadal structures, etc.).

    Ideally it would track the specific genes that code for all of the above factors, but unfortunately science hasn’t got those down yet.





  • Oracle has a product called Oracle Policy Automation (OPA) that it sells as “you can write the rules in plain English in MS Word documents, you don’t need developers”. I worked for an insurance organization where the business side bought OPA without consulting IT, hoping they wouldn’t have to deal with developers. It totally failed because it doesn’t matter that they get to write “plain English” in Word documents. They still lack the structured, formal thinking to deal with anything except the happiest of happy paths.

    The important difference between a developer and a non-developer isn’t the ability to understand the syntax of a programming language. It’s the willingness and ability to formalize and crystallize requirements and think about all the edge cases. As an architect/programmer when I talk to the business side, they get bored and lose interest from all my questions about what they actually want.