 Hi, everyone. Namaskara! My chab... Ah! Chenagidira! My chabfowler... I'll speak in Hindi if that's okay. No, not really. Sub kuch bulga. Deed saal ke liye, hum Bangalore meretite, 2002-2003. Aaj ko hum Hindustani logon ke pasne hiye, kung ki hum Arkansas meretite. All right, and that's the end of my talk. Thank you very much. That's my trick in India. I just speak bad Hindi, and people are like, oh, my God, speaks Hindi, and you won't remember anything else. Although a lot of people then say, where are you from? And I say Arkansas, and they say, but originally where are you from? Pakistan, right? That's what most people say, because I look like I'm from Pakistan, apparently. But if I'm in Mexico, and I come across the border to the U.S., they do me, and they think I'm from Mexico also, and they don't want to let me in. Anyway, glad to be here. It feels like a second home to me. I love Bangalore. I love the people of India. I especially love Dakshan Khanna, because it's the best in the world, of course. Today, I am going to speak about the future of software development, which is a pretentious topic. I work at Microsoft now, as the slide said. I am also a venture capitalist, and I invest with a company or a VC firm in Berlin called Blue Yard Capital. We do high-tech investments, and we have done many, many evaluations of very futuristic software tooling and development companies. And so it's sort of the focus that I have in Blue Yard to think about the future of software development. So I'm going to make some predictions, all of which will be wrong, guaranteed, but I'm going to share them with you, and I'm going to tell you about things that are happening currently that make them believable, at least. And first, I wanted to mention, Naresh said he's been trying to get me to come here forever, and it's true. And then he told me when I got here that he asked everyone if they had heard of me and no one raised their hands this morning, so I thought, okay, I should have come earlier when I was more relevant, so apologies for that. But I'm speaking to you now from the future. So here are my predictions for the future of software development. Software jobs, as we know them, whether they be testing or development, will be completely obsolete. What? Okay, he's yelling at me already. I didn't even say anything. All software will be open source in the future. There will be no closed source commercial software at all. And here's where it gets really stupid. There will be a blockchain-based token economy that will be built around open source software. And so funding for software will be done through buying into, buying shares in open source software projects, and owning shares in those software projects. And the work that you do will actually be paid to you by contribution. So if you fix an issue, or even submit a valid issue, or make a documentation patch, or actually contribute a feature, or add a unit test, you'll actually get paid for that. And that's how as a software developer, you will make money. However, most of the software that we develop will not be developed by humans directly. It will be developed by bots. And I was just in Rahul's talk. I'm probably going to make him mad if he's in here now because he was talking about AI and how it can't do anything. But I believe that we are on the cusp of software being large-scale written by bots. And so it will either be written by bots or it will be at least assisted by artificial intelligence. There are a lot of companies doing this already. And software won't be run on normal servers anymore. It will be run on large-scale, decentralized, distributed networks. Some of the software might be running on your phones or your computers, and we won't really have a concept of separate computers. And then really smart people will start stepping in and they will spend their time, programmers will spend their time writing bots that can scour open-source software repositories looking for opportunities to make money. Maybe there's a security vulnerability that is detected in the wild. The first person who creates the best bot to go patch all of the open-source software in the world on these token-based networks will just get rich from their bots going out and doing the work for them. So this is what it looks like in the future in my crazy vision of the future. Now, of course, probably like I said, none of this is going to happen as I said it, but I want to talk to you about what's happening now that makes some of these things believable and not just far off in the future, but potentially even kind of close in the near future. So in my tour through the land of investment, investment in VC, it's kind of funny. You start out being a person who's carrying around Martin Fowler's refactoring book yelling at people about code quality and unit testing and somehow I've worked myself into this position where I'm investing in companies and I'm meeting companies that are doing things like 3D printing vehicles that are autonomous run by AI, literally 3D printing buses that go around campuses and deliver people with no drivers. I don't know how that happened, but it feels to me like that happened very suddenly because I remember a time very recently when this sort of a story seemed crazy. Does anyone remember when the announcement came out? I think it was on April Fool's Day in 2013. There was an announcement about how Amazon was going to start investigating drone delivery. And right now that seems like, okay, obviously, right? But then people thought it was a joke and I'm actually not sure today whether it was a joke. Do you remember thinking that? People didn't know, right? Is this a joke? Has Bezos gone crazy? No, that's actually totally possible today. It's not happening yet, at least on large scale, but it's possible. 3D printed rocket engines. That's another one I saw at a pitch day. It's actually true. In fact, 3D printed satellites that can be launched into space affordably with open source operating systems all at a price that I can actually afford today. So I know the people that I can contact and say, give me a satellite, 3D print me a rocket engine, shoot it into space, and I'm going to run my custom Android code on it. This is possible today for me. Even simple things like voice recognition. You know, when I was a kid, I used to work with Microsoft that you saw on sci-fi, and now they're here. I mean, my phone is spying on us right now, and yours is too. It's amazing. Some news that came out of Microsoft, and just like kind of a boring blog post from the marketing team at Microsoft, that the farms, the most important crops of the future will be the data and the knowledge harvested by autonomous drones. That's just so strange, and it's actually happening. Speaking of drones, here's something that's happened to our society. We have created a bunch of androids that are walking the streets, and they no longer are autonomous themselves. They're being controlled by these little devices, and everyone has one. Here's the weird futuristic thing about this. Like, no one ever knew when I was a kid we would all have flashlights all the time. Everyone has a camera, and everyone has a flashlight in their pocket. But we have this, and this is a really relevant picture, an important piece of what the future could look like, because through stupid things like games with colored blocks and other nonsense, you know, TikTok videos and stuff, we have changed fundamentally society and people's ability to concentrate and ability to just be okay being in the world by themselves. This is not a positive thing, I don't think. Maybe it is, I don't know. People are pretty bad, but this shows that we have, through fairly trivial combinations of technology, fundamentally changed human behavior pretty much all over the world, and this has happened in the last 11 years since the smartphone came out. So all of these advances are happening, and this is me as a venture capitalist now, going around from company to company and pitch day to pitch day, and I'm thinking we can 3D print autonomous buses, but what are we doing for ourselves as software developers? It's kind of frustrating. So how many of you work in one of these environments? Like an object-oriented programming language? Some of you might have been doing this for years, right? Like when I lived in India in 2002, I was hiring people to do Java development, and I sort of infamously put small talk as a requirement on the job postings so that I could get the smart Java developers, because they also knew small talk. It was only three people, but it worked. Maybe one of them is here, I don't know. So this cutting-edge technology that you are still heavily invested in is based on the work of these two people. Anyone know who these are? Someone does for sure, yes. So these are the creators of Simula, and this was created in 1965, object-oriented programming. The pervasive paradigm today for software development was created in 1965. This is what Simula code looks like. Now, you don't need to actually be able to read this, but look at the list on the right. All of these things that exist in Simula, they're still sort of considered modern today. It's amazing, isn't it? It's embarrassing. 1965. Was anyone born in 1965 in the room? One person. No, two, maybe. I don't know. I'm not going to point at you, because you're at the back. So before most of us were born, programming languages already did what the majority of us are using today and still learning about thinking about as modern. Now, the cool people in the room, of course, they've moved on to the future, which is functional programming, right? Anyone doing functional programming? So you're the cool ones and you're in the future. It's only three people here, so no one should feel bad. This is my passion in software development when I'm actually programming, which is almost never, unfortunately, anymore. I love Haskell. You should all learn Haskell. I'm going to go away from the talk. Thank you very much. This stuff was invented in the 50s. This is even older. So this is John McCarthy, 60 years ago, who created Lisp. And Closure, which is one of the coolest functional programming languages right now, is a Lisp. So, wow, we have not really done anything in the last 50 or 60 years. It's embarrassing, isn't it? So how about this? Computing or containers, orchestration, that kind of stuff? Yes, of course you are. You don't have to raise your hand, sorry. Anyone ever looked at Erlang? So, Erlang or Elixir, in the 1980s, was basically doing what we're all trying to get Kubernetes and Docker and microservices to do now. But it was doing it better than any of us have achieved so far with Kubernetes, Docker, and microservices, and all the other junk. So if you look at Erlang and OTP and the system that was created there, it's pretty amazing. But 1980s, so that's at least 10 years ago. I'm not very good at math, because I'm a music major, but you understand. Probably here in an Agile conference, many of you have seen a chart like this before, the Standish Chaos Report. Standish Chaos Report is run by the Standish Group, something like annually. They go out and they do surveys of large-scale projects of big enterprise organizations. And one of the takeaways from it that is most often cited is project success rates. And by the way, some of you are thinking Standish is garbage and it's debunked and whatever. You might be right, but I doubt you'll disagree with their findings on this. So here is the 2012 results for project success. Basically, you've got 43% challenged, 18% failed, and then 39% successful. So challenged means significantly over time or over budget and or over budget, and failed means just canceled. So I would say all of those equal failed. You know, I wouldn't call any of those successful for sure, but I'd just say the whole thing is red there on the right. That's pretty embarrassing. Now this is 2012, so of course it's 2019, so obviously we've gotten a lot better by now, right? No, we have not. If you graph the results over the years, it just sort of looks like this. You can't see any kind of trend. Basically, we suck. We have always sucked and we're always going to suck. That's what Standish tells us. You don't need to look at the report anymore. This is what it's always going to say. It's sad. Well, of course nothing's changed. We're still using technology and approaches that we started in the 50s and the 60s. And I think it's because our intelligence and arrogance get in the way. We think, well, programmers and testers will never be replaced because these are creative activities and computers can't do creative things. They can just do rote automation. For example, this. This is created by a computer. And you can go to deepdreamgenerator.com to see a bunch of these things. Again, last few years this kind of stuff comes out. I would argue that this is creative by some definition. And if it's not, you can't tell that it's not. It would be pretty impossible for anyone to determine whether a person created this or a computer. And I didn't plug in my sound, but computers are generating songs. So if you look at Daddy's car here, there's a whole field of music generation that's going on. And I think this is one of the most interesting examples of it. Daddy's car is a pop tune that's supposed to sound like the Beatles. And it really kind of realistically could be a Beatles song or at least like a King Crimson song. It's kind of amazing. So hey, I guess computers can actually do creative things. I would argue that I would bet that if you go through some of the stuff that you'll find online in Deep Dream Generator, as I said, and in music generation you will not be able to tell which things are created by computers and which things are created by people anymore in some cases. Also a bunch of work being done on poetry generation. People create some pretty bad poetry so that's an easy one, I guess. A nexus now. There's a bunch of stuff, I think, and I say this from scouring the world, looking for bleeding-edge software development tooling teams and people taking software development and operations to the next level. There's a bunch of stuff that's coming together that makes new things possible that weren't possible until a few years ago. Until GPUs came along and FPGAs and other ways of doing acceleration, for example, to speed up machine learning. And the list of things includes the fact that instead of having CVS and subversion repositories that we install inside our firewalls, we have these large-scale distributed online collaborative code repositories. We're all pretty used to the fact that we can use something like GitHub or one of its clones to work remotely. It doesn't matter where we sit anymore. Much of the world's software is open source now. We have distributed and serverless computing, democratization of AI largely through advances in hardware and speed. So things like neural networks, which we had discarded as a useful technique after the 80s, came back in full force with deep learning and all the other related stuff that you see today. And then we have blockchain and digital economies. And you may be sort of thinking, oh my god, he's going to talk about blockchain. I will apologize for that later, but you'll see that it's relevant. So, looking at some of the trends that we have now, I've heard many people just today say the word microservice. Thank you, Fred George. It's sort of ruined now because it has a name, but microservice architectures are now pervasive. We're all doing this sort of work. We're also kind of, by default, doing immutable infrastructure, this style of deployment. That's at least the cutting edge for those of us who are there. And the style, just in case you're not familiar with it, with immutable infrastructure, just like processes in an operating system, you don't upgrade a process, you just kill it and restart it. When you deploy you destroy the existing servers and you replace it with new servers. That's the idea. It's this idea that you just throw away servers. That was not possible in the 90s because you would literally have to throw away the server, and today you don't have to do that because everything is virtualized and now sped up through systems like Docker. So Docker basically gives you address spaces, separate address spaces where you can put code and entire operating system images, partial operating systems, and it gives you a deployment methodology, the immutable infrastructure style that I was talking about before. And then once you have these Docker containers, which are separate address spaces, you have packaging and the ability to manage multiple processes, processes hierarchies, and use orchestration systems that allow you to set up process trees that interact with each other. Then we have serverless computing like AWS, Lambda, Azure, et cetera. This is the culmination of all those things where we figure out that if we agree on some conventions, the whole concept of a server can just sink down into the scenery. We don't need to think about servers anymore. It's not truly serverless, of course, because there is a server somewhere. But with serverless computing, you don't consider the server. It doesn't matter anymore. There's just this distributed fabric on which you deploy and run your code. It's sort of like what Sun was peddling back in the 90s and early 2000s. The network is the computer. Sun was a little bit early with this phrase and, in fact, the network was not the computer back then. But now it really sort of is, especially as you look at stuff like serverless computing in general, but especially serverless computing, it strikes me that we are building all the layers and abstractions around an operating system again. That's what's happening now. And that's why some of it smells like old-timey stuff and doesn't really seem to be so futuristic after all. So if we're building a new operating system where the network is the computer, you need an OS on top of it, maybe we need some other abstractions to make things possible. So some of the things that I've come across that I find interesting. One example is a project called FastLang, which is created by a friend of mine. It's an open-source project that specifies a standard conventional approach to describing serverless functions. And you can see, in this case, it's written in JSON. It's kind of ugly, but at least a ubiquitous language. So it gives us a way to say there are functions that exist out on the internet. What if we had a standardized way to describe how we interface with them? Not just to describe, but to actually call them. That's what FastLang is. And the workflow is basically any provider, whether it be your own thing that you run in a Docker container or it be Azure functions or AWS Lambda could implement this. And then you could think of the entire internet as a surface on which you could call things in a standardized fashion. And it's a nice simple approach. So imagine if you took this to the next level, you're specifying types for all of these functions that exist in serverless fashion all over the internet. That gives you the ability to, in a strongly typed manner, know what the inputs and outputs, potential exception modes are allow you to specify whether or not there are side effects of the functions. It gives you the ability then to pipeline in the same way that you would with Unix processes or functional programming functions on the internet. And that's what we're thinking about, like building abstract, building an OS across the network, right? So imagine what would be possible there. You could say that this thing running over here on Heroku calls this other thing and pipes its output to this other thing that's running on AWS Lambda and this other thing that's called on Azure. And if they were co-located, if you had these ubiquitous type definitions and you knew which things were idempotent, for example, you could even do things like optimize on servers transparently. So there would be no network round trips. So you can do all sorts of interesting things with this network OS that we're in the process of building if we can only get together on some conventions and standards. And the people who did fast laying are working on something called standard live. And if any of you are C programmers or testers that have worked in a C-oriented environment, you would recognize the spelling of standard live is supposed to look like the C standard library. And the concept is taking, you know, if you're a Unix programmer, you know that there's a standard library in C, you over time learn what all the functions are, they become standard. You know how to do formatted printing and IO, et cetera. What if you had a standard library on the internet with standard conventions for calling the code and for the functions to talk to each other and you didn't have to think anymore when you wanted to do common tasks that we all have to do on the internet. So what you do on the internet today, if you allow yourself to view the network as a computer and us building an OS, what you do on the internet today is incredibly primitive and annoying compared to what you would do if you were writing C code on Linux or on HP UX, god forbid, or something like that. So I can't make HP UX jokes anymore because no one's old enough to have experienced the pain of it, or AIX. So I can't even say that I can't because you don't know what I mean. Apologies. But sometimes you just have to tell jokes to yourself. That's how we get by in life. So this is just another example from StandardLib showing you the power. If you look at this line that says let tracks equal, you see what's happening here is there is automatically a namespace in StandardLib called Jacob Lee because Jacob Lee has deployed code in that namespace and he has a function called recommend music. It is versioned, it has inputs and outputs. You can go look them up through the standard documentation of the standard live of the internet and call and it's all just completely transparent and you don't think about the location of this thing. It could be on AWS, it could be in someone's data center, it could be on Hiroku. I think this is a really powerful thing and it's aspirational because even this if you try to imagine going back to your workstation and really writing an app this way, you probably don't believe that it's possible because it isn't. But people are working on this stuff now. So let's talk about real serverless computing and this is where I go through the quick Bitcoin apology or blockchain apology. So a few years ago there was the crazy hype and I assert that we were now in the trough of disillusionment and I say this from the vantage point of someone who is a VC who has invested in a bunch of blockchain related technologies and also turned down most of the possible investments in blockchain related technologies because they were garbage, absolute garbage in the same way that most people who say they're doing agile are actually doing something that's absolute garbage, right? See, I tailor this thing to the audience. I only wish I had put some more offensive stuff in here for you guys but I do what I can. So there is absolutely a foundational change that can happen if we continue down this path of the real valuable blockchain stuff that's going on. It's unquestionably a set of technologies and techniques that can change the way the internet works in a good way, in a positive way. But many of us will run screaming from it because we've seen all the trash that's happened and we've seen all the scam ICOs that have happened that will clearly never amount to anything except for making someone rich and making a lot of other people poorer. So I'm going to talk for a minute about what blockchain means. How many of you do you think you actually describe how a blockchain works right now? Okay, good. This is the right crowd because I'm going to do that and if you could already do it you'd be bored. So what is a blockchain? It's kind of silly actually because we talk about like blockchain tech and what is your blockchain strategy? A blockchain is a linked list. That's what it is. So it's like saying what's your linked list strategy? You know? And maybe they did that in the 80s, I don't know or the 70s. But a blockchain is literally a linked list but it has some interesting properties and those are like any linked list every node points to the previous node. But in this case it points to it by way of a cryptographic hash. So the hash actually is of the contents of the previous node. The previous node, unless it's the root node also points to its previous node which means that every step the cryptographic hash contains every possible value all the way back down to the root. If you change any value down in the middle of the tree the hash is invalid and you literally can't traverse the tree anymore. So that's all it is. And when I say hash I mean like a shahash the sort of hashing we're all probably familiar with. That's all it is. That's what a blockchain is. Not very special, not very fancy. And so, you know you are now all blockchain experts. At the end of the presentation by the way I will have one small link that is easy to remember that will have links to everything. So you're very welcome to continue to take pictures of the slides but also know that I've got a bunch of stuff you can click on later and read in detail including a link to this presentation that I got this picture from or sorry this medium post that I got the picture from that does a great job of explaining blockchain tech. So a blockchain is a linked list and the magic of it is that it is tamper proof. That's all. It is not something that can actually be distributed across a network and maintain consensus and that's where this concept of proof of work comes in. Now proof of work is not the only type of consensus but it is the one that is built into Bitcoin. Proof of work in a nutshell says basically anytime someone wants to commit a block into the blockchain so a node into that linked list they have to race to answer a very difficult math question. And the math question is set up so that it is trivial to check whether it's right and it's very expensive computationally to generate it. So this means that you have computers all over the internet copying this linked list around getting a broadcast of the changes that someone wants to make and all racing to commit that change and whoever commits the change gets a coin in the Bitcoin world and hopefully that coin is worth something. It's worth a lot less now than it was two years ago but this is a really stupid thing but it's incredibly powerful because it exploits our greed and our desire to make money so that we race against each other since there's a financial reward for calculating this thing we're all racing to calculate to calculate the number faster than everyone else which makes it very very difficult to game the system. Unfortunately it has another effect similar to the zombie thing that I showed you earlier with the iPhones that we're just running the processors like crazy trying to calculate these numbers. We're burning up so much energy we could destroy the planet. There are people who are not idiots that say that Bitcoin and blockchain cryptocurrencies could actually be our civilization's downfall and you can find this is an old article I'm sad to say and in this it was talking about using more power for Bitcoin than the country of Ireland uses just to generate these stupid numbers but it's all a race and the purpose of this race is that it forces a consensus using incentives. We're all incentivized to get the coin so we're all racing to generate this number and that is really the core of what makes real blockchain technology worth exploring and the things that will survive in blockchain technology are the ones that exploit that and expand on it. So Bitcoin is an incentive based protocol where the incentive is driven by this stupid generation of a number. Imagine if you could set up something like Bitcoin where the thing we're all racing to do in order to get paid is actually valuable to the world. So this is one that I always cite as the best example that I've seen and I invested in this so full disclosure you cannot invest in it now so I'm not really selling you anything because it's closed right now so you can't accuse me of trying to get you to buy something but I do suggest that you download this white paper and read it if you have any interest in this. What Filecoin is is a replacement for services like Dropbox, OneDrive, etc. for file sharing that has the potential to be way better than any centralized service could ever be and at the same time would be encrypted end to end and no central player would own the data because right now if you put your files in Dropbox you don't actually know what they're going to do with it you have to trust them but with Filecoin they would be distributed all over the internet and no one would have control only the protocol would have control and instead of doing proof of work they have created some novel consensus algorithms and we're not going to get too deep into them but just to give you a taste of what they do they have proof of replication which is an algorithm that is cryptographically provable that proves that a file that you have is actually replicated onto your disks so that you have them and that it's replicated across the network and you will be rewarded as a server of the file for having replicated it instead of just pointing somewhere else and then we also have proof of space time which proves that you had the file for a certain amount of time now this is important because in a distributed file solution where you're paying someone to serve up files and I should have said this the incentive here is I request a file from the Filecoin network and you can all broadcast back if you have the file I can give you that file and if I get the file from you you get paid for having transferred it to me you get the basic idea around Filecoin proof of space time proves that you actually had it before I requested it to avoid the scenario where you could say oh I have the file and then go get it from someone else and pass it on so it proves that you have it there are all sorts of other things built into the protocol if you read it about being close to the source so you're more likely to actually get paid and to win the race if you and I are on the same network and I request the file and you serve it to me so you can imagine it gives you this distributed geographically distributed replicated encrypted end-to-end file serving and storage approach where no one has any ownership you don't have to trust any central company and potentially based on the greed of the participants you would get something from a local network or something very close even if you're in a place that isn't normally served by large cloud vendors it just has to do with demand pretty powerful stuff and there are a number of other protocols that are built like this that are worth checking out now when I said that let's talk about real serverless computing you start with the blockchain stuff and then you move to Ethereum have you heard of Ethereum anyone a few or maybe third of the people so Ethereum is one of the cryptocurrencies that has gone like this in price and when I first started learning about Ethereum I thought okay it's a cryptocurrency it's somehow better than Bitcoin I'm not sure how and then I talked to some of the people who were core developers on Ethereum and they said it's a distributed virtual machine and that's kind of where it stopped and for a while it was really hard to understand how but the idea actually is that with Ethereum you can create code deploy it into the blockchain and the blockchain is just this ledger you know this linked list thing so it's a terrible distributed slow database that runs across the world you deploy your code into it because it's a blockchain your code is tamper proof you know that it's safe you actually can never change the code the only way to deploy more code is immutable infrastructure basically you have to create new versions the code runs they call it a contract so I'm going to show you what it looks like here is an example program and we're not going to go line by line through it but you can see this is real code that someone has programmed in a language that sort of looks like JavaScript there are multiple languages that you can write and compile into the distributed virtual machine of Ethereum this is called Solidity it's the default language from Ethereum but it actually is a virtual machine and you can really write code that runs in it it's code that will run slower than any code you've ever run and it will access a database that is the world's slowest database but it will be tamper proof encrypted end to end it will you can never turn it off which has an interesting property because as long as the decentralized list of computers on the internet running Ethereum is still up or that some are still up your code will still be there but we have now a virtual machine oh and I left out an interesting thing it's kind of like Haskell it's very very hard to do I.O and only people who've ever tried Haskell will understand that joke but it is almost impossible to do anything outside of the virtual machine so to deal with that there are a bunch of new technologies that are coming layering on top of this VM and guess what serverless we're building an OS piece by piece and some of the examples of that are Filecoin as I talked about building a distributed file system Zeppelin OS handles a bunch of things for package management and process management but we're actually building what I believe could eventually be a usable distributed runtime where there is actually no server there is this abstract concept of a server of course it's running on computers but there will never actually be a server behind this and that's why I say real distributed computing or real serverless computing now an interesting property of all of these blockchain projects is they are all 100% open source the ones that are not open source are the ones you should never use because you have to be able to remove trust of individuals and trust the protocols that are kind of inherent in the model of blockchain projects that they have to be open source so that you don't have to trust them you need to be able to audit how they work now because they're all open source it means that the software itself is not the valuable thing and this is what contributes to what I was saying earlier one of the things that contributes to what I was saying earlier about all software potentially being open source if you look at on the right here this article you see that when Filecoin did its ICO it raised $257 million in an hour or two hours something like that so that company is now well funded and what they're going to do is for the rest of their existence they'll be writing nothing but open source software and they're incentivized to write very high quality open source software because people have to trust the code and they have to trust the protocols and the value is in the network they're creating with these tokens and the consensus mechanisms and all of this stuff the blockchain that's where the value is we all just buy into the network we don't buy the software anymore so I think that software is already becoming primarily open source now I live in a little bubble of nerds that have been doing open source software since the 90s and before but you can see a bunch of stats and it probably rings true to you now that almost all companies are relying on open source software I mean even the very famously closed sourced iOS is built on an open source base a bunch of the stuff in your phone no matter what phone you're using is open source I have a team at work where we're doing developer relations for various audience communities and one of them is open source and in that audience I have to actually explain to people at Microsoft no I don't mean people using open source software because that's everyone now and Microsoft is still catching up with that notion but I mean people actually creating open source software that is now a viable segment of the population that we should be thinking about catering to as a company because so many people are writing open source so because all software is and will be open source we need different funding models for open source and you know there there's the obvious old one where companies sponsor it basically popularized by Red Hat and company back in the early dot com bubble days of open source then you have the ICO model where people are building blockchain based stuff and the networks have the value and then you have a wifi pop up an interesting project that is coming out of Berlin called OS coin is actually the implementation of this blockchain based protocol what they're trying to do now is completely reimagine and reimplement open source software as an incentive based protocol so that you would actually be paid for things like creating issues closing issues contributing to documentation etc now because so much software is open source we have popularized through github the concept of pull requests and this leads to the next major change the pull request as we all get used to it it starts to not really matter where we sit anymore you know it used to really matter more maybe this is heresy an agile conference but I might be at home I might be on an island somewhere I can submit code make a pull request, people can make comments and it's sort of interesting you realize after a while that when you're looking at a pull request and people are making comments on your code you don't really know if it's a person behind that anymore I mean it might be a name you don't recognize on a large team that can very often be the case or it could be a name you do recognize it could be at chat on github which is me but you don't know that I actually did it set up a script that looks for all pull requests and just types lol on part of your code for example which I have done before to my team so how do we know if it's a person we're interacting with we don't anymore and that's really cool and the first implementation of this that I saw that really excited me was a company called Sneak and what they do is actually not very intelligent but it feels really intelligent they look for vulnerabilities to open source libraries as they are reported on the internet and then they scan your repositories to see if you depend on those open source libraries if you do they automate the creation of a pull request with a patch that just upgrades to the safe version and links back to the disclosure of the security vulnerability and that's it and the cool thing about that is when I saw this the first time I realized I don't like code that changes my code because I don't trust it but if code submits a pull request and I can review it just like it's a human that's pretty cool actually I can see the diff probably won't change the code if I comment on it if I give it suggestions but I realize then that this pull request model is extremely powerful for the future of us being able to automate the creation of code and it's really interesting to think about where that can go there are a bunch of teams working on this now and as machine learning speeds up further through acceleration GPUs, FPGAs and perhaps stuff like quantum computing if that pans out and it's pretty close potentially maybe we don't know actually but it could be really close if it does everything is different it means that we can start doing things like automating through AI the creation of our AI models using machine learning to create machine learning to create machine learning and if we can do that we're creating programs now that we already do it right we don't write all the code in these apps that use ML the machine is writing the code we're training the code the programs evolve maybe that we might get to a point someday where the machines can code themselves because they're doing it in your phone and on my computer right now all the time so maybe someday we'll just train software like dogs and we won't write code anymore at all maybe you know quantum computing happens that raises all sorts of other weird concerns like how do we audit that code how do we make sure that it's you know how do we know that it's not biased against people there's whole fields of study to figure out whether code is biased you know does it only recognize white people's faces that's unfortunately something that exists in the wild and because we have these massive code repositories like github for the first time in history it gives us centralized dumps of code and activity around code that we can analyze as huge corpuses corpi it doesn't matter of data that allow us to build models machine learning models the same way we would over natural language there are projects that are now trying to look at all the world's code and turn it into a common language so babelfish is an example of that and then researchers who are taking these common representations and turning them into semantic representations that allow us to reason over them and here's the best pointer to all this stuff that you might find ml4code.github.io this is a colleague of mine but he's a researcher and he's just cataloging the world's efforts in ml-driven code creation it's not just code though what about repository activity think about all of the repositories that you've worked on in the last couple of years every commit, every comment every revert there's a massive interesting information this is actually from 2009 or 2008 michael feathers wrote a really interesting article about just analyzing file churn versus complexity and it's amazing the intelligence quote-unquote that comes out of stupid analyses like this but think about all the things you can do if you look at the activity around code and you have a semantic representation all of these things are already possible and researchers are working on it one of my favorite examples is a team in Israel called Kodota and you can actually play with the examples on their website they've downloaded all the source code from github they're out of Technion University in Israel the lead is a guy named Iran Yahav who has been doing program synthesis machine learning work for 15 years or something people thought he was insane but the results are remarkable it looks like magic some of the things you can do it's like code completion of an entire app in some cases which he admits would be stupid but is possible and it's not just code you can automate automated testing why would we even create user interfaces anymore what about the data behind stuff like performance and site reliability engineering so much data flowing through these things when there's an outage do you still go look at graphs and numbers and decide which things to restart and create more of there's so many things that we can do all based on this nexus of things that have changed so you're probably not going to go back and throw away all your code after watching this talk I might actually but not because of the talk so what do we do now well I think the first thing is to realize that we need to do something different and as an industry at least allow ourselves to think more ambitiously than we have been thinking we haven't been applying all these incredible advances that we are to stuff like self driving cars to our own worlds so let's do that open source or die that is my message I think companies that are trying to build closed source software they're destined to fail and it's not a 0-1 switch that you can make overnight but whether it's internal software or software that you're selling you should think about how to open source your software and also how to use as much open source software as makes sense for you something that will apply to all of you in order to be ready for this crazy future no matter which one happens it is universally true that decoupling will be a good thing for you to do because if it turns out you should throw away large swaths of what you exist, of your code assets the best case is that you have clear interfaces between them and that the parts that you will keep are well separated and then dive into this blockchain stuff especially here in the trough of disillusionment because if you look at this the innovation curve the Gartner curve you'll see that if you're successfully betting at the right time in the trough of disillusionment then you stand to gain a lot as it rises back up so I say now is actually the time to really learn about blockchain, cryptocurrencies all those sorts of technologies because the world has lost faith in them but we've also learned a bunch of lessons about things that don't work and then like every developer now actually has to do machine learning somehow you need to at least get machine learning literate because every problem might be a machine learning problem in the near future or today so if you don't think that that's your realm it's sort of like someone saying well I don't need to learn object oriented programming or I don't need to learn about the web or about mobile development kind of sounds like Microsoft 90's doesn't it but they're in the 2000's you will get left behind if you don't know how this stuff works and it's really important to invest in and that's me this is my link so check the link it's got all sorts of links to all the stuff that I've lost over and thank you very much for your time alright thanks Chad that was fantastic unfortunately I had seen this video before but always exciting to see Chad so questions we can take couple of questions and then I have one giveaway here and we do have a winner for the amazon dot so I'm going to announce that in a minute but question please hi Chad open source or die very interesting so you say that as an investor what does this do to companies like Microsoft yeah good question what does it do to companies like Microsoft I think Microsoft and all of the big companies are actually set up in the right way Microsoft is a little further behind than some of its competitors you know if you think about Amazon Google etc they don't sell you any shrink wrapped software already so we're already moving to a scenario where we pay for the execution of code so azure office 365 etc will Microsoft reach a time in the future where it says you know what we don't even need to keep this office code private anymore we'll open source it because the value isn't running it I think so actually and I know I spent a couple of years in the office organization at Microsoft and they would be the one that would be the most conservative because office is a very profitable business and the code is very old you know like literally I was meeting the guy who typed the first lines of code into Microsoft Word who is the manager of engineering for Microsoft Word that blew my mind but it's really interesting that even on that team they are actually writing new components that are open source by default and they're like writing them on GitHub before they're deployed into office I think Microsoft has a great advantage in being in the business of running code that is open source because we have developed a reputation for being trustworthy for protecting users data and privacy that sort of stuff being really good at things like compliance so I think that's where the power comes in terms of the ability to continue to make money is being the best at running the code you know I think in the future really if you want to trust the code that Microsoft is running for you the ability to audit yourself the code would be just another layer of trust I can't speak for the company there but I think we're setting ourselves up in that direction thanks it was wonderful talk my question is towards Filecoin I was reading about it like a few days ago and I just wonder how it's different from torrent and the second leading question is if it's different then how we are going to solve the problem of torrent like piracy how is it going to solve that yeah so how is it different from bit torrent right Filecoin is actually based on the work around IPFS which is an open source protocol that is loosely based on bit torrent and when I say loosely I mean the concepts around bit torrent the things that worked are replicated into IPFS and Filecoin is a layer on top of that so it is in a way not different from torrent it has the same foundation it layers on top this incentive mechanism that I talked about that ideally means that you'll get very good service from it but it also layers end to end encryption so the piracy thing my brain is turning off from jet lag at this exact time having trouble with words but the piracy issue it can't actually be addressed fully of course because it's possible to give your keys to people and allow them to download anything but in terms of just privacy it ensures that through encryption through splitting files up across multiple destinations everything is encrypted that sort of typical cryptography but still it would be possible to do piracy with it there won't be a browser though because it's something that doesn't make sense fundamentally with the Filecoin architecture so there wouldn't really be a way unless you built a centralized layer with a list of pirated files I think with the internet it's going to be increasingly impossible to stop things like piracy happening we're kind of already there so that's another problem to solve I'd say last question back to open source over the past couple of weeks there have been issues between Amazon and MongoDB and elastic search elastic around the licensing and all for these companies there were making money and the cloud providers are kind of taking over on this what's your take on this isn't it going to be a bit difficult in coming months and years before we hopefully reach where you just said we would reach yeah I imagine it will be very difficult for years it's not that we're at the beginning but we're at the relative beginning of companies really investing in open source I don't believe that any of these things will be rosy and simple and laws will have to evolve licenses will continue to evolve but they have since 1997 when Eric Raymond's paper Cathedral in the Bazaar came out and Netscape was open sourced those sorts of things happened the licenses have gotten much more and much more plentiful there are lots of them and I think that will just continue to take place but yeah I anticipate lots of pain and suffering along the way right thanks Jed thanks everyone nice positive note to end on pain and suffering thank you