1,466 karma · joined January 30, 2016
> The application could lead to the development of innovative sustainable building materials, biodegradable alternatives to plastics, wearable technology, and even biomedical devices.
That a transform from materials to a 19th century Russian painter somehow is applicable to what just so happens to be the zeitgeist of materials science beggars belief.
So, what option do teams have? Just hire the people that your good devs say are good is honestly the most effective practice that I've seen.
I use custom external keyboards though, so maybe I’m not the best reference for your specific complaints.
If we live in a world where human effort has no marginal utility, we also live in a world where human life has no value. If we don't, you're in a world where you're competing with other humans for some set of resources. Regardless of whether you believe that you are competing with them, others are competing with you.
I think competition is perhaps one of the most basic rules of reality.
The shell scripts I wrote are a painful, but less painful than dealing with Bazel.
Specifically, we use this nix project [1] which provides a nice translation layer between a poetry project and a nix derivation. It allows our devs to use poetry where they want (with local relative paths in the pyproject.toml) and ci/cd to have more granular control of deps at build time.
There are some corner cases. As you correctly guessed, some more obscure python libraries might require a few extra lines (i.e. to specify that this package needs setuptools etc). of code.
Do you have no external dependencies at all?
But yes, you're right -- Bazel is the most correct monorepo solution. We started with a combination of the second structure, poetry, and shell scripts but have since moved to nix.
I use nix btw.
either:
root/
requirements.txt / pyproject.toml
src/
---in which case you need to be careful about when your dependencies get installed during deployment because ie pytorch can be ~500mb
your other option is
root/
src/
A/
requirements.txt / pyproject.toml
B/
requirements.txt / pyproject.toml
which means you need to come up with a bespoke dependency management solution. in either case, you're doing dependency management.I encourage you to google "monorepo {python, poetry, pip}" and you're going to land on many multiple page blog posts describe arcane dependency management solutions.