“I was testing the task-switching capabilities, so what I did was I just made two processes and made them write to the screen and had a timer that switched tasks. One process wrote A, the other wrote B, so I saw AAAA BBBB and so on. The first two months the amount of code I wrote was very small, because it was a lot of details, totally new CPU, I’ve never programmed Intel before.”
Remarkably, that very simple task-switching program turned out to be the seed that grew into the Linux kernel:
“At some point I just noticed that hey, I almost have this [kernel] functionality because the two original processes that I did to write out A and B, I changed those two processes to work like a terminal emulation package. You have one process that is reading from the keyboard, and sending to the modem, and the other is reading from the modem and sending to the screen. I had keyboard drivers because I obviously needed some way to communicate with this thing I was writing, and I had driver for text mode VGA and I wrote a driver for the serial line so that I could phone up the University and read news. That was really what I was initially doing, just reading news over a modem.”
No idea how interesting anyone else will find this article, but to me, it was a fascinating read.