The Stack Overflow Podcast

From Smalltalk to smart contracts, reflecting on 50 years of programming

Episode Summary

Dean Tribble, CEO of Agoric, joins Ben and Ryan to talk about his journey from working on early programming languages at Xerox PARC to leading a company developing an open-source blockchain.

Episode Notes

Smart contracts aren’t actually new. Computer scientist, legal scholar, and cryptographer Nick Szabo coined the term in 1994 (possibly earlier, depending on who you ask). 

Old problems seem to keep coming back. Bret Victor gave a talk in 2013 called “The Future of Programming,” where he talked about problems from 1973 that were still relevant. 

To learn more about the Agoric blockchain, check out their homepage

If you’d rather shape how the blockchain itself operates, much of Agoric’s code is open source

Connect with Dean on Twitter or Telegram

Episode Transcription

[intro music plays]

Ben Popper Hello, everybody. Welcome back to the Stack Overflow Podcast, a place to talk all things software and technology. I am Ben Popper, the Director of Content here, joined as I often am by my colleague and collaborator, Ryan Donovan. Hey, Ryan. 

Ryan Donovan Hi, Ben. How are you doing? 

BP I'm good, thanks. So we have a fun guest coming on today: Dean Tribble, who is the CEO over at Agoric. And he has a terrific history in the software industry, dating all the way back to Xerox PARC the year I was born– 

Dean Tribble [laughter] Oh-hoh.

BP Oh, sorry, I didn't mean to rub it in like that– at places like Sun and Microsoft, and now working in the world of smart contracts and is here to talk a bit about EFI and some of the things that have occupied developers’ mindshare over the last few years. So Dean, without further ado, welcome to the program. 

DT Thank you for having me. I'm very excited to be here. 

BP Yes, I didn't mean to out you in terms of age. You just said you worked at Xerox PARC in 1983; it happens to be the year I was born so it struck a chord. But tell the folks a little bit about yourself. How'd you get into the world of software and what brought you to a place like Xerox PARC? 

DT So I got into software because, growing up as a kid, robots and spaceships and other science fiction. So I read about AI back in like sixth grade, Terry Winograd’s thesis, and learned about software from that, and the idea that software could enable a human to do more, enable a group to do more, just kept growing as this awesome, amazing idea in my head. That technology could enable you to do more, but it's software that lets you control all of that. And so I got into device control in fourth. I got to see one of the first Smalltalk systems when it was at an aerospace corporation in El Segundo and that just caught fire in my head this idea of being able to build software abstractions for things in the real world, or things that we wanted to invent, or things we wanted to build in object-oriented programming languages. And Smalltalk wasn't the first, but it was very much the thing that carried it out to a much larger audience, and so I wanted to work at the place where that happened, which was Xerox PARC. And so when I went to college, I chose my college based on, “Could I go to PARC?” And so I didn't end up at PARC because I went to Stanford; I ended up at Stanford because I wanted to go to PARC. 

BP Gotcha. For folks who are listening who don't know, just quickly, what is Smalltalk and what was it about that that excited you? I know you said before we hopped on the call that you're a language lover. What was Smalltalk and what got you excited about that? 

DT That’s right. So Smalltalk was the second, but the well-known object oriented programming language like Java, C#, JavaScript and so forth. It really broke new ground on enabling this soft scripty ability to build large scale object systems in a programming language that was all about these objects, and it was where mice and windows and the whole idea of multiple windows on your desktop was really implemented and popularized and where a lot of the window system ideas at Apple, and later at Microsoft, came from. 

BP Yes. I know this is maybe a cruel way to frame it, but unfortunately it's the way I understand the history. My biggest association with Xerox PARC is Steve Jobs’s “Great artists don't just copy and create, they also steal.” He went there in ‘79 and saw all these great ideas for, like you said, a GUI with a mouse and windows and folders, and went ahead and took those and popularized them through Apple in a way that was obviously a big deal for that company.

