• 18 Posts
  • 634 Comments
Joined 5 years ago
cake
Cake day: May 31st, 2020

help-circle
  • 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.


  • I thought about creating something like that and the major problem that I see is that lots of meme templates do have copyright and the font that’s typically used for memes, Impact, isn’t free either. Well, and it isn’t done by merely developing a software and offering it for download. You would need to host the meme templates or some editor webpage, which is a whole 'nother skillset.

    If we say that users bring their own meme template, and it can be a free font that looks similar to Impact, and it’s not to be hosted as a webpage, then it would be quite doable.
    You would “just” need to call the ImageMagick library with the right parameters. Still not trivial, but the path to get there is fairly straightforward. I could imagine that something like that already exists as an open-source project…



  • 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.






  • I find it so tricky, too. With the maintainers that I see struggling, it’s rarely a lack of contributions that fucks them up, but rather a lack of maintainers. And they can’t easily onboard other maintainers, because:

    1. there’s hardly anyone willing to invest enough time into your project to be a particularly helpful maintainer.
    2. everyone’s just strangers on the internet, who may or may not want to ship malware as part of your project.

    Like, I even have a friend who’s excited for a project that I’m building, but so far, they’re purely cheerleading (which is appreciated), because they do have projects of their own that they find fun, and in particular also a life outside of programming.
    I do not currently struggle with maintainership (because I haven’t announced my projects anywhere publicly 🤪), but yeah, it just feels like it’s asking for a lot, if I were to try to get that friend on board. In particular also, because not many aspects of maintainership are fun.


  • I’m currently prototyping a macro to help reduce boilerplate, as part of a more general library. And I’m doing some wild shit, like defining the fields of a data type from the parameter list of a function.

    But then, yeah, what I’m now stuck on is that my generated code references a data type under one name, but it’s actually got a different name in the public API. All the wild shit was smooth sailing, but a technicality now fucks me over. 🫠


  • Pretty sure that knowing COBOL isn’t the hard part. It has relatively few language concepts.

    This lack of language concepts just makes it difficult to reason about it, so that’s what you’re getting a paycheck for. Well, and possibly also because it might take months to have a new dev figure out your legacy codebase, so it’s cheaper to keep the current dev by paying them competitive prices.


  • The thing I never understood about PowerShell is that it’s partially more verbose than C#, which is one of the most verbose programming languages in existence. It just feels like you might as well go for a full-fledged programming language at that point.

    The appeal of Bash et al is that the scripting is almost the same as the interactive usage, which you already know. But because PowerShell is so verbose, I’m really not sure people do use it interactively.

    I guess, that code snippet in the article makes somewhat of a difference, in that PowerShell offers better features for interop between processes. But man, that still feels like it could’ve been a library instead…





  • I agree in general, that a crash is much better than silently failing, but well, to give you some of the nuance I’ve already mostly figured out:

    • In a script or CLI, you may never need to move beyond just crashing.
    • In a GUI application or app, a crash may be good (so long as unsaved data can be recovered), but you likely need to collect additional information for what the program was doing when the crash happened.
    • In a backend service, a crash can be problematic when it isn’t actually necessary, since it can be abused for Denial-of-Service attacks. Still infinitely better than failing silently, but yeah, you gotta invest into logging, monitoring and alerting, so you don’t need to crash to make it visible.
    • In a library, you generally don’t want to trigger a crash, unless an irrecoverable error happens, because you don’t know where it’ll be used.

  • Currently implementing error handling for a library I’m building and the process is basically to just throw all of the information I can find into there. It makes the error handling code quite verbose, but there’s no easy way for me to know whether the underlying errors expose that information already, so this is actually easier to deal with. 🫠