Saturday, August 29, 2020

Bus Trip to The Order of the Arrow National Conference

 

 August 12 - September 5, 1965.

 

Like many organizations, the Order of the Arrow has a National Conference.  1965 was the 50th anniversary of their founding.  Somebody came up with the idea of a bus load of scouts from Oregon going to this Conference.  They rented a bus, laid out an itinerary and sent out applications.  For $350, you got a 23 day bus trip to the National Conference, at the Indiana University in Bloomington, and as long as we were going all that way, we would stop in Chicago, New York, Washington DC, St. Louis and more.  That was a lot more traveling than I had ever done, and I wanted in on it.



As we went along, I kept a little notebook.  For some reason I noted that on the day before we left (Aug 11) I weighed 125 pounds, and that I took $29.42 with me.

We left the Scout Center at 7:15, and got to Bend by 10:30.  We had developed "clutch trouble" on the bus, but still left Bend (presumably with it repaired) by 11:15.  We had lunch at 1:00 by a Historic Monument.

Have played 2 chess games with John Porter.  Won one, drew another thru sheer stupidity (his or mine?)

Left Juntura Oregon at 3:30.  Left Oregon at 5:30.  Ate dinner at Stardust Motel in Boise, Idaho.  Stared a Chess Tournament on the bus.  10 cent entrance fee, with a $1.00 first prize, 50 cent second.  (So must have been at least 15 kids in the tournament.)  My first match is against Jim Strou.

Left Mt. Home at 7:30.  Took a picture of where we stayed. (As I remember, we rolled out sleeping bags and slept on the floor of a gym).

Lost my first tournament game to Jim Strou.

Bought a paper at Dinner in Rock Springs.

We were walking around town (and if I remember correctly, we had to be in our Scout uniforms all the time for this whole trip) and some car pulls up and some kids got out and wanted to fight.  John and I and the rest of us just walked away.  The car pulled a half block in front of us and they were going to get out again  when another car pulls alongside them and really told them off.  Some local teenagers had taken our side.  Good guys here.

Saw some oil drilling rigs today.  Took a picture of an oil rig in Kimball, Nebraska.

We'll be camping tonight.  Just remembered I forgot my tarp.

Had a little bad luck tonight.  While looking for a place to camp and eat, the bus got stuck in the sand near Lake McConaughy (just North of Ogallala).  We all had to get out and push.  We finally got going and found a place to eat.  Most of us went for a night swim.  The waves were really high.  We slept on the beach.

Next morning we ate and then visited a Sioux Trading Post with an Indian Village. Stopped at Gothenburg to see the original Pony Express station.  Stopped at Holiday Inn, Kerney, Nebraska for lunch.

Won chess tournament games against John Porter  Next game decides 5th place.  Had late dinner (11:00 to 12:00) at Holiday Inn in Des Moines.

Reached the big city at 5:00; have room in Palmer House Hotel with Ash.  1574-W on the West side.

Next day (Aug 17) Went to Round Apt. Buildings, Playboy Club, Museum of Science and Industry, Museum of Natural History (50c).  Rained most of the morning.

Left Chicago 8AM.  Slept most of the morning on the Indiana Tollway. 

I picked up some playing cards and rubber bands at the Palmer House.  (As I remember, on our way out, we passed a bunch of small rooms which were set up with card tables and there were playing cards just scattered all over the floor.  We guessed it had been a bridge tournament, and they used a new deck for each new hand, just throwing the old decks on the floor.  I scooped up a bunch of cards as I walked by.  The backs were of different colors, and I spent some time on the bus trying to create complete decks.  I got a couple that had complete decks with the same back color, but others just had a mixture of back colors.  It was something else to do on the bus besides the chess games.)

Arrived at Buffalo at 8:30; went swimming until 10, then ate dinner.  Everyone got in the bus and we went to Niagara Falls and returned about 1:00.

Left Buffalo at 8AM for the Falls again.  This time went to the Canadian side.  Dave Williamson and I went to the Boy Scouts of Canada office and I bought 2 patches for 80c.  Dave and I had to run to get back in time.

Chess tournament ended.  Cox in first; Craighill in second.  Lost 4c on Craighill. Lost my last chess match to Frank Smith.

Had a good morning with Dr. E. Urner Goodman.  My autographed my Order of the Arrow sash.

