• 4 Posts
  • 908 Comments
Joined 6 years ago
cake
Cake day: May 31st, 2020

help-circle


  • Their primary purpose certainly isn’t the same, but with JavaScript being used to implement text editors, it’s in a playing field where many would argue that Rust is better suited.

    Well, and Rust can play in JavaScript’s playing field, too: You can implement webpages in HTML+CSS+Rust by going through WebAssembly.


  • Man, at $DAYJOB, if we open-source something, they tell us to check for checked-in passwords and whatnot, and force us to throw away the commit history, which always feels stupid when we’ve known upfront that we’re going to open-source it and so kept things clean from the start.

    But then, yeah, you see a post like that and just think that it really wouldn’t have been too difficult to search for swear words before publishing.
    I mean, I also don’t really care, since it’s code rather than an official communication channel, but I can understand why management might care.


  • Man, I keep having that problem, that some car or motorcycle sounds like it needs a repair to me, only for me to realize that, no-no, they want it to sound like that.

    Just yesterday evening, I heard someone revving before accelerating again after a stop at a crossing, and if they would’ve gotten out of their car at that point, I might’ve shouted over that, damn, sounds like they need to get their clutch looked at.
    Genuinely thought they failed to engage a gear multiple times. Meanwhile, they would’ve probably punched my face in, if I insulted their car like that. 🙃


  • I mean, modern package managers generally now come with lock files, which effectively auto-pin your dependencies, until you trigger a dependency update.

    And while it isn’t bullet-proof, it does result in you effectively having a dependency cooldown most of the time. You’re only vulnerable, if you trigger the dependency update while the compromised dependency release is public.

    Obviously, this can be bad enough, but it does also mean that an ecosystem with lock files is far less attractive to target with a supply-chain attack, since far fewer hosts will get compromised on average.



  • One time, I had to request firewall access for a machine we were deploying to, and they had an Excel sheet to fill in your request. Not great, I figured, but whatever.

    Then I asked who to send the Excel file to and they told me to open a pull request against a Git repo.
    And then, with full pride, the guy tells me that they have an Ansible script, which reads the Excel files during deployment and rolls out the firewall rules as specified.

    In effect, this meant:

    1. Of course, I had specified the values in the wrong format. It was just plaintext fields in that Excel, with no hint as to how to format them.
    2. We did have to go back and forth a few times, because their deployment would fail from the wrong format.
    3. Every time I changed something, they had to check that I’m not giving myself overly broad access. And because it’s an Excel, they can’t really look at the diff. Every time, they have to open it and then maybe use the Excel version history to know what changed? I have no idea how they actually made that workable.

    Yeah, the whole time I was thinking, please just let me edit an Ansible inventory file instead. I get that they have non-technical users, but believe it or not, it does not actually make it simpler, if you expose the same technical fields in a spreadsheet and then still use a pull request workflow and everything…





  • Personally, I find that (complex) software implemented in Python tends to be so unreliable that I typically don’t want to use it after all, but I only find that out after wasting a bunch of time learning the software.
    It’s just frustrating, especially if I come back to the software every so often, naively thinking that it’s been a few versions, so maybe they’ve fixed it. It’s always just different bugs, which still end up being too frustrating to use the software.


    To give an example, I like to compose music using Lilypond, which is more-or-less a programming language to create sheet music. And there is a program that’s supposed to give you a well-integrated workflow for that (i.e. an IDE), called Frescobaldi.
    The first time I tried it, playback of the composed music wouldn’t work.
    The second time, I couldn’t click on notes to jump to the respective code snippet.
    And I tried it again a few weeks ago and it just crashed immediately with an obscure error message.

    Instead, I’ve slapped together a script, which just opens the sheet music in my PDF viewer, the code in my normal editor and then uses a CLI tools to generate and playback the sheet music. And while it’s definitely not perfect, it has been working more reliably for me than Frescobaldi ever has.


  • Yeah, this discrepancy really irks me in programming, too. It’s really good at known problems, like student homework or whatever task a middle manager will throw at it to see how well it works.
    But because of the nature of software – if there is a solution, you can easily share it with everyone in the world – it’s kind of our job to work on anything but known problems.

    Yeah, there’s gonna be some known parts, where it may be able to assist, similar to a library or StackOverflow. But if it can put together your whole solution without tons of human input, chances are that solution is already out there and you should be using it instead.





  • I’ve seen it argued that the best way to create lightweight software is to give devs old hardware to develop on.

    Which, yeah, I can see that. The problem is that as a dev, you might have some generic best practices in your head while coding, but beyond that, you don’t really concern yourself with performance until it becomes an issue. And on new hardware, you won’t notice the slowness until it’s already pretty bad for those on older hardware.

    But then, as the others said, there’s little incentive to actually give devs old hardware. In particular, it costs a lot of money to have your devs waiting for compilation on older hardware…