DT That's right. To be fair to the record, he paid a lot of Apple stock to Xerox for that privilege. This was not actually him stealing. That's how it gets characterized, but in fact there was a real deal there and Xerox was in fact more than compensated for the time that was put in on that. They clearly didn't get all the upside of that opportunity but they weren't going to get that anyway, so they were pretty happy with that outcome. And that drove a lot of appetite for, for example, laser printers that also were invented at PARC and so they were happy. 

BP Okay, cool. So take us forward a little bit. After Xerox PARC, you worked at Sun and then you worked at Microsoft, and you mentioned you found yourself working on an early smart contract pre-Bitcoin and crypto. What was an early smart contract and why were you working on something like that? 

DT Smart contracts long predate blockchain. People think of it as, “Oh, it's software running on Ethereum.” No, no, that's not what a smart contract was coined as. That's not what the idea was. I worked on the first production smart contract in 1989. It was the brainchild of Phil Sale and it wasn't called ‘smart contracts’ at the time until Nick Szabo came along and we had a larger community at Xanadu, which is where hypertext was invented, AMIX, which is where this smart contract was, and various others in this cipher punk era and crowd of folks that were doing distributed systems pre-internet, looking at lots of internet technology, how do you secure it, all this sort of thing. And a smart contract, in our terminology if you will, is software that's enforcing the terms of a contract-like relationship between third parties. And so very, very careful there– nothing to do with blockchain. It's enabled by having people connected by networks, so you couldn't do this before at least the ARPANET and there you weren't allowed to do business, so it really required the evolution to the internet. But lots of smart contract businesses existed before blockchain. These weren't before blockchain, but Uber, Lyft, Airbnb, PayPal, Venmo, eBay. eBay is software that's sitting in the middle enabling a buyer and seller to end up meeting, or rather, a seller and a bunch of buyers to bid. And that whole interaction, which is contract-like behavior between those parties that ends up with one of them winning it and having to pay, and shipping charges and all that sort of stuff, is mostly automated by software. And that's a trillion dollar market cap before Ethereum ever came along. That was a huge new way of doing businesses that was a non-trivial contributor to the boom of the internet, and the growth of the internet is this model of an intermediary enabling third parties to do business with each other. 

BP Yeah, that makes sense that a crucial distinction maybe being that in a system like an eBay or an online retailer or a bank, the parties involved in the transaction can't necessarily see the ledger or know that it's immutable in some supposedly trustless fashion. It's happening behind the sort of black box of a private company running software. 

DT Exactly. It's a trusted intermediary, which doesn't necessarily mean it was trustworthy. 

RD It's interesting to describe those as smart contracts, like any sort of enforcement of business terms via software, if I understand what you're saying correctly.

DT Approximately, yeah. 

RD That's sort of the ‘90’s web explosion– just all these businesses that were enforcing terms and transactions between two parties. 

DT Exactly. And there were a few like, if I'm just running a website to sell you stuff then it's not third party relationships. So there were some things that wouldn't fall into the smart contract designation, but it is a useful characterization because then you can look at a business, and even now you can look at something that's going to move onto a blockchain or that you're going to launch, and does it have the characteristics where you're enabling third parties to cooperate with each other instead of you're just trying to do business? And how you approach the business, how you approach revenue, how you approach the incentives for people to participate is different if it's this kind of smart contract business rather than if it’s that you’re just rolling out a new online business.

BP So you mentioned you're a lover of distributed systems. I want to talk about how you made your way into this sort of modern era of crypto, Web3, blockchain, and smart contract stuff. In fact, I probably would want to hear which one of those terms you associate yourself with and which you don't. But before we get to that turn of the wheel, did you work on distributed systems in your time at Sun or Microsoft and is there anything there you want to touch on? I'm sure people would love to hear about what in your career you found most interesting while doing that at big tech companies like that.

