• 0 Posts
  • 25 Comments
Joined 2 years ago
cake
Cake day: June 13th, 2023

help-circle


  • I mean, I’m not a big fan of bash, the most likely default shell, so my advice would be to explore some alternate shells.

    I am a little surprised completions aren’t working in bash by default, but yeah idk if it’s possible to get the cycling through suggestions. double tap tab and it should at least list the options though.

    I’d recommend you hop between some shells and see what you like. most distros tend to keep the default shell pretty vanilla, the most change you’ll get is maybe zsh with some nicer defauls.

    nushell is great and would be my first recommendation. everything is structured like powershell, but way less verbose and more emphasis on integrating the existing cli ecosystem than pwsh’s commandlets for everything.

    fish or oh-my-zsh are things other people recommend. you don’t get structured data but they do give a better completion experience and other nice things

    I want to like xonsh, and used it for a few years, but it has the same problems pwsh has with separate ecosystems of structured commands and unstructured text. if you’re a python person though I’d consider it too though.


  • python isn’t the only language to do “execute everything imported from a particular file and all top level statements get run”. both node and c# (but with restrictions on where top level statements can be) can do that type of thing, I’m sure there’s more.

    python conventions are unique because they attempt to make their entrypoint also importable itself without side effects. almost no one needs to do that, and I imagine the convention leaked out from the few people that did since it doesn’t hurt either.

    for instance in node this is the equivalent, even though I’ve never seen someone try before:

    if (path.resolve(url.fileURLToPath(import.meta.url)).includes(path.resolve(process.argv[1])))
    {
      // main things
    }
    



  • because with things that the compiler does, like padding for alignment, it frequently takes up more space than that. that was my argument the whole time. what til are you talking about? I’m talking about an extra layer you’ve decided doesn’t count. ofc sizeof bool will be a byte in all of those languages.

    a bool taking up a single byte is a fantasy that those languages use because developers generally don’t need to think about all the other stuff going on.




  • c++ guarantees that calls to malloc are aligned https://en.cppreference.com/w/cpp/memory/c/malloc .

    you can call malloc(1) ofc, but calling malloc_usable_size(malloc(1)) is giving me 24, so it at least allocated 24 bytes for my 1, plus any tracking overhead

    yeah, as I said, in a stack frame. not surprised a compiler packed them into single bytes in the same frame (but I wouldn’t be that surprised the other way either), but the system v abi guarantees at least 4 byte alignment of a stack frame on entering a fn, so if you stored a single bool it’ll get 3+ extra bytes added on the next fn call.

    computers align things. you normally don’t have to think about it. Consider this a TIL moment.










  • ctrl v is convention for paste, but plenty of things (ex terminals) use that for something else. this is a universal (wrt the app receiving it) keycode that means paste. it lets you bind a key, or a keyboard shortcut, to the paste key and paste in any app. without this it isn’t possible.

    it doesn’t even have to be a new programmable keyboard. there exist software key remappers for linux.

    you could remap a mouse button to paste, you could remap ctrl v to always paste regardless of the app, etc., all in software, all not possible before.