• 2.18K Posts
  • 4.61K Comments
Joined 11 months ago
cake
Cake day: July 18th, 2024

help-circle
  • Yes because that is a wrong and clunky way to do it lol.

    If you really wanted to, you could use dockerTools.BuildImage to create an “imaged” version of the container you made, or you could send around the flake.nix and flake.lock files exactly as someone would send around Dockerfiles. That stuff is usually just not necessary though, because it’s replaced with just a better approach (for the average-end-user case where you don’t need large numbers of Docker containers that you can deploy quickly at scale) that accomplishes the same thing.

    I feel like I’m not going to convince you of this though. Have fun with Docker, I guess.




  • It’s more insidious than that. It takes over all the tedium of the cognitive process, but it can’t actually accomplish the task (unless the task is basically boilerplate of the English or programming variety). So, unless you have pretty firm discipline to do for yourself what it “could do if you just give it a couple tries,” you’re stuck unable to really get your focus going but also unable to have the thing do the work for you.

    I’m pretty sure that, now that I look at it, I am often slower working with the LLM depending on the task. I still think it can help enormously but you definitely have to be watchful of how much you’re having it do and whether or not it is really helping. That’s not even addressing the issue of technical debt (someone writing code that “works” but hasn’t been well thought through in terms of ramifications is the whole reason software sucks… LLMs are not helping that problem, at all.)




  • Hold up, nix added containerization? How did I miss that? I will have another look now!

    Nix is containerization. Here is firing up a temporary little container with a new python version and then throwing it away once I’m done with it (although you can also do this with more complicated setups, this is just showing doing it with one thing only):

    [hap@glimmer:/proc/69235/fd]$ python --version
    Python 3.12.8
    
    [hap@glimmer:/proc/69235/fd]$ nix-shell -p python39
    this path will be fetched (27.46 MiB download, 80.28 MiB unpacked):
      /nix/store/jrq27pp6plnpx0iyvr04f4apghwc57sz-python3-3.9.21
    copying path '/nix/store/jrq27pp6plnpx0iyvr04f4apghwc57sz-python3-3.9.21' from 'https://cache.nixos.org/'...
    
    [nix-shell:~]$ python --version
    Python 3.9.21
    
    [nix-shell:~]$ exit
    exit
    
    [hap@glimmer:/proc/69235/fd]$ python --version
    Python 3.12.8
    

    The whole “system” you get when moving from Nix to NixOS is basically just a composition of a whole bunch of individual packages like python39 was, in one big container that is “the system.” But you can also fire up temporary containers trivially for particular things. I have a couple of tools with source in ~/src which, whenever I change the source, nix-os rebuild will automatically fire up a little container to rebuild them in (with their build dependencies which don’t have to be around cluttering up my main system). If it works, it’ll deploy the completed product into my main system image for me, but if it doesn’t then nothing will have changed (and either way it throws away the container it used to attempt the build in).

    Each config change spawns a new container for the main system OS image (“generation”), but you can roll back to one of the earlier generations (which are, from a functional perspective, still around) if you want or if you broke something.

    And so on. It’s very nice.


  • I mean if it makes you happy, I won’t tell you to do anything different. I think a certain amount of it is just prejudice against Docker on my part. Just in my experience NixOS is the best of both worlds: You can have a single coherent system if everything in that system can play nice with each other, and if not, then things can be containerized completely that way still works too. And then on top it has a couple of other nice features like rolling back configs easily, or source builds that get slotted in in-place as if they were standard packages (which is generally where I abandon Docker installs of things, because making changes to the source seems like it’s going to be a big hassle).

    I’m not trying to evangelize though, you should in all seriousness just do what you find to be effective.





  • Huh.

    IDK man, my experience is that Nix solves the problem you originally talked about and a bunch of others, pretty effectively. Among other things if things “just… don’t work” you can trivially roll back to an earlier working config, and see what changed between working and not-working, and so what would be a pretty grueling debugging process in some other environment becomes pretty easy to sort out.

    But whatever. If for some reason Docker makes you more happy and not less, you’re welcome to it and best of luck.





  • My laptop will send a signal to all programs telling them to shut down, which includes cleaning up their stuff, and then it unmounts the drives, and then it shuts down. It just doesn’t wait forever and make me fix the problem if some program is having trouble shutting down. That is the correct behavior.

    I do get that it’s nice to be protected against having your work blown away. As a first step, the idea of checking with every program to make sure it’s okay to turn off was a good progress, back in the past when it was first invented. The solution in the present day to that is autosave. The solution is definitely not to leave all the user’s work unsaved for a potentially unlimited amount of time, and then refuse to shut down if there is any terminal that still has an ssh session open, any settings window still open, or any GIMP session with files exported but not saved as .xcf.

    Literally 2/3 of those obstacles happen pretty much every time I shut down my Mac, and I have to wander through the programs resolving programs’ problems that have nothing to do with saving my work. It’s annoying. I do understand that, with the other way, you have to go around checking that you have no work unsaved before shutting down. But, if you are mature enough to do that, then the “init 0” way is objectively better.



  • I just flip through all the workspaces, make sure there’s nothing going on I care about, and then hit the button.

    Computers that teach you not to do that, but instead to just blindly pick “shut down” and then assume that the computer will protect you against having anything unsaved, but also refuse to shut down if there’s some app this is not cooperating, have 0 upside compared to the other way.





  • Here’s my take on it:

    If Tulsi Gabbard, Tucker Carlson, and Marjorie Taylor Greene are all vocally against something, it is because Russia is telling them to be against it. It’s not because they give a shit what happens to America.

    Presumably, Russia is against us attacking Iran because they like Iran and deal with them. They do significant good things for Russia and are one of the only friends they have left who can get shit done on their behalf.

    This doesn’t mean I think the US attacking Iran is a good thing. Just that it seems pretty likely to happen, and it’s going to fuck things up for everyone, including the US, Russia, Iran, and Israel.

    If Russia then decides to turn the very significant wing of the GOP that is Russian-corrupted against Trump, so that he’s actually out on his own and has to succeed politically on his own merits or be destroyed, that may be a little bit of a silver lining to this whole catastrophe.







  • This is what I’m going by:

    https://www.shippingschool.com/ups-brokerage-fees-what-they-are-and-how-to-avoid-them/

    I’ve had people receive international shipments and have to pay VAT or whatever. That’s normal, it’s understood. What was new was this whole concept “We’re going to charge the recipient extra for this aspect of delivering the package to them, just because they’re in the middle of paying some other fees at the same time and might not notice, and anyway at that point they have no choice even if they do realize it.” They also wouldn’t give the recipient a breakdown of the fee amounts when he asked, I had to get it and relay it to him.

    I think it was only an issue because the tariffs are in effect so that altogether he was having to pay an incredible amount of money in total to get his package. But, once it became an issue, I wound up looking into it and found this little booby-trap hidden within the UPS billing structure that no one had told me about.

    Plus, of course, the shocking incompetence on display once I figured things out. It literally took me over an hour to get their organization to understand and accept the request “Here is the tracking number, please reattempt delivery of this package.”