The Evolution of the Unix System Architecture
Unix has evolved for more than five decades,
shaping modern operating systems,
key software technologies, and development practices.
Studying the evolution of this remarkable system from an
architectural perspective can provide insights
on how to manage the growth of large, complex, and long-lived software systems.
In 2016 my colleague Paris Avgeriou
and I embarked on this study aiming to combine
his software architecture insights with my software analytics skills.
Here is a brief summary of the study, which was published this month
in the IEEE Transactions on Software Engineering.
Continue reading "The Evolution of the Unix System Architecture"
Reviving the 1973 Unix text to voice translator
The early Research Edition Unix versions featured a program that would turn
a stream of ASCII text into utterances that could be played by a voice
The source code of this program was lost for years.
Here’s the story of how I brought it back to life.
Continue reading "Reviving the 1973 Unix text to voice translator"
Raspberry Pi 400 vs ZX Spectrum
The release of the Raspberry Pi 400 personal computer
reminded me of a wildly popular home computer that was launched
in a similar computer-in-a-keyboard format almost 40 years ago:
the Sinclair Research ZX Spectrum.
I decided to compare the two,
following the steps
of an earlier comparison I performed between
the 2015 Rapsberry Pi Zero and the 1957 Elliott 405.
Continue reading "Raspberry Pi 400 vs ZX Spectrum"
Error handling under Unix and Windows
One thing that struck me when I first encountered the 4.3BSD Unix
system call documentation in the 1980s, was that each call was followed
by an exhaustive list of the errors associated with it.
Ten years later, when I was going through the Windows API, I was
disappointed to see that very few functions documented their error
This is a big deal.
Continue reading "Error handling under Unix and Windows"
The titanic battle between big iron and microprocessors
I’m a child of a microprocessor age.
I learned to program on computers powered by
a variety of microprocessors starting
the 4-bit SC43177/SC43178 pair
powering a Sharp PC-1211,
continuing with the 8-bit
Zilog Z80 on
the Zenith Z-89, and
the Sinclair ZX81 computers,
to 16-bit processors:
the Texas Instruments TMS9900 powering
its manufacturer’s TI-99/4A home computer
and finally Intel’s 8088 on
an IBM Portable (16kg) Personal Computer.
At the university I encountered an IBM System/370 4331/2 mainframe,
which I regarded with outer contempt.
It seemed to me like a dinosaur:
slow and unwieldy, lacking interactivity, color, and graphics.
I couldn’t fathom why businesses were using such monsters.
I now understand that I was watching an amazing race
between the sprightly but woefully simplistic microprocessors and
the powerful but slow-moving mainframes.
Continue reading "The titanic battle between big iron and microprocessors"
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
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
“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,
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
Continue reading "The Origins of Malloc"
The 1980s Research Unix Editions Are Now Available for Study
In 2002 Caldera International
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
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"