DT Well, to start with, I worked on distributed systems after the Smalltalk group at PARC. I worked on large-scale massive concurrent programming languages and large-scale distributed programming languages. And so how do you use a network where you can write programs that coordinate multiple machines across a network? Just to be clear, I was a college student so I was an intern at PARC. I was not a principal researcher or anything like that. But we had lots of papers about this stuff, about how to do that in a programming language that could express activity across multiple machines. And so a lot of what I have done since then is still building on that work and leveraging that work. So that had high bandwidth asynchronous messaging between machines, that was the basis where Mark Miller and I –someone that I've done lots of engineering work with at a variety of different places including here at Agoric– Mark Miller and I met in this project at Xerox PARC, and out of that work was the asynchronous coordination and asynchronous messaging of promises which evolved into promises in JavaScript and Rust and C#, and that has a direct dissent from the work we did at Xerox PARC on large scale distributed systems and messaging. And so there's sort of this theme all the way through. We did the first version of that in concurrent logic programming languages in Xerox PARC. In Xanadu, we then did it for doing the high performance messaging from the client to server for hypertext things before the web, and then built the same sort of thing in Java that got used in the brokerage information system we built for Schwab. Went to Microsoft– first at Microsoft, they acquired a company that had a secure email system to integrate into a reboot of Exchange, and that was interesting and it got lots of production stuff out there, but then I moved to the Midori project, which was asynchronous messaging between secure encapsulated components in a brand new operating system to run high performance cloud-based systems and mobile systems and so forth. And it was just this awesome, amazing technology project that got shut down because it wasn't Windows but a lot of the technology has leaked out into C# with async/await, has leaked out into some of the Rust technology, has been used by people like Agoric, like other teams, Pulumi, and et cetera out there that are building on some of the ideas that we developed at Microsoft, again, continuing this growth of asynchronous messaging between machines to do distributed system coordination. 

RD It's interesting, as you talk about a lot of these old problems I was like, “Wow, this is going on with Kafka, this is what's going on with a lot of the sort of container orchestration.” And it seems like these problems are just getting sort of refined and refined and better and better solutions for them.

DT Yep, and some of better is faster and stronger, some of better is more understandable by humans. 

RD Yeah, that's fair. I talked to some folks who have a group called ‘Papers We Love’ who do little presentations to explain older papers or newer papers, and one of their favorite presentations was this guy who does a presentation where he dresses up in an 80’s outfit and he goes through all the problems of the ‘80’s, and it's the same ones we're going through now. 

DT Wow, okay. I need that link. That sounds awesome. 

BP Yeah, that's a classic. 

[music plays]

BP All right, everybody. Today's episode has a very special sponsor. Yours truly, Stack Overflow. Now we all know the frustration of searching for answers on internal wikis that have gone stale, or trying to find that one email or chat thread from months ago with the information you need to get unblocked now. Well, there is a better way. Stack Overflow for Teams is a knowledge base that has all the features you already know from stackoverflow.com, but reimagined for your organization so you and your teammates can collaborate, quickly find solutions, and just be more productive. It's like a private Stack Overflow for your organization's internal knowledge and documentation and it's used by companies like Microsoft, Bloomberg, Dropbox, and many more. You can always try it out; the first 50 seats are free at s.tk/teamspod. And if 50 seats won't cut it, head on over to stackoverflow.co/teams and use the promo code ‘teamswin’. You’ll get a 30% discount on your first year, courtesy of the Stack Overflow Podcast. Alright, spiel over, let's get on with the show.

[music plays]

BP Tell us a little bit about what you're working on these days and how you found yourself focused in that area and maybe what it is you're doing day to day. 