Slashed Scott Maters finger accidentally this morning.  Bandaged it up and took him to two doctors.  One said he wouldn't do it; the other that it was too late to stitch it up.

Went thru West Point at 5:00 to 6:00.  Arrived in New York at 8:00 -- dinner and bed.

Saturday (Aug 21).  Went to the UN building, Statue of Liberty, Empire State Building.  Had a good time.

Sunday (Aug 22). Went to the New York Worlds Fair with Kent Hickman, etc. and then split up.  I went to the Bell Exhibit where they showed the history of communication.  DuPont -- wonderful musical about chemicals and demonstrations of chemistry. GE -- Carousel of Progress to dome of lightning and fire to nuclear fission demonstration. IBM building. Johnson's Wax -- got a free shoe shine!  Ford -- rode in a Lincoln Continental thru world of yesterday and tomorrow.  General Motors -- Futurama ride.

Left New York this mornng and went to the Boy Scout National office (which would have been in North Brunswick, New Jersey).

Ate lunch at Philadelphia.  Saw Liberty Bell and Independence Hall.

Washington, D.C. After breakfast we went to Arlington National Cemetery and Kennedy's Grave and the Iwo Jima statue. Next to the Lincoln Memorial and then to the Treasury Building and Washington's Monument.  15 minutes to go up 898 steps.  Then to the Jefferson Memorial, the Senate side of the Capitol.  Saw the Senate in action with Everett Dirksen, Bobby Kennedy. Maurine Neuberger was presiding.  The Supreme Court.  Library of Congress. Old Senate building. National Archives.  Justice Department. National Art Gallery. Natural History Museum.  Museum of Technology and History.  R.A. Taft Memorial. The Smithsonian.

I waited to go into the White House, but it didn't open because of a Press Conference.

Had wonderful Chinese dinner for $3.35.

Left Washington, went thru Maryland and Pennsylvania and West Virginia to the Lincoln Lodge in Columbus Ohio, and it is a swell place.  We played two rounds of putt-putt golf.  I got 25 and 34 strokes, 9 holes.  Good swimming pool, excellent restaurant, clean rooms.  

We leave today for the Area Conference.  Thunder storm overhead.

2:30 arrived at the National Conference.  Received a folder and a patch and a neckerchief.  Room 103 in Magee Hall, Foster Quadrangle.  Went for a swim, and then dinner.

