Spott

joined 1 year ago
[–] [email protected] 6 points 1 year ago

This isn’t an argument against the standard way of doing things, it is an argument to follow the xdg standard, and use xdg environment variables, rather than creating a new unconfigurable directory in $HOME.

[–] [email protected] 1 points 1 year ago (1 children)

Maybe my issue here is that the whole "buildPythonPackage" ecosystem of nix is fundamentally at odds with the python ecosystem of late, and the rest of the nix ecosystem is better.

Python has been moving toward a more "define your exact dependencies" model lately (see pipenv, poetry, piptools, etc.), while nixpkgs expects that python package dependencies can be replaced with whatever version is in the nixpkgs repo (essentially the opposite view). Nix also assumes that tests will catch any problem caused by a version mismatch, which means defensive dependency pinning won't work. (A dependency that is pinned to be under some assumed api breaking change is trying to prevent code from breaking before it does. If the dependency changes behavior in a way that changes results but still works, it will break the code in ways that tests don't necessarily catch)

This is wrong more often than it is right. Partly because of the pain of the arm64 transition on Mac, and the Mac vs linux issue, and the fact that data science based python packages frequently have dependencies on C libraries (which just multiplies the dependency space), I have yet to have a python package build correctly the first time from nix.

But this is partly beside the point. If I have to learn a new way to install packages for every language, then I kinda have to be knowledgable in nix and the language to install a throwaway piece of software in whatever ecosystem I want to try out. I can probably make the buildPythonPackage thing work for python, because I know python... but if I have to do that for a nodejs project? or a ruby project? When I just want to use the output of the package? That is a ton of work to use a nix system... is that really the only way?

 

I recently wanted to try out (aider)[https://aider.chat], and ran into a problem that I continually run into: how do I install one-off, experimental software into my environment, without being a nix master, or spending an extreme amount of time on every new package.

In this case, it is a new python package available in pip. It isn't available in nixpkgs, and isn't nixified. pip2nix doesn't work on arm64 Macs (bug here)[https://github.com/nix-community/pip2nix/issues/88], so I can't use that to try and create a flake that works with this package. It isn't using poetry, so poetry2nix is out.

How are you dealing with this problem? Are you all experts in nix, and writing flakes for every piece of software that you want to play around with? Do you have a "dirty" part of your environment that you install this kind of stuff into? (I looked into using pipx to install this, however that (also has a bug)[https://github.com/NixOS/nixpkgs/issues/171429] in nixpkgs.)

Thoughts?

[–] [email protected] 4 points 1 year ago (1 children)

Without knowing more, I would expect it is a dataloader issue: your CPUs are bottlenecked trying to get enough data to your GPUs.

You can add more workers to your dataloader in order to paralyze it, though this can lead to weird parallelization bugs sometimes, so if things start acting weird, that might be a reason.

[–] [email protected] 1 points 1 year ago

Hanging out in bed browsing Thangs on mobile.

I can get STLs, my slicer settings are pretty set and forget, I should be able to just upload an STL or a few, say “fill the plate” and go, without pulling out mg laptop.

It might be pretty lazy, but it isn’t crazy.

[–] [email protected] 2 points 1 year ago

Do you have anything specific you want to know.

I’m working on rewriting it with all the multi-processor code removed so you can better understand the algorithm, but I’d love to know what you are trying to better understand.

[–] [email protected] 3 points 1 year ago

Acetone is fine.

This is actually one of my pet peeves. Acetone is far from the “universal plastic solvent” that it has as a reputation…

Ultem, aka pei actually does great with acetone: https://www.astisensor.com/ultem.pdf.

I use acetone pretty regularly on my sheets and I haven’t noticed any bad effects. Usually it is best to use soap and water, acetone and isopropyl alcohol. If things won’t stick, do all three (in that order).

[–] [email protected] 2 points 1 year ago

I wish you could config defaults for zsh/nvim in the Nixos config. I have some servers that are generated from a config file and then meant to not be managed after that (so I build a sd card for them and insert card and they are booted into a working system. If a configuration needs to change, the idea is that I rebuild the sd card rather than rebuild on the server.)

[–] [email protected] 3 points 1 year ago (2 children)

Home manager manages dot files, which aren’t managed at the Nixos config level. Sine this means managing the version of the corespondent package related to a dotfile config, home manager has to manage packages.

So, in my world: the only thing in home manager are programs which have dot files that need to be managed… everything else is in the Nixos config level. Except for local dev environments, which have flakes associated with them.

[–] [email protected] 1 points 1 year ago (1 children)

Yea, it is losing the forest for the trees. Next should be taught as part of iterators and for loops. It makes sense there. It doesn’t really stand on its own much.

To be honest, I’m not sure why it is a built in function… I feel like saying that python calls the ‘next’ function of your class when iterating is enough. But maybe I’m missing something.

[–] [email protected] 4 points 1 year ago (3 children)

All ‘next’ does is call ‘next’, which is part of the spec for ‘iterator’s.

Iterables return iterators when ‘iter’ is called on them. So they don’t need to support ‘next’ natively, their corresponding iterator does that.

[–] [email protected] 2 points 1 year ago

A Voron 0.1 with a 0.2 gantry and a Voron 2.4 with a 2.4r2 gantry (currently being upgraded to canbus and stealthburner).

[–] [email protected] 10 points 1 year ago (1 children)

I think part of the problem isn’t just bad hierarchies, it is that they are so hard to fix.

Bad OOP code gets its fingers everywhere, and tearing out a bad hierarchy can be downright impossible.

view more: next ›