Did Ken, Dennis, and Brian choose wrong with NUL-terminated text strings?
The author of TFA does not like that choice for the C system programming language.
But tries to demonstrate that it is an objectively "wrong" choice with weak and plain false arguments.
The hardware development cost argument is weak. The fastest CPUs around have a very rich instruction set. It maybe hacky and ugly but where is the evidence of a noticeable burden on CPU performance or cost due to the additional instructions to handle 0 in the input? And they are pretty handy instructions anyway.
The compiler argument is uninformed about how compilers work, and are permitted to work by the C standard. There is simply nothing there.
The gets(3) argument does not have anything to do with the NUL-terminated strings.
It has to do with the fact that gets is for most uses a broken API that should seldom if ever be used.
The FreeBSD libc bcopy/memcpy argument is plain false.
If the program is correct C, there is no "unwarranted page not present" fault.
One can do mistakes by mixing memcpy and C Strings if one is not careful, but it's exactly the same with any attempt to read past the end of an array.
If the confused author is trying to copy C Strings around, he can use the C String functions.
TFA speaks more about the ignorance of the author than the value of the NUL-terminated string choice for the C programming langugage, which can still be debated, but not on these grounds.