(And that's all I wrote.  I guess the way back was just anti-climactic!)

 



Saturday, December 9, 2017

Book Publishing Technology

I have published 4 books of my own, starting in about 1975 and continuing for about 10 years. 

My first book, the MIX book, was created on a computer system, using RUNOFF.  RUNOFF was a popular markup language.  It would do pagination, and page numbering, right margin justification, and so on.  I wrote the book out long-hand, and then typed it into the computer, with RUNOFF commands for formatting.  I could use this to print the book on a line-printer, where I could read it and mark it up for editting purposes.



My wife (now ex-wife) helped a lot in doing the editting.



The last print-out I had was from July 1977 and is 4 inches thick, weighs 14 pounds.

After the writing was done, I got a contract with a publisher, Academic Press, and could print copies, send them to the publisher, then incorporate their changes in my computer files, and send them new copies.  Eventually, when the book was considered ready to print, I sent them a computer tape of the book, with mark-up information for fonts and such, expecting them to typeset from this tape.   Instead, they printed out the contents of the tape, and then re-typed the entire book for the typesetter.  I could tell since when they sent me the page proofs, there were a large number of errors in the book.  This was a highly technical book, and, of course, the typesetters did not know the subject matter.  The whole purpose of sending the magnetic tape was to avoid this sort of situation.  Instead there were long days of going over the page proofs word by word, trying to find all the errors that had been introduced and fixing them.

For the next book, my Petri net book, technology had advanced.  I moved to a Unix system with a different mark-up language --  troff -- which had the ability to work with math symbols.  As with RUNOFF, troff could print to a line printer, but it could also use a new device: the daisy wheel printer.  A daisy wheel printer was like a typewriter, but the actual letters were on a disk which would spin to position the correct letter to be typed



The advantage was that it was relatively quick to change the print wheel, and so you could change from a normal wheel to a wheel with symbols, allowing it to print Greek and math characters. 

The printer could print on sprocket fed paper.  I remember writing a program that would go thru a troff output file and replace all the Greek/math characters with a space.  Then I would print that file.  Then I changed the daisy wheel from the normal wheel to the symbol wheel. I would then re-position the paper back to the beginning and print a second file which had spaces for all the regular characters and contained only the Greek/math characters.  The printer would space down, and over, and print the math symbol in the space that had been left from the first printing.  With the sprocket feed for moving the paper, the registration was pretty repeatable, so things ended up printing, mostly, where they were supposed to be.



During the development of this book, I spent a year at MIT.  MIT had a special graphics printer -- an early version of what are now common laser printers.  I was able to get troff to drive that laser printer and get a version of the book that was almost as good as type-setting.



Based on my experience with the MIX book, when I was looking for a publisher for the Petri net book, I specifically wanted to avoid doing manual typesetting again.  Prentice-Hall was willing to work with me on that, and found a printer in the Washington D.C. area that would take troff and use it to drive a photo-typesetter.  I sent them a tape of the book, and that went really well.



When I got back to the University of Texas, there were no laser printers, but I became aware that the student newspaper, the Daily Texan, used a photo-typesetter for their work.  And it was run by a PDP-11/70, which ran Unix.  So I wrote a driver for troff to run their photo-typesetter, and was able to use it to do my third book myself, directly from my troff-based files to photo-typeset pages.  The typeset output was pasted onto model sheets.

The third book was published as a monograph by Springer-Verlag in the Lecture Notes in Computer Science series, and, at the time, was the only typeset book in that series.  And I manipulated the troff, so that there was no hyphenation.  At the time, it was quite a feat!

The fourth book, the OS book, brought all of this together.  We wrote the book in SCRIBE, so that we could concentrate on the content and not the format.  Then I translated the SCRIBE files to troff, and added a set of troff macros, to implement the book design from the publisher.  By that time, the department had a laser printer, so we used the troff to drive the laser printer to get everything as we wanted it -- we had a devil of a time with widows and orphans!  Once everything was ready, we ran the troff files on the photo-typesetter at the Daily Texan, and produced the page proofs to turn over to the publisher.  We did the writing, editing, and typesetting all ourselves.







Tuesday, April 5, 2016

Metastatic Squamous Cell Cancer

I noticed the lymph nodes in my neck were swollen starting in Dec 2015, but it came and went.  I mentioned it to Dr. Teng during my Feb 15 2016 appt.  She scheduled an ultrasound on 18 Feb which confirmed that they were enlarged.



FINDINGS:
Ultrasound of the palpable areas on the left neck are consistent with multiple enlarged lymph nodes. There is loss of the normal morphology. Largest of these in the left lateral neck is measured at 2.4 x 1.1 x 1.7 cm. There are at least four of these present. The right lateral neck shows no adenopathy

Next was an appt with Dr. Buzad, a surgeon who did a biopsy on 30 March to remove one of the swollen lymph nodes.  That is what gave the diagnosis of "Metastatic Squamous Cell Cancer".  The problem is that the cancer cells had metastasised from the primary site into the lymph nodes, so the goal is to find the primary site.

Since the affected lymph nodes are in the neck, the assumption is that the primary cancer is in the upper body.  The "Squamous Cell" determination says that the primary cancer will be on a membrane -- skin or an inside surface.  I had a skin check-up on 3 Feb, and nothing was found, so it must be an inside surface.

That leads to a 5 April appt with Dr. Hewitt (ENT).  She checked my mouth and throat, and used a scope to look down my nose into my sinuses and my throat, and found nothing.  Which leads to needing a better scan of a larger area -- a CT scan of my upper body, scheduled that afternoon at 3:00.

The CT scan went as expected.  Go in, lay down on this "bed" and it gets moved back and forth thru a large ring of a machine.  Try to lay very still with your head and neck just so.  Breathe.  Hold it.   Back and Forth, then you can breathe again.

I stuck around for another 30 minutes after the scan, and they made a CD of the images for me.  The disk says there are two CT scans, 662 images.  It appears to also have an executable of something called GearView which is a Windows program to display the images.  There are PDF user manuals in English, French, Spanish, German, and Portuguese.

They said the CT scan images would be "read" by a radiologist and the report sent to Dr. Hewitt.


There is also a file saying to use OsiriX Lite on an Apple system.


The files themselves seem to be in a directory called DICOM as file 1, 2, ..., 662.

Sunday, December 6, 1970

Drawing Attention

My Father worked on the railroad, the Southern Pacific Railroad to be exact.  He started as a Fireman (sort of an assistant engineer).  Railroad work is controlled by seniority.  He worked as a fireman for years, probably decades, slowly climbing the ladder of seniority.  When we were really young, he had to take the jobs that the higher-seniority firemen did not want -- long hours, away from home.  Eventually he got to be the highest seniority fireman in his district.  He could pick the good jobs, during the day, in the yard, so he could come home in the evening and be with the family.

That lasted about a week.  Then he got promoted, from Fireman to Engineer.  From the highest seniority Fireman to the lowest seniority Engineer, and had to start all over again at the bottom of the seniority ladder, taking the long jobs, away from home.

But that's not important here.  This was back in the 1950s.  The Southern Pacific was the largest employer in the area.  Eugene was the second largest city in Oregon, but it was probably only 50,000 people.  The city and the railroad did not always agree on how things should be done.  For example, the city switched to Daylight Savings time during the summer; the railroad stayed on Standard time.

Dad got paid, in cash, every week.  He would go to the payroll window on Friday, and they would give him an envelope of cash.  He brought that home, and put it in a cigar box, and we (well, Dad and Mom) used that to pay bills and buy things.  At one point, the City and the Railroad were not getting along on things; the Railroad did not believe the City understood how important the Railroad was.  So one week, they paid all their employees in $2 bills, rather than the normal $10s and $20s.  The $2 bill was legal money, but it was unusual then (as it is now). The Railroad paid everyone in cash and that cash was $2 bills.  Suddenly the city was awash in $2 bills. The City clearly learned how important the Railroad was to the city.

Later, when I was an undergraduate in college, I worked part time as a programmer for the Computer Institute for Social Science Research (CISSR).  CISSR produced a set of analysis and statistical programs that were used by the graduate students and faculty of Michigan State University.  These programs were written in Fortran and ran on the University's CDC 3600 computer.

The 3600 was a wonderful computer.  It was big and expensive.  It sat in a glass walled room at the computer center and had a set of operators that would attend to it.  Jobs were submitted to the computer as a deck of computer cards.  The cards were submitted to a clerk at a counter (a couple of very pleasant college girls), who put them in a tray until it was full, then handed it to an operator who would put the cards into a card reader -- a big machine the size of a chest freezer -- which read the cards in and put them on a drum.  Eventually the operating system would run the job, and produce output which would be printed on large line printers.  The paper from the line printers would be separated according to the job and then filed in a set of hanging folders to be picked up by the user.  This whole process could take a full day, depending on how busy the computer was.  You learned to work on several different programming problems at the same time -- submitting one to be run, then switching to another problem since it would be hours, possibly days, until the first program ran.  I was working on as many as 10 programs at one time.

CISSR wanted to be sure that it got "credit" for all the times that it's programs ran.  Somehow they found out that there was a special system call that could be made which would put a short user message up on the CRT display for the operators.  You could post an 80-character message on the display.  CISSR decided they wanted their name to be displayed every time that one of their programs ran.  That way the operators would see that a CISSR program was running and see how often that happened, raising the importance of CISSR to the computer center.  (It didn't hurt that almost no one used this special display capability and it seemed that once a message was put up, it stayed there until someone else put up a message.  So it was speculated that the first time one of our programs ran, it would put up "CISSR" on the display and it would stay there all day, even while other programs were running.)

