Escaping from Anaconda's Stranglehold on macOS
141–150 of 286 posts
Re: Escaping from Anaconda's Stranglehold on macOS
#142Earlier quoted context omitted.
After that I wonder why people think Python is a good choice to teach as a first experience in programming. Virtual environments is actually my biggest gripe with Python. I think it is interesting to consider why Python is so popular despite such fiascos. The answers can be very informative but can also be giant red flags.
It’s not just the packaging situation that makes Python a bad first language. Whenever I write in Python, I find it completely impossible to stop myself from constantly making basic, beginner-level programming mistakes. Every time I miss having a compiler and strict typing that will yell at me when I’ve done something stupid.
Re: Escaping from Anaconda's Stranglehold on macOS
#143Earlier quoted context omitted.
Never took it, huh.
two second search -- "Statistics is considered a mathematical science that is distinct from mathematics, though it does use mathematical methods:" "statistics arguably is not a branch of mathematics. It is a mathematical science, built upon the mathematical discipline of probability. Some ways in which mathematics and Statistics differ include: Statistics often does not produce definitive conclusions whereas mathemat…
Re: Escaping from Anaconda's Stranglehold on macOS
#144After taking a course using Python?
Re: Escaping from Anaconda's Stranglehold on macOS
#145Arguably step one is: https://docs.anaconda.com/anaconda/install/uninstall/
Or for miniconda: https://gist.github.com/pulkitgangwar/421a1af800c5a9c6d4a77b...
Then, adopt `uv` instead, for all your Pythons: https://docs.astral.sh/uv/
The 2024-08-24 update finally does "all the things" — unified Python packaging: https://astral.sh/blog/uv-unified-python-packaging
. . .
PS. I noticed this original article's subsequent blog post gets into "env as code" but for "one tool to rule them all" one may want to consider a tool such as `mise` instead: https://mise.jdx.dev/about.html
Re: Escaping from Anaconda's Stranglehold on macOS
#146> 10. What Changes When You Are Free > You will not be forced to work inside something known as a “virtual environment.” Oof, this terrible advice cancels out an otherwise reasonable post. Beginners who don't know what they're doing are the last people who should be `pip install -r requirements.txt`-ing into the system Python the way this article is recommending. That's not only going to make working on multiple proj…
I teach using python. You should try explaining virtual environments to students, most of them with no programming experience, or any real notion of the state of a computer system. I do, because we recommend students use them. Every class consists of endless debugging of student systems. After that you might understand the OP's viewpoint.
Re: Escaping from Anaconda's Stranglehold on macOS
#147Hyper-specialisation to the point where you "know python" but do not "know environment" (be it environment variables, virtual environments, shells or operating systems) seems like a rather pointless exercise.
If, however, someone wants to scope their class to teaching only a single thing and dismiss everything else and stick knowledge in a silo, why not provide them with a preconfigured option? This is an avenue that works with many languages, with or without GUIs, and with many steps or very few:
Maybe a Docker Container and a free download of Rancher Desktop (for any major OS) is a good option. You give them 1 link and 1 command (or just a picture of the GUI!) and you're good to go.
If that doesn't work because you're using some sort of fancy editor that doesn't work with containers, the fancy editor (like PyCharm Community) usually comes with a built in option to spawn a managed python environment just for your project. So that's a second great option to "solve" this problem that shouldn't exist in the first place.
If both of these options are too 'big', there is the super simple option of not involving the local computer at all. Stick them in a webbrowser. From CodeSpaces to just Python playgrounds, there are a ton of indestructible options to pick from. Works for other languages as well.
All of this will allow anyone to not learn anything about where a language and runtime sits or how to make it do what you need it to do, and instead you can write a bunch of code that doesn't interact with the world at all, but still get a certificate that says that some course was followed.
Re: Escaping from Anaconda's Stranglehold on macOS
#148Earlier quoted context omitted.
After that I wonder why people think Python is a good choice to teach as a first experience in programming. Virtual environments is actually my biggest gripe with Python. I think it is interesting to consider why Python is so popular despite such fiascos. The answers can be very informative but can also be giant red flags.
Because every option sucks for teaching. C/C++? Full of footguns. Java/C#? Too complicated for beginners. Pascal? Outdated. Etc. I personally prefer C to teach first-year CS students but just as the lesser evil. A good first programming language is sorely lacking. (Note that I'm talking about the imperative programming paradigm. The debate on whether one should start with functional programming is outside the scope o…
The answer is really quite simple: F#
Re: Escaping from Anaconda's Stranglehold on macOS
#149Earlier quoted context omitted.
It’s not just the packaging situation that makes Python a bad first language. Whenever I write in Python, I find it completely impossible to stop myself from constantly making basic, beginner-level programming mistakes. Every time I miss having a compiler and strict typing that will yell at me when I’ve done something stupid.
Modern linters and type-checkers for Python come pretty close to something usable for these situations. But it's certainly something they tacked on to the language afterwards. I like the recent addition of (proper) pattern matching to Python.
Re: Escaping from Anaconda's Stranglehold on macOS
#150Earlier quoted context omitted.
But then you're explaining virtualization and networking to your students, how to manage interactions in and out ("I wrote a program in Txtedit, how can I run it?"), when it's started and when it's not etc. I could see giving them a remote access to a prebuilt env (which can be containerized) to be simpler to explain.
In finding it very difficult to see what exactly is the problem with teaching a minimum of computer and operating system fundamentals to people that have to learn programming.
Simple things like having a student access another student's web server becomes overly complicated, as you're dealing with 4 systems talking to/through each other.