DT So there's this thread I said of asynchronous messaging and promises and programming languages and operating systems to make that easier, so instead of programming individual machines and then figuring out how to coordinate with these other systems, we have the communication model sort of built in and then you're communicating with proxies in one machine versus over a network to another machine, is approximately the same. From a programmer's point of view, you write it the same way. I send a message to deposit money into an account. I don't care whether the account is local or it's across the network or across the internet, my two lines of JavaScript looks exactly the same. That had been a theme starting from even in the world of Smalltalk, and there were numerous, how do you do distributed object messaging or distributed message passing or distributed coordination from CORBA and IOP to GRPC and Cap’n Proto and all this range of things. And so we've been driving the asynchronous messaging part of the world, where synchronous messaging is, “Machine A sends a message to Machine B, waits for an answer and then continues on to send a message to Machine C or another message to be B,” asynchronous messaging is “Machine A sends a message to Machine B and then immediately sends a second message and a third message and a fourth message,” and you might stream out a whole bunch of messages and have the answers stream back, and how do you orchestrate that sort of stuff? So there's that theme throughout research, technology development, deployment, technology stacks for products that we've shipped into the market and so forth. The other theme is that smart contract one, which started at AMIX with smart contracts to do consulting contracts. But out of that, then we did a later project at Sun Microsystems. The company was called Agorics, which is not the same as the company I'm working on, but has a lot of the same roots obviously, and it was to do resource management in the massive networks that Sun was participating in and researching in the early days of the internet, so this is 94, 95, 96. And it was the observation that there's so much bandwidth, there's so much memory that you needed mechanisms like market mechanisms to decide where to allocate it. There was lots and lots of bandwidth, but not enough for a company of 120,000 people to all do video conferences. Where do you dedicate your bandwidth? Where do you put compute resources and so forth? And so we had a smart contract infrastructure, again, pre-blockchain. It was all machines using secure protocols to communicate with each other about their respective positions and rights and controls. So the machine that was the gatekeeper for the network, you had to engage in a remote object protocol to bid for bandwidth out over onto the internet. And you would bid for it, a payment would happen from the bank machine using secure protocols, and then you would get access to a high bandwidth stream that you could send messages out of, for example. And so these were smart contract businesses all dynamically cooperating without human intervention across a network using these distributed secure messaging protocols. And so the cool thing about what I'm doing right now is it pulls that and other security things that I've worked on together with this distributed object stuff, so smart contracts and distributed asynchronous messaging and security approaches all together into one solution set, one problem set, that, oh, by the way, is open source. And so the combination of lots of cool technology pulled together and open source has just been really, really exciting. So we're building this technology stack, rebuilding some of the things we've done elsewhere, but it's targeted for both Web2, so Endo is just node replacement that has async messaging and secure encapsulation of random third party code from arbitrary people where you can run unsafe untrusted code in a box and cooperate with it without being vulnerable to it. And so we do that for Web2, and the same infrastructure lets us do smart contracts in JavaScript for Web3 on blockchain in the interchain ecosystem. 

BP So I think it's very interesting that you are allowing folks to build smart contracts with JavaScript. Obviously, that opens this up to a huge pool of developers who may not have learned Solidity or some other sort of blockchain-specific language. Have you seen a dip in sort of the interest or the applicants trying to come into this world post the most recent sort of crypto winter? Or do you feel like the true believers or the amount of people who see the long-term value in this area has stayed the same? I feel like, from my perspective, there was a big burst of hiring into this ecosystem throughout 2020 and 2021, and that's kind of fallen off a cliff post the Three Arrows/FTX debacle which left a sizable crater in the industry and a bit of loss of trust as well, I think.

DT Right. So I see a mix of things, and the Electric Capital report is certainly quite interesting in this regard. The number of developers in the space is still vastly more than there was a year ago, two years ago, whatever. So there was continued growth of active developers in the space in the last year in spite of the downturn. I mean, lack of trust absolutely had a big impact. Drop in the token prices overall had a non-trivial impact, and you still see 7% year-over-year growth in the number of developers in the space. Now, there are a couple reasons why we are doing –we refer to it as Hardened JavaScript– and that's a standards track addition to be able to enable JavaScript to run where I can download arbitrary third party JavaScript and run it safely inside of a container, cooperating with it without being vulnerable to it getting out to my file system or the network when it shouldn’t or whatever, and that's critical for doing smart contracts. So there are multiple reasons we chose JavaScript. One of them is that it's actually more securable than a lot of the other languages, and we can talk about why that is. It has the object oriented ability to do compositions. You can do better composition and better library construction in JavaScript. But the other is simply that you’ve got to meet developers where they're at. And so we want to see a world where millions of developers can build applications used by billions of users. And to get to billions of users, to get to a lot of everyday applications using decentralized technology underneath, and we should talk a little bit about why that's actually valuable and important and what's good about this for people, but to get that to happen, you've got to enable a lot more developers to be able to build this stuff, and that means meeting them where they're at. That doesn't mean making the perfect next language that at least a thousand people will get excited about. You've got to have something that they already are good at and make that work, and that's been our focus and that's why our energy has been focused around JavaScript and that's why we're excited about even having other chains adopt some of this technology so that they enable more developers is going to be a big win for the overall Web3 decentralized ecosystem. 