I was given the task of writing the code to do this.  The message was put up by a special system call from the user program (my program) to the operating system (which manages the display).  The system call used two index registers -- one to give the address of the message in memory, and the other to give its length.  Each index register is 15 bits, which allows an address of up to 32,678 which was the address size for the CDC 3600.  Actually the address size for the processor is 16 bits, and our 3600 had 64K words of memory, split into two 32K banks of memory -- one for user programs and one for the operating system.

Memory for the 3600 was core memory.  Each bit of memory was represented by a small doughnut shaped ferrite core which could be magnetized in one direction (0) or the other direction (1).  This was really useful, since it meant that memory stayed even when power was turned off.  Normally the operating system was loaded into the bank of system memory once (a cold start), and then if it had to be shutdown or it crashed, it could just be restarted from the copy of the operating system still in system memory (a warm start), since core memory stays the same with or without power.  Modern computer system use semiconductor memory that needs power to maintain its contents, so if the computer loses power, you have to reload memory (electronic) from disk (magnetic).

Now for the system call to work, the message that was to be displayed needed to be copied from user memory into system memory.  This required a special addressing mode, but the operating system could set that up.  The specifics of how this was all done was not very well documented (almost no one used this system call), and so I read the source code of the operating system to see how exactly it worked.  The operating source was available as this huge computer printout (about 8 or 9 inches thick) in the computer library.

