Automation With a Human Touch - Jidoka

Computers perform repetitive tasks, people solve problems

Links to this page
  • Build Systems Suck

    Each result can be defined as a function that takes Environment and Context as an input and outputs a reproducible artifact. The generalization of tihs approach results in constructing a forest of roots that result in a DAG. However, sometimes the Acyclic bit is too strong of a constraint, so I think we can relax that to a bounded level of cyclic behavior, keeping in mind the principle of Automation With a Human Touch - Jidoka. That all said, something that I think is even more important than being able to specify the fully generalized DAG is being able to specify efficiently and ergonomically the caching behavior and artifacts that are dependencies of steps. You would think this would be implied by the DAG. DAGs are, after all, fully composable and the representation of a build system in a DAG would contain, for each node, the full closure of everything required to reproducibly create the artifact. But nooo, this has to pointed out. So here’s my ranty rant pointing out that if your CI/build system doesn’t have a way to performantly deal with artifacts, dependencies, and environmental closures, its automatically got a lot of flaws and limitations that didn’t need to be there.. (looking at you in particular, github; you had a lot of time to learn from the mistakes of others)

  • Build Quality In