List members may be interested in this new article published today:
Steven M. Bellovin
Netnews: The Origin Story
IEEE Annals of the History of Computing 47(1) 7--21 Jan/Mar 2025
https://doi.org/10.1109/MAHC.2024.3420896
-------------------------------------------------------------------------------
- Nelson H. F. Beebe Tel: +1 801 581 5254 -
- University of Utah -
- Department of Mathematics, 110 LCB Internet e-mail: beebe(a)math.utah.edu -
- 155 S 1400 E RM 233 beebe(a)acm.org beebe(a)computer.org -
- Salt Lake City, UT 84112-0090, USA URL: https://www.math.utah.edu/~beebe -
-------------------------------------------------------------------------------
Beating a nearly dead horse, I'm shipping this to COFF instead of TUHS
to which it responds.
> I find
>
> if (a == b && c == d)
>
> perfectly reasonable, but
>
> if ((a == b) && (c == d))
>
> to be just silly.
Amusing. IT's odd that no one has mentioned the use of spaces for
grouping. When the operands of == are simple, I prefer to vary the
spacingy spacing. It's less intrusive than extra parentheses and just
as clear.
if(a==b && c==d) or
if( a==b && c==d )
K&R usually flank every infix operator with spaces, unlike classical
mathematical usage, where spacing reflects operator precedence. I
usually write a*b + c*d, not a * b + c * d, which wantonly flattens
the parse tree. Here's an example from K&R, where uniform spacing
hampers intelligibility.
for (i = 0; s[i] >= '0' && s[i] <= '9'; ++i)
n = 10 * n + (s[i] - '0');
The "extra" parens in the second line admirably show the intent of the
subtraction. Other groupings are not so well indicated. I would write
it like this:
for(i=0; s[i]>='0' && s[i]<='9'; ++i)
n = 10*n + (s[i]-'0');
(I'll admit that the juxtaposition ]>= is less than perspicuous.)
Long identifiers constitute a level of grouping that takes precedence
even over multiplication. So I may flank long identifiers with spaces.
I suppose then + in a sum of products might deserve double spaces.
That's probably a bridge too far, but double spaces after the
semicolons in the "for" statement above seem justifiable
K&R aren't absolutely rigid about spacing. In the following oddly
mixed specimen, the first of three operands in a conjunction is spaced
tightly, but the third is not; I guess they feel about != the way I do
about long identifiers.
i<lim-1 && (c = getchar()) != '\n' && c != EOF
The middle conjunct is a challenge. I'd probably squeeze out the
spaces. But I might instead try to hold it together with outer parens.
Doug
Mention of punched cards reminded me of some 1960s trivia.
There were two formats for binary code on punched cards for IBM 700-series
machines. In "row binary" two 36-bit words filled each of the 12 rows from
bottom to top. In "column binary" successive thirds of a word ran downward
in each of 3 successive columns. Bob Morris wondered what is the order of
the permutation performed in row-to-column conversion.
The order of the row-to-column permutation turns out to be 172. There are
five cycles of that length plus an oddball of length 4. My souvenir card
shows the oddball.
If you convert a cycle from row binary to column binary, the output is the
same as the input.* Each cycle is also invariant under 180-degree
rotation.The 4-cycle is a simple parallelogram. One of the 5-cycles lines
up in periodic diagonals. The other cycles show no easily described
structure.
The images of the two described cycles should be viewed in a fixed-width
font. The punches in the 4-cycle are numbered in cyclic order.
I keep a few souvenir punched cards. One bears that 4-cycle.
* Well, almost the same. The first word on the card contains control
information whose layout differs in the two formats.
Doug
........................................................................
........................................................................
...........................................3............................
........................................................................
..............2.........................................................
........................................................................
........................................................................
.........................................................4..............
........................................................................
............................1...........................................
........................................................................
........................................................................
..X....X....X....X....X....X....X....X....X....X....X....X....X....X....
....X....X....X....X....X....X....X....X....X....X....X....X....X....X..
.X....X....X....X....X....X....X....X....X....X....X....X....X....X....X
...X....X....X....X....X....X....X....X....X....X....X....X....X....X...
X....X....X....X....X....X....X....X....X....X....X....X....X....X....X.
..X....X....X....X....X....X....X....X....X....X....X....X....X....X....
....X....X....X....X....X....X....X....X....X....X....X....X....X....X..
.X....X....X....X....X....X....X....X....X....X....X....X....X....X....X
...X....X....X....X....X....X....X....X....X....X....X....X....X....X...
X....X....X....X....X....X....X....X....X....X....X....X....X....X....X.
..X....X....X....X....X....X....X....X....X....X....X....X....X....X....
....X....X....X....X....X....X....X....X....X....X....X....X....X....X..
https://boingboing.net/2025/03/10/make-your-own-virtual-punchcard.html
[50 years ago today I started working at IBM Yorktown. My boxes of
punchcards from graduate work at UT-Austin were enroute with the movers
from Austin, to be fed into VM-370 after they arrived. I wish I had kept
those boxes as souvenirs.]
Charlie
--
voice: +1.512.784.7526 e-mail: sauer(a)technologists.com
fax: +1.512.346.5240 Web: https://technologists.com/sauer/
Facebook/Google/LinkedIn/mas.to: CharlesHSauer
Besides the first day I sat at the PDP-7 console, one of the biggest Unix
thrills came when when I logged in remotely to the new Cray at Bell Labs.
Here was a monster machine with a manual I had never seen, and I was able
to compile and run a program on it at the first try. God bless sh, ed, cc,
and a.out.
Doug
File under "What a Drag it is Getting Old"....
My kids have now reached the age where they have started to mock me.
Not only must I contend with the fact that I'm not cool anymore (if,
indeed, I ever really was) but I also realize that I have no idea what
the slang they're using means. None whatsoever; it's all
unintelligible gibberish to me. They clearly revel in my ignorance.
But I have found a way to get even: I have started spelling out
commands verbally, punctuated with random words, and acting like this
has more general meaning (and like, you're just not hip with the rizz
if you don't understand). For example, "Yo, tar x v; on cat. Sig
Pipe, amirite?" I'll throw one of these out, and they stare at me
with faux comprehension while I silently, inwardly gloat.
Just thought I'd share.
- Dan C.
Hi all, this is a pretty weird question to ask.
I've been extending the RISC-V version of xv6 to have a decent libc and
some userland programs: https://github.com/DoctorWkt/xv6-riscv-fuzix
There's a minimalist shell and my own 'wish' shell; neither have any
scripting capability. Also, as it stands there are no signals implemented.
I'd love a Bourne-ish shell to write shell scripts, but I've had a hard
time finding one that I can snip out the signal handling code.
If you have any suggestions, please met me know!
Thanks, Warren
Not dissimilar work at AT&T Research ~2000 - compressing fixed-length records, better than gzip, +30% for similar compute time.
‘pzip’ - Adam Bushman & Glen Fowler
<https://web.archive.org/web/20041019142227/http://www.research.att.com/~gsf…>
Later work by others, building on ‘pzip’ ,claims ‘100x’.
> On 30 Dec 2024, at 00:44, Douglas McIlroy <douglas.mcilroy(a)dartmouth.edu> wrote:
>
> I can supply a copy if no one else has beaten me to it.
>
> Ron Hardin subsequently pushed the limit even further. Unfortunately,
> I do not have a record of that work.
>
> Doug
>
> On Sat, Dec 28, 2024 at 9:54 PM Royce Williams <royce(a)techsolvency.com> wrote:
>>
>> Someone I know is seeking the original version of an internal Bell Labs memo from 1974 titled "Webster's Second on the Head of a Pin" by Morris and Thompson. The topic appears to be related to improving the speed of lookups or search. It's cited in a few papers as "Unpublished Technical Memo, Bell Laboratories, Murray Hill, NJ 1974." All I can find online is citations. Any leads appreciated!
>>
>> --
>> Royce
Other links:
This repository included ksh-93 sources
Glen Fowlers’ downloads
<https://web.archive.org/web/20130514131958/http://www2.research.att.com/~gs…>
Later AT&T Research page with Software downloads
<https://web.archive.org/web/20090626002505/http://public.research.att.com/i…>
THE AT&T AST OPENSOURCE SOFTWARE COLLECTION
2000
<https://www.usenix.org/legacy/publications/library/proceedings/usenix2000/f…>
Github Repo for AST - I couldn’t make these compile
<https://github.com/att/ast/tree/master>
KSH93
<https://github.com/ksh93>
--
Steve Jenkin, IT Systems and Design
0412 786 915 (+61 412 786 915)
PO Box 38, Kippax ACT 2615, AUSTRALIA
mailto:sjenkin@canb.auug.org.au http://members.tip.net.au/~sjenkin
The PDP-10 had an alarm bell that could be rung under program control.
When the TOPS-10 operating system crashed, it displayed a numeric code on
the console indicating the reason for the crash. This was called a
"stopcode" and is the equivalent of a Unix panic. It also rang the alarm
bell.
DDT (Dynamic Debugging Tool) was the primary debugger for TOPS-10. PPN
(Project-Programmer Number) was used for system security. Each user
account was assigned by number to a Project, and within that Project a
unique Programmer Number. The low numbers (such as [7,3]) were usually
privileged accounts.
So here we have the Christmas carol Stopcode Bells, to the tune of Jingle
Bells:
==========
Stopcode bells, stopcode bells, stopcode all the way.
Oh what fun it is to crash the system night and day.
Stopcode bells, stopcode bells, stopcode all the way.
Oh what fun it is to crash the system night and day.
Poking through the core
With a bug in DDT
Change your PPN
To [7,3].
Halt somebody's job.
Make them scream and shout.
Oh what fun it is to log
The operator out.
==========
This is one that I wrote while I worked in DEC's software development tools
department. Around Christmas time the first baselevels of VAX/VMS Version
3.0 were being sent to alpha test. The engineering departments got first
crack at the new system and so were the first to encounter bugs and design
problems. VMS Version 3 had been a very ambitious project and was
eventually split up into Version 3A (released as Version 3.0) and Version
3B (released as Version 4.0). There was a lot of grumbling by groups whose
new features got put into 3B and thus delayed. The early baselevels of 3A
broke the VAX C runtime library.
So here we have Version 3 is Coming to Town:
==========
You'd better work hard
You'd better code fast.
The system you use
Just ain't gonna last.
Version 3 is coming to town.
They fixed some old bugs
And put new ones in,
Added some features
They think will win.
Version 3 is coming to town.
There's so many new features.
Too bad we can't use C.
And the things that we most wanted
Were deferred until 3B.
You'd better work hard
You'd better code fast.
The system you use
Just ain't gonna last.
Version 3 is coming to town.
=========
-Paul W.