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

help-circle





  • Read other people’s code… particularly code by experienced developers. One good way to do that is to single-step debugging through the test code in a well-known package, stepping into the code being tested.

    I suppose if you don’t know how test frameworks like pytest work, tackling how they work and how to do single-stepping with some toy example code will be a prerequisite for the above, as will spending some time studying how packages are made. (The latter may seem unattractively tedious, but the knowledge will pay off even if you never become an expert at making your own packages.)

    These exercises are very likely to expose weaknesses in your understanding of all sorts of things. Be patient and keep studying!


  • 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.




  • No.

    If you ever so carefully paint yourself into a corner then the corner is where you will be stuck. How badly do you want out of your corner?

    There are FOSS and SAAS options that could work if you wanted them to… but whether they will depends on you.

    Meat eaters trying to become vegetarian for ethical reasons often fail because the “un-meat” options out there don’t meet their standards. Success almost always requires some letting go and re-adjusting. If you are not open to that then don’t force yourself to put up with something you don’t really want.





  • I would say you are lucky. I lived in my college town for 20years and it started out chock full of co-ops in the 80s and by the time I moved away they were all hardly recognizable or gone. Food co-ops, housing co-ops, internet co-ops… all mutated away from shared labor or were replaced by sole ownerships.

    My wife works for an employee-owned engineering company, but they are anything but FOSS in their culture.

    I hope these intermediate management structures that combine expertise and collective ownership grow more. But it still isn’t a slam-dunk that should be assumed to be the stupidly-obvious approach unless such organizations compete with the grifters… and then their success won’t be due to the fact that they are using FOSS but that they present a track record of success as an organization.


  • … and there are a gazillion examples where no community forms and the founder burns out. Cheers where it works, but some projects aren’t sexy enough to attract a self-sustaining community, and when you don’t preselect success stories but choose according to external needs that hit-and-miss experience starts to look less obvious and more like the thing only “smart” people can succeed at.

    My objection is to the idea that FOSS is easy… it does require some smarts to succeed with.


  • Don’t get me wrong… I am all for FOSS and I avoid walled gardens, but people have a hard time remembering to take the trash out to the street on the right day. Spending time driving garbage trucks monthly in the local waste management Co-op is not going to fly well. That problem gets solved using money… homeowners are taxed and the local government either hires garbagepeoples directly, or more often they hire a company that takes care of the problem.

    Upshot there is money rather than co-op ownership, and frequently for-profit contractors win the day over government ownership. Contractors supply GaaS, we just have to get the bin to the street. So the equivalency here is the need for the public institution known as city government to retain ownership of the waste management system. Not quite “the people”, since getting co-op volunteers is, well, erratic at best. And there are a ridiculous number of people out there who are vehemently against government management of actual organizations like this. I am for it, but over and over I see “privatization” win elections.

    So I am not seeing how pitching this as “stupidly obvious” will win when “obvious” means hiring a contractor nearly every time.





  • 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).