Polymath Engineer Weekly #87
AI vs programmers, Bash pipelines, Sega Saturn, Turing-Completeness, C++ becoming a zombie, Leadership and Grit
Hello again.
Comic of the week
Links of the week
The demise of coding is greatly exaggerated
Natural language is ambiguous and not suitable for programming. LLMs still need to generate code to get things done. If not inspected carefully, this incurs tech debt at monumental speed of the computers. The natural language prompts are not repeatable/deterministic, they are subject to breaking any time. This makes "natural language programming" unsuitable for even small sized projects, let alone medium to large projects.
Why does an extraneous build step make my Zig app 10x faster?
I had never thought too carefully about bash pipelines, but Andrew’s comment made me realize my mental model was wrong.
My mental model was that jobA would start and run to completion and then jobB would start with jobA’s output as its input.
It turns out that all commands in a bash pipeline start at the same time.
The Sega Saturn approach is what I consider a ‘semi-solved’ case. The VDP1 doesn’t implement any VSD function: You either feed the geometry in the correct order or you get a mess. However, Sega provided a graphics library called ‘SGL’ that implemented a solution called Z-sort or Painter’s algorithm [13] which performs polygon sorting by software.
What Computers Cannot Do: The Consequences of Turing-Completeness
There is a difference between mathematical Turing-completeness and practical Turing-completeness, and for physical humans and machines, we should care about practical Turing-completeness.
Why? Because the only thing we should care about actual software is how good it is, and it is only as good as the lack of bugs and other defects.
Sure, our machines may not be mathematically Turing-complete, but if we still cannot prove properties about those programs, they may as well be Turing-complete.
The rule of thumb that I use: if you cannot prove even one substantial property of the program, it is Turing-complete.
The Real C++ Killers (Not You, Rust)
So the dear micro-optimizations we all love so much may both speed up our code by factor 3, and slow it down 90%. It all depends on the context. How wonderful it would be if a compiler could pick the best alternative for us so e. g. the index-sort would miraculously turn into swap-sort when we switch the build target. But a compiler can't possibly do that.
⏯ How To Handle Teammates Who Take All Responsibility But Do Substandard Work
This video is about how to handle teammates who take all responsibility but do subpar work. In the video, Jocko Willink suggests two ways to identify the teammate's intention: is it sincere helpfulness or a desire for power?
I have created a survey to get feedback from you. It only takes 2 minutes.
Book of the Week
Grit: The Power of Passion and Perseverance
Do you have any more links our community should read? Feel free to post them on the comments.
Have a nice week. 😉
Have you read last week's post? Check the archive.