What explains the counter-intuitive numbering of chip pins?
One of the first things one learns in electronics is how chip pins are numbered. In the common dual in-line package (DIP) pin numbering starts from the left side of a notch appearing on the top of the package and continues counterclockwise until it reaches the other side of the notch. Why are pins counter-intuitively numbered in a rotating fashion rather than by columns as one would expect for a rectangular package? And why is the numbering not following the direction of a clock's numbers? I think that both decisions can be traced back to history.
Continue reading "What explains the counter-intuitive numbering of chip pins?"
Debugging had to be discovered!
I start my Communications of the ACM article titled Modern debugging techniques: The art of finding a needle in a haystack (accessible from this page without a paywall) with the following remarkable quote. "As soon as we started programming, [...] we found to our surprise that it wasn't as easy to get programs right as we had thought it would be. [...] Debugging had to be discovered. I can remember the exact instant [...] when I realized that a large part of my life from then on was going to be spent in finding mistakes in my own programs." A Google search for this phrase returns close to 3000 results, but most of them are cryptically attributed as "Maurice Wilkes, discovers debugging, 1949". For a scholarly article I knew I had to do better than that.
Continue reading "Debugging had to be discovered!"
Reviving the 1973 Unix Programmer's Manual
The 1973 Fourth Edition of the Unix Programmer's Manual doesn't seem to be available online in typeset form. This is how I managed to recreate it from its source code.
Continue reading "Reviving the 1973 Unix Programmer's Manual"
The Origins of Malloc
The 1973 Fourth Edition Unix kernel source code contains two routines, malloc and mfree, that manage the dynamic allocation and release of main memory blocks for in-memory processes and of continuous disk swap area blocks for swapped-out processes. Their implementation and history can teach us many things regarding modern computing.
Continue reading "The Origins of Malloc"
The 1980s Research Unix Editions Are Now Available for Study
In 2002 Caldera International licensed the source code distribution of several historic Unix editions. This included all Research Unix editions up to the Seventh Edition, but excluded the 1980s 8th, 9th, and 10th Edition. This was unfortunate, because these editions pioneered or implemented several features that were very advanced at the time, such as streams inter-process communication, graphics terminals and the associated Sam text editor, network filesystems, and graphics typesetting tools.
Continue reading "The 1980s Research Unix Editions Are Now Available for Study"
Measures of Donald Trump's Inaugural Address
Computers allow us to measure objectively the properties of text. I applied some established text and sentiment analysis algorithms on Donald Trump's inaugural address and compared the results with the same metrics of past well-known presidents. Presidential speeches are nowadays typically a team effort. Nevertheless, I thought that the speech writing team's output reflects the president's choices regarding staffing, policy, and style. Moreover, as luck would have it, in this case it was reported that Donald Trump wrote the inaugural address himself. The findings of this exercise surprised me.
Continue reading "Measures of Donald Trump's Inaugural Address"
Raspberry Pi Zero vs Elliott 405
Raspberry Pi Zero
juxtaposed in front of the Norwich City Council Treasurer's Department building,
where the delivery of the Elliott 405 computer was photographed in 1957.
Here is how the two computers compare.
Continue reading "Raspberry Pi Zero vs Elliott 405"
The Birth of Standard Error
Earlier today Stephen Johnson, in a mailing list run by the
The Unix Heritage Society,
described the birth of the standard error concept:
the idea that a program's error output is sent on a channel
different from that of its normal output.
Over the past forty years, all major operating systems and language libraries
have embraced this concept.
Continue reading "The Birth of Standard Error"