• 1 Post
  • 109 Comments
Joined 4 years ago
cake
Cake day: May 31st, 2020

help-circle

  • Hmm, maybe my opinion is just shit in that regard. I don’t code terribly much low-level, so I’m probably overestimating the complexity and underestimating the options for cleaning things up.
    That was kind of just a random example, I felt like there were many more cases where low-level code is complex, but I’m probably basing this off of shitty low-level code and forgetting that shitty high-level code isn’t exactly a rarity either.


  • In my opinion, it strongly depends on what you’re coding.

    Low-level code where you need to initialize array indices to represent certain flags? Absolutely comment the living shit out of that. → See response.
    High-level code where you’re just plumbing different libraries? Hell no, the code is just as easily readable as a comment.

    I do also think that, no matter where you lie in this spectrum, there is always merit to improving code to reduce the need for documentation:

    • Rather than typing out the specification, write a unit/integration test.
    • Rather than describing that a function should only be called in a certain way, make it impossible to do it wrongly by modelling this in your type system.
    • Rather than adding a comment to describe what a block of code does, pull it out into a separate function.
    • Rather than explaining how a snippet of code works, try to simplify it, so this becomes obvious.

    The thing with documentation is that it merely makes it easier to learn about complexity, whereas a code improvement may eliminate this complexity or the need to know about it, because the compiler/test will remember.

    This does not mean you should avoid comments like they’re actively bad. As many others said, particularly the “why” is not expressable in code. Sometimes, it is also genuinely not possible to clean up a snippet of code enough that it becomes digestable.
    But it is still a good idea, when you feel the need to leave a comment that explains something else than the “why”, to consider for a moment, if there’s not some code improvement you should be doing instead.


  • Diese Regeln werden eigentlich nur dann angewendet, wenn sich ein Author oder Unternehmen Gedanken macht. “Vibe” wurde eher im alltäglichen Gebrauch eingeführt, da ist es sehr viel zufälliger, was sich durchsetzt.

    Warum es sich konkret durchgesetzt hat, da fand ich die anderen Theorien schon ganz gut. Eine weitere wilde Theorie:
    Die Aussprache von “Vibe” ist ähnlich zu “Weib”. Und “Weib” verwendet schon den Artikel “das Weib”, bzw. in der Mehrzahl dann natürlich auch “die Weiber”. Es könnte also einfach verständlicher gewesen sein, den übriggebliebenen Genus “der Vibe” zu verwenden.



  • But that is what I mean with it needing an extension of the language.

    So, I’m not saying you could just build a library that calls existing PHP functions to make it all work. Rather I’m saying there’s certain machine code instructions, which just cannot be expressed in PHP. And we need those machine code instructions for actually managing memory. So, I am talking about reading/writing to memory not being possible, unless we resort to horrible hacks.

    Since we are building our own compiler anyways, we could add our own function-stubs and tell our compiler to translate them to those missing machine code instructions. But then that is a superset of PHP. It wouldn’t be possible in PHP itself.

    Again, I’m not entirely sure about the above, but my web search skills couldn’t uncover any way to actually just read from a memory address in PHP.


  • I mean, I’m a bit out of my water there, both in terms of the featureset of PHP and what’s actually needed for a kernel, but I’m still gonna go with no.

    For one, PHP uses reference counting + garbage collection for memory management. That’s normally done by the language runtime, which you won’t have when running baremetal.

    Maybe you could implement a kernel, which does as few allocations as possible (generally a good idea for a kernel, but no idea, if it’s possible with PHP), and then basically just let it memory leak until everything crashes.
    Then again, the kernel is responsible for making processes crash when they have a memory leak. Presumably, our PHP kernel would just start overwriting data from running processes and eventually overwrite itself in memory(?). Either way, it would be horrendous.

    Maybe you could also try to implement some basic reference counting into your own PHP code, so that your own code keeps track of how often you’ve used an object in your own code. Certainly doesn’t sound like fun, though.

    Well, and secondly, I imagine, you’d also still need an extension of the language, to be able to address actual memory locations and do various operations with them.

    I know from Rust, that they’ve got specific functions in the stdlib for that, see for example: https://doc.rust-lang.org/stable/std/ptr/index.html#functions
    Presumably, PHP does not have such functions, because its users aren’t normally concerned with that.




  • I mean, presumably there’s a microcontroller in this radio. For programming that, your only real mainstream choices are C, C++ and Rust, since you can’t have a language runtime without a filesystem.

    But yeah, it’s neither the case that Rust is overwhelmingly popular for that (C/C++ do stick around still), nor is it the only discipline where Rust shines.



  • I believe, it’s because various Python libraries ship with a pre-compiled C/C++/Rust library. That library needs to be compiled for a specific target, and you often only get Linux x86_64 on Pypi, because that’s what most library devs use themselves.

    Conda tries to solve that by providing a separate repository, where they do have builds for more targets available, but as a result, they have fewer libraries available in that repo. That’s why we needed to install some via Conda and some via Pipenv/Pypi.


  • Early on in my career, I had to do a project in Python, together with another junior. Neither of us had any clue how to handle Python and he was on Windows, so, if I remember correctly, he had to install some dependencies from Pipenv, others from Conda, and his setup would break every two weeks in novel ways.

    Eventually, we became quite good at installing a working setup, but correctly removing the broken setup was a pain. Often times, I thought that just reinstalling the whole OS would be quicker. 🫠





  • Aside from the technology stack being the embodiment of vendor lock-in and misery, the scamming is really what makes me not want to work on Generative AI tasks, or whatever the next hype thing is going to be.

    The worst part is that many people want to be scammed. We have customers come to us, asking for a solution to a problem they’ve had for long time, and asking it to be solved with GenAI.
    Then we tell them that there’s really no use-case for GenAI there, that it could be better solved for half the money using traditional methods.

    At which point, they ask us to integrate GenAI in some place anyways, because otherwise their boss will not give them the money. And of course, that boss also has a boss who also only frees up budget for GenAI.
    And that just repeats upwards, until you have shareholders at the top, who eat up the hype, because other shareholders eat up the hype.


  • Had that happen at work. I just drag-and-dropped a file into the Outlook web-UI, thinking it’d attach as an e-mail. Turns out, they recently changed that feature and you now have to drop into the right half of the area. If you drop into the left half, it uploads into OneDrive.

    I accidentally did that. The document had personal data inside. That’s a breach of GDPR. Fucking ace.

    (I’m not sure that attaching to the e-mail isn’t also a breach of the GDPR, since my company switched Microsoft 365 for various things. But yeah, I certainly would have liked a confirmation dialog.)