• 0 Posts
  • 217 Comments
Joined 1 year ago
cake
Cake day: June 18th, 2023

help-circle












  • My biggest gripe is the lack of respect/understanding for the importance of data models and clear domain boundaries.

    Most things that end up as “technical debt” can be traced to this. Sometimes, it’s unavoidable, because what the data models changes, or the requirements of the domain, etc.

    And, it’s very innocent looking differences sometimes. Like “We know that the external system state will change from A to B, so we can update that value on our side to B”. Suddenly you have an implicit dependency that you don’t express as such.

    Or, things like having enum that represents some kind of concept that isn’t mutually exclusive. Consider enum values of A and B. Turns out this really represented AZ, and BP (for some inherent dependency to concepts Z and P). Someone later on extends this to include ZQ. And now, suddenly the concept of Z, is present in both AZ and ZQ, and some consumer that switches on concept Z, needs to handle the edge case of AZ… And we call this “technical debt”.


  • I did eventually yes. Thanks for asking. I was exhausted yesterday, and upon reading my comment again, I get the downvotes. Being a second language doesn’t fully explain the wrong tone there. The article was a lot more insightful and in depth than I had mistakenly assumed.

    After reading it tho, it seemed a lot more focused on performance than I think would be warranted. But that could be due to different concerns and constraints than where I’m used to working. I’d focus more on the mechanisms that best expresses the intent, and although they do discuss this well, the Venn diagram for the appropriate use of exceptions and error codes don’t overlap as much in my world.

    And, it’s not like I’m arguing that they are wrong. It’s an opinion on a choice for a tradeoff that I only think, while allowing the possibility of being wrong, might miss the the mark. Stack unwinding is by its nature less explicit for the state it leaves behind. So it shouldn’t be a question of either error codes or exceptions, but which are most appropriate to express what, and when.

    Even for Rust, where monads are preferred and part of the language to express and handle error codes, I would say that the statement of “newer languages like Rust don’t allow the use of exceptions”, seems incorrect to me. Something like panic!("foo"); coupled with panic::catch_unwind(|| { ... } }); I believe would unwind the stack similar to that of a throw/catch.

    Anyways. Thanks for reminding me to actually read the post. It was well worth it, and very insightful.




  • okamiueru@lemmy.worldtoLinux@lemmy.mlIs Linux As Good As We Think It Is?
    link
    fedilink
    arrow-up
    8
    arrow-down
    1
    ·
    edit-2
    2 months ago

    I’ve used DOS, 3.11 to all the way to 11. Switched to Linux as main driver around 2009. Used MacOS at work for over a year now. I occasionally boot into windows for rare game that uses some anti cheat that doesn’t play well with wine.

    I’m old enough that I just want things to work. I don’t care for any fanboyism. These are my opinions:

    • Windows is a mess. It has different UI from different decades, depending on what and where. NT kernel is ancient. The registry is a horror show. The only edge it has, is third party software, like propriatery drivers. that’s it. And that’s isn’t a merit of windows, but rather market share.

    • MacOS is inconsistent at every turn. It’s frustrating to use, and riddled with UX bugs, and seemingly deliberate lack of functionality. The core tooling, like the file manager, is absolute garbage. The only good thing it has going it, is that the Unix core is solid. In that year, I’ve experienced a soft brick once, that almost was a hard brick, and the reason was having set the display refresh rate from 120 to 60 Hz. Something I changed BTW, because certain animation transitions in MacOS took twice as long on 120 Hz… Yeah, top notch QA there Apple.

    • Linux. It has its own flaws. For sure. But as for “just works”, it happens so often, that it’s exactly why Windows and MacOS feels so frustrating. I’d have my grandmother use Linux.

    And, I’m not just saying this. When I upgraded components on windows, I spent 2 hours debugging problems. One of the problems was also that it reverted a GPU driver, where every single version information was unmistakably older. It also made it not work.

    I’ve also experienced that the WiFi network adapter also doesn’t work until I download some proprietary software over ethernet cable.

    On Linux? I didn’t need to do a single thing in either case. It for sure didn’t use to be this way. In 2009 I was hunting WiFi drivers for fedora over ethernet. But in the last, say 5 years, on Arch, it’s been amazing. Did I mention that I use arch?

    Ps: The last 4 times I’ve had problems on Linux have been:

      1. A Windows update fucks up grub.
      1. Reboot from windows doesn’t release hardware claim on WiFi adapter, so it doesn’t work on Linux.
      1. The system clock is wrong, which was easy to notice because of 2. leading to a lack of remote sync. This is due to Windows storing system time as local time, and not UTC. If you do software development, you’d know how dumb the former is.
      1. Raid partition destroyed because a windows 7 install decided to, unprompted, write a boot partition on a disk with “unknown” file system.