RD So, we wanted to get into why this is important, why solutions like the decentralized consensus-based ledgers like blockchains and others, why those are an interesting and valuable technology for folks to consider.

DT Yeah, you asked about what got me into it. When I finally understood that, that got me excited about it. So smart contracts existed pre-blockchain and were successful– trillion dollar market cap before 2015. The gold standard of blockchains is multiple machines in multiple jurisdictions administrated by independent parties cooperating to achieve state information: Dean has $100 in his bank account; choices: Dean made a bid and then withdrew it but the auction closed at the same time. Did Dean get his money back or did he win the auction? You can't have it both ways, there's only a hundred dollars. Is it back in my account or do I now own a piece of art? So choices and the outcome of computation where that operation was the result of computation. So Bitcoin was the first blockchain that did this. I mean, it is a smart contract because it's software that's orchestrating certain kinds of relationships between third parties, but it is operated on multiple different machines. And this problem of making choices, I mean, we do that all the time in software, but that's easy to do on one machine, relatively speaking. You make a choice, the outcome happens, you write it out and everyone believes you. The problem is that one machine is relatively vulnerable, can be compromised, can be buggy, can be backdoored, can be denied service, all those kinds of things. Getting that to come out of a collection of machines operated by independent parties– that's hard. And that's where this stuff that people were working on in the 60’s, like Paxos, and this turned into Raft and Kafka and all these kinds of technologies for coming to decisions in a decentralized fashion. And so blockchain, that core technology that all the froth, just like you had when the internet was rolling out, you had all this froth and crap going on that would come and go and there'd be up cycles and down cycles, same thing happening in blockchain. But the big value is that advancement of that consensus infrastructure, and the advancement of the zero knowledge infrastructure, but that consensus infrastructure is the heart of getting multiple independent machines to efficiently come to a robust consensus of, in my example, did Dean win the auction or not? And that executes code with a level of integrity that does not exist anywhere else. People talked about replicated execution in individual machines or replicated databases, but I can’t tell you the number of times I had RAID drives where they both failed together. Or Enron had replicated machines for their auction engine for electricity and people slipped in transactions at the close of the day because they had the trusted backdoor. So there's lots of reasons to do decentralized stuff. 

BP Excellent. Yeah, I mean I think what you say is definitely true. It was kind of a watershed moment, like you point out, to do this in a way that brought it outside of that trusted first party. And I think in some ways that is what excited so many developers, this idea of getting to contribute to building something that was more open, more diffuse, and where their input into the ecosystem would be a lot more visible. They wouldn't be working on a product inside of some giant corporation. We have just a few minutes left. I think one of the things I'm interested in is what you're excited about working on over the next year and what you think people in the ecosystem might be aligning around in this sort of current period of retrenchment. I know it was mentioned in the Electric Capital report that a lot of folks are figuring out ways to get Rust into the ecosystem which is always the most loved language in Stack Overflow's developer survey. But yeah, curious to hear what you're thinking about for 2023 and then we can take it to the outro.

DT Sure. So I find Rust very interesting as well, and we'll eventually integrate it in the Agoric blockchain. Agoric is designed for writing smart contracts in Hardened JavaScript. Regardless of the success of Rust, there will be millions of developers that will want to and be able to do JavaScript and so I am eager for Rust to succeed broadly and I am not afraid from a competitive point of view because what we need is to reach all those other developers and that’s sort of our mission. But we have rolled out our platform with particular smart contracts market institutions to lay the foundation for an economy, but it has not yet been opened up for arbitrary people to contribute contracts. We're moving to releasing sort of the final pillar that we're building for the economy of the stabletoken IST, and it's off to the community to decide how that grows, how that gets deployed, and how that grows from there. But then we moved to, third parties have been building applications in JavaScript on our platform and they'll start to roll out. So they'll start to roll out later this year. I'm really excited about that. You build a developer platform and you know nothing until somebody else has developed stuff. And we've seen what they've built and so we're excited about what they've built, we've gotten feedback and learnings from what they’ve built so we've got improvements to make sort of on an iterative basis going forward, but I'm just so excited to finally get to that point where we start to look at adoption metrics of our platform because we can now reach developers and give them a place to build in JavaScript and deploy it and have a successfully deployed application. So I'm really excited about that. 

