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

help-circle

  • Yeah, Java’s enforcement of everything must be a class put me off of the language right from the start. I was already used to C++ at that point and hated that I couldn’t just write a quick little test function to check something, it needed a bunch of boilerplate to even get started.

    I still think C++ has a great balance between object oriented and sequential programming. Not sure if it’s the best, but I can’t think of ways to improve on it, other than built in concurrency object stuff (like monitor classes that have built in locks that prevent more than one thread from accessing any of its functions at the same time, basically guaranteeing any code in it has mutual exclusion).


  • Sometimes tech presentations make me feel really bad for the person giving it. They are up there trying their best but clearly don’t have the skills to do more than just communicate information but still try to make their presentation cool and fun and it just falls flat.

    Anyone can be cool, but not everyone can be cool on demand or on stage.

    Though on the other hand, just because a presenter can pull off the cool factor, it doesn’t mean what they are presenting is actually cool. The coolness of a presentation has no correlation with the coolness of what is being presented, unless that coolness is just information about the product (though even then, they are probably skipping over the flaws and enshitification).


  • Business logic would be transformations to the data. Like for a spreadsheet, the data layer would handle the reading/writing of files as well as the storage of each cell’s content. The business logic layer would handle evaluating each of the formulas in the cells, and the presentation layer draws it on the screen.

    I think the part where it gets confusing is that each of these layers are pretty tightly coupled. The end destination of the presentation layer might change, one might show it on a GUI, another might print it, and another might convert it to pdf or html, but each of those presentation layers needs to understand the data that it is presenting, so it’s tightly coupled to the data layer. Same with the businesses logic layer, though it’s tightly coupled on both the input and output sides. The design of the data layer constrains the possibilities of the other two, so it’s hard to draw a clear boundary between the layers because they all need to know how to walk the same data.

    My mental flow chart for this is more of a data layer in the middle instead of business logic, where business logic is to the side with arrows going both ways between it and data layer, then the presentation layer also accessing the data layer directly, which I suppose is a different permutation of what you described.

    Though another way to look at it does make sense. For a website, think of the database as the data layer, the server scripts as the business logic layer, and the client side scripts/html/css as the presentation layer. That one also follows the layered approach where the presentation layer is talking with the business logic layer.


  • Yeah, well-designed abstraction can help enable more concurrency. That said, concurrency isn’t easy at any point once there’s shared data that needs to be written to during the process. Maybe it’s not so bad if your language has good concurrency support (like monitor classes and such that handle most of the locking behind the scenes), but even then, there’s subtle pitfalls that can add rare bugs or crashes to your program.





  • I haven’t gotten my hands dirty with this stuff specifically, but maybe you need to adjust buffer sizes to properly handle the different bit rates. Do you mainly see issues with higher combinations? The sample rate * bit depth is the important number, here. If you consider the problematic ones from that perspective, is there a threshold where anything under works fine but anything above has issues that get worse depending on how far above the threshold it is?

    I’m not certain, but I believe the audio buffer is handled via a callback function that gets called when the audio buffer is some % close to empty, and then the program refills the buffer, plus some other overhead. That data left in the buffer sets the deadline for refilling the buffer; miss that deadline and the audio cuts out. Meet the deadline and audio is seemless.

    A too small buffer will require the callback be called more often, and then the overhead can add up to missing deadlines. Alternatively, the % when it does the callback might need to be adjusted.

    Another consideration is if your DAC doesn’t support the chosen sample rate and bits per sample, then there is probably another buffer of the supported size and a conversion from one to the other (and its own callback when that buffer gets low). That said, I don’t know if it’ll even list unsupported combinations because I’m having trouble thinking of a valid use case. But it’s technically possible, so maybe it is like that.

    Anyways, those are what I’d be checking to debug this. If it is a setup problem, it won’t likely ever go away on its own, unless better defaults get set for those bitrates, but the ideal values depend on your system’s performance, so if yours is on the weaker side, it might never change.



  • I think the windows connection help wizard might have actually fixed a connection issue I had once. Out of more chances than I probably should have given it, considering how often it did dick all, despite my phone’s connection being fine.

    I think there’s a rare race condition or something in the windows network stack because I’ve had four different machines suddenly lose the ability to connect to working networks, where sometimes toggling airplane mode would fix it, sometimes even that wouldn’t do anything and it needed a restart. It happened more often with wireless connections, but I’ve seen it affect wired ones, too.


  • It feels like a bunch of moderation decisions are made by people just trying to satisfy some arbitrary OCD-like requirements. Like “you can’t reply to an old conversation” or “you can’t talk about a problem someone has already talked about”. That stuff is worse than the people who reply useless shit like RTFM (aka “I go to helo forums not to provide help but to gloat about the things I know that you don’t and act like every single comment is addressed to me personally and needs my input”) because at least those useless comments don’t kill the rest of the conversation.


  • My experience when I switched about a year ago was to wonder why I had put it off for so long because from day 1, it was more comfortable to use.

    Ans this is despite me using a DE I’d never used before (cinnamon) and ended up not really liking and getting “pushed” to another one (KDE) like windows pushed me to another OS (and even that was another “why didn’t I do this sooner?”).

    So a DE that was bad enough that I was happy to find a better alternative was still such a better experience than windows that I didn’t miss any of the comfort of familiarity at all from the start.

    And the longest part of the process was a) fighting windows to write the install iso properly (iirc it wanted to add the stupid windows meta folder files or something like that, causing the iso to fail the hash check, and I have a feeling that that side effect might be a reason they do it that way), and b) reading up on the various options in case I wanted something other than the default or common options (I didn’t but it was good to learn).