Conservative. Idaho. Software engineer. Historian. Trying to prevent Idiocracy from becoming a documentary.
Email complaints/requests about copyright infringement to clayton @ claytoncramer.com. Reminder: the last copyright troll that bothered me went bankrupt.
Friday, September 5, 2025
Volleyball
Tuesday, May 27, 2025
Gcode Subroutines
%
g17 g20 g54
O100 sub
(cut Y line subroutine)
G91 (relative movement)
G1 z-0.0100 F2.0000
G90 (absolute movement)
(start point)
G1 X-0.0610 Y-0.0610 F5.0000
(cut across Y)
G1 Y3.2710 F5.0000
G91
G1 Z-0.0100 F2.0000
G90
(cut back across Y)
G1 X-0.0610 Y-0.0610 F5.0000
O100 endsub
G1 Z1 F25
G1 X-0.0610 Y-0.0610 F5.0000
G1 Z0.05 F25
G1 Z-0.3200 F2.0000
O100 call
O100 call
O100 call
O100 call
O100 call
O100 call
O100 call
O100 call
O100 call
O100 call
O100 call
O100 call
O100 call
O100 call
O100 call
O100 call
G1 Z2 F25
G1 x0 Y0 F5.0000
m2
%
Monday, January 20, 2025
In 1969...
Saturday, June 1, 2024
Bill Bryson's The Life and Times of the Thunderbolt Kid: A Memoir
Wednesday, May 29, 2024
Early Memories
Friday, May 13, 2022
Interesting Jobs
When I left headhunting, I was 22. I had a short assignment writing PL/I for something called the Formalwear Information System. My employer, Telos Computing, had basically decided that I was not socially fit for the office (they were probably right). Instead of just laying me off, my boss Dick Brewer, who was a heck of a nice guy, assigned me to this contract with Palm Beach Formalwear, who rented tuxedos. This ran on an IBM System/370 under MVS. This was a big virtual memory mainframe. We used IMS as the database, and DL-I as the query language. (This was a bit odd; CICS/DL-I was the combination more typically used at the time.) Do not ask me to describe either now. Ditto for JCL. We used TSO from IBM 3270 terminals instead of punch cards. The response time was so slow that we called it turnaround because pressing a key was like almost submitting a card deck to the mainframe.
We only had two terminals and desks for three programmers, so I worked swing shift. This really turned my day around. I did what little I did for fun during the day, which simplified many tasks. Businesses such as dry cleaners had something like banker's hours in Santa Monica. It also meant grocery shopping at Mayfair on Wilshire Blvd. in the wee hours. They were one of the few 24 hour markets at the time. Shopping at 2:00 AM gave a combination of customers weirder than me, and the inventory people wandering the store working for RGIS. (Little did I know that I would briefly work for them part-time some years later.)
Anyway, the Formalwear Information System (or was it Formal Wear Information System? the acronym was FWIS, I think), was only a few months, and I needed a new job. I interviewed with a very strange small company, called Futuredata (on the edge of being purchased although I did not know it) building something that I did not fully understand. But the only offer that I received was from Lexitron out in Chatsworth. (Chatsworth at that time was the rural northwestern edge of the San Fernando Valley.) They offered me a decent salary; I think about $30,000 a year. On the way through HR, some bigwig saw that I lacked a degree and my salary offer became $24,000. I was miffed, but I had met the girl of my dreams and I think that I had proposed by that point. We planned on moving to Chatsworth, renting an apartment, and she would continue her education at CSU Northridge.
Lexitron was a division of Raytheon. They built what was about to become a dinosaur: a dedicated word processing system. It was a portrait layout screen that provided a nice editing and proofing system. These were widely owned by big government agencies of the time, which is probably why Raytheon bought Lexitron.
I remember only one project that I worked on during my four weeks there. My boss needed something textual (perhaps some sort of grammar rules) transformed in some way that was big enough that doing it manually was impractical. I was handed a tool called Stage 2 that was something that might result from an unhealthy relationship between awk and sed. I managed to beat Stage 2 into submission. In retrospect, this may have been my boss seeing if I was up to the task. I was, to my surprise.
Anyway, GenRad was a big East Coast old electronics company that apparently laid the framework for the oscilloscope (yes, that old) before selling it to a little Oregon company, Tektronix, who found something useful to do with the technology. GenRad bought Futuredata and with increased funding they made me a decent job offer, about $30,000 a year. Not having to leave Santa Monica for remotest Chatsworth and a raise made this an easy choice.
This was my first experience of startup wealth. Paul Page and Bruce Gladstone were President and VP of Futuredata. Bruce bought a BMW 733i, back when these were signs of wealth, before most of America became rich. Paul bought two Porsche 928s for himself and his wife. One red, one white. Like Bruce's BMW, these seemed like astonishing wealth.
What did Futuredata build? They made one of the first in-circuit emulators not made by the chip manufacturer. (Intel eventually trademarked that phrase, so we started selling it as an "in-situ emulator.") Imagine the microprocessors of that era: Intel 8080, 8085, 8086 (a lot of military projects then), 8088 (IBM PC), Zilog Z80 (most S100 bus microcomputers of the time), Z8000 (Atari's short-lived venture into PCs), MOS Technology 6502 (Apple II), Motorola 6809 and 68000. How do you load and test software?
You pull the chip out of the socket on your motherboard and plug in our product. Our probe contained the chip, and the associated hardware kept track of all the microprocessor bus signals. References to RAM were rerouted to the emulator's simulation memory. Every signal on the bus was accessible and controllable. You can set breakpoints to suspend execution when the IP (instruction pointer) reached a particular address, when a particular byte of memory was read or written, you could even examine things like instruction prefetch.
Instruction prefetch was one of the ways that processors such as the Motorola 68000 could be so fast. When it was executing the current instruction, the processor has already fetched the next instruction, determined if it would need to fetch memory contents, and started that operation. The next cycle was ready to do the add. The 68000 would sometimes be doing stuff six cycles beyond the current instruction.
We had a gadget called a logic analyzer that would let you watch, record, and stop on particular actions on the microprocessor bus.
You could also run on the target processor with simulation memory or vice versa if something was timing dependent. It was fabulous.
We had no easy way to force a stop in the 8086. There was no NMI line (non-maskable interrupt) so we had to force an INT 3 instruction into memory, which forced an interrupt so we could take control of the processor, then restore the original memory contents. This was a painful effort. I had code that had to be loaded into memory to do this while an EE sat watching the bus on an oscilloscope to verify that we were successful.
At some point I saw that we had paid an unreasonable amount of money to some consultant to write a disassembler for the 8086 processor. Disassemblers are programs that looks at the machine code and figure out the corresponding assembly language. On the Interdata 16-bit minicomputers, for example 4A10 5234 was Add Halfword 1, x'5234'. Add the contents of that memory address to register 1. I had written disassemblers before (in high school) so I knew it was trivially easy.
I do not remember which was the first one. It took about 20 hours, mostly developing a general strategy. By the time I reached the 6502, it took five hours. This is all written in Z80 assembly code. But boy did I have a have a great debugger!
This was the most fun that I had until I started working in startups. I was working with my best friend (best man at my wedding), and a bunch of fun and eccentric engineers.
Monday, November 15, 2021
Memories
I went to bed early after what should have been an easy 3 mile walk. The allergic asthma makes this hard.
I woke up a few minutes ago with memories that will not shake, and that I think may interest some of you.
It was 1965 through 1967. I was 9 - 11 (fourth through sixth grades). We lived in an Edwardian house that had been subdivided into three apartments; my family occupied the bottom floor. It was 857 3rd Street in Santa Monica so we were three blocks from the Palisades, overlooking the beach. We were on the northwest corner of the intersection of 3rd Street and Idaho Blvd. In summer, which seemed to last forever at that age, my sister Marilyn and I would walk down Idaho to the Palisades.
At Idaho, erosion had cut the edge of the cliff back to where Idaho met Ocean Blvd. In some years, we would hop the fence and carefully climb down a path to the Pacific Coast Highway and somehow crossed it without getting killed. At some point, we started taking the pedestrian walkway at California Blvd. that crossed the highway, at what in retrospect was a pretty major height,
When we left the house about 9 or 10, it was usually still foggy. By 11 or 12, the fog burned off and we would play in the waves. Marilyn and friends went swimming a bit offshore. I was not able to swim yet so I stayed ijn very shallow water. About noon, Marilyn would give a couple dollars to walk over to the Sorrento Beach Grill to get a burger, fries, and a Coke. I remember walking back across the hot sand as fast as I could safely carry our meal. I can still see the "No shoes, no service" sign inside. At that age any food was pretty awesome. By 4 or so we would make the climb back to the top of the Palisades to go home.
Monday, November 1, 2021
PC Performance
Saturday, April 24, 2021
I Just Finished Reading My Father's Diary From 1973
Friday, April 9, 2021
Memories
Monday, February 1, 2021
What Happened to News?
I was thinking back on this while trying to fall back asleep. Newspapers have always been partisan institutions largely funded by ad revenue. While some showed great courage and public interest, such as Harper's Weekly's campaign against the Tammany Hall corruption, there was plenty of very degraded journalism as well that only sought morbidly curious readers. I remember reading a biography of Hearst, that mentioned his New York City paper focusing on details of the underwear of a little girl who was raped and murdered.
Newspapers suffered a great dying after World War II as television replaced it. It was easier to get information that way. For many, even then, reading was hard work. Television and radio stations operated news as a loss. The FCC required broadcast stations to provide news and educational materials as a condition of use of the public airwaves. I can just barely remember in Los Angeles in the early 1960s, Sunday evenings would have 15 minutes of local news starting at 7:00 PM, and national news from 7:15 to 7:30. (Sundays had little news, apparently.)
The networks made and ran documentaries that today appear on PBS and cable or Internet channels. CBS, in particular, I remember running the National Geographic documentaries because they had to produce and present material in the larger public interest. They were informative and entertaining (at least to me as a child).
When TV stations ran editorials, or news that expressed a controversial point of view, they were require to present opposing points of view. Some of these were well presented; some were not, but at least more than one point of view was presented. This lasted until 1987. It seems in retrospect a darn good idea; it made it possible to break out of the echo chamber that is now national news.
Unfortunately at about this time in the late 1960s, a form of propaganda begin to appear on KNXT, the CBS affiliate. They hired an environmental reporter. As time went on and I became more adept at analyzing news reporting, in spite of my strong sympathies for the environmental movement, the more it became apparent that he was presenting a very biased version of these issues. I think this is the point where I began to become skeptical of news media.
At some point the FCC dropped the public interest requirement, and broadcast news became a profit center. This, in my memory, was about the time PBS and NPR received national government funding. I think many of what became PBS TV stations had enjoyed local funding as educational television for kids as an alternative to the Saturday morning cartoon ghetto of kid-targeted ads (toys and sugary cereals such as Lucky "magically delicious" Charms). I think KCET, the Los Angeles PBS affiliate picked its call letters from Children's Educational TV.
Serious newspapers, such as the Los Angeles Times, into the 1970s would print the entire text of speeches by the President, although usually in smaller type than the articles. If you wanted to know what he said, it was there for those who cared.
Sometime in the 1960s, the FCC decided that national broadcasting of the evening entertainment (some of which was actually serious news documentaries: CBS Reports, NBC White Paper) was too national and left too little room for local stuff. What had been national starting at 7:00 PM, usually the network's evening news broadcast, followed by some often very good entertainment (Mission: Impossible, The Name of the Game, Star Trek, Combat!, The Twilight Zone, the Outer Limits, Columbo) and a lot of predictable dreck (Bewitched, That Girl, Occasional Wife, Gunsmoke, The Man From U.N.C.L.E., Lost in Space, Voyage to the Bottom of the Sea, Hogan's Heroes, It's About Time, F-Troop, a few of which I watched and enjoyed until I turned about 12), was now confined to 8:00-11:00. I do not know what other cities did, but the only particularly good use of this local programming time that I remember from Los Angeles was Ralph Story's Los Angeles. It was light and fluffy, but provided often interesting bits of local history and culture.
Something changed in the 1970s. A co-worker many years later told me she started at Duke's Journalism School in the early 1970s because she had no idea what else to do. Woodward & Bernstein had received somewhat undeserved accolades for bringing down President Nixon for his crimes; Judge John Sirica and the Ervin Committee's investigation of the allegations were vastly more important, in my opinion. But suddenly people were coming to Duke's journalism school "to bring down governments." A profession that had patted itself on the back for public service started the transformation into a political institution. For many Americans like myself, watching this transformation from ostensibly fair news coverage to a tool for going after Republicans was what started us down the road to cynicism. The disasters of Vietnam and Watergate certainly contributed.
Watching the uncritical and grossly ignorant reporting of "assault weapon" bans 1989-95; climate change throughout the 1990s and 2000s; the repeated character assassination of Reagan (who even some Democrats later admitted had played a part in breaking up the Soviet Union and its Empire), then Bush the elder, Bush the younger as "literally Hitler!" (showing the increasingly illiterate state of America's self-imagined elites) left me utterly unprepared for the sudden collapse of serious journalism during the Obama years. A few journalists asked hard questions, such as CBS' Sharyl Attkisson and her exposure of the clearly criminal and political "Fast & Furious" effort. BATF told gun stores in Arizona that were expressing concerns about some questionable, perhaps unlawful gun purchases to go ahead and let them happen. BATF's goal was to smuggle guns into Mexico for use by the cartels, thus providing an excuse for gun bans in America. Even in an area where self-interest might logically have caused journalists to be skeptical of the Lightworker (aggressive prosecution of leaks to journalists) produced nothing but adulation.
Tuesday, July 7, 2020
Food Memories
Wednesday, September 11, 2019
Geek Squad's WebRoot Utility is Pretty Smart
The memory leak may well explain why things get worse over time.
If you aren't a geek, let me explain a memory leak. A C program allocates temporary blocks of RAM for particular tasks from an area called "the heap." When it is done with that block, it returns it to the heap for reuse at a later time. I take that back; it is supposed to return it to the heap. If not, over time, the available memory in the heap gets smaller and smaller. Your heap has a leak.
Back when I first started writing in C, these leaks were so annoying that I overrode the default malloc and free functions, which as the names suggest, allocate memory and then return it to the heap. My versions would record every block allocated when malloc was called and then remove it from the list when that same block was freed. When the program exited, you had a list of blocks that had not been freed. By recording also where these calls happened, it was possible to go back and find the badly behaved code,
An additional problem was allocating say, 50 bytes of RAM from the heap, and using more than 50 bytes at that location. Because of how C organized the heap, you could scramble things pretty badly. My solution was the have my version of malloc allocate 54 bytes, and put some distinctive pattern in the last four bytes. When my free was called, it would verify that the pattern was still there. If it was, I could then track down who had gone off the far end of the memory block.
I think this is now mostly paleosoftware engineering now.
Friday, July 12, 2019
Boy, This Makes Me Feel Old
With careful planning and dashes of creativity, engineers have been able to keep NASA's Voyager 1 and 2 spacecraft flying for nearly 42 years — longer than any other spacecraft in history.
Friday, May 18, 2018
Adventures in Paleocomputing
In the last few weeks of 12th grade, the company that sold the school district the new Interdata Model 7/32 minicomputer was American Business Computers. They were a small band of sleazy operators. (You will find out more later.) One of their contracts was that they had offered to write the software for operating a company that made European car parts. The guy in charge was named Neil. The Interdata computers were 16-bit word size. Pretty obviously, 16 bits will not handle typical commercial transactions. $655.36? Floating point was seven bits of mantissa so that won't work either. NO, BUT YOU COULD ONLY GET SEVEN DIGITS DECIMAL PRECISION WITH THE FLOATING POINT FORMAT.
Even worse, this guy could not write a binary to decimal unpack in assembler language. If you do not recognize "unpack," how do you turn the binary number 01001010 into the ASCII equivalent 74? And how do you pack 74 back to the binary equivalent? Now while many of our contemporaries were drag racing or seeing how many different drugs you could use in a weekend without dying, we were engaged in ferocious competition to see who could write the most efficient pack and unpack subroutines in assembler language. While Neil had persuaded the customer to use hexadecimal part numbers (4EF2, 1C0B), they were somewhat resistant to using hexadecimal for billing customers. "I owe you $EC54?"
Worse: I was later told that this company was Mafia-owned. So were many of their competitors. When they found out that each of them was getting the same "custom" software, the salesman moved to Australia to avoid a contract hit.
Anyway, Neil explained the urgency of being able to do 32-bit arithmetic on a 16-bit machine. Add, subtract, multiply, divide. Add and subtract were easy. Add the lower 16 bits and add the carry bit to the upper 16 bit operation. Subtract was similar. Multiply and divide were not so easy, but with a little help from my friends, problem solved.
He paid me ($80: big money for a poor kid just graduating high school) and offered me a summer job: $80 a week. So I had to drive from Santa Monica to Irvine every day. Gas was about $0.39 a gallon. (About an hour of transit time then; now, retirement age at the end of the first day.)
First he assigned me to a customer named Trinetics in Long Beach. I have no idea what they did; the owner had a thick Southern accent and was a nice enough guy. The only part of the experience I remember was having to run the source code (assembler language) through the assembler (which converted mnemonics like AHM to the machine code 4A). It also resolved variable addresses and symbolic constants, much like #define in C. Then all the individual object modules with references to variables in other modules would be run through the link editor, which would resolve the undefined addresses. The source code was on punched paper tape:
Saturday, January 13, 2018
My First Mulitasking Operating Systyem
Anyway, the data processing coordinator for the district somehow rescued a computer pound puppy. It was an odd dual minicomputer system named MINITS (for Miniature Time Sharing System). It used two Interdata minicomputers, a Model 3 and Model 4, sharing a common 32K RAM space.. A model 4:
The dials on the left and the push buttons at bottom allowed you to enter data into various memory locations, such as when you needed to put the boot code in to load the OS from the drum. This was a slow process. One friend, Curt, demonstrated his ability to enter the boot sequence accurately with his toes.
I do not know if the Model 15 was an Interdata supported product, or something Cerf's team created. The Model 3 was for control of the teletype terminals and modems.
I remeber because they used many of IBM 360 mnemonics and architecture; 16 general registers all of which except 0 could be index registers; and where X'5A', was a 32 bit add of memory to register on the 360, X'5A' was AHM 16-bit add of memory to register on the Interdata), It not being very easy for most people to remember all the numbers, we generally wrote in assembler language. AHM 5,VALUE would add the 16 bits at symbol VALUE to register 5. The program that converted these easy to remember mnemonics into binary was called an assembler.
Memories
I had one of these as a child. I do not remember the TV ad. It used rolls of caps and was a blast until the pot metal used in the cap firing mechanism broke.
Wednesday, January 3, 2018
Learning to Program
I first learned about computer programming in 8th grade. There was a math teacher at our high school with a Ph.D. Why Dr. Jackson taught at a high school, I have no idea. He had worked out an arrangement to teach some math classes about programing in Fortran. Fortran was one of the first high level programming languages. The name stood for FORmula TRANslation. It was really only well suited to mathematical work. The details are fuzzy now, but I am not sure if it had subroutines. It did have an absurd variable naming convention. Variables starting with the letters I through N defaulted to INTEGER. Other variable names were defaulted to REAL (floating point numbers). You can see the manual for FORTRAN IV variant for the IBM 1401 mainframe here.
Dr. Jackson mostly had use filling in coding forms used for keypunching into Hollerith cards. I have no memory of really understanding what these statements were supposed to do, but learning is often at first "Monkey see, monkey do." We then went to the high school, and used an IBM 029 keypunch to punch in the statements.
Hollerith cards were 80 columns wide.
There were several rows going across. 0-9, a 12s row, and I think another one where the keypunch knocked little square holes into card stock. A program consisted of a few cards or many boxes (2000 cards per box).
The IBM 1620 mainframe that the high school had read these cards in a card reader, a descendant of the sorting devices Hermann Hollerith created to do the 1890 census tabulation before they started the 1900 census.
Wednesday, November 22, 2017
Brain Dump: Early 1960s
Travel was fairly rare for us. We were definitely not well off. Complicating the matter was that my father was sought by the FBI, and so he generally worked away from home. The FBI would sometimes enter without warrant or probable cause to search for my father and threaten my mother that her kids would be taken away. Finding my father on these accidental "interstate flight to avoid prosecution" charges could not have been a high priority task, because we drove to San Pedro almost every weekend to visit him.
My father worked at Todd Shipyards as a welder repairing ships. He rented what in retrospect was a very odd house on top of a hill which seems may still exist on an unaccountably unbuilt hill. It wasn't very big and it was ancient, even in 1962, but big enough for him to live in while working graveyard and swing shift, repairing I believe both commercial and Navy ships. There were spectacular views from front and back of the house and lots of black widow spiders that caused my mother to put the fear of God into me.
We started driving north when my mother got off work. I have no strong memories of the car except one bad one. I have this odd impression that we arrived at my father's place in the wee hours of the morning. Roads were slow at the time; the Interstates were far from complete, and state highways were often stop-and-go through every little town. I do know that when we arrived, the smell from the kitchen was overwhelming. My father always had a pot roast ready with onions, carrots, and potatoes. Even at 5, this was an overwhelmingly good smell and flavor experience!
Cars, even new cars, which we never had, had no seatbelts. I can remember standing up in the middle of the bench seat next to my mother. It was quite common to make "car beds," collections of blankets that provide something that would help kids fall asleep. Perhaps they provided some padding for minor crashes.
The only strong memory I have is a blackout, then waking up hours later in the bed of my Uncle Lloyd's pickup. A drunken Marine from Camp Pendleton had rear-ended up, destroying the car. My siblings have no memory of me being hurt, but for many years, I had a night terror, in which I was lying in the back seat of that car, and suddenly something monstrous raises its terrifying face to the window. (If you have never experienced a night terror, good for you. They make nightmares seem pretty pleasant.)
The weekends with my father were wonderful. I always loved my father immensely; he was kind to me in a way that my mother simply could not manage. There was a grape arbor over the walkway to the house and it was a lovely place where we often ate dinner outside on Sunday afternoon. There were not enough beds, so we were often camped out on blankets all over the house. Amazing how much easier it is fall asleep at that age. I have several very positive memories of learning there. Marilyn drilled me on my multiplication tables. I was not in first grade yet. My brother taught me to read so young, that I have no memory of not reading. I always assumed that I learned at 3 1/2. My sister Susan's memory is that I was 2. I know that by first grade I was reading, learning, and memorizing from my brother's high school chemistry textbook. This was a great advantage. I went from child care to first grade at St. John's Elementary School, skipping kindergarten.
There will be more.
One other trip to San Pedro memory. For some reason, our mother put Marilyn and I on a bus to San Pedro. A Greyhound for the long trip to San Pedro. We then rode a city bus to the base of the hill on which our father lived. While that may sound like a crazy thing to do, in the early 1960s, it did not seem so. By the end of the city bus trip, there were guys making either catcalls or inappropriate remarks to my sister who would have been 12 or 13. The bus driver told them to knock it off and they did.


