2

Cargo Culting And Buried Treasure

 1 year ago
source link: https://hackaday.com/2022/12/03/cargo-culting-and-buried-treasure/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Cargo Culting And Buried Treasure

Darren says:

I consider myself fortunate to have grown up in the 80s, a time when you did have to understand how computers work. You don’t have to be an expert, I have a broad understanding of how a processor executes machine code, how registers are used and values are placed on stacks etc. That all helps to understand how something works without having to be an expert in all the details.

When it makes a big difference is when something doesn’t work. Having at least a basic understanding of how things work underneath helps you apply reason to a problem instead of just guessing.

Funnily enough I was discussing learning technology with someone the other day and discovered that my preferred technique is to start in the middle. By which I mean I never like to just use something at a superficial level, I like to know more about it beforehand and go from there.

For example when containers first started to become a thing, I didn’t just follow an example to run an application that was provided as a container image, I took the time to get familiar with docker as it was then, and things like how container images are produced. So from there over time I both learnt how to be a proficient user of docker and at the same time digging down into understanding the fundamentals of containers such as cgroups.

Some people like to start at the bottom and work up, others like to start at the top and work their way down the stack.

Rumble_in_the_Jungle says:

Nice hack! Thanks.

Simplifier says:

This seems like a genuine problem that is being handwaved away as inherent/unsolvable. Why not just work on “flattening” technology (i.e. shortening the distance from raw material to finished product) so that it can be understood in its entirety?

  1. lthemick says:

    This is a sloppy understanding of cargo cult programming. Using a high-level language like C or Rust isn’t cargo-culting from the standpoint of an assembly programmer: it’s accepting a trade-off between efficiency and readability.

    Cargo cult programming describes using structures, syntax, development paradigms, etc without understanding what they do or when to use them. For example, copying a function to perform an operation without understanding what that function does or how to optimize it is an example of cargo cult programming. It’s a stage every developer goes through when they’re starting out; most of them grow beyond is as they getting experience.

    1. lthemick says:

      Whoops! Sorry, Simplifier – I meant that as a comment on the general thread, not a response to you specifically.

    2. This is actually where I wanted to go with this piece, and I probably will next week. I’ve got examples!

      But I’ve got a feeling that there are corners of our collective computer lives where most people (“everyone”?) ends up cargo-culting it, perhaps because the systems in question are over-designed relative to their use and purpose, so they get far too complex to be understood by an end-user, and … well, there you go.

  2. Foldi-One says:

    That is basically impossible – as the final user product consists of hundreds or maybe thousands of parts that are effectively sub products in their own right, and they have to. The benefits that come from higher complexity technologies are largely a product of its complexity…

    1. Simplifier says:

      I don’t think it’s impossible, as I’ve done it myself to some extent. Just work to reduce the number of parts, as well as the number of steps to create/assemble those parts, while still accomplishing the goal of the object itself. There are no benefits that come directly from complexity, only from complex objects (which do no necessarily have to be so).

      1. Foldi-One says:

        Even the simplest computers – take a Z80 for instance has so much complexity in its creation. The silicon chips, requires a chemical processing industry, which requires other different resource extraction industry to the raw silicon. The PCB requires petrochemical industries to create the usual substrate, as well as metal deposition and etching, which again means new extraction and refinement methods to create those raw materials from rawer still materials. Then you get the case, the wire creation, all the passives…

        The best you can do to simplify such a thing seems to me to be create the entire PCB and all the passives on the the silicon, then all you need is bond wires to the human scale peripherals. Which is still many specific technological requirements, and would make the whole thing ruinously expensive..

        Then you get to the software that can run on a general purpose computer, and as soon as you go beyond a user with one program running on the bare metal entered manually you need an operating system and/or boot loader to select the programs to run from the data storage device (another complexity we haven’t even mentioned yet!), handle memory allocation, task schedules – you can’t have the benefits with the complexity.

        It is certainly possible to deliberately or though lazy programing or part design add some complexity that is not actually required for the function, and so take that waste out. But stripping it down so from raw materials all the way to final product you can easily understand all of is pushing it too far. I’m pretty smart, as I expect are all the folks reading HAD – we wouldn’t read it if we were not curious and smart enough for the content on all this wildly different topics to mean something to us, but we can’t know enough to really understand all the steps in every chain from the rawest raw materials to finsihed products. Its too much.

        1. Matthias says:

          So strip away the Z80 to flatten the complexity. Take the computer to figure out the prototype, and the microcontroller to work out all the bugs, then replace the microcontroller with something you can repair by yourself.
          Or: put displays in the prototype cockpit (any, not specifically flying equipment) to figure out where to place the instruments, then throw out the display and put the real instruments when testing is finished.
          You get the point, there are so many examples for complexity generating horrible results when something simple would be of better use. We should not put a digital frontend to the problems, we should solve them where they come from.

        2. Foldi-One says:

          >Or: put displays in the prototype cockpit (any, not specifically flying equipment) to figure out where to place the instruments, then throw out the display and put the real instruments when testing is finished.

          yes those sort of things I can see and agree with – and I didn’t say you can’t flatten anything – just that a great many things, pretty much anything that actually needs to be electronic/computer controlled really can’t be simplified all that far, unless its also the victim of really lazy creation. Heck replacing the computer in some cases isn’t even simplifying, arguably it is even making more complex – as the wires, levers, air pressure logic required to replace even very basic silicon is vastly more complex to produce, requires yet more specialists to really do correctly, with all the geometric relationships between the parts and precision requirements etc…

        3. Simplifier says:

          >Heck replacing the computer in some cases isn’t even simplifying
          So keep going! What about replacing the task itself? Engineers often get stuck in the mindset of being told what to do, but you can always refuse. The ultimate goals of most technology are simple: move something from point A to B, let two people communicate, allow more efficient manipulation of materials X, Y, Z, etc. Go back far enough and you can achieve it with simple technology that everyone can understand. Then, once you’ve achieved simplicity, improve the technology as much as possible (without sacrificing said simplicity) and see where the balance falls between complexity and capability. So many things were designed without simplicity in mind, that you could (and I will) spend a lifetime re-engineering the world in this way. It’s worth the effort IMO. Why stand on the shoulders of giants when you could become the giant yourself?

        4. Joshua says:

          The surely Z80 is an elegant/sophisticated design, but it isn’t overly complicated.

          Here’s an XXL version that is able to function.

          https://www.idealine.info/sharpmz/z80glass.htm

        5. Foldi-One says:

          @Joshua that is why I picked the Z80 to make the point that despite it being simple enough you can at least plausibly understand how it functions electronically you still can’t understand all the complexities required to do the silicon fabrication etc properly. Its still too many hats for one person to have more than a extremely rough hand waving outline of.

          @Simplifier
          Just how much are you expecting ‘everyone’ to ‘understand’ – Identifying the right rocks and how to mine them efficiently so everyone can gather the raw material for whatever metal/mineral will be needed for the next process? How to process all these rocks into the required bits? how to then fabricate from these more processed raw bits the next subcomponents…

          The only technology simple enough everyone can understand the full scope of it, and so do it properly is no technology at all – even something as seemingly primitive as stone tools has a learning curve to actually get anything close to your desire out of the currently incorrectly shaped rock, and then in use will likely be combined with any number of other skills to actually create the final tool you want.

          Complexity for its own sake is to be avoided, but to pretend you can actually cut it out meaningfully in the modern world is to be delusional. We ain’t a population of as close to zero as makes no real odds hunter gather anymore (and even those native communities that avoided contact till recently all seem to have had very clear specialisms in the group anyway – so even they don’t all understand everything the group as a whole does!), and for the most part the developed world no longer has the biodiversity to really support the full spectrum of bushcraft skills to live like one anyway even if we were a small enough population…

        6. Simplifier says:

          @Foldi-One
          So just give up? Allow overpopulation to push everyone into further and further layers of hellish complexity? What’s the end-game here? I’d rather at least attempt to design an understandable world. Also, always remember to reconsider your premises: if the population is in the way, maybe that’s what should change?

        7. Foldi-One says:

          @Simplifier
          Population control to the extent required to let us live a so heavily tech reduced life that ‘everyone’ could understand all of it is bonkers, and starts to sound rather Nazi… What are you going to do with the folks that are mentally incapable of understanding everything in your tech reduced world? Which could well include some of the smartest folks I’ve ever met – the pure math professor types for instance are often brilliant at seeing the patterns and logic to mathematics and completely disconnected from the real world in practically every other way..

          I would also not say the population and complexity are directly linked, so while we do have a population growth problem globally its not the only element that drives more complexity, and arguably it also drives simplification as their are now more folks figuring out how to make improvements. But as part of the increasing complexity is that we are learning as a species – developing more understanding of the universe and putting that to use to learn yet more. Which is something we shouldn’t be trying to put the brakes on…

        8. Matthias says:

          > pretty much anything that actually needs to be electronic/computer controlled really can’t be simplified all that far

          But almost everything electronic or computer controlled around me doesn’t need to be computer controlled (and some of the things that actually could benefit from electronic control use mechanics instead: DC motors). In fact a good part of these programmable silicon flakes cause major inconveniences just by miserably failing to emulate what they replace, and they are by far more complex and fragile.

        9. Foldi-One says:

          > But almost everything electronic or computer controlled around me doesn’t need to be computer controlled (and some of the things that actually could benefit from electronic control use mechanics instead: DC motors)

          Sounds like you know how to buy bad products then, which will happen to us all sometimes, but for it to be almost everything in one direction…

          Not that I disagree I did very specifically say ‘actually needs to be electronic/computer controlled’ for a reason – cutting out the computer where it is not needed is IMO great. As is keeping systems separate on their own little computers any processes that don’t need to talk – why have the infotainment system able to control the brakes basically all car makers of recent years it seems?!?!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK