Algorithms + Data Structures = Programs - Episode 49: Special Guest Dave Abrahams! (Part 2)

Episode Date: October 29, 2021

In this episode, Bryce and Conor interview Dave Abrahams about how he went from programming BASIC to APL to C++!About the Guest:Dave Abrahams is a contributor to the C++ standard, a founding contribut...or of the Boost C++ Libraries project and of the BoostCon/C++Now conference, and was a principal designer of the Swift programming language. He recently spent seven years at Apple, culminating in the creation of the declarative SwiftUI framework, worked at Google on Swift for TensorFlow, and is now a principal scientist at Adobe, where he and Sean Parent are rebooting the Software Technology Lab.Date Recorded: 2021-10-03Date Released: 2021-10-29ADSP Episode 48: Special Guest Dave Abrahams!Algorithms + Data Structures = ProgramsNiklaus WirthCombinatory LogicStepanov’s “Notes on Higher Order Programming in Scheme”PDP-8BASIC Computer Games by David AhlRutgers UniversityPDP-10TECOAPLPrinceton UniversityAaron Hsu’s Co-dfns GPU CompilerSwift Programming LanguageConor’s Galaxy Brain Programming LanguagesBen Deane’s Six languages worth knowingLisp MachineEmacsComposer’s MosaicTHINK CException handling: a false sense of security - Tom GargillIntro Song InfoMiss You by Sarah Jansen https://soundcloud.com/sarahjansenmusicCreative Commons — Attribution 3.0 Unported — CC BY 3.0Free Download / Stream: http://bit.ly/l-miss-youMusic promoted by Audio Library https://youtu.be/iYYxnasvfx8

