Anyhow, I befriended the sysadmin and he on the sly gave me an account and the code for the door. I wrote a bunch of numerical integration matrix programs, and showed the results to my lead, who told me computer results were all bullshit (he'd gotten bad numbers from them before) and called over his best draftsman, and told him to show me up (all in a friendly way, he was a great fellow).
The draftsman worked for two days, and came up with a sheet full of numbers to 3 significant digits. Mine were to 6. We compared, and one was wrong. He said my number was wrong. I knew it wasn't, because continuous functions don't have anomalous behavior. He good naturedly agreed to redo that one, and in a while came back and said my numbers were right. After that, my lead trusted my work, and I got all the math work in his group.
Eventually, some manager in BCS discovered I was making unauthorized use of the '11, and went several management levels over my head to demand I be censured. My lead (one of the engineering treasures at Boeing) went to bat for me. That went many levels up, and the BCS manager got a smackdown and was ordered to legitimize my usage.
In another incident, I got the job of writing some test plan specifications. The usual technique was to hand write them and hand them off to the secretary pool to type up. I get writer's cramps after handwriting 5 or 6 words. The secretary pool was in a special doored room full of Wang word processors. All women, and the supervisor was a woman. I asked for access to a Wang, as it was faster for me to type than hand write. She said ok, but I'd have to take the 2 week Wang course first. I asked if I could just have a look at the manual. She laughed and said sure. She was sure I'd fail.
I looked through it for a few moments, fired up the Wang and started editing. It was, after all, just a text editor. The supervisor was annoyed, but she kept her word.
If I'd stayed at Boeing I'd have likely been the first engineer to bring in my own PC for my desk, at my own expense.
Ploughed through weeks of works in days (he is really fast at typing too).
When he came back with his work the manager of course wouldn't belive him, set two men to verify it for weeks and they concluded it wasn't only correct but even had less errors.
After that he was "promoted" to a customer facing job (since he was "unqualified" to program).
My dad told me this story when I was a kid. It's how I ended up as a developer and why I still am.
Delighting customer by making weeks of boring work vanish into empty air is still fantastic.
Edit: I've been luckier than him. It is not always that people can be helped but I was never punished.
After I graduated I worked at Boeing in a test group, and wrote control software for test rigs, mainly to test Fuel Quantity Indicating Systems on the 57 and 67, 47-400, and 77.
That was in Les Carpenter's group, and they still had some test rigs lying around built with relays mounted on wooden boards.
This brought back a memory. In the late 80s I got a job at a very high-tech science and engineering firm. A colleague told me to be careful about writing code. His supervisor had walked by his office one day and saw him writing code on a terminal. He chewed him out for "typing" because "typing is for secretaries." Apparently the correct procedure was to hand-write your code onto a paper form and hand it to a secretary for entry into the computer. I assumed my colleague was joking but checked out the official procedure and it was true.
After that, I shut my door when I wrote code.
Heck, I'd been using a computer to write my papers in college (using DECUS' runoff program, similar to Unix's man formatting program).
I can't remember the last time I hand wrote more than a few words.
The level of structural sexism back then was off the charts, at least it was overt. Now we just tell people there is no glass ceiling and it must be their problem.
I am wondering about error rates, human -> paper, paper -> file, file -> execution.
Those feedback loops are enormous. It would be interesting to interview woman from the computer code typing pool.
They all either ignored me or were nice to me.
The interesting thing is the supervisor, who sat facing the workers like a teacher in a classroom. When she found I could use the Wang as well as anyone by just looking at the manual for a few minutes, she realized that her fiefdom was doomed. Her moat had been the 2 week training course.
I kind of felt sorry for her.
> Part of the calculation involved sorting. I didn't know anything about sorting, so I implemented what I later learned was bubble sort. Because that's obviously how you'd do that.
I would like to politely contest the authenticity of this specific detail. In my fairly strong collection of evidence, people just do not bubble sort without being told how to do that.
People's natural mental sorting algorithm is most often insertion sort. That's what you use when you hold a hand of playing cards, for example. Sometimes something else (radix sort with monopoly money, for example), but I've never seen anyone invent bubble sort without first being told about it one way or another.
(Which is a good thing because bubble sort is just such a stupid idea I don't know why we teach it. In my life, I've only ever been notified of one single good use case for it: you need to slowly converge on an order but the minimum amount of computation is necessary for each step of the convergence.)
I taught a C programming class for first-year students for a few years at the end of the 90s, where one of the tasks was to sort an array of words, with no hints given as to what kind of algorithm they should implement. Most students came up with bubble sort. Insertion sort was much less prevalent, and the few students who did typically did a kind of out-of-place insertion sort. (I also saw a O(N^4) algorithm once.)
FWIW, my first sort was selection sort. "Find the smallest element, place it at the start, repeat" seems like the obvious way to do it, without the fussing about with shuffling already sorted elements out of the way that insertion sort requires.
Perhaps it's a thinking top-down vs bottom-up kind of thing? People who think bottom-up stumble on bubble sort, people who think top-down stumble on selection or insertion.
> People's natural mental sorting algorithm is most often insertion sort.
[embarrassed panic]
[trip down wikipedia lane]
No, it was bubble sort. Data and loop management for insertion sort wouldn't have been something I would have thought of back then.
Insertion sort is literally just "keep track of the index beyond the last sorted element, then scan for the next smallest element and swap it in, repeat until you have gone through the entire array." This is about as simple as a comparison sort gets. (And it's what literally everyone I've watched does when they get dealt a few playing cards.)
Bubble sort, on the other hand, requires you to reason about consecutive adjacent swaps, keep track of whether the current iteration dirtied the array, and so on. (Just the idea of bubble sorting playing cards gets me sweaty. It would take long, be cumbersome, and hard to keep track of.)
Edit: who is embarrassed now? What I'm describing is apparently not insertion sort but selection sort.
You only need to keep track of whether or not the current iteration dirtied the array if you want to stop as soon as a pass leaves the array sorted. If you don't want to do that (or don't think of it) then it is just something like:
for pass = 1 to n
for index = 1 to n-1
if array[index-1] > array[index]
tmp = array[index]
array[index-1] = array[index]
array[index] = tmp
There is less extra to keep track of then in insertion or selection sort.I agree about the playing cards. But bubble sort was the natural sorting algorithm for me to come up with, too, when I was dealing with qbasic back in the 1990s.
https://en.wikipedia.org/wiki/Bubble_sort#Performance
>The only significant advantage that bubble sort has over most other algorithms, even quicksort, but not insertion sort, is that the ability to detect that the list is sorted efficiently is built into the algorithm. When the list is already sorted (best-case), the complexity of bubble sort is only O(n). By contrast, most other algorithms, even those with better average-case complexity, perform their entire sorting process on the set and thus are more complex. However, not only does insertion sort share this advantage, but it also performs better on a list that is substantially sorted (having a small number of inversions). Additionally, if this behavior is desired, it can be trivially added to any other algorithm by checking the list before the algorithm runs.
>In popular culture: In 2007, former Google CEO Eric Schmidt asked then-presidential candidate Barack Obama during an interview about the best way to sort one million integers; Obama paused for a moment and replied "I think the bubble sort would be the wrong way to go."
Here's an implementation of bubble sort written in PostScript by Sam Leffler, renowned BSD/Lucasfilm/Pixar/SGI/Alias/Softimage/VMWare hacker, which he sent me and gave me permission to distribute in 1988, but which he was too embarrassed to sign his own name to, so he used the pseudonym "Bobo Leffler".
https://donhopkins.com/home/archive/psiber/cyber/bubblesort....
https://en.wikipedia.org/wiki/Samuel_J._Leffler
Also here's a PostScript heap sort by Owen Densmore of Sun, and a PostScript insertion sort by John Warnock of Adobe, both of whom used their real names:
https://donhopkins.com/home/archive/psiber/cyber/heapsort.ps
https://donhopkins.com/home/archive/psiber/cyber/insertion-s...
Do NOT click on the red button.
We had to fill out lots of forms that documented what we called "analysis," and we'd often have to change them based on some factor changing. One change could cascade through the whole form.
Paper forms. Green see-through plastic letter guides. Whiteout. Lots of whiteout.
We had access to a department mini computer, don't remember what it was. The language might have been Basic-like, but I didn't know enough to recognize it as such.
I figured out how to write and run programs, someone showed me how to print, and I wrote a program that would accept values for all a form's fundamental values, and cascade those through calculations for the dependent values, and print out the filled in form. You could save it, update a new value, re-cascade, and print it out again. No more whiteout.
Part of the calculation involved sorting. I didn't know anything about sorting, so I implemented what I later learned was bubble sort. Because that's obviously how you'd do that.
The system administer noticed more load when people ran my program. He found me, and told me not to do that again.
I learned that there was a thing called a system administrator. He might have given me a better canned sort, don't remember.
I eventually thought it would be a good idea to quit and go to school, so I did.
(I took a number theory class, but had to drop it. I don't have the math nature.)