• 0 Posts
  • 16 Comments
Joined 1 year ago
cake
Cake day: June 10th, 2023

help-circle
  • When you come across some Python code for something written 5 years ago and they used four contributed packages that the programmers have changed the API on three times since then, you want to set up a virtual environment that contains those specific versions so you can at least see how it worked at that time. A small part of this headache comes from Python itself mutating, but the bulk of the problem is the imported user-contributed packages that multiply the functionality of Python.

    To be sure, it would be nice if those programmers were all dedicated to updating their code, but with hundreds of thousands of packages that could be imported written by volunteers, you can’t afford to expect all of them them to stop innovating or even to continue maintaining past projects for your benefit.

    If you have the itch to fix something old so it works in the latest versions of everything, you have that option… but it is really hard to do that if you cannot see it working as it was designed to work when it was built.




  • Resistance is like shocks on a car… push hard to compress and it compresses faster. push less hard (voltage) and it doesn’t move as fast (current). Pull it (negative voltage) and it expands (current flowing the other way). Resistors resist (voltage against) flow (current).

    Capacitors you sorta seem to get: current flowing in one direction through a capacitor builds up voltage the remains after the current stops… like the force in a spring builds up as it compresses and when the motion stops the force is still there.

    What you seem to confuse with resistance is inductance, where the force (voltage) on an air hockey puck makes it speed up (current flow), and when the force stops pushing it it just keeps moving (current keeps flowing).

    The general term for these voltage-current relationships is impedance, because in the general case where voltage or current is oscillating or rapidly switching on and off you get some effects that resemble resistance (voltage pushing back on current or vice versa).

    Final concept is that any time you have something trying to force specific levels of current or voltage on a pin, the “setter” (whatever is doing the forcing, typically referred to as the “source”) has impedance and so does the “getter” (whatever is being forced, referred to as the “load”). If you have a fishing rod and you want the tip to move slowly, you can easily move it where you want it to go, but if you want to shake it fast it won’t move as far (the weight of the tip is like inductance resisting the motion with force/voltage).

    So, a microchip pin might have high resistance to ground but also high capacitance to ground… and a quick pulse of voltage will immediately cause current to flow into the empty capacitor, and if the capacitance is big enough the voltage won’t change much, or will require more time to change. High capacitance has low impedance… it sucks up any available current as the desired change in voltage happens. interestingly, there are two options for making the pin voltage change faster… increase the current level being used by the source (by reducing impedance within the source so it can get out to the pin easier), or reducing the amount of current required to change the pin voltage by raising the impedance to ground inside the chip package (that is, reducing the capacitance inside the chip package).

    When the source impedance is very very large, that is like having the signal generator probe laying on the bench instead of connected to the pin. When the source impedance is large and the internal pin impedance is large, then any stray electric or magnetic fields can push the pin voltage around easily. This is what they call floating… and if the microchip is reacting to those erratic voltage signals then the circuit as a whole will behave erratically as it tries to react to noisy input.

    An output pin usually (but not always) has a lower source impedance than a tri-state input in its high impedance state. If you connect it to a floating input then the input stops floating and follows whatever the source is forcing it to.

    An input pin usually has an input impedance similar to the source impedance of sources connected to it… this generally allows the input to be controlled most quickly. Inputs whose voltage doesn’t change quickly tend to be less useful than ones the do change quickly bandwidth and clock speeds can be faster.

    If you try to connect microchips built with different technologies together (e.g. CMOS vs TTL) then they may not communicate quickly or with minimal wasted power because they have different typical impedances (and voltage levels).



  • There are thousands of programs for Linux… but you should be warned that relatively few programs run natively on both Windows and Linux. In some cases there are ways to run “Windows programs” on Linux, but in general such successes are special cases. If you absolutely must have Windows you can run it in a virtual machine… but you will most likely be happiest with Linux if you aren’t chasing after such things.

    I use Windows for work because our IT department only supports that… but I use cygwin and wsl to get a smidgen of my familiar Linux tools that I use on my personal computers.


  • NPR sez Florida law would disallow him voting, but he wasn’t convicted in Florida, so they defer to the law in the state where he was convicted. New York allows felons to vote up until they are imprisoned, which doesn’t seem likely to happen before election day since he is appealing. Skin of teeth again.



  • Using sudo when it isn’t necessary, and the real cannon: sudo su… Adding sudo to your command lines indiscriminately causes files you create to be owned by root even though they are in your home directory, and then you end up using sudo to make changes to the files… and then the filesystem permissions cannot prevent you from successfully running an accidental “sudo rm -rf /” command.

    Seriously… sudo is not a “habit” to develop in order to avoid dealing with filesystem permissions problems.


  • Noob question?

    You do seem confused though… Debian is both a distribution and a packaging system… the Debian Stable distribution takes a very conservative approach to updating packages, while Debian Sid (unstable) is more up-to-date while being more likely to break. While individual packages may be more stable when fully-updated, other packages that depend on them generally lag and “break” as they need updating to be able to adapt to underlying changes.

    But the whole reason debian-based distros exist is because some people think they can strike a better balance between newness and stability. But it turns out that there is no optimal balance that satifies everyone.

    Mint is a fine distro… but if you don’t like it, that is fine for you too. The only objection I have to your objection is that you seem to be throwing the baby out with the bathwater… the debian packaging system is very robust and is not intrinsically unlikely to be updated.