Transcript
Discussion (0)
Starting point is 00:00:00 I was so hungry to keep programming in APL that when I went to the engineering building and discovered it to be locked, I saw that I could just stick a twig in the door and essentially unlock it and break my way in. Welcome to ADSB The Podcast, episode 49, recorded on October 3rd, 2021. My name is Connor, and today with my co-host, Price, we continue part two of our interview with Dave Abrahams, which covers topics including BASIC, APL, C++, and so much more. If you haven't seen part one, check out episode 48, which was part one of this two-part interview. Can I ask you a question?
Starting point is 00:00:47 I just realized I don't know what ADSP stands for. And so I don't know what audience we're talking to and what this podcast is about. ADSP stands for Algorithms Plus Data Structures Equals Programs, stolen from the Nicholas Wirth book. Beautiful. I'm not actually sure if we've ever described why we chose that one. You mean the real reason or the other reason?
Starting point is 00:01:14 There's two reasons? I don't even know. What are the two reasons that you know? The pragmatic reason is that when you have algorithms and data structures in your podcast title, it means that it's pretty good SEO, search engine optimization, but there's other reasons.
Starting point is 00:01:30 Oh, right. Is it the unofficial one that one of our Twitter followers pointed out that someone said it's a unofficially discussion with Sean parent? Yes. Because we've had him on, we've only talked to him three times, but we always, we always, you know, squeeze as much content out. And so we turned those three recordings into like nine episodes.
Starting point is 00:01:53 But yeah, the first four episodes of the show were us talking about our favorite algorithms and data structures. And it's, it's mostly an open-ended, sometimes we bring guests on to hear about their stories and experience. And sometimes we're just randomly, you know, right before you joined, I had been wanting to explain my love that is developing for combinatory logic and combinators, which are these little, you know, composition patterns that a few of them exist in Haskell and a lot of them exist in APL, which is like my favorite language at the moment um that was one of my first uh languages actually all right so here I'm going to turn this interview on its head because Bryce's introduction quickly dived into uh oh do you know about this boo story and I was like Bryce I said we wanted to go back to the beginning and then we just we we skipped to like all right we can go back to whatever you want to go back but i'm so i'm um i'm super curious yeah like how did you get to the you know 1998 point where boost pro and boost con
Starting point is 00:02:54 and all that stuff started and then you i don't know if it's how many chapters has it been since then but there's the c++ chapter at sort of boost pro and i'm not even sure if that was all of your time was spent at Boost Pro there, or there was some before and after. Then you had your Swift chapter at Apple. Then that chapter sort of continued or evolved into Swift for TensorFlow at Google. And now you're at Adobe.
Starting point is 00:03:14 So there's all of that stuff. But I have no idea what happens to the point where you were starting that series of chapters if you had been doing C++. So the fact that you're mentioning APL, and that's the thing is I have started to discover that these people that are known for certain things like Stepanov, known for STL, known for C++, spent a decade in scheme preaching the beauty of LISPs and has one of his talks talks about how APL with its arrays and LISPs with its, you know, homoiconic, you know, parentheses and small talk with its object model.
Starting point is 00:03:49 Like, and he, he stole ideas, stole or borrowed ideas from all of these languages. And like, I can't, I knew, I thought I knew everything about Stepanov. And then apparently there was a whole decade of his career that he spent in Scheme and even prototyped a ton of his ideas in C++ in scheme. So yeah, let's rewind to whether it's age six when you started programming or university and then take us to share as much as you want up until the point that you were doing all the Boost Pro and Boost Con stuff. All right. Okay.
Starting point is 00:04:19 It all started at a, you're not going to believe how this dates me, at a teletype with a paper tape punch and reader on the side of it. This was a terminal on a time-sharing system at my school, my middle and high school. The time-sharing system was a PDP-8, which was about a refrigerator-sized unit with a magnetic tape drive on the front, no disks. It was so timeshared basic to a bunch of teletypes positioned throughout the school. Actually, I think there was just, there was one downstairs in the lower school and then there was, and then there was a cluster in the same room as the same room as the PDPA. And it was, the operating system was essentially basic. On the front, there were, there were actual switches for, for entering binary bits. And if you wanted to program it from the front panel, you could flip a bunch of switches and then flip another switch and that would enter that binary number into the address space.
Starting point is 00:05:33 So it was running BASIC and I was introduced to it by one of my classmates. I don't even remember who. And there were a bunch of B computer games on there. In fact, they all came, if I remember right, from a book called 101 Basic Computer Games by Dave Hall, A-H-L, which was, you know, immediately hooked. And from there, there was a 6502 breadboard prototyping system from Heath kit that the school had. And I, and I took that home and I, I figured out how to program in assembly language and, and made a tiny little, you know, car racing game on the LEDs and cause yeah, games. So that was the, that was the start. This is all in high school or? Middle school is junior high. And yeah, my dad was a physicist at Rutgers. And when he saw how interested I was, he mentioned that they have PDP-10 at his lab, which was where they were doing bubble chamber research. So bubble chambers are essentially a thing in which they track particle trails after collisions. And maybe I want to check that out.
Starting point is 00:07:09 And so I went there and it was this giant room. You walked inside the computer to go inside the room. And there were a couple of hard disks the size of washing machines and lots of core memory uh you know the little magnets little uh toroidal magnets on the wires and uh and they had they had a much faster paper tape punch and reader they had uh they had a line printer which made a lot of noise a line printer chugs out it it basically sets chooses on let's see there's like 128 columns each of which has a cylinder that has all of the possible characters on it and and so each line it prints it rotates the the cylinders
Starting point is 00:08:03 to the right position and then it slams them against the paper. So that was a print a whole line at once. That's called a line printer. Makes a lot of noise. And the PDP-10 manual that I got a hold of had descriptions of several languages that they had. Obscure things like Tico, and that I think was a text editing language, but also Algol, uh, which I, I tried to learn, uh, never actually got anywhere with that. A more sophisticated version of basic that, that lab also had a, a Tektronix terminal in it on which you could play a game with,
Starting point is 00:08:40 you know, where asteroids attack your spaceship and you try and shoot them down. And that was unlike anything, you know, a few years later and you're trying to shoot them down and that was unlike anything you know a few years later you would see that stuff in the arcade but it was unlike anything i had ever seen at at that point yeah so so that was pretty exciting but it required you know a 45 minute commute with my dad into into work uh, uh, to, to do anything. And let's see, my, my mother was, uh, was a choreographer at Princeton teaching dance. And so I, I found out how I could get access to computers through her. And, uh, I got, I got some account, uh, on the Princeton university systems, which is where I discovered APL.
Starting point is 00:09:26 Was that a shorter commute? Is that why? Yeah. Sorry. I lived in Princeton. Okay. Yeah. Thanks, dad. But mom's university is closer. Yeah. Yeah. But although I think that I wasn't supposed to be using a lot of that equipment and nobody was paying much attention to where I was going, but you know, I was just a teenager, no affiliation with the university.
Starting point is 00:09:52 And at some point I was, I was so hungry to keep programming an APL that, that when I went to the engineering building and discovered it to be locked, I, you know, I saw that I could just stick a twig in the door and essentially unlock it, break my way in and go use the computers. This is amazing. This is, oh my goodness. It's APL is so addictive. You hear that?
Starting point is 00:10:16 Dave Abraham's is a creator of Swift. We're talking about here. Well, not creator. One of the main key contributors responsible for the standard library of Swift. Uh, it was in love with APL. All right, wait, this is keep it going. This is, this is amazing. Yeah. So, I mean, APL appealed in part because I, you know, I would watch my dad do his work. He was a theoretical physicist. So when I watch him do his work, what he's writing down on the,
Starting point is 00:10:43 on the paper, these, all of these mysterious and magical symbols that had some kind of deep meaning about the universe. And APL is a lot like that. It's full of these Tektronix terminals where you could use APL to make graphics and APL having matrix multiplies, you know, matrix transformation built in and lots of array support for like long lists of points and things. It really lent itself well to this kind of work kind of work so i played around with that stuff i was really interested in in 3d and sort of figured out that i could that by making an angular map of the world i could actually create perspective in 2d so it's for the kinds of
Starting point is 00:11:39 things i was playing with were you just all like it sounds like you were just sneaking in and and self-teaching like did you have like an apl manual or like how would you like because it's not a simple thing to just oh i've i've seen into the meaning of this unicode symbol now i know what it means uh oh this is before unicode my man uh yeah there was no unicode back then it It was just, you know, the, you needed an APL terminal. It had APL symbols printed on the, on the keys and, and could display them. But yeah, I got my, the Princeton University bookstore was an amazing place. We would go to the U store. We called it all the time for, for various things. I, I was into like drafting and all kinds of,
Starting point is 00:12:26 all kinds of stuff I could, I could get exposed to there and they had the APL manual there. So that's how I got it. That is amazing. And is that the last time that you programmed an APL? Have you ever used APL more recently? I have not. I remember, you know, maybe two of the symbols, maybe, and what they did, but I remember the principle. I mean, there is this, if I remember right, this is where I learned about lazy evaluation. I think APL does a whole bunch of matrix stuff lazily, so you don't end up spending a lot of cycles on elements you're not going to actually observe yeah it's uh this this further adds to my confusion on how at some point people haven't taken apl and just made a gpu version i guess technically there's been a little bit of research by an individual by named aaron shu's made a GPU APL compiler, but like, I haven't
Starting point is 00:13:26 actually heard that APL was used for graphic stuff. Like it makes complete sense. Cause yeah, of all the matrix operations and whatnot, but it seems like the, the stepping stone into GPU land, but I, I guess by the time GPU showed up in the whatever nineties that APL had already started its decline. So maybe, maybe that has something to do with it. Yeah. You know, I think the very thing that, that attracted me so much is also part of the reason that people aren't pursuing it. It's the stuff that's probably of lasting value in APL are the semantic bits and the syntax is, you impossible to remember and and can be hard to read and you know so that's why i don't remember it anymore right but but yeah the the semantics
Starting point is 00:14:13 of the operations were pretty interesting you could encode all of those in something that was easier for people you know lay people to read and and that might be an interesting system right yeah all right so where did you you went you were caught connor's only slightly distraught because connor thinks apl is the most beautiful thing in the world well no so well i it's gorgeous i i want to uh i continue on the on the journey of of dave's history but in the back of my head there's a whole other conversation of you know it's like it's hard to read you know, and this, this topic has come up in multiple different, you know, podcasts, conversations, slash whatever, just chatting on zoom is, you know, readability,
Starting point is 00:14:53 like what is really readability, like readability is informed by one's experience, someone who speaks Chinese and has read Chinese growing up, like Chinese is readable to them, because that's what they learned. But to a Westerner that does not speak or read Chinese, it seems overwhelming. You have to memorize 4,000 logograms and it's not combining just a set of, you know, alphanumeric or I shouldn't say alphanumeric, just alphabetical characters. And so you have to find a way to like objectively remove experience. And then how do you answer the question of what truly is more expressive or more readable than, than one thing, just because 99% of all programming languages, you sort of use English or, you know, keywords and whatnot. Does that truly make APL less readable or is it just more unfamiliar than everything that people
Starting point is 00:15:41 are used to? And I don't even have the answer to that question. I just think it's a very interesting question. Yeah. I'm not saying that I'm not even sure that I said it's not readable. I don't think it's, I don't think it makes a great communication medium for a large audience because it is a challenge to learn and not many people have learned it, but you know, you also, when the imperatives get strong enough, people will learn all kinds of things. Right. Right.
Starting point is 00:16:10 And, you know, for example, Chinese, you know, very objectively computationally difficult. But if it's what, you know, you're brought up in and what you need to survive, then of course you will learn it right and i think one of the the main roles of of programming in the modern age is as it's about
Starting point is 00:16:34 communicating to people and you know i think communicating stuff to the to the computer is is fine but syntactic sugar sugar actually counts. Right. No, no. Well, there's a whole, there's a whole, I went on CPP chat one time and the title of the episode was, I really like sugar because at some point, you know, I'd heard, oh, lambdas are just sugar, you know, structure bindings are just sugar, but I never really understood that because it's sort of like saying like that, that's a bad thing, but like one, most people really enjoy sugar. And two, I think it's, it's sort of, it misses the point, like something that is more expressive or easier to digest. Like lambdas have completely changed the way that people can understand and read generic algorithms because you don't have to, Oh, there's
Starting point is 00:17:19 a function object that's been defined somewhere else. Like you can just, it's, it's there, you see the customization and it is then more readable. It's it's yes, sure. It is just sugar for a function object, but yeah, I completely agree that something that is syntactically more expressible than an equivalent thing that sure. It's just sugar. It, it changes the program, not semantically, but definitely from a readability perspective. Yeah, sure. I mean, or, you know, if you, all you care about is is the semantics we could all program in assembly language and be just as happy right but we don't so that official statement from dave abrams we should have this uh program in assembly if we only care about semantics
Starting point is 00:17:57 yeah if we don't care about syntax sugar i mean that's like all programming languages are syntax sugar, right? And at some level. And if there was a huge community of people that already understood how to read APL, I think the imperatives would be very different and maybe more research into using APL on things would happen. And some people argue, sometimes it's me, that there is like an order, two orders of magnitude in your ability to think and solve problems due to having like what, you know, Iverson originally wasn't called APL. It was called Iverson notation. And his Turing Award paper, which listeners of this, the listener of this podcast is a notation as a tool of thought. He never really wanted it to be a programming language.
Starting point is 00:18:43 It was a language, a notation for expressing algorithms. And at some point someone realized they were just like, we could probably implement the IBM 360 in this. And they were like, oh, okay, let's give it a spin. And yeah, I think it's worth learning just for the ability to be able to solve a problem differently. But yeah, we'll put a pin in this because we need, or sorry, go ahead.
Starting point is 00:19:08 And then we'll get back to what happened after APL. Was it small talk was the next chapter, but sorry. Yeah, go ahead. Yeah. Well, okay. I want to endorse your position. I mean, I, I think APL is totally worth learning. It's, it's great to have, uh, you know, new perspectives on programming. I think the operator composition that they do in APL is really, really interesting and, and expressive. And, and I also want to say I was, I was in C++ deeply for such a long time and, and the just doing Swift changed my perspective on programming language design and the trade-offs and everything so much that, uh, that I, I think it's, it's really super valuable to immerse yourself in, in something truly different than what you're used to. So if you haven't tried APL, it's worth a shot.
Starting point is 00:20:00 Yeah. There's a, I'm not even sure the quote pertains to programming languages, but I saw a quote once that was, you don't really understand fully a language until and you know, C plus plus, like don't go learn Java, like go learn prologue or APL or Lisp or something that's in a completely different paradigm. Cause Java, you'll learn a couple of things, but for the most part, it's, it's got a lot of the core that's the same, but if you go learn, you know, prologue or small talk or something, it's going to bend the way that you think about the programming world. Yep. Okay. Yeah. So let's APL chapter APL chapter has ended at Princeton. Uh, and then, and then, and then what happened next? Yeah. So, uh, so I went off to college and college. Well, I, I was, I was interested in a lot of different things and, and, uh, I remember, I remember asking, uh, all of the, all of the people that came around to hype their schools, whether that kind of studying lots of different areas was going to be supported. And I remember when I asked the Carnegie Mellon person
Starting point is 00:21:15 about this, they said, well, we don't encourage dilettantism. And so that school was crossed off my list but the but the the woman who came to talk about pen was really excited when i asked this and and so you know and when i got in and visited the campus it just felt it felt like home so so that's where i ended up going. And I wasn't really sure what I wanted to focus on, but I enrolled in computer science to was using. So another big mainframe with lots of terminals and yeah, let's see other programming languages during that time, I guess I was exposed to Lisp. There was actually a Lisp machine there, which was a pretty interesting thing. And I think this is probably also around the time when I picked up Emacs, which has a whole backend in Lisp and has stuck with my muscle memory ever since. So that's still how I, how I do a lot of things on a computer. Emacs. All right. So we don't need to ask that question or start any. Yeah. Emacs
Starting point is 00:22:40 are good. Yeah. Yeah. That's just, uh, you know, what already works for me. So that's what I do. After, after college, I wasn't really sure what I wanted to do, but got a, got accepted to Carnegie Mellon graduate program in computer science, spent a year there where I found myself spending at least as much time working on music and, and playing music as I did on computer science, decided I wanted to go to Berkeley College of Music, which is Berkeley with the two E's in Boston, went to Boston, spent a semester at Berkeley, realized I was really done with school. And at that point I needed to get a job. And so I got my first real professional job, which was doing computer music software for a company called Mark of the Unicorn, which they had a program called Composer and they wanted to, they wanted to improve it. I guess the person that had been working on it had
Starting point is 00:23:47 left. Maybe, maybe that was Robin. She had the, I think she left to go to Adobe strangely enough. And, you know, I, I was, I looked at it and I thought, you know, this seems a little bit clunky. Maybe I can do better. They, they had a mentor for me there who had built a really successful product. And so they said, okay, go and do that with this guy because I had never done any real professional programming before. And of course, this guy quit once he met me. Now he quit shortly thereafter. So I was basically, I was basically, you know, on my own learning how to, to write software, learning how to write a Mac application, um, with the responsibility of writing this entire application, uh, on my shoulders. What language is this in at the time?
Starting point is 00:24:39 What language was I, I think to start with, I only had C yeah, I only had C and at some point in my first year, I discovered I was reading bite magazine and there was this, this thing you could download that was essentially a little small talk. And so small talk does come into the picture. Yeah, I guess so. It wasn't actually Smalltalk. It was a tiny object-oriented language. You know, basically dynamic dispatch, you know, was the key thing.
Starting point is 00:25:17 So you had methods and you had dynamic dispatch. And something clicked with me where I thought, oh, this is how user interfaces should be built. And so I built an object-oriented programming system on top of C using horrible macros and conventions and whatnot. And so that was the back end was the backend of my product, which was eventually called Composer's Mosaic. So that was that job. I went on from that to do all kinds of other interesting things in computer music in that job and spent 11 years there, which I have to say, I've said this before. It was a hugely, it was a huge growth experience for me to spend that much time with my own code and having to, having to live with my own mistakes because you really learn what is going to work in the things I noticed, especially once, you know, the internet started to heat up and everything was a lot of people were taking jobs and working there for a year
Starting point is 00:26:32 and handing their coat off to somebody else and, and leaving. And I, I thought those people are missing out. Is there, well, advice or like, what is the, what are some of the key things that you took away that you think people are missing out from not spending that amount of time? Uh, or that is only sort of lessons you can learn, or maybe they're not things that you can be captured in a podcast bite and it's stuff you have to actually just experience. Uh, well, you know, I think, I think a lot of it could have been, I, a lot of pain I could have not gone through if I'd had somebody to mentor me at that time who knew more of these things. behavior of things, right? Getting it right is about that. And, you know, just how much to not let yourself get away with in terms of, you know, oh, it seems to work and, you know, what kinds of reinforcements to build in.
Starting point is 00:27:41 I went through a long phase around this time when I would explicitly write out asserts and about all my preconditions and insert invariants all over the place, like I was implementing contract programming in my software. And I learned a lot from that. It got to the point, you know, eventually, if you do that enough, you get to the point where you, you can see logically that your software is correct and you don't need these kinds of reinforcements. But, but that was a, that was a huge learning experience for me. Another interesting thing was just about some of the trade-offs that I made in my initial designs. My initial design for this notation software was designed around conserving every byte because memory was really constrained at that time. You know, you get a 128K Mac on your desktop.
Starting point is 00:28:46 This is what people were doing this work with. And so I developed this really compact encoding for the notation. But then what I discovered in the long run was actually to be able to manipulate this notation stuff, I needed to build a much more expensive dynamic data structure on top of it with just essentially a decompressed version of it. But it was very hard ever to get rid of this underlying encoding that I had. So just being able to think about,
Starting point is 00:29:25 think about, you know, what it's going to cost you to optimize over here. That was one of the, one of the big lessons. So you, you spend 11 years, you said, uh, working on that. And then what caught, what caught, what, or slash, what's the kind of time period and what caused you to, to, you were looking for your next challenge or. Yeah. Well, so it was toward the end of my my stay there that well this is like c++ is sort of starting to come into its own so the the
Starting point is 00:29:55 language we're using next after c at mark of the unicorn was something called think c which which was essentially c with with a kind of dynamic dispatch object system on top of it kind of objective c like and uh and then c++ comes along and during this time so i i my friend next door mark waxler, showed me the interview with Alex Stepanov and Dr. Dobbs. And I was like, oh, this STL thing, I've got to get this. Because I don't think people understand, but at that time, there were no libraries. There were really no libraries. Like if you wanted to do anything, you had to write it yourself. Okay. There was Q sort, right? There was C's Q sort. There were no, there were no frameworks for, for user interfaces. There were, there were basically, so there was nothing. So, so we were
Starting point is 00:31:01 developing everything from scratch and and you know i wrote binary search wrong about 50 times okay uh did uh to skip ahead did sean give you that question upon hiring you at adobe uh to write a binary search yeah that's the one that they asked a modified binary search or did you said he was going to exempt me from it oh okay so could have been a different outcome if he had asked you to write it yeah that's true that's true you think you would have gotten it right uh that time uh probably at this point uh i i yeah i think i think if i didn't rush through it i think i wouldn't have rushed through it actually because because i still remember getting it wrong so many times yeah right um but yeah now now I believe I know how to think about
Starting point is 00:31:47 binary search. So when I saw this article on the STL, and then I discovered that the thing actually had documented requirements and guarantees, unlike any of the code that I had written, because I'm writing music software. It's't, I'm, it's not my, it's not what I'm not being paid to, to write a binary search. I'm not being paid to be good at, at sort. I'm being paid to be good, to be a, actually, you know, it's a tiny niche, but I was a world-class expert in music software. Okay. And I think this is, I think this is, is typical and, and correct that, you know, people get paid to become domain experts and, and do something they're really good at and apply that expertise. And you can't be an expert in everything. And so this is one
Starting point is 00:32:45 of the reasons, you know, I think I was so enamored when Boost came along that libraries are so important. In any case, I find this STL and it's got documented requirements and guarantees and complexity. And I'm like, what? I can actually think about when I put these two pieces together, what the overall cost is going to be. Is it going to be efficient? You know, this was amazing. This is not what anybody did. And sadly, I would say it's still not what anybody does.
Starting point is 00:33:20 Pretty much. Well, you know, maybe I think it got into the C++ culture a bit. So that's good. But I think if you look in industry, I think in general, people are not careful about documenting requirements, guarantees, and especially complexity. But this made a huge difference for me. But I looked at this and we were still working on systems without virtual memory. And so running out of memory was a real thing. And what was C++'s answer to running out of memory? It was to throw an exception. And at the time when I got the STL, the language that came with it said, the documentation said, if an exception is thrown inside of any of this, if you throw an exception while sorting, whatever, all bets are off,
Starting point is 00:34:14 your program is going to crash. Maybe if you're lucky, right? If you're unlucky, it launches the missiles. So being in this environment where we had to deal with out of memory, I already had some idea of how to handle errors. And I looked at this and I thought, well, this is just not that hard. Just do what I always do for handling errors. Well, it turned out to be a more sophisticated thing than that, but it was basically, I thought we could solve this problem. So I actually wrote a message to Alex, found Alex's address and, and said, you know, I'm thinking I could fix this problem. And, and he said, he wrote back and said, I, I think that's great. But you should be aware that they're like already two years behind in finalizing the
Starting point is 00:35:06 standard. It was supposed to be done in 96 or 95 or something like that. And, and, you know, you're going to have a hard sell to make any changes at this point. And, but, but he said, here, let me put you in touch with, I think it was Greg Colvin that he put me in touch with, possibly. He either put me in touch with him or Andy Koenig. And at some point I got onto what they called the reflectors. Is the committee still using reflectors? We still call them that. And it's probably still hosted in the same place.
Starting point is 00:35:41 Yeah. Okay. Yeah. Mailman? Yep. All right. Yeah. Okay. Yeah. Mailman. Yep. All right. Cool. So I got on the reflectors and started talking about this on the library working group. And one of the things, so I definitely heard from a lot of people, we don't have time to deal with this. We're already behind. I also heard this is well known to be an impossible problem to solve. I'm paraphrasing.
Starting point is 00:36:10 I don't know whether they actually said impossible, but it was, there was a common wisdom that exception safety was not something that we could handle. And a lot of it came from this article, the way people read this article by Tom Cargill, which was a classic at that point about why especially generics and exception safety was a difficult problem. And while Cargill didn't say it was impossible to solve, he pointed out a lot of problems. And a lot of people read this to be a demonstration that it just wasn't tractable. So actually getting exception safety into the standard is how I developed my appreciation for the consensus process, I think, in large part. At some point, so I made my arguments on the reflector. At some point, Andy Koenig said, well, that's all very well and good, but you're not going to get anything accomplished unless you
Starting point is 00:37:25 show up at a meeting. I was like, wow. Well, fortunately the next meeting was, I was in Massachusetts. It was just in New Hampshire and I got the time off work to go there. And that was, that was a really amazing experience. And, you know, I don't know that the culture has really, the stories I've heard have not been good recently about the culture and committee meetings. But at that time, one of the things I was most impressed with was how a group of such smart people with such divergent viewpoints could treat each other with such respect. And especially that I got a lot of respect, even for the things I had argued. And I tried to, you know, I realized this was not my domain. So I was not trying to like tread in heavy, but it was a really different feeling than my professional experience. I felt hugely
Starting point is 00:38:28 validated by this. And so that contrast was the beginning of the end of my work at Mark of the Unicorn because I really saw that I wanted more of what we were doing in the committee. At this point, we had to stop recording due to time constraints, but we will definitely have Dave Abrahams back on to tell the rest of his story. Until then, enjoy this three minutes of bonus content from behind the scenes. Well, I'm happy to come back. I hope it was all actually interesting and I wasn't just droning on taking up time. me are you kidding me holy smokes the internet i'm just i'm gonna be putting together a team of like people that you know we're putting a team together and the person's gonna say no i'm not interested in joining but they're still gonna unofficially be on that team of uh people that used to do apl um and you were doing it in high school like oh man that was uh you was breaking into mainframes to do it in high school.
Starting point is 00:39:27 That is such a, you, yeah, you were, you were sneaking around Princeton. Um, and, uh, Mark is not sneaking around to sneaking into and, and also, yeah, breaking, uh, breaking into that's, oh man, that's definitely going to be intro to whatever part one or part two of where it was just, I was so hungry for APL that I, I broke into the, that is just, oh my goodness. Oh my goodness. It wasn't, it wasn't much to break. I mean, you could see like that this was old style security, right? There's a gap between the doors and you can see the little hook. It's just like, oh, all I have to do is wiggle
Starting point is 00:40:03 that thing. I consider uh cutting in uh unfortunately at this point uh dave's mic cut out but uh he had this real elaborate you know he had to at one point break the window you know this is uh his mom got in trouble from the university for all the damage property um that's where apl will take you if you're not well this this almost i almost did get i did get uh yeah at one point somebody got in trouble because because i was not not broken into the engineering building but i was using a terminal i wasn't supposed to use in fact i think i was using an account I wasn't supposed to use because some graduate student had me, he wanted to build some statistical charts. So he had me program that and he let me use this, this account that I was supposed to stop using. As a high school student, you were doing work for some of the grad students at Princeton?
Starting point is 00:41:02 I guess so. I mean, it was, he didn't pay me or anything. So, you know, who knows if this was even like, you know, he was legal or not to do that. I don't even know if he was supposed to do that work or whatever. Thanks for listening. We hope you enjoyed and have a great day.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.