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

help-circle
  • I feel like there’s just too many different programming workflows, to try to pre-install them.

    Here on openSUSE, there’s ‘patterns’ you can install, which are basically just groups of packages, and they’ve got some pre-defined patterns for programming:

    I feel like that kind of goes in a more useful direction, although it’s still partially questionable what those contain. For example, the Java development pattern comes with Ant as the build system, when Maven and Gradle are more popular, I believe.

    I also have to say that I often prefer installing programming tooling in distro-independent ways, and ideally automated in the project repo, to avoid works-on-my-machine situations.
    Of course, something like Git, Docker, VMs etc. tend to be stable across versions, and I might not care for having the newest versions, but even with those, I think it’s good to install them on demand, rather than having them pre-installed. If the distro simply makes it a breeze to install them, that’s ideal IMHO.





  • As others have already said, Kate should work as text editor. I think, the only thing that’s not built-in is base64 en-/decoding, but you can set that up like this:

    That’s for decoding. For encoding, just change the name to “base64 encode” (exact name doesn’t matter) and remove the “–decode” from the Arguments-field.
    This relies on a CLI utility called base64, which is going to be pre-installed on most distros.
    It’s not entirely perfect, because it’ll always insert a newline, as that’s part of the base64 output. If you do want to get rid of that, you could write a tiny script and then call that script instead, but obviously, you don’t have to.

    You can also install Kate on Windows, if you want to give it a test-ride: https://kate-editor.org/
    (The base64 CLI won’t be available on Windows, though.)


  • Speaking as a software engineer, it’s usually a combination of things.

    The root of all evil is that yes, fixing that thing doesn’t just take one hour, as it should, but rather a few days. This is mostly preventable by having sufficient automated tests, high code quality and frequent releases, but it’s a lot of work to keep up with. And you really need management to not pressure early feature delivery, because then devs will skip doing necessary work to keep up this high feature-delivery velocity.

    Well, and as soon as such a small fix has a chance of taking more than a day or so, then you kind of need to talk to management, whether this should be done.
    Which means probably another day or so of just talking about it, and a good chance of them saying we’ll do it after we’ve delivered this extremely important feature, which usually means ‘never’, because there is always another extremely important feature.


  • My workplace preinstalls Ubuntu, personally I’m using openSUSE. I don’t even think that Ubuntu is particularly bad, I’m mainly frustrated with it, because it’s just slightly worse than openSUSE (and other distros) in pretty much every way.
    It’s less stable, less up-to-date, less resilient to breakages. And it’s got more quirky behaviour and more things that are broken out-of-the-box. And it doesn’t even have a unique selling point. It’s just extremely mid, and bad at it.



  • Oh, I don’t think, it really needs the plug. It’s been around since forever, a proper GNU project and all that.
    Sure enough, it’s kind of niche, but there’s even music archival projects that have been typesetting all the works of Mozart et al in Lilypond, so there’s enough of a community to keep this ball rolling for the foreseeable future.

    And well, that’s also kind of where it’s strongest: Transcribing existing music.
    It’s actually less well suited for composing, because you basically can only listen to things by generating a MIDI, and also you can’t move measures around as easily.
    But yeah, I still like it for composing, because I can use a text editor and Git and such, and personally, I also find it helpful to refer to notes with their names for figuring out intervals, rather than them just being random dots between lines…












  • It does have that, the ecosystem is just really fractured and also not good.

    Sort of the ‘standard’ way of managing dependencies is with Pip and a requirements.txt. By itself, that installs dependencies on your host system.
    So, there’s a second tool, venv, to install them per-project, but because it’s a separate tool, it has to do some wacky things, namely it uses separate pip and python executables, which you have to specify in your IDE.
    But then Pip also can’t build distributions, there’s a separate tool for that, setup.py, and it doesn’t support things like .lock-files for reproducible builds, and if I remember correctly, it doesn’t deal well with conflicting version requirements and probably various other things.

    Either way, people started building a grand unified package manager to cover all these use-cases. Well, multiple people did so, separately. So, now you’ve got, among others:

    • Pipenv
    • Pip-tools
    • Conda
    • PDM
    • Poetry
    • Rye

    Well, and these started creating their own methods of specifying dependencies and I believe, some of them still need to be called like a venv, but others not, so that means IDEs struggle to support all these.

    Amazingly, apart from Rye, which didn’t exist back when we started that project, none of these package managers support directly depending on libraries within the same repo. You always have to tag a new version, publish it, and then you can fix your dependent code.

    And yeah, that was then the other reason why this stuff didn’t work for us. We spent a considerable amount of time with symlinks and custom scripts to try to make that work.
    I’m willing to believe that we fucked things up when doing that, but what makes still no sense is that everything worked when running tests from the CLI, but the IDE showed nothing but red text.