It was interesting to connect some of the issues they asked for help with relate back to this magic-fication.
Ended up spending several hours digging through their docs and scattered code until it became clear to me that the hugo-stuff was just out-of-date and poorly stitched together tooling around hugo build that was made to run in CI, and there was no actual git functionality, just web hook APIs specific for GitHub/GitLab/Bitbucket.
Even leaving that aside and figuring out how to properly upload the ready-made static directory, which I got to in the process, would have taken its own fair share of detective work.
Whereas if I had treated it like magic, I could have just zipped it up and drag-and-dropped it in their web UI and be done in 2 minutes.
It still bothers me how they go to such great extents to make it as appealing and smooth as possible for the majority happy-path use case but end up making it extremely confusing to do what in the end turns out to be trivial. Even deliberately using technically incorrect terminology in documentation (which act as misdirection) just to align with common misconceptions.
I can't seem to properly verbalize the eerie feeling I have but it relates to a trend leading to devs only using ready-made tools and APIs precisely on their abstraction level, dumbing down, total centralization of internet infrastructure, and an eventual ban on or unavailability of general computing for individuals.
</rant>
Almost anything in software can be implemented, sold, and even used given enough determination. There is nothing a mere scientist can say that will stand against the flood of a hundred million dollars. But there is one quality that cannot be purchased in this way—and that is reliability. The price of reliability is the pursuit of the utmost simplicity. It is a price which the very rich find most hard to pay.
- C.A.R. HoareI like to play with microcontrollers. Nearly everyone uses the terms IoT (internet of things), despite the fact that the vast majority of microcontrollers don't have internet connectivity out of the box. AI is picking up some buzz at the moment, and I even saw the term AIoT being used. Gotta get those buzzwords in.
What I find astonishing is that these are all things directed at technically-competent programmers who are supposed to appraise things objectively rather than being given a lot of marketing guff. Could you ever imagine trying to sell a product to a chemist, engineer or physicist in this way?
I do have one app that's connected to the internet, but that uses a Raspberry Pi. I have had other projects that used Wifi. I've come to the conclusion that it is way better to avoid anything internet if at all possible. It makes devices much more unreliable.
And that's what grinds my gears.
You have to find a balance where you know enough to know you have delivered.
If you have to modify behaviour of a system without understanding it, the approach is usually to apply even more complexity as a band-aid. This will work in the immediate term, but will make your system more brittle and ironically even harder to understand in its entirety.
Also note that black boxes are rigid. If you don't understand what happens inside a blackbox, you can only build around it. However, for a lot of exciting features, you need to modify the black box itself - which you can't do if you have no idea what it does.
The word "grok" does a pretty good job of summing up how I feel on it. I think most people can grok a computer, but that doesn't mean they could tell you every detail about it's use/manufacturing/operation/architecture/lithography. But we know enough to have a working knowledge, and for the purposes of this question I think that's what matters. Computers are designed to output predictable, reproducable behavior. They are meant to be unferstood by design.
>In the face of this complexity, it’s easy to assume that there’s just too much to learn, and to adopt the mental shorthand that the systems we work with are best treated as black boxes, not to be understood in any detail.
>I argue against that approach. You will never understand every detail of the implementation of every level on that stack; but you can understand all of them to some level of abstraction, and any specific layer to essentially any depth necessary for any purpose.
There is no magic. There is no layer beyond which we leave the realm of logic and executing instructions and encounter unknowable demons making arbitrary and capricious decisions. Most behaviors in one layer are comprehensible in terms of the concepts of the next layer, and all behaviors can be understood by digging down through enough layers."
It is possible for deterministic systems to become so complex that they are unable to be understood. Physics and most natural sciences encountered this very dilemma early on, determinists posited that the world was a deterministic state machine and that for this reason the future could be predicted with enough study.
This philosophical and physical debate was resolved in the formation chaos theory, which proved that systems can become complex enough that this would be benefit of determinism vanished.