The operating system was written in assembly language, and I noticed that it used this really neat instruction to copy the message from user space to system space.  Once the addressing modes were set, it used an "Augmented XMIT" instruction to copy the message.  The Augmented XMIT instruction had two addresses, the Origin address and the Destination address, plus it used 5 of the 6 index registers.  Index register B1 held the word count -- how many words to copy.  Register B2 was used to modify the origin address, while B4 modified the destination address.  Register B3 was the "step" for register B2, while B5 was the "step" for register B4.  This one instruction would copy from Origin + B2 + i*B3 to Destination + B4 + i*B5  for i going from 0 to n (contents of B1).  This one instruction can copy an entire block of memory!

But the most important part of this instruction was obviously B1.  B1 contained the number of words to copy.  If we wanted to copy no more than 80 characters, that would be no more than 10 words (48 bit words with eight 6-bit characters).  So before copying the message from user space to operating system space, the OS first checked that the number of words to be copied was less than or equal to 10.  This was a bit of a problem.  The number of words to copy was given by the user in an index register (B1) which was convenient for the Augmented XMIT instruction, but the 3600 had limited comparison or test instructions for the index registers.  In particular, a Register Jump instruction was 48-bits (a long instruction), while the A-Jump instruction, which only tests the A register was only 24-bits (a short instruction).  Short instructions take less space, and operate faster, so it was preferred to use short instructions.  In this case, the code copied the number of words from B1 to the A register, decreased the A register by 10 and then jumped to an error case if the A register was still positive.  All of these are short instructions.

But the B1 index register is 15 bits long and the A register is 48 bits long, since the A register is used for the full range of arithmetic operations, while the index registers are normally only used for addresses (or counts of addresses).  An address is only 15 bits.  If the number of words was slightly too large, say 15, then the code worked fine, detecting that 15 was greater than 10.  But if the number of words was so large that the high order bit was on (more than 16K), then copying the B1 index register to the A register would sign-extend that "1" bit and result in a value in the A register which looked like a negative number.  And any negative number is less than 10.

So, I could set the number of words in the message to 32,767 (0x7FFF) and when it was moved to the A register it would appear to be -1, which is less than 10, and the operating system would copy almost the entire user bank of memory on top of the system memory bank, wiping out the operating system.  Or maybe it would do nothing.  I needed to test this.  But to run that code as a normal job could disrupt everyone's work.

Now it turned out that sometimes the computer was lightly loaded.  And in that case, the computer center would schedule an "open house", letting users run the card readers and line printers themselves, getting near instant turnaround of jobs.  These open houses would be scheduled for weekend nights, when the system would otherwise be idle.  Program developers had a great time during these, since they could run a job, see an error, fix it, and run it again almost immediately.  These open houses were by invitation only.  And one came along just as I was starting to look at this display problem.

So one Saturday night, I went and worked on all my other programs, interacted with the other programmers, until there seemed to be little left to do.   The computer center was bustling, filled with the noise of the card readers, the line printers, the tape drives.  At that point, I put a little test of this display system call, with 32,767 as the length of the message into the card reader.  Almost immediately the room fell silent -- the line printers stopped, the card readers stopped.  One of the operators walked over to the display console, looked at it, and yelled out "Peterson!".  At 2AM Saturday night -- I guess it was technically Sunday morning -- I got kicked out of the computer center.  I found out later that I had destroyed the contents of system memory, and the operators had to do a "cold restart" of the system, loading everything back into memory and setting it all up from magnetic tape.  It took hours.  They were exceptionally annoyed.

And by Monday morning, when I went to look at the operating system code, I found that the system call code had been patched by hand to do a long jump to some other place in the code, use a 48-bit instruction to compare the B1 register to 10, and then a jump back to the original code.  And shortly thereafter we were happily putting "This is a CISSR program running" on the console display, showing how often CISSR programs ran and how important they were to the computer center.