The first complete story
Some of you might have picked up on this rather unceremonious email from Martin Smith back in December, where he steps back from the role of maintainer of QDoc. Although he claims he's retiring from old age, Martin would easily pass for being much too young for retirement. On his 70th birthday, he graciously gave a short speech (before letting us all dive into the pile of donuts everyone was waiting for). During the speech, he called himself "the first complete story" – hence the title of this post – as a way of summarizing his professional use of, and later contribution to, Qt.
That day, I had the pleasure of sitting down with Martin for a few hours to talk about his early days as a software engineer, his time at Qt, and his plans for the future. We had a lot of fun together, and the following is a transcript of the conversation we had. I hope I've managed to capture some of the lightheartedness, positive spirit, and utter fascination Martin has for the art of engineering, technology, Qt, and some of his personal interests. In his own words, Qt "is the best engineering outfit I've ever worked with". For the past 15 years, Martin has been a part of the reason why, and his legacy will be part of Qt for years to come.
How do you feel about becoming a company celebrity?
I don’t know if I’m a celebrity. But I have felt different for some time, because I’m much older than everybody else. And gradually people have been leaving. I guess I started to feel different when Eirik and Haavard left the company. That was a long time ago, when Trolltech was sold to Nokia. But even then, there were a couple of other guys that I think were in their fifties… They’re gone now, and so it was only me. And so, I kinda became… I felt like I was like the grandfather or something. Although people didn’t treat me that way! I did feel different. But I don’t think I ever felt like a celebrity. But I suppose I am now in a way because I am the first guy to leave the company because of old age. I finished! I came to the finish line. And it’s happening at a time when we have now changed QDoc to run with clang, so it has a real C++ parser now, and we’ve gotten most of the problems worked out of there. And now it’s moving into DocBook and it’ll be a whole new era. So, it’s the right time for me to leave. I guess that’s how I feel, I don’t feel like a celebrity. I enjoy it.
Tell us a bit about your background. How did you get into programming and software engineering, when did you start, what triggered you to pursue that career?
I was in high school. Which in America just means grades 10 to 12, just before going to university, if you go to the university. I was in the twelfth grade. And at that time, I had a math teacher, this was the third year with him. So, I’d been through calculus… which I’d barely understood. But he started one of the first computer programming classes at high school level in America. So, I got to be in that class. And we learned Fortran. The computer was an IBM 370 at a bank in town. And they had graciously offered to run our programs whenever we delivered them. And so, we had key punch machines, and first we would write the program on those old Fortran coding sheets. And then we would go sit at the key punch machine and punch cards, make the deck. Then we would put a rubber band around the deck, put it in the box, and the teacher would take the box down to the bank and run the programs. So, we would get one turn-around a day. You learned to use the key punch machine very quickly. And you had to be very careful, because any mis-punched thing would ruin the run. And you also had to be very good at debugging code, because all you had was the generated listing. And it usually… There weren’t really error messages, there would be a list of errors at the end of the list of lines of code that listed the errors that it found. It didn’t have inline error messages or anything like that. And then, of course, if you managed to not commit any syntax errors and the program was compiled. In those days it would compile into assembly language, so then you’d get an assembly language listing and then it would run the assembler and generate the binary code, and then it would run the program. And then usually what you would get back was a blank page that didn’t show anything, because it didn’t work! So, you had to spend a lot of time just going through the code, and reviewing what you had done, to find the actual problem. Because you got no help from the system, at all.
Did you collaborate with the other students? Was there some sort of peer review happening between the students?
No, it was nothing like that. This was before Al Gore invented the internet, you know. There was nothing called software engineering in those days. And there was this series of books written by Knuth, which are still classics of programming. And we would pore over those, understanding how to make a linked list and things like that. Of course, we didn’t do that in Fortran. The teacher would give an assignment, which by today’s standards would be a trivial problem, but because computer programming was brand new back then, everything was difficult. There was no way to cheat. I remember one assignment was to plot the sine function. And there was no graphics. You had to figure out how to design an X and Y axis and then what to use to draw the actual curve. And of course, it was being drawn longitudinally down the page, not across the page. So, it was quite a challenge to do something as simple as that. The teacher was the editor of a mathematical magazine called the Fibonacci Quarterly. And so, another assignment was to generate the Fibonacci numbers. Which was, of course, much simpler once you understood the algorithm. We did things like that. And that’s where I got interested in computer programming. The next year I went to the University of Puget Sound, that was local in my hometown, Tacoma. My father was the vice-president of the university, and they had just bought this new UNIVAC computer to use for administration purposes. Of course, nobody knew how to use it.
Just as a point of reference, when was this?
So, my father took me down to meet with a woman who had been hired to convert their administration system, to computerize it. And she was hopelessly lost. So, she was glad to see me because I was really gung-ho, ready to get into it. I had to learn a language called RPG, Report Program Generator, which basically just reads in a deck of cards and generates a report from the data, and maybe outputs a new deck of cards based on some algorithm. So, I got involved professionally. I wasn’t paid, I was just helping and getting some school credit for doing the work. But that was quite fortunate. I mean, I didn’t go anywhere with RPG, but it was the same kind of programming thinking. And the first actual software engineering that I did. The programs that I wrote were actually used for several years to generate reports for the administration of the university.
I also went into the Reserve Officers’ Training Corps for the air force. Mainly because they offered to pay for my tuition. It was a private university, so the tuition was quite high, even though my father worked there. And in my senior year, they had all of the ROTC cadets take this pilots test to see if you would be a pilot. Because they wanted pilots for the war. And, I had actually joined ROTC as a way of avoiding the draft. I mean, I was torn between protesting against the war, and fulfilling my responsibility to serve. I felt strongly both ways. So, I was kind of happy to go into the air force. At the time, they did a lottery every year for kids who were 18, based on your birthday. All the birth dates would be drawn out of a barrel. The first one drawn would be guaranteed to be drafted, and so on down the list for all 365 days. They usually drafted up until near the 100th day drawn. And mine was 123 or something, so I knew I would be safe. But I had already joined ROTC. So, I wouldn’t have been drafted, but I went into the air force anyway.
So, I was taking this pilot’s test. I didn’t want to be a pilot; I don’t have that kind of mind. You know, to fly a jet fighter at Mach 2, you have to be focused on what you’re doing. My mind doesn’t work that way, I’m all over the board. And I knew that! I would’ve crashed the airplane as soon as I got into it. So, I didn’t want to be a pilot, but I didn’t tell anybody. I just took the test. It was one of those multi choice tests that was… well, for me it was easy. I probably would’ve gotten all of the answers right, but I deliberately marked a lot of them wrong. I was trying to mark them wrong, because I didn’t want to get a high score. But I wanted to get a high enough score that I could still be in the air force, I just didn’t want to be a pilot. Well, they called me in after the test and said, “You did very well on the test, Mr. Smith!” I’m talking to an air force colonel now. And I said, “I don’t want to be a pilot!” And he smiled at me and he said, “why didn’t you just say so? Do you think we want to put you into a 50 million-dollar airplane if you don’t want to fly it?” I said, “Well… Now that you put it that way…” So, he said, “well, what _do_ you want to do?” and I replied, “I want to be a computer programmer”. “That’s excellent,” he said, “then this is what you do; you write a letter saying what you want to do, and we send that to Randolph Air Force base where they make all the assignments”. And I said, “what do you mean? They’ll let me do what I want to do?” He said “Yes. The military wants to put you where you will do the most good, and where you will do the most good is doing what you want to do. It doesn’t always work that way, of course, some people have to be infantrymen. We need computer people, and you want to do that.”
I sent the letter, and sure enough, I was assigned to the Space Defense Center in Colorado Springs, which is in Cheyenne Mountain. The movie Wargames was shot at Cheyenne Mountain. The movie is much more computerized than what was actually the case in those days. So, they sent me there, our mission was to track all of the earth orbiting objects. Which included, at the time, about 1000 actual payloads, and several thousand pieces of junk. And we had to track everything. Mainly because we had to distinguish between satellites that were maneuverable. In those days, the Soviet Union was the only other country putting up payloads – of course, they didn’t tell us if they were going to send one up, and if they were going to change the orbit of one, they didn’t tell us that either. So, we had to track everything. Our mission was to be able to track a new satellite within one orbit. The Air Force had radar systems in Turkey, Thailand, and in Greenland… They were all pointing at the Soviet Union so that we could detect, we knew where they launched from. We just watched for rockets passing through radar beams, and that triggers the warnings telling people that there has been a launch. And then we had to be able to track it, and in those days, they used mainly what they called a Baker-Nunn camera. Which was a big, very wide lens camera, that looks like an old civil war mortar. It was aiming up into the night sky, taking an actual photograph. Time-lapse photographs, so that you could see things moving across it. Then knowing the latitude and longitude, and the geophysical position where the cameras was, they could compute the altitude and the position of the ephemeris data of the satellite. And they would report back on what was actually the first – it was literally before Al Gore invented the internet! – it was the D-ARPANET. That was actually the first military use of the internet, was to send this data. We would send data out telling them where to look, and then they’d send data back telling what they saw. And, of course, satellites decay, their orbit decays or their orbit change naturally, even if they aren’t maneuverable. And so we always had to send out what we called look angles, where we’d tell where they should aim their cameras or their radars to see something. We had what we called “the lost list”, which was the list of satellites and pieces of junk that didn’t show up where they were supposed to be. We were always trying to minimize that. We could tell whether we were doing a good job; if the number of lost objects was going up, we were in trouble, if it was going down, we were okay.
Kind of like QDoc warnings?
Yeah, exactly like QDoc warnings. That was my first actual professional experience working with computers. The computer we used to do all this satellite tracking calculation was a Philco-Ford 2000, which had… I think it was 60-bit words, or something like that, with only 64K of memory. And a magnetic drum, which was a precursor to the magnetic disc. Which looked kind of like a cone cut at the top and it spun at I don’t know how many revolutions per minute, it wasn’t very fast. And it only had 256K of memory. The rest of everything was on one-inch magnetic tapes, we had a whole bank of tape drives that were always spinning back and forth. So, we became very good at reading in overlays. Because we only had 64K of memory to work with. I mean, what can you do in 64K? Not much, so any program would require several overlays to come in and out. But we were still using punch cards. We still used key punch machines. There were no terminals. There were, you know, teletype machine terminals, but no displays. We didn’t have any video displays. And so, we still only got a few turnarounds a day when we were writing a program. And then came the end of the war in Vietnam. There were too many junior officers in the air force, so they offered to let people go if they wanted to leave. The guys who were coming back from the war were getting all the graduate school slots; I was fat, dumb, and happy in Colorado Springs the whole time. So, I figured my chances would be better if I got out of the air force, so I got out and went to graduate school in computer science at the university of Washington and got a master’s degree. I was involved in the computer science department there; they had just started the computer science department a few years before, that was how new computer science was. And that’s when I first got a textbook that actually said “Software Engineering” on it, and when I first started to learn software engineering techniques. While I was doing the coursework, I went to work for Boeing Computer Services. We worked on the AWACS system there, the Airborne Warning Control System, for the air force. The system is still in use now.
I remember one day, as I got toward the end of my degree. The computer science office had a three-ring notebook there where they posted job offerings. You know, I didn’t want to stay at Boeing, I was looking for a non-military-oriented software engineering job. So, I’d go down there and look at this notebook every few days. And one day I went down there, and there was a hand-written note in the notebook that said, “Bill Gates is moving his company from Albuquerque up to Redmond, Washington. It’s called Microsoft, and they need C programmers.” And I was interested in Pascal at the time, not C. I thought “well, that, might be pretty good” – of course, nobody knew who Bill Gates, he was nobody. So, I looked further in the book and there was an ad from Hewlett-Packard in Colorado Springs. I thought to myself, “I’d like to go back to Colorado Springs”. So instead of getting into Microsoft right at the start, I went to Hewlett-Packard.
But did you at least get to do Pascal at HP?
Yeah, in fact, they were working on what was called a microprocessor development system. It was a computer with emulators in it that emulated the different microprocessors of the day. There was the Motorola 6800 and the 68000, and the Zylog 8000, and Intel 8080, and whatever there was… there were several different ones. Engineering firms were just starting to build things with these different processors. They needed a way to develop their hardware and their software at the same time. So, we built this microprocessor development system, which assisted them in doing that. And the language that we provided for them was Pascal. Where I was hired to write what turned out to be, I think, probably the first high-level language that compiled code for any microprocessor. We had a Pascal parser, I didn’t write that, but I used that parser to generate an intermediate language. And then there were other programmers working with me, and each of them wrote a translator to translate the intermediate language into the machine code for whichever microprocessor. I think that was one of the first, of not the first, compiler that generated code for multiple different machines.
So, your cross-platform experience story starts decades before Qt?
It starts decades before papers were published! We didn’t get any credit for it, because the technology overtook us very quickly. The microprocessor development system kind of died away because they started doing things basically the way they do them now. It wasn’t as complete and easy as it is now, it was much more complex and not as sophisticated. That was in the late 70s. Then I decided I wanted to be a screen writer. I left Hewlett-Packard and moved out to Los Angeles and started doing screen writing classes. But of course, I supported myself as a computer programmer. I worked for a company called Interactive Systems, which was a spin-off of AT&T. By now, we had the 80286 and the 80386; Bill Gates was a big deal, and DOS was a big deal. They were taking over the world. But AT&T wanted Unix to be a part of the picture, and created this company called Interactive Systems to create the first personal computer version of Unix. I got to work on that, and again I was working on the C compiler… Pascal was dying, now, it was C. C++ hadn’t appeared yet, or we didn’t know about it yet. C was going strong. This was in 82-87, when I was in Los Angeles. Needless to say, I didn’t become a screenwriter.
Were you involved in any screenwriting at all, or did you just take classes and hope?
I wrote some episodes for Trapper John M.D., and Magnum P.I. They didn’t get made; they didn’t even get bought. They did get read, which was an achievement. Tom Selleck didn’t read it, but some reader at the production company did. It didn’t go anywhere. When I got tired of that… I’m a computer programmer. To be a screenwriter, you have to be a networking kind of person. You have to be very aggressively outgoing. Most computer programmers are obsessive compulsive type thinkers, and they want to get on with their own thing. They’re not really networking people. I fit that category. I finally accepted that, and then I thought that if life isn’t working out for me in Los Angeles, surely it must be better in Australia! So, I got a job with an engineering company in Adelaide. I went down there and started working on different projects for the engineering company. One thing we did – I was on the ground floor again – was a system for… you know the book of maps for Oslo or any city? It was called Thomas Bros. in America; I don’t know what it’s called here. Well, they were just computerizing their map data. This must’ve been in ‘87-88, I guess. And we were hired by the Adelaide city government to build a system, they wanted a system… it’s like, on the internet here, using the bus system or the train system, you say “I want to go from here to here”, and it computes the public transport services you’ll use, and it also gives you walking instructions from your home to the bus stop or the train station; and at the other end from where you get off to your final destination. And, of course, you needed the public transport information, all their data about their services. Then you also needed the map data, all the roads and places of interest. So, we computerized all of that. I mean, we bought the map data from the map company. Again, I was in on the ground floor of one of the first direction finding things. We would compute walking instructions through the map using the map data and display it on a map on the screen. I think we were probably the first ones to do that. Of course, a few years later, Google Maps appeared, and we were nothing again. But it was fascinating to involved in, again, something like that that was right at the ground floor, before anybody else had done at – at least that we knew of.
We also did the software and hardware for a robot for shearing sheep. At the time, they thought they could make a robot that would shear sheep faster than a man could do it.
I guess they still haven’t.
No. We got close. The system would work this way: the sheep would be led into a small chamber, and two things would come up under its legs, both front and behind, and hold it off the ground. Then a man would quickly attach an electrode to its tail and to its snout, and run a small charge through the body, that would stiffen the muscles. So, then the sheep would be immobile and lifted off the ground. Next, these two industrial robot arms would come in, like the ones you see in car factories. And instead of hands, they had sheep shears, shearing heads. And they would start shearing off the wool. But of course, you know, there’s quite a difference in strength between the hydraulic robot arm and the skin of the sheep… And so, one of the guys – again, he was one of the first to use something called forced sensing. There was a little metal plate above the head of the shearing head, and when the shearing head was pushing against the sheep, it would deflect the blade a bit, and bending a piece of metal changes the characteristics of electricity that goes through it. You can compute how much force you’re exerting based on the change in the electrical characteristics of this plate.
So, force feedback?
Yeah, exactly. Well… it took a while to get it to work right and they destroyed a few sheep, because the arm would push right through the sheep. It wasn’t funny, it was a difficult problem to solve. But we got it quickly solved. The robots would actually sheer the sheep, they could keep in touch with the sheep and would know where they had been and where they hadn’t been. The problem was that they couldn’t do the sensitive areas, they could only to the back and the sides. And the man still had to finish the job. It ended up not being faster, it was slower than an actual man could do it. So, it never caught on. But it was an engineering marvel, anyway.
The other project we did there was a laser airborne depth sounder. Which was a prop-driven airplane with a lot of computers in it, and two lasers; a red laser and a green laser. As the plane was flying along a corridor, the lasers were swinging back and forth and shooting pulses of laser light down at the surface of the sea. One of the lasers, the red or the green, I forget which one, would penetrate the water and go down to the bottom and bounce back. The other one would hit the surface of the water and bounce back. And some of the photons in each case would come back to where they had originated and hit a sensor there that would detect them. Knowing when the pulse was the fired and how long it takes for the photon to come back, you can actually measure that. Then you can compute the depth of the ocean at that point. This was at the time a much fast way to create sea charts. The way they normally did it was with a boat taking soundings. A ship going along taking soundings takes much longer than this airplane that could just fly over and scan, and then post-process the data to produce depth charts for coastlines. It didn’t work very deep, it only worked for, I think, up to 50 meters or something like that. But it worked quite well, and it was used all around. It was even used in Norway, to make maps for some of the fjords. And that’s when, in ’95, it was time to come to Norway.
I had been working with a software package called ObjectStore. By now there was C++. And somebody thought that it would be a good idea to store C++ objects in binary format. They invented this thing that they called ObjectStore, which was a database management system for managing binary objects. I wasn’t really an authority on that, but I had used in on the bus mapping system. I got a job here in Norway, in Horten, with a company called Metis, which was involved in what is called active knowledge modelling. Which is a way of building a visual model of any complex organization or project, or anything that has a lot of complexity to it. Then you can drill down into this visual model and find out different things. It’s active in the sense that there are relationships between objects that are actually seen as lines on the screen, and the objects are different boxes and shapes; and active in the sense that an object or a relationship can have software in it that does computations. You can generate reports about the model, generate reports about the organization, you can operate on things and create new objects, remove obsolete objects, things like that. So, it’s a very visual and active way of storing and using knowledge about any complex subject or organization.
Eventually, we were bought from AT&T by a company here in Lysaker, called Computas, which was an engineering company. Then I moved from Horten up to Lysaker. After a few years, it was bought by a company called Troux Technologies in Texas. They were our main competitors. They bought us so that they could eliminate the competition. A year later, they laid us all off, we were all made redundant, and they took our technology.
And that was it, I was out of a job. Of course, I’d been using Qt, so I applied for a job at Trolltech. This was in 2005, I think. At the time, Trolltech had a big office in Brisbane, Australia. I thought, “I’ll kill two birds with one stone, I’ll get in with Trolltech and go back to Australia”. Which I did, I got the job as a software engineer with Trolltech, and they sent me to Brisbane.
I hated Brisbane.
It’s too humid! People who haven’t been to Brisbane think Brisbane is right on the gold coast, right on the ocean. It’s not. It’s an hour inland from the gold coast. And it’s on a river, and it’s mangroves everywhere. Of course, it’s 3,5 million, 4 million people live there, so it is a wonderful place, but I hated it. Because the weather was just so oppressive. I was working on software for the GreenPhone or other stuff we were doing down there. And I thought, “I really should be back in Oslo”. So, I went on the Trolltech website, and they an opening on the documentation team. And I’d wanted to be a screenwriter, so why not be a technical writer? So, I applied for that, and they brought me back up here. Of course, as soon as I got here, instead of being a technical writer, they said “we need somebody to work on QDoc, because nobody else wants to do that!” And I said, “okay, I’ll do that,” that sounded good to me. This would’ve been 2006 I think, I spent a little less than a year in Australia, about six months. At that time, we were on Qt 4, we’d just started Qt 4. And then QDoc was just a one pass thing, reading in all of Qt’s documentation source files, and output the documentation. There were no modules. I actually got the QDoc warnings down to zero, that was one of my first tasks. And then Qt 5 came along, and instead of giving me the task of modularizing QDoc, they gave it to another guy on the team… let’s just say he wasn’t well-versed in software architecture. So, he came up with the idea of using the index-file for a purpose it wasn’t meant to be used for, but it worked. The purpose of the index-file was allowing external users link to their documentation to Qt. That was all it was meant for. But now it was used as sort of an intermediate language without being the intermediate language. It was still used for linking; but linking Qt modules together. It worked okay, but it struggled for a long time. At that time, it was a lot of questioning, wailing and gnashing of teeth about whether we should stick with QDoc or not. And I tried to stay out of it. I just said, “I’m happy to do whatever you decide”. I think, fortunately, Lars decided each time – the question came up every year, for four or five years – each time he decided we’ll stick with QDoc. And eventually we got most of the problems worked out. But of course, gradually, the lack of a real C++ parser was catching up with us. I kept saying we need to replace the parser. And I forget who finally made the decision to do that, but Olivier actually did the integration. It’s good that he did it, because it would have taken me forever. So now we have Clang. And now we have DocBook as well.
So here we are. That’s my story.
And you said this would be boring.
You know, now that I’ve gone through it again, there are some interesting bits.
Is there anything that you wish more people understood about software engineering or programming in general?
What I have learned is that there are… Look, we already talked about software engineers being basically obsessive-compulsive type thinkers, “perfectionists” … I don’t like that term, because it connotes a kind of virtuous behavior which isn’t there. It’s kind of a self-torture. But I think software engineers tend to be obsessive-compulsive type thinkers, perfectionists. And I think they’re drawn to this profession because, if you look at it formally, you start with a list of requirements. And if you’ve been in the military at all, that can be very formal, where each requirement is stated as a simple statement; “the software shall do X, the software shall do Y”. You have this complete list of requirements. And you’ve written the software, you run the test and answer, “does the software do X? Yes. Does the software do Y? Yes.” And when you answer “yes” to all the questions, that’s perfection. That is a measure of perfection. I think that’s why people like me are drawn to the profession. Because you can establish what perfection is and then you can achieve it. And even if you do it in your head, as a lot of good software engineers do, they still have a list of requirements. They know what they’re aiming at. If they’re honest, they know when they actually get there. They can still achieve perfection. The first thing I wish is that engineers would understand that’s what they’re doing. They might be able to work with each other much better if they understand each other in that light. And the other thing is that related to that, that there are two kinds of software engineer that I’ve seen. It’s the kind like me which is depth first search. Which is characterized by… I use emacs. And I only know a few emacs commands. But it’s a sufficient, a spanning set, so I can do anything I want to do by making sequences of the commands that I know. Of course, emacs is a very broad system. There’s actually a command to do pretty everything that you want to do. Or you can write your own command to do it. The other kind of engineer is a breadth first engineer. He’s the guy that knows all the commands. And he gets pissed off if you don’t use the one that actually does what you’re trying to do. “Why do you do this in three steps instead of one?” But there are these two different kinds of engineer, the kind who can’t be bothered, like me, to learn how to do proper system administration. I do what I can do, and I trust that there are people out there who actually know how to do everything else. And then there are the people who know how to do everything else. There are the breadth first search engineers who know all the commands. It’s not that one type is better than the other. In some contexts, one type is better than the other, but… I guess what I’m saying is they complement each other. For someone like me, it’s kind of counter-productive to spend time trying to learn all the stuff that – you could argue that I really should know – because then I’m not doing what I’m really good at. That’s the other thing I wish that people would understand; you don’t have to know everything about all the tools that you’re using to be effective.
What’s the most memorable event through your time at Qt?
I think the most memorable event was some negative event, when we were part of Nokia. We were building an inexpensive smartphone. I don’t know if we would have succeeded with this smartphone, it looked good to me. We were progressing, and we were nearly there. I went on a holiday to Italy. I was so happy, because I was finally going on a holiday and things were looking really good to me. Everything was going really well, I thought. I was thinking about buying an apartment. And then I get a call from my supervisor and he says, “don’t buy it! Don’t buy an apartment, don’t do anything, our project has been canceled.” And that was sort of the end of Nokia, as well as the end of what had been Trolltech. We thought. That was just a really terrible time. But, of course, we got through it, and now we’re doing well. And we’ve come full circle. I wish they had called us Trolltech again instead of The Qt Company, but… I understand why they didn’t. So, that was my biggest memory.
What’s the most satisfying problem you’ve solved, and why?
I’m going to tell you one that is surprising, I think. It’s the last thing that I did, which hasn’t been integrated into the system, which is the comments file for QDoc. Because adding the comments file processing almost doubled the speed of QDoc. I feel strongly two ways about it. First that it worked so well, but on the other side, I think “why didn’t I think of that before?” It could’ve improved things much more from a much earlier time. I think that would be it. The DocBook extension is what made me accepting of not putting the comments file change in. It’s because the same thing can be done, and I think should be done, with DocBook files. If the DocBook generator can output the whole module as one DocBook file, that’s effectively the index file and the comments file in one file. And there’s probably no reason then, to have the index file as well as the DocBook file. Just generate DocBook files, and then use them as both an index file, or dependent modules, and the comments file for the one you’re generating output for. What’s missing is the thing that reads the DocBook files. We have the thing that reads index files now, it’s going to be like that, but it’s going to be reading DocBook text instead of our own XML.
What’s your proudest achievement? Not necessarily tied to work or anything.
Just publishing the documentation, knowing that it’s used by thousands of people all around the world. That’s a very good feeling. That has made it all worthwhile. I actually never got that feeling from any of the software engineering I did. You know, the things I worked on were interesting, but they didn’t become world-wide phenomena the way Qt has. And the way people use Qt is through the documentation, so… they have to use my stuff.
What do you think is the thing you’ll miss the most now that you retire?
Working with people every day, being around an engineering crew every day. I recently learned that I’m Asperger’s guy. A high functioning one, but I’m an Asperger’s guy in that I don’t have the relationship emotions. So, loneliness, I don’t get lonely. If I was Tom Hanks on a desert island with nothing but a volleyball with a face on it to talk to, that would be lonely. Or if I was Matt Damon left behind on Mars, that would be lonely. That’s not relationship loneliness, that’s loneliness for humanity, for people. I have that. But I never had the feeling of an empty space in my heart that I have to fill with a life partner. It’s not that I repress that. I don’t have that feeling, I don’t get lonely that way. And the same thing I recently understood, I don’t get jealous. If I am in a relationship with a woman and she says, “well, I’m seeing this other guy, too…” Great! That takes the pressure off me. I mean, truly, I don’t get jealous. And likewise, I don’t feel romantic love. I feel love, but it’s love of people. Love of children, love of dogs, you know, the generic kind of love, not romantic love. I forget why I started talking about Asperger’s. What was the question again?
The question was what you were going to miss the most.
Oh yeah. That is related to this. Like I said, I’ve lived alone all my life because I don’t get lonely, and then I don’t have any impetus to find somebody to be with. But I do need people. I need to be around people. So, I’m going to have to replace the daily office talking and working together and being around people. Whether I talk to them or not isn’t important, it’s having connections with other human beings. I don’t think it’s going to be terribly difficult, because, obviously, I live in an apartment building so there are people there. It’s just not the same as working together, you know. And I’ve also had to give up aerobics’ classes because of my knees. That was another place where I was around people, doing things with other people. So that’s what I’m going to miss. I can still do the bike and I will still do spinning classes, but I can’t do high intensity stuff anymore. That’s frustrating, because I still have the fitness to do it, it’s just my knees say, “please, stop!” So, I’m making that adjustment as well. I think I’ll be okay, but that is what I’m going to miss.
What are you most looking forward to?
I’m looking forward to finishing the novel. Whether it’s successful or not, is not the test. Because, as an obsessive-compulsive type thinker, the holy grail. Is to create something that I like. When I’m writing… this is an interesting thing for me. For decades, I tried to write how a standard novelist writes. Which is basically, start with a little bit of an outline, and then start writing the manuscript. I couldn’t do that. Every time I wrote a sentence, I’d actually get a physical feeling of wretchedness. That becomes overpowering. It says, “this is absolute shit. What you’ve written is absolute shit.” And it doesn’t matter that I can look at it and objectively see that it’s not that bad. But for so many years, I didn’t understand what that meant. I tried to ignore the feeling and go on and write the next feeling. But I’d get the same feeling there. The third sentence, I’d get the same feeling there, and they add together. So, eventually it becomes unbearable, and I had to give up. But I found, this whole process, the reason it has taken this long, has been that I have learned so much about myself while trying to do this. Because I’m really pushing shit uphill trying to do something that, apparently, an obsessive-compulsive type thinker simply can’t do. Because, unlike a software engineering project, where you have a list of requirements, that’s a convergent solution. That is, you write the software, and it either matches the requirements or it doesn’t. It’s either a solution or it’s not a solution. But a novel, there’s no list of requirements… maybe you can make one up, but it’s a work of art. There’s an infinite number of ways to write a novel, not one way. So, I’m trying to do something which is kind of impossible for a perfectionist. And that’s this wretched feeling, it’s telling me there’s something wrong. I began looking at my history, all through my life. One event when I was a child and one event later, when I was living in Australia. They’re both very telling. The first one was, I think I would’ve been 12 years old, I guess, it was the year John Kennedy was assassinated. This was a few months before that, in the summer. I had walked by myself down to the beach, there was a high dock there over the water. I was sitting out on the dock eating an ice cream, and I had a pair of flip-flops on. Just, you know, 99cent flip-flops. And I was kicking my feet and one of the flip-flops fell off and went into the water. I thought, “oh no, I’m in trouble now”. This was half of a pair of 99 cent thongs. I ran to the shore, and I’ve got one barefoot and one thong. And the beach is rocky and barnacly, so I immediately start slicing up my foot. And I’m throwing rocks out beyond the thong to try to push it back in with the ripples from the rocks. Meanwhile the tide is going out is pulling it down, so I’m walking down the beach. And I walk for what must’ve been a mile, throwing rocks out, trying to get it to come back in and it wouldn’t come back in. Finally, my foot was bloody, and I gave up. And there’s goes my thing, sailing down, and I walked home. And as soon as I got in the door my mother saw my foot and said, “what happened?!” I said, “I lost my thong”. And she said she was disgusted with me. This was a level of emotion, the highest, you know, maximum… I’ll use the term again, wretchedness, that she was feeling toward me. And of course, I had no way of knowing that this was abnormal behavior on her part. That’s the way she reacted to things like that. I didn’t see this at the time, but many years later now when I figured this out, I saw that a few months later, John Kennedy was assassinated. And her emotional reaction was the same strength. But of course, that was a real, tragic event. So, of course you feel intense emotional reaction. But you don’t feel intense, emotional reaction when your son loses a 50-cent thong. I had no way of knowing, I didn’t compare those at the time.
Flash-forward now to, I’m living in Australia, in a cheap apartment. Right next to the British pub. Never live near a pub. It’s a good pub though, the British pub in north Adelaide. You. can get a kangaroo steak there. Every morning I would get up and take a shower. It was a cheap apartment, as I said, and the fixture was one of those single knob shower fixtures, where on the right it’s hot and on the left it’s cold, or vice versa. And you adjust the temperature by turning the dial. But it’s plastic, cheap plastic, and so the valve isn’t working. It’s either boiling hot or freezing cold. And I would spend five minutes every morning in the shower trying to adjust it. Trying to find that sweet spot. But it didn’t matter, there was no sweet spot. It was either boiling hot or freezing cold. Eventually each morning, I would give up. I would turn it on cold and get in under it, and then switch it to hot. And I would have a few seconds before it became unbearable and I’d step out and turn it to cold again… eventually, I’d get a shower. But there was no in-between. It was all or nothing. Cold or hot.
Flash forward again, years later when I figure this out, and I see that when I write something, that’s what happens. I’m like that dial. It’s either absolute rubbish, or it’s perfect. There’s no good enough. There’s no in-between. There’s no nuance. That’s the way my thinking is about creative things. It’s either wonderful, or it’s crap. And I saw that that’s just like that shower valve. And the intensity of the emotions is just like my mother’s reaction. So, there’s some genetic thing going on here. I’m having the same kind of genetic emotional reaction that she had. And it’s like the shower valve, there’s no in-between. There’s no way to adjust it. There’s no way for me to make an objective judgement of my writing because my brain is making me feel this wretchedness, which just blanks out everything. Can’t think when you feel so bad. Then I thought, “this must actually mean something. I’m not stupid, I’m a very educated man, and I can write English very well, so what’s going on?” So, I began to write things and look at them when it would make me feel bad, “why do I feel bad about this?” And I saw that it was always because there was something wrong with what I had written.
Anything. It could be anything. It could be a missing comma, could be a misspelled word, or it could be a story structural plot thing that was actually a serious problem. The point is, it didn’t matter whether I lost a 50-cent thong or whether John Kennedy was assassinated; I felt the same whether the problem was a trivial problem that could be corrected immediately, or a more serious problem which meant that I had to change something later in the story or earlier in the story or rewrite what I had done. That was the key thing. Now I can use this wretched feeling as a way of knowing whether I’m on the right track or not. So, I started making real progress on the outline. I would write something and if I felt terrible about it, which I almost always did, I could look at it and find the problem. There may be more than one problem, but I could look at it and actually, I always knew there’s something there. There’s something wrong. And as soon as I fixed the problem, the bad feeling would go away and I could make progress. I began to see that if I wrote something and I felt terrible, I saw that “well if you write that, then what you wrote earlier is wrong. They’re not compatible, something has to change. Or, if you write this then what you’re planning to do later in the book won’t work.” So, I began to use this as a positive thing. Of course, it still takes time. It takes a long time because I have to figure out what the problem is, and then decide what to do about it. The way a normal novelist would do it; he wouldn’t feel this. He would just write, and he might produce a crappy novel, but he would produce a novel. And then he would start another novel, and he would improve his writing the next time. So, it’s an iterative process for them. But that’s not the way I’m doing it, I can’t do it that way. I can’t write a bad novel. I don’t mean I’m anything great, I don’t mean that what I write will actually be a good novel. But it will be a novel that I like. That’s the only thing I can do, it turns out. Write so that my brain says, “that’s perfect!” And then hopefully, other people will like it. And I think they will.
Can you give us some kind of a teaser? About the story, or some of the characters… currently, the only thing we know is that it’s a book that you’ve so far spent 25 years outlining. And that it’s science fiction.
I say science fiction because it won’t fit in any other category. It’s based on…
[Martin spends the next 10 minutes or so describing his elaborate storyline. I’m hooked.]
I think you’re right, I think others will enjoy reading this. At least I’m intrigued.
I hope so. By the way, don’t put that part in there, it’s too soon to expose it to the general public. I have a thing where if people know what I’m doing, it takes away from my impetus to do it.
Anything else? You’ve been doing some acting and have been cast as an extra a few times. Do you plan on doing more of that, do you plan to get into acting?
I would like to. I apply for jobs as an extra whenever there’s something. They publish these ads on several Facebook pages. And anything that comes up that looks like it might be interesting, I apply for it. But most of them are for much younger guys, so I don’t get that many opportunities. Plus, a lot of them… like I’ve been in this movie Tenet, it looks like it’s going to be a big movie. You can look at the trailer, it looks quite good. It’s directed by James Nolan and it’s got James Patterson and John David Washington in it, so it was a super-secret set. I thought it was going to be James Bond, it turned out it wasn’t. But it looks like it’s going to be better than a James Bond movie. It also has Kenneth Branagh and Michael Cain in it; I didn’t see them, but I did see Patterson and Washington. They shot a scene in Oslo, or maybe even more than one, but I’m in one scene that was shot down at Tjuvholmen in Oslo. I was sitting at a table outside at a café, pretending to be talking to someone. Well, okay, big deal. They paid me to sit at a table. The thing is you can’t actually talk, you have to pretend you’re talking. If you say anything – in fact, we got in trouble once, a guy said ”could you keep it down? Don’t make any noise, because it gets picked up by the microphones”. It was interesting to be in that, because it was such a big, secret deal. And then it turned out there was a paparazzi guy there taking photographs anyway, that appeared in newspapers the next day. So, the whole thing was pointless, to keep it secret. Even though that was a big movie it wasn’t fun. Because I didn’t get to do anything except sit at a table. On the other hand, this Norwegian Viking series, a comedy called “The Norsemen” in English and “Vikingane” or something like that in Norwegian. They shoot it in both Norwegian and English. I was a monk in that. They were invading a monastery in England, the Vikings, and so, because they didn’t have enough monks, they actually killed me twice. But I got to do something! I was running away from the Vikings; a guy had a sword in my chest, and he put his foot on me and pulled his sword out and I died. I actually got to do something, and the director came and coached me on what to do. Took and interest, you were somebody. I didn’t have any lines, but I got to do some acting. It was a challenge. That should be on in February, I think, at least the series starts in February on Netflix. This was when I had a broken foot. I was supposed to wear a boot, and of course, I wasn’t supposed to run. But I took the boot off, and they put on a leather shoe over my regular shoe. So, I was hobbling around with a broken foot all day. And I had to do this scene where we actually were running away from the Vikings on a cobblestone path. Not only was I running with a broken foot, it was on an uneven surface, it was really… But I didn’t notice the pain at all! Until the end of the day when it was time to go home, and they said, “thanks for coming, you did really good!” And then I’m walking back to the office with the other monks and I said, “I can’t believe I did this with a broken foot”. I could hardly walk at that point. They all said, “yeah, we were kind of surprised, too!” I was going to be in another scene, where we were actually running uphill. It was down at Akershus Festning. So, we were running uphill, again running away from Vikings. I was all fired up to be in it and one of the casting directors came over to me and she said, “maybe you shouldn’t do this…” and I said, “no! I can do this! I’m ready to go!” She kept talking to me and finally I said, “yeah, you’re right… there’s no way I can run up this hill.” It was a really steep hill, and it was cobblestone again. There’s no way I could do it. That was the best one, I think.
I also did the Ylvis brothers, Stories from Norway. That was a good one, because again, I played a Scotland Yard detective… there were several of us, and we were kind of a chorus. So, there are like a dozen different shots. Ylvis was playing the detective, Charlie, the Man of a Thousand Faces. He was going to find the Munch painting that had been stolen. And in each shot he was wearing a different disguise. It was some funny thing. In one shot, I’m sitting there working at a table, and he’s dressed in a green suit except for his face. On the screen, all you see is his face sneaking around behind me. And then he goes “boo!” and I’m scared. So that was fun, too, because we had to sing. Even though they used a pre-recorded chorus we actually had to sing out loud anyway so that our lip-syncing would be perfect. They played the music and we were singing along with it. It was a lot of fun. I would’ve thought that I would be really embarrassed about singing, but it was easy. You had to learn the lines, of course, you couldn’t make any mistakes. I were in, I don’t know, a dozen different shots when they edited it all together. That was quite good.
And then I was in Occupied, but there I was just a guy… I was walking with a woman, and we were walking down a hallway and the statsminister [prime minister] is walking the other way, so we pass. Again, that was a nothing one, but it was an interesting series to be in. I learned something there. Because I was supposed to be in a second shot, again walking down the hallway when the statsminister was walking the other way. We did one take, and right after that, one of the other extras told me that he overheard what happened after the director said “cut”. That main actor, the prime minister, it’s a famous actor, he complained to the director about me. He said, “that guy puts me off, get rid of him”. And I realized what he meant. I was hurt at first, because you know, what did I do? I did exactly what they told me to do. But that was the problem! All they did was tell me to “just walk down this hallway and talk to the person that you’re walking with while the statsminister comes the other way”. But of course, you wouldn’t do that. If you’re walking down the hallway and the statsminister is walking there, you’re going to notice him, and you’re going to acknowledge him. But I didn’t do that! That’s exactly what happened, I put him off because I didn’t have the normal reaction. I should have helped him play his part. So, I learned that, that’s an important thing. It’s not arrogance or something on his part, that’s the way it would really be. I would’ve said “oh, how are you doing?”, or not said anything at all but I would’ve acknowledged him. So, you see, you get to learn some things about it. There are these things that you wouldn’t notice if you hadn’t actually tried to do it. And then you learn something from it. That’s what I want to do, so yeah, that is getting into acting. But I’m not going to acting school or anything. I’m just trying to find jobs like that, that’ll teach me something. The crew on that series, none of them were Norwegian; they were Spanish, Polish… you get to talk to a lot of people, like that. And they’re very inclusive. They enjoy talking to you.
The other big one was Lykkeland. They keep saying they’re going to do a season two, but it hasn’t happened yet. I played a guest at the 50th birthday party of the main male, the father of the family. Again, I got to do some acting, because there was a fight between two young guys. So, I had to react to that. But then, at lunch, I don’t know why I did this, but I stood up and I said, “I want to do this scene”. And I started doing this scene from Cool Hand Luke, where the boss says, “what we’ve got here is failure to communicate”. And I did the whole thing, I’m really good at it, and everybody clapped and everything. All the main stars where there and they all clapped, and I just thought that that was really good. Then at a break time later in the afternoon, we’re out there and one of the female stars that plays the wife of the guy, she said, “what was that you did?” I said, “Cool Hand Luke?” She said, “No, I don’t…” “One of the most famous American movies of the sixties?” “No, no, I never saw it.” And I looked at the others, and they said, “yeah that, what was that?” So, then I was embarrassed, because I thought everybody knew what I was doing, and nobody did. Nobody in there knew what I was doing, they’d never seen it before. So, I explained to them. But then we all got into doing imitations of different scenes from different movies, and we all got into it, they all joined in. It was a lot of fun. Those things happen and you can’t predict them. But at the moment, I don’t have any applications in. I guess they don’t do much during this time of the year.
I think it’s fair to say you have some sort of interest in movies. Do you know of Inside the Actors Studio, have you ever watched some of the interviews done by James Lipton?
Yeah, I don’t get a channel that has it on now, I suppose I can find it, but I watched several of them. I usually watched it when it was somebody that I was interested in, like Jodie Foster, or somebody like that.
He usually ends his interview with a quick-fire round of ten questions…
So, that’s what you’re going to do?
That’s what we’re going to do.
What is your favorite word?
Favorite word… hmm… “cookie” comes to mind.
What is your least favorite word?
What turns you on; creatively, spiritually, or emotionally?
What turns you off?
What is your favorite curse word?
What sound or noise do you love?
Bob Dylan. Like a Rolling Stone, or Desolation Row. Those two songs. I can sing them both by heart. I do, often… without an audience. But I swear, especially Desolation Row, I could sing and sound just like Bob Dylan. But I have to hear it, the thing is I have to hear the music directly in my ears. I have to hear earphones. I can’t do it if I can hear my own voice.
What sound or noise do you hate?
There’s several. People talking on the cell phone when it’s supposed to be quiet. Women with clacky heels when it’s supposed to be quiet. Anybody who’s dragging a suitcase. You especially see this with American tourists. They’re great big people, and they have a big long suitcase handle with a tiny little suitcase! They could just pick it up, but they drag it on the cement, and it makes an annoying noise. I think there’s another one, but I can’t remember what it was. Those three are annoying to me.
What profession, other than your own, would you like to attempt?
What profession would you not like to do?
Being an administrator.
And finally; if heaven exists, what would you like to hear God say when you arrive at the Pearly Gates?
“What would you like to be in your next life?”
Subscribe to our newsletter
Try Qt 6.6 Now!
Download the latest release here: www.qt.io/download.
Qt 6.6. is a feature release with focus on improving UX capabilities including responsive UI technology and the Qt Graph module.
Check out all our open positions here and follow us on Instagram to see what it's like to be #QtPeople.