St. George's School for Boys
I was in grade 8, at St. George's School for Boys in Vancouver, BC. Our headmaster Alan Brown had a PhD in computer science, and had the foresight to buy a DEC PDP-11 for the school. I didn't take any computer science classes, but I learned to program nonetheless. The language was BASIC, and I remember writing a game that generated a random field of asteroids (represented as asterisks on the screen) that you had to navigate through. Your ship had a limited number of shots that you could use to remove selected asteroids along the way.
The computer game everyone was playing was "Hunt the Wumpus", and I remember reading the source code. I thought that Alan Brown had written it (although he never told me that), and I remember submitting the code to a computer magazine (Byte, maybe), saying that my headmaster had written it, and getting a letter back that it had actually been written by someone else.
My mother buys an Apple II+
In 1981, I was in grade 12, at a different school, Sir Winston Churchill. My mother decided that we should buy a personal computer, an Apple II+. It was wildly expensive for the time, maybe $3,000 Canadian. My brothers and I used it right away as a word processor for writing assignments for school, and I started programming.
The Apple II+ had a floppy drive, and could also store data to audio tapes. I wrote programs in Basic at first, but then quickly graduated to 6502 assembler. I remember writing a disk management program in assembler. I spent the summer of 1982, before I went off to UBC for my first year of university, programming the Apple II+ (after working as a data-entry clerk during the day). I remember writing an assembly code editor (in assembler), and starting on an address/phone book program (also in assembler).
punch cards in first year at UBC
In 1982, I entered UBC. My focus was on a liberal arts Great Books program, Arts One, which I loved. My small-group professor was Richard Bevis, an English Prof, who was amazing, and it was he who counseled me to apply to transfer to the University of Toronto the next year.
I took one programming course. As I recall the language was Pascal, and we actually used punch cards to enter our programs on the mainframe. That was the first and last time that I used punch cards!
computer science at the University of Toronto
In my second year, I transferred to Trinity College in the University of Toronto. I continued focusing mainly on liberal arts and social science, taking courses in Anthropology, English and Philosophy. But I also took computer science and logic courses. Computer science and logic were the easiest courses for me -- I regularly got 90-95% in them. I remember one class, where I got a grade of 95%, where I never actually went to any of the lectures -- I just did the problems and wrote the exams.
I remember writing programs in C, but what stuck with me was one program that I wrote in Lisp -- Lisp was so simple and elegant and beautiful!
I decide not to continue studying computer science
I considered changing to a computer science major, and even went so far as to have everything arranged to do so. Computer Science was without question what I was best at in university.
But computer science seemed too narrow, too technical, and too easy. The hard questions I wanted to explore were social -- what does it mean to be human? What is cultural difference? How can we make this world a better place? I didn't have the foresight to see how central computer science would become to those questions with the development of social media 15 years later.
And so I graduated from U of T with a major in anthropology and a minor in computer science. I went on to study law at Dalhouse University, I clerked at the Supreme Court of Canada, and went on to graduate school, in law and anthropology, at Harvard.
Grad school and I start programming again
Writing my LLM thesis at Harvard, I needed a way to organize my citations. So I bought a database program, Borland's Paradox. It came with a programming language, ObjectPAL, and very quickly I found myself writing code to organize my citations. I ended up writing a lot of code, and my program to manage citations got sufficiently feature-rich that at least one friend told me I should consider commercializing it. I didn't, but my citation program was pivotal to writing my thesis, which was eventually published as Chris Tennant, “Indigenous Peoples, International Institutions, and the International Legal Literature from 1945–1993,” Human Rights Quarterly 16, no. 1 (1994).
Phd fieldwork and my Hyperbuilder authoring tool
Planning to become a law professor, I went on to do a Ph.D. in anthropology at Harvard, working with the legal anthropologist Sally Falk Moore. I contineud to use my citation management program (although no academics have as many citations as legal academics).
For my fieldwork, I spent almost 2 years with returned refugees in the Guatemalan jungle. As I started my fieldwork in 1995, the world wide web was just starting to take off. I wanted to write my ethnography as a hypermedia ethnography, as a web of linked content. I explored commercial products that would let me do this. I tried Eastgate's StorySpace, but it was just too buggy - I kept on losing content when it crashed. And even if it had worked, it didn't have the features that I needed.
So I ended up writing my own hypermedia authoring tool, "Hyperbuilder." I needed something database-backed, given the volume of data I was going to be collecting in the field. I used Borland's ObjectPAL, with some extensions written in C for those parts that needed to be fast. My program was an HTML compiler -- you write your content with tags, and the compiler generated an HTML web from it. In the end, I produced an "ethnographic web" on a CD with had some 300,000 links. You could follow kinship relationships between people in the community, see who had lived in any given location (the refugees moved around a lot), and see pictures. The ethics committee at Harvard was rightly concerned about exposing people's personal data, and so the program also anonymized everyone's name, preserving the relationships between the anonymous aliases.
I eventually finished my PhD, but my dissertation committee wasn't impressed with my ambition to generate a hypermedia web. So in the end what I handed in were printed chapters, also generated by Hyperbuilder. The chapters could be read, with all the links active, on the CD-ROM, or on paper with no links, which is what my committee did.
Back to programming
While writing my dissertation, I realized that I didn't really want to be an academic. At the same time, what computer science could do, was doing, in the world had changed dramatically since my days at the University of Toronto. Computer Science was at the core of a new connected, social world.
I got a job at an early stage startup, DigiGroups. Initially I was hired to help them develop online communities, but I soon became a programmer. I wrote in Java, and developed a client-server data transfer protocol that pre-saged JSON.
I've worked as a programmer, engineering manager, CTO and software architect ever since.