• 1 Post
  • 15 Comments
Joined 1 year ago
cake
Cake day: June 27th, 2023

help-circle

  • One problem with exceptions is composability.

    You have to rely on good and up-to-date documentation or you have to dig into the source code to figure out what exceptions are possible. For a lot of third party dependencies (which constitute a huge part of modern software), both can be missing.

    Error type is a mitigation, but you are free to e.g. panic in Rust if you think the error is unrecoverable.

    A third option is to have effect types like Koka, so that all possible exceptions (or effects) can be checked at type level. A similar approach can be observed in practical (read: non-academic) languages like Zig. It remains to be seen whether this style can be adopted by the mainstream.






  • The original “agile” is a reaction to the overly rigid planning and emphasizes worker self-management. It makes sense since the people who are closest to the work (the workers) know best how to plan and implement the work.

    It immediately breaks down when a specialized management tier emerges and tries to push their own agenda, i.e. to sell themselves rather than do something meaningful.

    At this point, whichever form is used doesn’t matter. The management, endowed with the power from above, will exploit the weakness of any agile-shmagile methodology to push their own agenda.



  • As other comments point out, they are usually not properly packaged through nix.

    If you read the vim/plugins modules, for most plugins, the derivation just downloads the plugin, puts it to nix-store, and makes it available to the editor through environment variables. So it’s similar to the binary distributed software. Two most notable restrictions:

    1. Nix is not aware of transient dependencies.
    2. The plugin is not aware of the nix-store model.

    So for plugins that don’t have external dependencies (or dependencies other than the “common” ones like python or sh that happen to be available), and that don’t interact with the filesystems, this approach would be fine, but the more complex ones would fail.

    In your example, mason failed because of 1, home-manager wasn’t aware that the pip module is a transient dependency of this plugin; and treesitter failed because of 2, because it doesn’t know that nix-store is read-only and should be managed by nix.

    There are no general solutions, but people may have nixified some plugins on a case-by-case basis. If you don’t want to spend a lot of time (and remember that it might be broken by the next plugin upgrade), as others have suggested, take the traditional plugin management approach. (Personally, I use LunarVim which uses Lazy.nvim and it’s been working fine.)



  • To be good at programming, a lot of knowledge is needed, but “accidental”. From practical ones like how to use git, to conceptual ones like cache performance mental model. It’s perfectly possible that git is designed with a different CLI, or the common cache line size being 512 bytes. Mathematicians usually don’t care about these things, since they are accidental. So they are bad at writing programs that’s far away from math.

    It’s a completely different story when they are writing programs about math. If the tool is good enough, i.e. allowing them to express math ideas in familiar terms, mathematicians are very good at writing math programs. As can be observed in Lean and mathlib.


  • Phoenix3875@lemmy.worldtoMemes@lemmy.mlFast casual
    link
    fedilink
    arrow-up
    2
    ·
    9 months ago

    The difference is that fixed capital matters little to the rate of profit, so they can spend a lot of money and it still evens out over the period of operation. The food and wage, on the other hand, affects the rate of profit a lot. So we can usually see restaurants with “fancy” decors, but with shitty food and low wages.