Michael Trigoboff Instructor, Portland Community College
Courses I have taught at PCC: CS140U: Introduction to Unix CS160: Exploring Computer Science CS161: Computer Science I CS162: Computer Science II CS200: Computer Systems I CS201: Computer Systems II CS260: Data Structures CS261: Programming Systems CIS233J: Java Programming II CIS234J: Java Multi-Tier Software Development
PCC aspires to be a green institution. I try to do my part.
I have been a professional software engineer for over 30 years, and have experienced many styles of management, as well as many entertaining interactions with users. During that time, I have seen my code do many strange and wondrous things, which sometimes caused sleepless nights. Starting in 1988, I worked as an independent contract programmer. The details are available in my résumé.
I’ve written a short description of what it’s like to write code.
I have been programming in Java since 1995. I agree with the authors of Java that C++ needs improvement, to say the least. My most “famous” Java project was a product called Jio which I did for iDream Software, a company that no longer exists. Jio was used to implement a “virtual dressing room” on the Eddie Bauer web site, but they only used it for a few months.
Other languages that I like: Lisp, C, Python. I've written Python software that automates grading of student assignments and a Python GUI app to print out contents of files from my synthesizer keyboard (I play rock and jazz).
I try to do my work, both programming and teaching, with honor and integrity. But some folks take that to a level that I can only hope I would be able to live up to. I’m proud to be able to help them in whatever way I can.
I had the good fortune to work for Xerox in Palo Alto starting in 1980. At that time, Xerox was the only place on the planet where there were graphical user interfaces, mice, laser printers, and local area networks. I worked on Xerox’s Star product, the first commercially sold computer system with those features.
A group of Xerox people founded a startup company, Metaphor Computer Systems, which I joined early in 1982. We produced the first diskless workstation with a GUI and wireless keyboards and a mouse.
At the Navy Personnel Research and Development Center, I built part of a prototype training simulator for operators of shipboard nuclear propulsion plants.
At Ford Aerospace and Communications, I wrote a database-oriented programming language interpreter.
At Saba Technologies, I wrote components of the optical character recognition software for a hand-held scanning device.
As an independent software developer I wrote Sun Clock, an application that shows the areas of day and night on a map of the world. You can see a more modern, web-based version of this kind of thing here. I also wrote DecisionMaker, which supported the construction and evaluation of decision trees. Both of these applications were published as shrink-wrapped commercial packages by Palo Alto Software of Eugene, OR.
At Intertrust, I wrote components of an eBook publishing system.
My first programming job was as a programmer trainee for Macy’s in New York City. This led to my debut as a roller-skating clown in the 1970 Macy’s Thanksgiving Day Parade. This job at Macy’s was a big improvement over my previous job.
I have a Ph.D. in Computer Science. My Ph.D. thesis research was an artificial intelligence expert system specialized for use in medical diagnosis and therapy recommendations. My master’s research was in the area of natural language understanding. My pursuit of artificial intelligence in graduate school grew out of a childhood fascination with science fiction and robots.
We’re a very long way from reproducing anything like human intelligence. A lot of what is called AI these days (e.g. cars that drive themselves) might be more accurately described as Artificial Insects. Ants can “drive” themselves to and from their nests. Bees can do it in three dimensions.
Consider this: a Turing Machine is a little mechanism that moves around on a long tape, reacting to data recorded on the tape. Turing machines are important because they are equivalent to computers but are simple enough to be useful in mathematical proofs about what computers can and cannot do.
A ribosome is a little mechanism that moves around on a long tape (DNA), creating proteins encoded by data on the “tape.” Ribosomes and Turing Machines seem pretty similar to me.
There are ~37 trillion cells in a human body, and ~10 million ribosomes in a human cell. Which means we each contain ~3.7 * 1020 computer equivalents running in parallel. And that’s just the ribosomes. Human intelligence and consciousness seem to be phenomena that emerge from that complexity.
The idea that we might produce something equivalent from even 10,000 computers running in parallel strikes me as unlikely. There’s a complexity barrier standing between AI and its goal.
In a way, AI research consists of “hitting your head against the same wall” over and over again. I think we repeatedly do this because as computers get more and more powerful we see “the wall” at higher and higher resolutions, so it looks different. As a result, we fail to realize that it’s always exactly the same wall.
I finally left the field of artificial intelligence firmly convinced that attempting AI was the appropriate punishment for committing the sin of pride of thinking that we could reproduce anything like human intelligence and consciousness with our current computers.
2016: I'm starting to see that AI may be more potentially harmful than I previously thought:
My problem was that I was looking at AI from the perspective of can we make smart machines that operate in the real world – like, for instance, a robot you could send to the grocery store to do your shopping. In this context, AI is more like “artificial insects.” We're not even yet at the stage where we make robots that can do what insects can do.
On the other hand…
I recently read articles about how Google is constructing a neural network with more neurons than a human brain has. The problem is that they’re hooking things like this up to power grids, industrial facilities, stock exchanges, and many other things on the Internet.
These neural networks are complex enough to have consciousness emerge within them. It won’t be anything like our consciousness, and it's difficult to imagine what they will make of their “world,” consisting of all of the inputs they get from cameras, weather stations, stock markets, etc.
The bottom line is, we’re creating an entity (the intelligent Internet) that can control a lot of our infrastructure, and we have no idea what this thing will feel like doing when it wakes up.
If you remember the flash crash, that was a set of mechanisms that became so complex that all sorts of uncontrollable behaviors became possible. I don’t think there was much consciousness involved there, but there’s a lot of potential for it now in the much more complex systems that we're currently building.
Here is the story “Answer,” from Angels and Spaceships, by Fredric Brown (Dutton, 1954):
Dwar Ev ceremoniously soldered the final connection with gold. The eyes of a dozen television cameras watched him and the subether bore through the universe a dozen pictures of what he was doing.
He straightened and nodded to Dwar Reyn, then moved to a position beside the switch that would complete the contact when he threw it. The switch that would connect, all at once, all of the monster computing machines of all the populated planets in the universe--ninety-six billion planets--into the supercircuit that would connect them all into the one supercalculator, one cybernetics machine that would combine all the knowledge of all the galaxies.
Dwar Reyn spoke briefly to the watching and listening trillions. Then, after a moment's silence, he said, "Now, Dwar Ev."
Dwar Ev threw the switch. There was a mighty hum, the surge of power from ninety-six billion planets. Lights flashed and quieted along the miles-long panel.
Dwar Ev stepped back and drew a deep breath. "The honor of asking the first question is yours, Dwar Reyn."
"Thank you," said Dwar Reyn. "It shall be a question that no single cybernetics machine has been able to answer."
He turned to face the machine. "Is there a God?"
The mighty voice answered without hesitation, without the clicking of single relay.
"Yes, now there is a God."
Sudden fear flashed on the face of Dwar Ev. He leaped to grab the switch.
A bolt of lightning from the cloudless sky struck him down and fused the switch shut.
Fears of Artificial Intelligence go back a long way…
Programmers are smart and highly obsessive (you need to enjoy getting every little detail of your code right). As a result, they tend to be very opinionated, and the world of programming is rife with religious wars (e.g. small vs. big endian number representations). Joel Spolsky, author of the excellent blog Joel on Software, makes a great comment on this:
The Unix world loves to take sides. I don’t have to blog about this; Freud already did, in 1930.
He called it “the narcissism of minor differences.”
Speaking of quotes, here's a list of the Top 50 Programming Quotes of All Time. I especially like quotes 3, 11, 12, 18, 20, 22, 29, 35 (relevant to my theory of cyborg programming), 39, 43, and 44.
I really like this quote from The Tao Of Programming. I like the rest of them too.
In the east there is a shark which is larger than all other fish. It changes into a bird whose wings are like clouds filling the sky. When this bird moves across the land, it brings a message from Corporate Headquarters. This message it drops into the midst of the programmers, like a seagull making its mark upon the beach. Then the bird mounts on the wind and, with the blue sky at its back, returns home.
The novice programmer stares in wonder at the bird, for he understands it not. The average programmer dreads the coming of the bird, for he fears its message. The master programmer continues to work at his terminal, for he does not know that the bird has come and gone.
Programming isn’t just a job for me, it’s an adventure; a place to meet challenges, a place to hone my skills, a place to create value using nothing more than the strength and determination of my mind. It touches deep places in me. I’m not the only one who feels that way.
Eminent science fiction author Arthur C. Clarke once said, “Any sufficiently advanced technology is indistinguishable from magic.” Computer programming and magic have a lot in common. You have to get the “spell” exactly right, or bad things can happen. Skilled practitioners are called “wizards.” Ordinary people have no idea what programming wizards do.
I’ve often wondered why the idea of magic was invented millennia before the invention of computers, at a time when there was nothing remotely like computer programming in human experience. The best explanation I’ve run into so far is something I heard on the radio a long time ago. I don’t know if it’s true or not, but it definitely makes you think...