BP Cool. 

RD Do you have a specific project that you are most excited for that sort of blew your mind when you saw it implemented? 

DT Oh, interesting. There are a couple at different levels. The hierarchical NFT stuff that Kryha built on the system. All these people are excited about NFTs and I know there's a lot of negativity around the speculative bubble, but people have spent more money and there's been more real revenue on businesses that use it, where it's not a million bucks an NFT or whatever crazy thing is going on, it's tickets and fan engagement and music engagement and some of these things that really are changing the game for the creator economy, but they're all very, very simple. We're just at the beginnings of what you'll be able to do engagement-wise when you can have a world of assets that third parties can extend. As soon as you have third parties able to extend your engagement with a band or a sports team or whatever and there's money involved, you need blockchain because otherwise you've got bad incentives and that's one of the big things that blockchain will open up across a broad range of human endeavor. And so I'm very excited about what's happened there. And so what Kryha built is instead of just, “Here, you own this thing, or you don't own this thing,” it's hierarchical NFTs. So their example of gaming where I've got a character which is an NFT, it's a transferable asset between games or I can build up sort of gaming capital with respect to it, or what have you. But my gear are also NFTs, and so the collection of those is an NFT of a character that has a particular set of gear. So instead of it being, “Oh, I'm just going to have an auction for randomly generated characters and hope I can get one I like,” it's like, “No, no. Now I can engage and build up the portfolio of a character that I like for whatever set of gaming or social engagement what have you I'm going to have.” And you might do it that way, you might do it with, “Here's my character for all the concerts and I've got the achievement badges on my chest that are also hierarchical NFTs.” So that was interesting to see. I mean, it helped explain where would this world of assets go when it wasn't just about trading of value, but it was really about engagement in different ways in groups, and that's a big exciting sort of future element in Web3 world. 

BP Right, that makes sense to me. I've always felt like you could see the metaverse best in video games and other areas where people clearly invested many, many hours of their lives and a lot of their money into getting the coolest skins or avatars or things like that. How we make that so that you can share those avatars across multiple platforms or so that they can move in sort of a trustless or decentralized way, maybe we'll get there eventually.

[music plays]

BP All right, everybody. At this time in the show, we always like to shout out someone from the Stack Overflow community who came on and helped to spread a little knowledge and save a question from the dustbin of history. Thanks to GLJ, awarded a lifeboat 23 hours ago, “How to convert a string to JSON in JavaScript.” Doesn't mention Hardened JavaScript here but maybe it's also possible. Appreciate you coming on, posting up an answer, saving this question, getting a lifeboat badge. Around 20,000 people have viewed this question, so appreciate it. I am Ben Popper. I'm the Director of Content here at Stack Overflow. You can always find me on Twitter @BenPopper. If you like the podcast and you want to chat, email us with questions or suggestions, it's just podcast@stackoverflow.com. And if you like the show, the best thing you could do is leave us a rating and a review. It really helps. 

RD I'm Ryan Donovan. I edit the blog here at Stack Overflow. You can find it at stackoverflow.blog. And if you want to reach out to me, you can find me on Twitter @RThorDonovan. 

DT I'm Dean Tribble. I am CEO of Agoric– that's at agoric.com. You can find information about us there, or on GitHub we have vast amounts of open source code. And you can find me @DeanTribble on Twitter or Dean Tribble on Telegram.

BP Awesome. All right, everybody. As always, thanks for listening and we will talk to you soon.

[outro music plays]