2021-08-27
Listen in your podcast player by searching for Future of Coding, or via Apple Podcasts | Overcast | RSS
The name Replit will be familiar to regular listeners of our show. The backstory and ambitions behind the project, however, I bet will be news to you. Amjad Masad, the founder and first programmer of Replit, is interviewed by Steve Krouse in this episode from the vault — recorded back in 2019, released for the first time today. Amjad shares the stories of how he taught himself to use a computer by secretly observing his father, his early experiments with Emscripten building VMs for the web, the founding of Replit, and how their community has exploded in popularity in recent years. Some of the conceptual discussions touch on Scheme, potential futures of visual programming, Sketchpad, and GRAIL.
Replit are a long-time sponsor of the Future of Coding podcast transcript. They are building an online REPL with over 50 languages and a plethora of powerful features. It’s a collaborative space for everything from deploying web servers, developing games, to training ML models — all driven by the REPL. They’re hiring, but not for any position in particular. Rather, they’re looking for people who are passionate about the future of coding tools and who are excited to enrich the core and ecosystem of Replit, no matter what form those endeavours might take.
Please know that the episode transcript is challenging to produce. It is unrefined at best, inaccurate or even unreadable at worst. But despite the rough shape, it’s valuable to many people in our community. If you’ve got the time and energy, we would love help cleaning it up.
Welcome to the Future of Coding. This episode is one from the vault. It was recorded, I think, about two years ago. It’s an interview between our former host, Steve Krouse, and the founder of Replit, Amjad Masad.
Replit is an online REPL that lets you spin up an environment in one of many, many, many different programming languages, and when write software that you can run in the cloud that does one of any number of things. They are very popular among grade school aged children who use it as an environment to learn how to program and make games. But it’s also very popular for people doing all sorts of other projects as well.
In this episode, Steve and Amjad go into the backstory behind Replit and some of the guiding principles Amjad holds dear. It’s a really wide ranging and interesting interview. I think you’ll enjoy it.
As is my normal way of being, since I’m an audio nerd: This episode was recorded in-person. So, the sound quality is just a bit different from the other episodes, because it’s not two people talking into microphones that are on stands in front of a computer. It’s two people in a room talking to each other. So it has a much more friendly vibe and energy, but there’s also a little bit of echo to the sound. That’s something I’ve done my best to clean up. I think it’s a totally listenable interview all the same. It just would be remiss of me to not mention that little tidbit.
I know that some people get a little bit nervous when encountering a circumstance like this, where the frequent sponsor of a podcast (or other media) is involved in the content. I just want to say that this interview was not something, to the best of my knowledge, that Replit paid for directly. I don’t think that their role as a sponsor of the show precludes us from interviewing them, but I think it’s worth me reaffirming that they don’t pay for positive coverage or anything like that. This was just something that Steve put together because Replit are an interesting company, which is also why I am happy to have them continue sponsoring the show. I think the thing that they are building is a good fit for a vision of the future of programming, in that it is a delta over what we are doing now in a positive direction. The fact that they have actually built it into a business that is up and running and out there in the world, frequently doing new interesting projects to try and further the goals that we share, I think is commendable. So the fact that they’re a sponsor — I’m happy to continue with that. I would not want sponsors on this show to be mattress companies, or toothbrush companies, or that kind of thing. You will not hear sponsors on this show unless they are doing work that I think is relevant to this audience.
So that’s why Replit continues to be a sponsor, and their sponsorship and the content of this episode should not be seen as influencing one another. So that said, I’m going to just turn it over to the interview now, and I will catch back up with you later in the show.
Welcome Amjad.
Hey, thanks, thanks for coming. I’m excited to be finally on the podcast.
Yeah, me too. It’s great to be able to do this in person.
Yeah. It’s awesome to have you here in our office. It’s great.
Yeah, cool. So I thought it would be a good idea to start with your own personal story before talking to you about Replit. In reading through your writing, I know Paul Graham was an early influence. I’d be curious to hear more about what got you into programming and particularly to making programming better.
Yeah, Absolutely. I guess the first interaction I had with computers is in some sense also the same interaction I had with programming. I remember vividly, it’s actually one of my earliest memories. I was five, maybe six years old. I remember it was late at night. I remember that we had this, I grew up in Jordan in Amman, Jordan. So we had this small home.
It was me and my older brother in a room and there was another room next to our room that is a general purpose room. We had a lot of toys in it and we’d play in it. My father had a lot of different things there. One day he brings a computer there. His friend was with him as they were putting the computers together and installing it. I remember looking over the shoulder and being very, very intrigued by what was happening. What is this foreign machine doing there?
It’s the first time that I’m seeing a computer. Of course, to put this in context, there’s no internet. I don’t think there’s anything about computers in the T V. The only TV that we had was a few channels. So we weren’t really exposed to the rest of the world and what was happening in the U S. So it was very exciting.
Then I would spy on my father as he’s using the computer. I would look behind his back and see him type these DOS commands. I remember it was something, I think it was an IBM and I think it was Microsoft DOS and it was 1993. He was typing these commands in. I remember that after he’d go to bed, I’d turn on the computer and re-type the commands.
Without him knowing?
Without him knowing. I didn’t know if it was kosher or nerd, or messing with a really expensive machine. So I just did it on my own and just typing cd
and making directories and dir
or whatever. I, it almost spoke to me, right. I instinctively understand it. It’s almost a mystical feeling now that I’m thinking about it, but I just got what was going on. Pretty quickly I was able to boot up games and do different things like that.
Then I got really interested in the hardware and what’s in the box. I took the box apart and I was able to take the entire PC apart and put it back together. So one day my father caught me taking it apart. It was, it became this hobby where I’d take all the components apart and then I try to put them back together. He was so mad, but I was like no, no, wait, wait, I can put it back.
So I put it back and then he was impressed by that. I think that that external validation that you get as a first time programmer, first time doing anything with computers, it became, it becomes this really good feeling that you keep chasing, right. I just became the computer person in my family. Then in my extended family, in my neighbourhood. I just became the guy that would fix computers, would do different things with computers.
But it actually took a long time for me to start coding. From that experience until my first program was about at least two to three years before we had Logo in school. So I actually remember picking up Logo pretty quickly. It was really interesting and impressive at first, but I could do anything I wanted with the turtle and wanted more things. There was another two years period before, and this is, this was really accidental, really happenstance, we used to go to this computer show that happened to yearly with my father.
We’d go there and we’d look around and see what people are up to, the latest advancement in computers. At the time, I think maybe it was 1995 or 1996, maybe a little bit later, CDs, 1998, maybe. CDs were becoming a thing. We went to the computer show and we bought a CD drive so we can instal it on the way home. There was this box with random CDs in it, a random utility CDs. I bought it because I don’t know, when you have a new thing, you just want to try anything on it. So I bought this box of CDs and in it, there was a fax program that I used.
It was such a different world back then. We were just, cause you’re locked into your machine. There’s no internet. It’s, everything is fascinating. You try a fax machine software and you just play around with it. Then one of the CDs, a lot of the other things were not that interesting, but one of the CDs was a semi-visual programming environment. I actually tried to look for it ever since. I don’t know what it’s named, but it was really great. It was blocks — the stuff you did with WoofJS[https://woofjs.com], similar to that. I was able to string together a program to teach my younger brother, who you just met earlier upstairs-
Upstairs.
…to teach him math. So the way I taught him was, we would have an equation or say, blank plus five equals 15. He has to put in 10. If he puts in 10, then I had a clap sound that would clap for him when he got it right. He got really addicted to this game. He really loved it. He learned multiplication and addition and everything really early before he even got to school because he was just playing the games that I was building.
It took another, maybe a year or two before I actually, for the first time actually sat down into a real programming environment. It’s almost like a tragedy that I didn’t have a real programming environment early on because I was dying to. Then finally what I did is, I peered at VB4. That was my first real programming environment. Maybe I was at the time 13 or 14.
Cool. That’s a great story. I think there’s a lot of similarities that I felt in my own story and I imagine other programmers being the tech person.
Yeah.
Having that virtuous feedback loop, of getting praise and approval and then more people come to you with their problems. I almost feel like it’s a vicious cycle for everyone else in your family. None of them had to figure out how to be proficient with computers. Because all that information, you became the repository for all that.
That’s a good point. I’ve never thought about it this way, but they become dependent on you.
Yeah.
Interesting. Also it’s really hard for you to escape it.
Yeah and you don’t want to. That’s part of it. Well at some point.
At some point it became cumbersome. At some point, I am let’s say 16 or 17. I have other things going on. Some lady that’s my mother’s friend somewhere a few miles away or something like that. She wants my help with her computer and I felt obliged to help everyone.
At some point I had to start saying, no. I guess it was a good lesson in life where you had to say no, yeah. I see it as my way to contribute to my extended family. We have a doctor, we have a lawyer and whenever you have problems, everyone just calls them. I’m the tech one.
Right, right.
I definitely still do that sometimes. But you got to draw the line sometimes.
Of course.
Actually it happened to me the other day. Maybe I’m still, I still look too much like a nerd. But in an aeroplane, a woman could not connect to the wifi. She picked me out of, she was walking and she picked me out of all the different people.
Were you wearing this shirt?
Yes, I wear it a lot. So maybe that’s why. She was, oh, can you help me with the wifi?
She could tell from the amount of space font, from your shirt.
Right, yeah. Its like this is, he knows his stuff.
Or maybe it was the hoodie.
Yeah, yeah. I am a, the pro typical San Francisco hacker, so.
Yeah. Nice. So when did, so you were a programmer quite early, Logo, same as I. You started Logo and then Visual Basic. At what point did you fall into Paul Graham and other… all the people that we… Doug Engelbart, Alan Kay, Bret Victor — where did you find all of these people?
I think it was pretty late, because we didn’t have internet.
That would do it.
Yeah, Yeah. So when I started building, so the first application that I started building was a internet cafe/LAN gaming centre management system. So I built this client server application, where you go into the store, you give them two Jordanian Dinars, and you say, I’m going to play Counter-Strike for an hour. They create a username for you and a password. They put an hour into your account.
You go to the computer. You log in and you can only play Counter-Strike. I had very good security system so that you can’t do anything else. Then when your hours out, I boot you from the game. I reboot the computer. I started selling the software, but in the process of making it, I made it without having an internet connection.
I would basically, when I get stuck, I would have to get up and walk to the internet cafe and sit down and do some Yahoo searches. Sometimes I’d download a bunch of Vigil basic code, sample code that might be doing the same thing that I’d want to do, put it on a CD, burn it on a CD, and then go back home and try again.
My God.
Yeah. So it took me two years to build that system. That teaches you, I think patience and teaches you the virtue of hard work. So I don’t look at that experience as merely negative or anything like that. I think it was a great experience. But it also was a lonely experience because I was so much into my work and I wasn’t online. I wasn’t able to talk to other programmers. I wasn’t able to ask a lot of questions. I would have limited amount of money and time when I’d log into the internet.
It cost money every time you logged in?
Yeah, it costs a lot of money. I worked for that money or I’d save that money in order to go do the searching. So yeah, I made the first software when I was 15 years old. Then in terms of when I started getting plugged into the larger community of programmers, that wasn’t until maybe college, when I was maybe 20, when I started reading different, when I started getting exposed to, Alan Kay, Paul Graham’s writing on Lisp. I think Engelbart still a little bit later. There was a talk, I’m blanking on the name, but there was a talk about constructing a language. Do you remember that?
Guy Steele?
Guy Steele. Oh my God.
That was, yeah.
Yeah, what was the talk called?
Growing a Language. Yeah, that was mind blowing to me. That was one of the times that pushed me to be more interested in programming as a craft and as a science, rather than being the very product oriented person that I was. Because as a 15, 16, I was, I was interested in computers, but I was also, I just wanted to make applications.
But then around that time, when I started reading all these influences, I started understanding that this, there’s deep art in what we’re doing. When I discovered FIA programmes writing on Lisp, and the origins of Lisp and what McCarthy discovered and, how most of the ideas of programing, most of the ideas in dynamic programming came from Lisp. That really got me into really studying the theory behind things. I picked up SICP afterwards and started playing around with that.
Hmm. Outside of school or you just.
Yes, school was mostly Java and C++, and boring things. It was, I didn’t really learn that much in terms of programming. The only thing that school was good for me was forcing me to learn the low-level stuff. Because on your own, you can learn a lot of things, but you’re not incentivized to learn assembly, right. You’re not incentivized to learn computer architecture.
So I think that’s the only thing that school was good for. It was like forcing function to learn these things. But otherwise on the programming side, I had to do a lot on my own. Luckily I had a good peer group of people that we were all sharing the stuff between each other and learning together. So also, I should say what SICP is. SICP is structure and interpretation of computer programmes.
It’s served as the introductory to computer science at MIT for something like 30 years or something like that. It teaches Cheme as an intro to programming. I thought that was fascinating because you, I learned a very imperative language, which is visual basic. I always thought, what would it be like, had I learned scheme as a first language, but maybe that’s a topic for another day.
Yeah, no. Well, my, I can just say from my experience, I learned Logo and then my second one was Scheme. So I can say that I really enjoyed that progression.
Do you feel like you’re programming worldview as it were, is fundamentally different because of that?
I think so. I think so, and then I went to Java afterwards. I remember thinking that Java was just so, I’d Hawk, the opposite of elegant. Scheme, just, it was like, it was just seven or 11 things that I need to learn. But Java was static void main. What are all these words mean? Why are they.
Yeah.
So. You think about, thinking recursively versus-
Oh of course, Yeah, yeah, yeah. It’s a, that really pushed my brain as a kid. I remember feeling very smart. After being able to understand the Scheme way of thinking. Yeah, when you start solving a problem in a functional Lispy way, a lot of things start to, start falling out of it. The, merely by starting to construct the program, the program starts writing itself. I don’t get that feeling when I’m using something, when I’m using something like Python or JavaScript. Sometimes, if I am writing JavaScript and then Lispy, schemey way I might get that feeling.
But I’ve actually had a recent kind of tweet storm about this, that trended a lot of bad words, which was, I feel sad that a lot of product engineers are under tremendous pressure from product managers and work at feature factories, that they never experience the joy of having certain features fall out as a result or snap into place as a result of a good design. That’s the feeling you get when you’re programming in Scheme, is that as you make the first, second, third attempt, add the problem, the problem, the solution starts writing itself.
It starts feeling more natural as you go. Whereas in something like Java, a lot of times it feels less natural as you go. You start with a very abstract top down solution of how the system class inheritance would look like. Then reality, we’ll keep destroying our ambitions as you go and it’ll keep destroying, and your product manager will keep bring in more problems that don’t fit the system that you’ve built. That’s tragic, right? It’s like you design a great system and it gets broken almost immediately. The, I think the person who really encapsulated that idea is Richard Gabriel and patterns of software. Have you read it?
Yeah.
So patterns of software, Richard got to be, got really into, so he’s a big Lisp guy, right.
Of course.
He’s also the guy behind versus better, which I’m sure it’ll come up later as it influenced my thinking a lot. He basically had been looking at architecture and interior design and he read this known architect, Christopher Alexander. He wrote the set of books that inspired a lot of software people actually. I think it’s called patterns of design, something along this line, those lines.
Richard got to be able to flip that. He applied it to programming and Lips, and things like that. What he, so one of the fundamental conclusions that he came up with is programming is better thought about as patterns, as opposed to obstructions. Programming is better thought about as a habitable system, as a habitat. Your source code is your habitat.
You’re trying to make your source code as habitable as possible. You try to design that in a certain way. He called it, he borrowed it from Christopher Isenberg, is the property that, which cannot be named. It’s a certain property that it sounds a little bit mystical, but it’s a property about the system that makes you feel at home. A lot of times you walk into a place, and you feel relaxed, and you feel at home, and you feel creative.
You can’t really put your hands on it. Experienced designers can they understand why. But it’s also so hard to articulate why. So he called that, that property that cannot be named. And, he applied that to software. So I think that is a pretty good articulation of this idea of how you can create a system that becomes better with time, I suppose, to, the usual code rock and things like that.
Do you remember what would be the principles by which you make this happen?
Instead of, he talked about abstractions as in encoding. You’re encoding a lot of information, and this symbol. You’re basically creating new names. As you create more names and vocabulary, it gets, the system gets more complex, and it gets more opaque. However, if you shift your thinking and start thinking about software in terms of patterns. When I look at a piece of code, I see a pattern and I can replicate that pattern in different places.
I don’t have to abstract it. I can rewrite it or even copy paste it, but I know what that pattern looks like. Or I can build a framework, or I can build a generator. I can build a macro that, or whatever it is that can create that pattern. This is a much more portable, much more habitable way of doing software than abstractions an having use obstructions.
Hmm. Interesting.
So that’s one of them. There’s a lot that the book talks about it. It’s a bit poetic for a book. It’s not-
He’s a poet.
Yeah the, there’s two schools of thinking I think in programming, one is very analytic, very-
Mathematical.
… very mathematical. I fall into the very, I’m a very intuition driven. I’m comfortable with notions that don’t map strictly on to reality and properties that cannot be named. That sort of thing. I like that thing, because I think, I think words are constraining, right? When we, the moment you try to articulate a thing, you’re trying to boil down a whole array of thought. So I think I, some people might scoff at that and say, this might seem too mystical, too weird. But I like that type of stuff.
Hmm. I could see why Richard Gabriel would appeal to you.
Yeah.
I’ve seen him at conferences. The last talk I saw him give was on his poetry generating system. So his all about that. I’m going to a conference, he’s a big part of in a week I guess, or two weeks.
Oh, really?
Programming angle brackets.
Oh.
I think he’s one of the organizers of this conference.
Here in NSF?
In Italy, actually.
Oh wow.
I think they alternate between the states and Europe every year, so.
That’s cool. Yeah. I wish I had more time to-
Do things.
…do things like that. I’m trying to structure my life in order to do that, but I’m hoping to do that soon.
Cool.
Yeah.
Okay, so maybe let’s go through your career a bit. You started working on this in 2011 Replit stuff?
Actually, the first time I got the idea for an in browser REPL was 2009.
Okay. Well, a long time ago.
Yeah.
You started it then, or?
I attempted it then. I think I was able to write a quick REPL that has a facts area and an eval, and you could write some JavaScript in the eval side. I actually ran into my Symbian phone and I was coding on the bus to school. That was one. Then the first time I actually probably got something working that other people could use probably around 2010. I got us scheme interpreter running in the browser. I wrote some terminal emulator that later became the library that we called jq-console.
Yeah, that was around 2010. But the real breakthrough that we made, because we, I always wanted to be a cross language and support more than one language. The breakthrough that we made with was around 2011. We basically, and I can get into that if you want.
But we basically used Emscripten and we were the first production application to use Emscripten, to compile Cpython, Cruby, and a bunch of other interpreters through JavaScript. Then we open sourced it and we were in Hacker News, and different places. That started what became, not just Replit, what became a lot of different other projects that I worked on.
Is that how you started working at Codecademy after you did that?
Yes.
They recruited you?
Yeah. So I open-sourced the engine, I should say high as who in my current co-founder, also helped me at the time.
…my current co-founder also helped me at the time. She’s also my wife and my friend max from college helped me with the project. But then we saw a bunch of companies started using it in the US and Udacity, Codecademy, a bunch of others. It was really surreal because we were just a few kids from Jordan. Now you have this like global impact. That was strange. Right. I still can’t wrap my head around my journey so far. More people are starting to go through that, where they release a piece of software and they get a lot of opportunities out of that. I think that’s fantastic. Right. So I joined Codecademy because they were using our software and I liked the founders.
They came to Jordan and actually to recruit me.
No way.
Yeah. So they flew to Jordan, they finished YC and they wanted me to join and they flew to Jordan and then I took them around, showed them around a little bit. At first we disagreed on the equity. I wanted more equity in the company. I said, no, and I was driving him to the airport, Zack. Then he revised the offer on the way to airport and asked me to sign right then and there. I did.
Wow.
Yeah. So I came to the US in 2012.
Awesome. You’ve been here since?
Yeah. New York for probably three years.
That’s for Codecademy?
Yeah. Then 2015 came to San Francisco.
For Facebook?
I always wanted to end up in Silicon valley.
Yeah.
So going back to the influences, I think one of the biggest influences, for better or worse, I’m sure people will laugh. It’s Pirates of Silicon Valley.
Pirates.
Yeah. So it’s a movie.
I don’t remember this movie.
It’s a movie about Microsoft and it’s about Bill Gates and Steve Jobs. It’s a sort of dramatisation of their battle. Dude, it’s awesome.
Wow.
I watched it last year or something like that again. I thought it was going to think it was stupid at this point. That was awesome. I loved it. I love that shit. It’s great. So I always wanted to end up in Silicon valley. I started at Facebook actually in New York and I wanted to come here and they actually didn’t pay for the relocation or anything. So I really pushed it to come here. The weather is also a nice.
Yeah, totally. So part of why you wanted to work at Facebook was React or is that not quite how it worked?
Yeah. So actually a few things. So internet.org was starting to do it at the time. I always thought that my story with the internet, I couldn’t have released the open source version of Replit and getting all these different people, using it without the internet and opening all of these opportunities for me, I’ve been rejected for jobs in Silicon valley so many times before that happened. I’ve been applying, tried to get into Google multiple times, I couldn’t. It’s a fast track. It’s truly based on merit. I think there’s a lot of scepticism right now and a lot of pessimism that there’s anything called merit or meritocracy. I wrote about this at some point and got a lot of hate for it.
Yeah. I saw that.
The idea is that software and the internet creates a system that allows for people to get ahead using their merit. It actually makes prejudice a lot less prevalent. If you’re a racist on the internet and you’re going to have to find my sort of identity in order to discriminate against me, you’re the loser, right. But if you’re the guys from Codecademy and you want a really talented engineer you don’t care. I proved myself. Right. I’m really optimistic about the internet and all these different things. So when Facebook and Zuckerberg started talking about an internet.org, I thought that was really good idea. At the time there was the rise of Android. I think Android is another one of those things that that’s a great equalizer.
Apple is building computers for rich people. I think Android enabled computers for everyone. Both of those things really attracted me to Facebook because Facebook was putting a lot of energy into Android. They had their home product, they were doing internet.org. I can go there and contribute to a platform that’s bringing a lot of people internet. When the Facebook tried to get into the internet on our team, they didn’t accept me. Facebook’s kind of funny at the time where you had basically to do two interviews, you had to get into the company, and then you had to pick a team. That was a really hard thing to do. But I did a lot of Android, and the first thing that I noticed is that the development experience just sucks.
You change one line of code and you would wait 20 minutes for the built.
Yeah.
It’s insane. Coming from web development, it’s preposterous. Even coming from Visual Basic or C++ or whatever. I know there’s like large code bases, but still that’s insane. So I started looking within the company at who’s trying to solve this problem. I saw this interim project at the time, it was called Catalyst. It kind of made sense, catalyst making mobile development easier. I started talking to the team, start talking Jordan Walke, the inventor of React and React Native. I really wanted to get involved. It’s kind of preposterous that if you want to build apps for apple, let’s say. You have to buy the apple phone, which is 500 to a thousand dollars.
Then you have to buy a MacBook pro, which is a couple of grand as well. Then on top of that, you have to give apple a hundred dollars to become a developer. Then maybe you can write some software for your phone. I saw React Native as a way to sort of undercut that entire process and started kind of shipping software. The idea that I can ship software over the air and download Java script and have it run on the device was something that’s really interesting to me. So that’s how I got into React and React Native.
Cool. Makes sense with the whole Replit mission of a quicker start. You don’t have to buy a specific computer, works anywhere. Then also the feedback loop as well. So as far as feedback loop goes, I feel like we should talk about REPLs. That’s the right time.
Yeah.
I imagine your first works with REPLs with your exposure to Lisp.
Oh no. For that, visual basic. Visual basic has this thing, it’s amazing, it’s called immediate. So you had a break point in visual basic, and once you hit a break point, I think you hit escape or something like that, which I think what Chrome kind of emulated, right. You get the immediate and the immediate is basically a REPL and you can change variables and scope. You can step in step out of things. I lived in the immediate, I loved the immediate, I’m a very tactical programmer. I like to be in the thing. Right. Richard Gabriel says, “I like to live in the software.” Right. What better way to live in the software by being in the runtime and kind of like exploring the environment interactively. So the immediate was my first interaction with REPLs and then the second one was, I think Firebug. I think it’s probably a Firebug the second time I got into and then Scheme. Do you remember Firebug?
Yeah, I don’t know if I ever used it. Firefox development thing?
Yeah. It’s basically the first dev tools.
Oh, was it?
Yeah. It’s pre dev tools, pre Firefox dev tools. It was just called Firebug, someone wrote it. I think a guy that ended up working at Facebook wrote it, I forgot his name.
That’s cool.
But yeah, It had a console and it had a pretty good REPL and that was another time I started using a REPL. To me, it was it was insane to just do it any other way.
Yeah. It’s funny, going from a language like Scheme when I went to Java, it was like, “Where’s the REPL. I have to use a file all the time.”
Yeah.
Yeah. I guess there’re debuggers and whatnot.
The other day we added a TypeScript and we added LSP to JavaScript, the language server protocol. The the language server that we were using was particularly good. I do a lot of exploration of libraries in REPL, as a lot of our users. I found that I can just import a library and started exploring it statically. The static analysis tools are getting to the point where actually they’re really cool.
Oh, interesting. The completions almost-
Yeah. Let’s say you import Lodash and then you hit underscore bot and you see all the function signatures, and then you hit that little I, and you’ll see the doc string as well. So you could start exploring the library. Of course, eventually you’d want to run it just to make sure it’s doing the right thing. But I just want to say it as an aside, I’m very bullish on static analysis tools. But I’d love to see, and here’s a free idea for anyone who has time on their hand and they want to like build something that has a lot of impact.
Figure out how to add some kind of runtime capability to LSP. So LSP is all about static analysis, figure out how to embed a REPL in LSP. So imagine as I finish a statement, it just evaluates and shows me in the editor. There’s a tonne of people that did the experiments like that, and I’ve done experiments like that, but LSB is finally becoming the standard tool that all editors use. So if you just do that, then you immediately have an audience of a couple hundred thousand programmers, at least, if not millions.
Hmm. That’s a great point. Yeah. Building things on top of LSP, such a meta impact.
Yeah. I don’t know if Microsoft is expanding LSP all that much. I didn’t see a lot of activity in it, but you could probably hack it in.
I did an interview with Quinn Slack of Sourcegraph.
Mm-hmm (affirmative).
He’s also a big fan.
Yeah.
Yeah. The developer tools people are the people who really love LSP.
Yeah. We use it on Replit. Without it, we would have to build a different protocol for every language and we just use Replit.
Yeah. You guys use Monaco too?
Yes.
Monaco.
Yeah. Monaco.
Nice. So I think it’d be interesting to go through how you grew Replit, because I know that it started off really small and you just keep adding things.
Yeah.
So it started off as this scripting compile thing, originally it was just Java script it sounds like.
I’m scripting compiled. It was Python, Ruby, LUA, and a bunch of small languages.
Yeah.
So you started with a bunch of languages kind of all at the beginning.
Yeah. It was part of the plan the whole time.
It’s an interesting way to go, to start with like 10 from the get-go.
I Love languages. I just wrote this yesterday in our graphics announcements, GFX. I wrote that we spent a lot of time worrying about how to do things in a cross language way, because I believe in the plurality of the programming communities. Every decade someone is going to predict that some language is going to take over the world, right now that’s JavaScript. I think that’s BS. We’ll always have a lot of languages, and you know that, you do a lot of research on program languages. Getting into a new language and learning a new mental model. It’s just amazing. It’s like learning a new super power.
Yeah. I enjoy it. It’s what I do all the time.
Yeah.
So, yeah. Because I could see a world where Replit with allows for 30 languages, but like people only use two. Is that how it plays out or is it-
Yeah, there’s a power law distribution. Anything on the internet you do, there’s going to be a power law distribution. So it’s the internet law. Right. We have a power law, it’s Python, JavaScript, Java. Then the drop off starts becoming really steep. Then it goes to C, C++, and then you have a few dynamic languages, Ruby, whatever. Then you go from tens of thousands of users a day, single digit thousands. As you go to crystal, probably like couple of hundred users or something like that. Yeah.
But the architecture is such that it doesn’t cost much to maintain the languages that nobody uses.
Yeah. So that’s where we’re trying to get to. This is where a lot of the work is going into. Actually Amazon is a good example. When Amazon started out, they wanted to have every book in the system. That created a network effect. Even you’re always going to buy the New York times best sellers-
There’s a huge parallel with books as well. Exactly.
Right. That one time, every however many years that you buy this esoteric book, you’re going to go to Amazon, because you know it’s there.
That’s a great analogy.
Yeah. So it’s the same thing with us. We want to get as many of the tools as many of the languages, because I think that network effect exists with us as well. In terms of the architecture, yeah, it’s one of the biggest projects that we have to sort of unify all the architecture. At first, I wrote this simple REPL protocol, it was basically a client says eval, server might say input. So that’s a state machine for it, for the server says input. Then you have to send some kind of input result. Then, and then the server will say result, right? So that was like the entire description on the state machine, right? Oh, the server might say print as well. Print is a sort of unilateral event that can happen at any time in the state.
But then now Replit can do web servers, can do games, can do graphics, can do Alice, can do shell, can do all of the different things. That protocol has been stretched to the extreme to support all these different things. So we started a big rewrite. We call it Croesus and Croesus is a new protocol that allows for feature full REPLs that allow you to start web servers and all of these different things. I don’t get into too much into the weeds there, but that’s one part of it. Another part of it is we have an open source project called Prybar. Prybar is what we call a universal interpreter front-end. So every REPL behaves differently
For the different languages?
Yeah. So they have different interfaces. Some REPLs allow you to pass in an entry file. Some REPLs doesn’t allow you to pass an entry file. REPLs started differently, things like that. So prybar papers over all the different languages to create a single interface that works for any language. So right now we have support for Python, Ruby, Node. We just edited a Camel, I think LUA, and a few other languages. So that’s another part of the architecture that we’re building. So we’re building a set of abstractions and tools that allows us to build this general purpose, REPL driven development environment.
Hmm.
It’s a multi-year project. It’s been going for a year or so. I think this summer, we’ll be able to start talking about it and blogging about it and hopefully open sourcing large parts of it. Already, big parts of it’s open source, but I want to open source the rest of it.
I saw you have a universal package manager project.
Yeah. So that’s another project that we’re excited about. Basically every package manager behaves in a very similar way. So you have a resolver. A resolver will take an input, which is the source files and figure out where your packages exist and resolves those. You have the actual package fetching. It needs to know the registry and it needs to grab the packages from the registry. It needs to have the right environment variables, the right paths for the program when it runs to be able to, if it’s a dynamic program, to be able to load them. If it’s a composite program, It needs to be able to link against them. So having, having it in the right location.
So once you identify these different principles, you’ll be able to create an abstraction on top of the page manager. So we built, what we call, a universal page manager that now works with Python, Node, Ruby, Abjad, GO, a few other things. If we’re successful and we open source a lot of these different things, you’ll be able to actually instal a single command line and really run any language from that same interface, same binary. That’s the ultimate goal.
Wow. So you’re saying even outside of Replit, someone could instal-
Yeah. We haven’t seen a lot of pickup on our tools outside of Replit, but I guess they’re not very published for the use side of Replit. We haven’t been advertising them that much, partly because the store is not finished yet. We don’t have the full store yet. But if you want to check it out, go to our GitHub organisation, particularly checkout prybar. Prybar I think is already useful.
Cool. So continuing in the scaling up story, I think it was last year you launched hosting as an extra feature?
Mm-hmm (affirmative).
So that’s the ability to publish websites? Did you have that before?
That was it.
So you could like listen on a port and then that port is exposed to the internet.
Yep.
It could be any port and you just detect it.
Yeah. We do a lot of magic, good magic. Not the kind of obscure or magic that obscures from the development experience.
Where’s the line? How do you make sure you don’t cross lines? Good magic and bad
So the universal package managers, for example, when you click on the package icon and you try to instal a package, actually you can look at under manual installation. You can expand that. It’ll tell you what to do to instal it manually. What we do is we abstract over the tools. We do the manual steps for you. We automate the manual steps. I think where magic gets magical is when you monkey patch or when you do something behind the scenes, or when you hack something in, that’s how I think about it. So the fact that you can download any Replit project and run it locally, I think makes it less magic. If we’re doing anything reference specific, I think that’s magical. In terms of the good magic that I’m talking about.
We listened to the Linux audit log, and that’s how we figured out when a program opens a port. Then we just hit that port with an SGB call. If it’s an SGP server, then we publish that and we say that’s and SGB server. For graphics, we do this thing called LD_preload. LD_preload basically allows you to link against the library that isn’t the real library. So if a program tries to open a window, we masquerade as x11. Then when we see that program is trying to open the window, we actually do it ourselves. We open it in the background, and then we show the screen on the IDE. So we follow this thing we call adaptable IDE.
When these web IDEs came onto the scene, we didn’t think that we’re doing anything special. We always thought that you’d want to have some kind of like web native IDE. It needs to be lightweight, it needs to boot really fast, and it needs to be very simple and has to be very accessible. If you keep adding features and keep adding buttons to features, you can never achieve those goals. The way we try to do it is that the environment detects what you’re trying to do. You’re listening to a port, we know that, then we open a web view for you to code a web server.
Yeah. Your interface is quite simple for how powerful it is. Yeah. That’s definitely something noticeable. As opposed to a lot of other web IDEs take a desktop IDE environment and just webify it.
Yeah. I don’t know if it’s Marshall McLuhan or something like that, I think talked about how every medium- and there’s a very Bret Victor-esque point is like every medium needs to be explored on its own merits. The first attempt usually is you take the paradigm from the old medium. The first TV program was someone reading a story in front of the camera. They were doing what they did for radios in the TV. So I think the first web IDEs took IDEs and put it on the browser.
Yeah.
I think what Replit is trying to explore, what does it mean to actually be a web IDE.
I’m trying to think of how they’re going to make fun of our first forays into VR.
Right.
Like they’re just computer games in three dimensions.
Do you know what, maybe that’s a good way to generate start up ideas.
Do you mean not doing that or doing that?
Basically, thinking from the future back and saying, how would they laugh at us. Because you’ve brought up a good point. Like maybe we’re just putting these video games in VR and maybe there’s something else that we should be doing.
Yeah. I’ve seen some people trying to move coding into VR and it’s just a text editor right in VR.
Right. That doesn’t seem to be native to the experience.
It reminds me of exactly what you said. The joke of someone reading on television, just reading a story. They’re VR codings of like someone on a computer in VR coding on your computer.
Obviously that’s that’s wrong.
The screen is just this big.
Yeah. My first VR experience was a living room and you would watch Netflix.
Oh my God. No way.
I swear to God. Yeah, I was at Facebook when they bought Oculus, and…
You put on VR… to watch Netflix?
I watched Netflix.
Oh my God. On a tiny screen.
Yeah. No, it was pretty big, actually.
Oh, a big screen, because it’s VR, you might as well have a 20 inch screen.
Yeah. It was really big, it was a nice living room as well. It had a pinball, whatever. But maybe if you want to program in VR, maybe you should interact with your hands with the code and quotation code. Maybe you’re moving around syntax trees or something like that.
Yeah. Well, I feel like a lot of people do like the nodes and wires programming.
Right.
Visual programming feels like it could be quite powerful in three dimensions.
Right. Yeah. I continue to be, long-term bullish in visual programming. I think we’ll get there. I haven’t seen anything that’s exciting in that space.
Very exciting.
What was the one that Alan Kay talked about? It wasn’t really visual programming, but it was this equation solver or something like that. He has this famous video on YouTube where he’s playing around with it. I forgot what it was called. Oh, Sketchpad!
Ivan Sutherland. I think Alan Kay talks about it, but it was an Ivan Sutherland creation.
Yeah. Okay. There was Grail as well?
Grail. I don’t remember Grail.
Yeah. But anyways, those are really interesting. I don’t think we’ve made that much progress behind that.
That’s funny.
This episode is brought to you by a sponsor. I’m going to give you one guess who that sponsor is. It’s Replit. I hope you’ve been enjoying this interview so far. I’m listening back to it again, I did the edit for this episode months ago, and I’ve been sitting on it waiting to bring it out and now is the time. I’m listening through it again and I’m really enjoying it. It’s nice for me to be able to appreciate this interview as a member of the audience, rather than as the person actually doing the interviewing and stressing about having asked the right questions and wondering whether it’s really relevant and all that. I just get to kind of sit in the passenger seat for this one and enjoy it. The one other privilege that I have as the person in the editor’s chair is that I know what’s coming up in the second half. Let me tell you, it gets pretty interesting. There’s a lot of neat sort of bigger picture kind of thinking that comes up for the remainder of this interview. So stay tuned for that.
But of course, Replit — they are the sponsor of the transcript for this podcast, which you are currently reading.
Do I need to tell you what Replit is? This is an ad break. This is a sponsor break. This is normally where I would talk about what Replit is and what they do. I think Amjad does a pretty good job of that, considering his position as the person who created the dang thing. It’s really neat to hear what it’s like from his side of the table. I just think it’s cool once again to look at what Replit is doing as a possible… not like a template, but as an example of what it would be like for us to take our own Future of Coding visions, and to turn them into thriving independent businesses. A lot of the struggles that he’s talking about in this episode are the very same struggles that we will run into as we try to do this ourselves. So I’ve enjoyed hearing that.
But yeah, you know what Replit is. It’s an online REPL, it’s somewhere you can go and write code. A lot of people are going there to write code in many different languages. A lot of people who are in school are going there to learn how to program for the first time. Like I’ve said in past sponsor breaks for Replit, they are constantly working on new interesting projects; libraries for making games, libraries for doing server stuff, libraries for doing communication, new features like the multi-player feature; so that multiple people can jump into the same REPL and work collaboratively.
They’re using their position as a company that is sort of at the forefront of pushing for better and better developer tools to do really interesting little projects. I like that. I like that sort of multi-faceted approach to building out little constellations of ideas around their core vision. I think that that’s really cool. I think that that’s a great way of taking advantage of the core product that they’ve built, but also taking advantage of the enthusiasm of the community that is sprung up around Replit. I’ve enjoyed hearing and seeing all the ways that that manifests.
All that said I just want to once again thank Replit for sponsoring the transcript, and being a long running participant in our community, and in helping to bring all of us the Future of Coding.
Education has become a huge market for you guys.
Yeah.
Because there are a lot of different ways to play online, well, you were doing a developer tools company.
Yeah.
But you’ve gotten to the education side.
Yeah.
Which it’s interesting because as far as developer tools go, neither market is like… Selling to developers isn’t something that excites venture capitalists nor is education. You’ve chosen…
Yeah we’ve chosen the worst of both worlds, which made it really hard to raise money at first.
I bet.
That’s why we had to make money really early on. I put a lot of my own money into the company. I think eventually what happened was that they really got the vision and they understood that we need to exist in both worlds. Right? So Apple for example was technically education company, right?
That’s true.
Like with Apple, the first Apple customer segment they sold to was education.
Still big on education.
Although like Chromebooks are just eating the world.
Deservedly. Yeah.
Then even Microsoft did a lot inside of education they gave a lot of their tools; Visual Studio, and these things where they focus a lot on education together. So I think there’s a history of platforms being very… Developer platforms being very education heavy and, or focusing on the younger generation. I think, yeah. Adobe I think probably will never admit that, but a big part of what made Adobe the giant behemoth that it is today, is that all the kids in the 90s and 2000s that pirated Photoshop.
Hmm.
I think…
Then those kids grew up and worked at companies that would pay for Photoshop.
Yes.
Nice.
Yeah.
Well, so I feel like you’ve told me about how this is your Replit sinister plan.
Yeah.
But it’s like you have this long plan of you give Replit to the kids for free today, and then either they’re going to go work at companies or they’ll start companies themselves and then pay for it somewhere down the line.
Yeah. We want to be able… We want to align ourselves with them as much as possible. It’s not like we want to use them as a sort of a Trojan horse only, although that’s on the table. But what really excites me and something that I’ve made progress on in my own thinking since I think we talked about this, was that I feel like there’s going to be a sort of a resurgence, and independent software vendors. I think there’s a movement with indie hackers with a lot of what Stripe is doing, around what they’re talking about with growing the GDP of the internet and getting more internet entrepreneurs. I think that that stuff is really happening. I think with the tools that we’re doing, and that we’re building, and other companies are building. You had Flat with Webflow on your show. A lot of non-coders now are making websites as well, and selling them. I think we’re going to see a big uptake in software entrepreneurship on the small side, on the one to two person startups. That’s incredibly exciting for us because I think we’ll be able to build tools that they could use to monetize their software. This is where I’m spending most of my energy to experimenting and thinking about it.
Yeah. It’s very exciting.
Yeah.
It’s so cool, like the better the tools get the more super powers one or two people have.
Yeah.
They can do really impressive, powerful things. Build businesses or tools that other people could use.
Yeah.
Just one or two people. Yeah.
It’s like it’s better for the world. It creates more wealth outside of the already wealthy companies. Right.
Mm.
It allows communities to take ownership over their own software.
Yep. I think the global software phenomenon in Google and Facebook, and these Silicon valley companies is probably not going to be the norm. Those are like, we call them the Silicon valley SOPs are unicorns. Right? I think most of the software that we’re going to see going forward are going to be local community homegrown software. Uber is an interesting case study. Silicon Valley, VCs, and analysts thought that Uber is going to take it to Facebook playbook and grow country by country and take over the world. Right. There’s going to be some kind of network effect. You can argue about the network effects of drivers or whatever, I don’t care about that.
I think what really mattered for Uber is the culture. They really couldn’t figure out different cultures because it was like a very Silicon valley, US centric view of the world. In Jordan, they get destroyed by a company called Careem, and now Dubai, and now it’s sticking over the Middle East. They basically won.
Hmm.
Yeah. They won over the Middle East, and DiDi in China, and there’s I’m sure one in India and different places. So basically Uber is relegated to the west; Uber and Lyft, and they couldn’t capture the rest of the world. The reason if you look at it is because they couldn’t pick up cultural norms in these places. In Jordan for example people don’t sit in the backseat, it’s kind of disrespectful
For even when you’re their taking a taxi.
Even if you’re taking a taxi.
If you and someone else were taking a taxi and there are two of you…
One sit in front and we’ll still let one sit in the back.
No way.
Yeah.
Huh.
Unless you’re a woman, and then you can sit in the back comfortably.
I see. Okay.
That’s just one tiny example. Another is a lot of people want to pay cash and Uber just didn’t have a way to pay cash.
Oh, wow. Yeah.
People don’t have credit cards.
Yeah. If I were working at Uber expanding to other markets, it wouldn’t occur to me there’s someone who wanted to pay cash. It’s part of my favourite part about Uber that you…
Yeah. People don’t have banks in most places in the world. Most people are unbanked.
Wow.
Yeah. So I think it was like a blip in history that we had these mega software corps. I think going forward we’re going to see more decent decentralising, effective software.
Yeah. I hope for that too, and I agree. That’s part of why I, and I think a lot of other people are excited about democratising programming is to decentralise programming, like bring the power back to the people. There’s something I feel like Bret Victor, and all of these people talk about; how there’s like a totalitarianess to… If you need thousands of people in order to build a code, and in order to build software that’s worth using that is like a top down structure.
Yeah.
But if one or two people could build software worth using then we have a much more decentralised, beautiful…
Does Bret Victor say how this affects the quality of the software or the quality of the programming environments?
The programming languages of today, like the fact that Microsoft Word has like millions and millions of lines of code means that regular people can’t build a competitor to it. The phrase that’s coming to mind is like a Jeffersonian quality of like being able to mend your own clothes, like being more in charge of your own destiny.
Right, right, right, right.
As opposed to a big company somewhere else, it requires a lot of engineers to make it.
I wonder though what downstream effects it will have on the experience, the programming experience because… Or like okay, what we were talking about earlier with the Richard Gabriel and Patterns of Software, and things like that. Maybe we were too abstraction heavy, too Java class heavy; because we need to coordinate across thousands of programmers, because those languages were made for the Microsofts and, I don’t know, the banks of the world. Right? Maybe more lean, decentralised software creators would need, would not need that sort of fire power.
But they’d need different languages.
Well yeah. They would have more personable, more fun languages less top down, more…
Yeah. I feel like Lisp kind of is a good example of a language that’s hard to use it. Like for example Macros; I think are something that’s notoriously a bad idea to use in a team setting because it just takes so long to learn someone else’s weird Macro setup. But if it’s just like Paul Graham by himself, Macros could allow him to be so much more productive and have so much more fun.
I actually had this discussion with Paul Graham the other day on Twitter about units of abstraction.
Hmm.
So I have this tweet storm about how you design a system and features start falling out because the system is well designed. I think he had a tweet storm following that talking about how; if you keep your code small you could put it together in more interesting ways. It was like he felt inspired by what I said. Then my reply to him was that the most… Oh, he was talking about how if you keep your code small it will kind of feel like Lego. You can put it together in different ways to create different variations of your software.
Yeah.
I do agree with that. But my point to him was the most composable type of software is not code, it’s protocols.
Mm-hmm (affirmative).
I think code is not very composable. I think what’s more composable is RPCs, HTP, any type of air-gapped protocol, even if it’s not air-gapped, agent-based model, even channels. Things that look like the original vision of Objects Oriented Programming from Alan Kay; where he says that his vision is… His inspiration for Object Oriented Programming was biological systems or computers on the network. Of course Object Oriented Programme today is nothing like that. It’s basically like statically linked code. It’s not like really talking messages. Most Object Oriented Programme doesn’t even have dynamic dispatch, and there’s nothing about it that that feels like what Alan Kay was talking about.
My point to PG is that maybe the Lego structure we should start thinking about is more process oriented and less code oriented. I think part of what Replit is doing… So If you think about GitHub as sort of a text storage and linking system. I love GitHub, but ultimately it’s text, right?
Hmm.
Replit is live code system. If we figure out how to create live interdependencies between programmes, then we would have achieved that original version of Object Oriented Programming, kind of programmes talking through the network with each other. So how this sort of comes all together is that I imagine a world where you have these independent software vendors and programmers. If they want to build something as complex as a Google, or as complex as SAP; the way it gets composed is via these different components being different processes that talk a certain protocol, certain contract, and then can be composed together to form a larger software. Now you need some kind of incentives to play in place, right?
So different groups of people would make different ones?
Well, different groups of people will make different software components. Then let’s say one group of people will make SAP. One group of people make a CRM, one group would… But you could use the different components that the community already created. Now it’s starting to sound like Open-source, but it’s not actually. It might be Open-source, but that’s not the point. The point is that it is live running software that’s interacting with each other. Now this is probably where a lot of your listeners will probably drop out when I mention the dreaded word crypto, but I do think that there’s… I’m like, by the way I’m one of the biggest crypto sceptics, but I think there’s some place for crypto to figure out the incentives for software collaboration, for decentralised software collaboration. I think that if anything that would be its biggest use case for programmable money. If you can figure out how to… Like you could spin up a load balancer, and then I use your load balancer, and somehow any money I can make, I could kick back to your load balancer as it’s serving me traffic. Right?
Huh?
Yeah. That’s interesting. I hadn’t heard of this application of crypto since Juan Benet was talking about it at some point.
Okay. He was talking about a similar thing?
He was talking about a similar thing. The way he put it, which was very different was almost like the distinction between static and dynamic. I think he was thinking about it like analysing your code and figuring out that you use a certain package and charging as opposed to this is a runtime thing. Like You used my load balancer or you used it 10 times in the last minute. I’m going to charge you…
Yeah. Everyone talks about this code in the house. I was talking to a CEO, the founder of Coinbase. I was mentioning, it was like, “Oh yeah, we, yeah. We looked into those code things.” This is not what I’m talking about. No. What I’m talking about is a live decentralised, small talk almost like system on a global scale. Can we figure out global software collaboration?
Yeah. Run it with running code with running code.
With running code, yeah.
It’s like almost SAS, you’re paying per request. So I’m interested in figuring out like how the pricing would work.
Yeah. There’s alot of details to work out there. Yeah, I’d be willing to obviously do the work and sit down and work it out. But it is kind of like a very high level of the idea at this point. Yeah.
Then I’m thinking you want almost like an exchange. So if I’m going to pay someone for a load balancer, I don’t want to pay someone. I want to get the cheapest load balancer. So I almost want like a load balancer, balancer to extend me to whoever is not busy at the moment, and give me the cheapest price.
Right. Then you’d have markets to prop up to sort of work that out, right.
Yeah, exactly.
But imagine the end state, and imagine how beautiful that is. A global sort of software, autonomous software collaboration system and how much we can create with it. That point, I would say visual programming is a breeze, because we already know how programmes talk. We already know how data moves. Then we have to string them together. There’s a lot of things that you have to think about, like to think about privacy, thinking about user data, and think about like if my user data is going through a hundred vendors. Which by the way they already are, like if you sign up to any startup your data’s in Intercom, your data is in Google Analytics, your data is in… It’s everywhere. Right.
So it’s not like we’re introducing new problems. Some of them are existing problems, but there are ideas out there about like how to figure out like how do you spin up a set of a software system that allows, that also has privacy built in even kind of opaque to the programmer themselves. But yeah, there’s a lot to figure out.
Yeah. It makes me think it’s basically like AWS but decentralised. So instead of having to learn all of the AWS products to do all the things, everyday people are making new developer E-services.
Yes, exactly. So AWS steals from the community, AWS just forked Elastic. They just screwed them over, right. They saw a business that was working and they’re like, “All right, time to bring it in house.” They brought it in house and it screwed over. They would do it to every database service that’s out there. Why, because the incentives are not there. If the incentives are there, and Elastic doesn’t even have to Open-source their code, they can just exist on the network. Then you have a contract with them, and you could use the Elastic provider as part of your app. There’s some kind of money flow where there’s some kind of revenue share between AWS and Elastic then the incentives are there wouldn’t be any encroaching like that. But right now we’re just in a world that is just going to keep creating gods like Amazon.
Yeah, winner take all.
That’s not fun. It’s not the kind of world I want to live in. By the way, I don’t want… I want us to be really big and impactful, but I don’t want us to be this big bloated company. Like I want to figure out a way if we can create a new type of company when there’s alignments between ourselves and our developers. Where we work for our developers, and our developers work for us. So we have a big impact without having to bloat too much.
Hmm. Yeah. This reminds me of the paradox of startups. Like the people who work at startups don’t want to work at big companies, but the goal of every startup is to become a big company.
Yeah. You know there’s a new trend in startups where they’re achieving really big financial outcomes without growing too large.
Yeah. Which is kind of what we were talking about, the whole we have such wonderful tools now that small teams are able to be really impactful.
Like WhatsApp wouldn’t have existed without Erlang. Right?
Yeah, or Instagram.
They had 50 engineers when they got bought for, I don’t know how many billions of dollars. I was looking at… I use Robinhood for investment, and they are about 300 employees, and they have valuation of $6 billion. So we’re getting to a place where you can have sort of an outsized impact, and an outsized return for yourself and your investors without having to become an all powerful, all seeing God.
Yeah. I remember hearing early startup people from the 90s saying that the second you raised money and started a company you’d have to buy all these servers and hire people just to manage your servers. Now you don’t even have to hire one person to do that job.
Why would that trend stop? So what’s the next step for that trend, right?
Oh, you mean how do we decrease the amount of people we need even more?
Yeah. I mean, that trend will continue.
With better and better tools.
I think the end outcome is the vision of this…
One person?
Independent software programmers on the internet, dealing with crypto, and making money, and a kid from India can become a millionaire at 15 years old. I think that’s a great world.
Yeah.
That’d be the kind of world that I’d be really excited about creating.
Yeah.
Equality of opportunity really is… This would be the ultimate equality of opportunity because there’s no gatekeepers, there’s no prejudice. Just you and your merit. A lot of people don’t want that by the way. Like the reason why there’s in the US there’s a lot of hate for merit, because a lot of people don’t want merit. Tough luck. If that’s not what you want, I mean, the alternative is those totalitarian systems that you were mentioning, whether it’s real totalitarian systems, or these very top down heavy companies. But I think I’d love to live in a world where there’s more freedom, there’s more meritocracy.
Yeah. That’s a beautiful, beautiful vision. It makes sense why it speaks so much to you because it was your experience.
Yeah.
The experience of a lot of our users now. Like next month Samarth; one of our top Replit creators, he’s interning with us. He’s coming from India and he’s 16 years old. So impressive.
Yeah.
Yeah. I got a big laugh out of… On your Twitter feed at some point recently you posted something you wanted someone to do, and you were like, “Whoever gives me the lowest bid I’ll take that.” It was unbelievably… It was so low that people were hating on you on Twitter for like exploiting children.
Right. So, but here’s the thing like that kid has no opportunity costs. This is, they just wanted to do it.
They’re playing Xbox as the opportunity costs.
Yes. He loved doing it. His software is running and now I use it every day.
So it’s like a resume thing for him, prize, and pride thing for him?
Yeah, exactly. He got paid $45 which is for a 13 year old kid, is not bad at all.
Sure. Yeah. Have you thought about… Or maybe it was legally wouldn’t make any sense, turning this into a service? Cause I feel like there are people who would pay children to code for them.
Yeah. I think definitely you need to look at the legality of it, but ultimately our platform is going to be about that. It’s going to be about how do you learn how to code and then how do you make money with programming? So the initial part of our life and my career has been how to make programming tools easier, and more accessible. I think that the latter half now is going to be taking that vision and merging it with, “How do you translate that into economic activity?” “How do you translate that into money?” I have this tweet pinned under my Twitter profile; excerpt from a book and the title is Ideas Become Wealth. This is really what we’re going to be about; we’re going to be about shortening the distance between ideas and wealth. We’re going to be about shortening the distance between labour and capital. This is the thing that we’re mostly interested in.
Let me write that down. I like that, as a title that’s kind of cool.
Yeah.
Shortening the distance between…
Ideas and wealth, and labour and capital
Cool. Well, one of the phrases I saw on the internet that I really liked was you talked about leapfrogging the REPL.
Yeah.
In the same way that…
The ID.
Oh yeah, leapfrogging the ID.
Yeah. So leapfrogging the ID was that, I was thinking about as more people are using Replit as if not a primary, maybe a secondary development environment; a lot of them are actually using it as a primary development environment, what does it mean for IDEs. Like we have a lot of IDE features but ultimately we’re still a REPL. We load really fast it’s perfect for smaller projects, and one mental model to think about this is how there’s this leapfrogging effect where you have certain countries in the world and certain generations move on to a new ascension of a technology without having to go through the existing infrastructure. So in large parts of Africa, never got the landline. They jumped straight to the cell phone. Most of Europe and the Western world had to go through landlines before they got to cell phones. Right. But then if you have a green field, you can leap frog. For us young programmers are that green field. We can sort of leap frog that old clunky sort of intelligent IDE type system, and jump straight to to a more fluent collaborative, always on development environment.
Hmm. You’re spoiling these kids
Yeah. By the way I don’t think it’s only us, Jupiter notebook is a big one or sort of a Next Journal. All these notebooks systems are really awesome. A lot of other online IDAs. So it’s a movement, it’s not just us.
So, we talked a bit about how you added features to the REPL and it got more and more full-featured and we talked about the multi language…
We talked about the multi-language and abstracting everything. I’d be curious to hear your thoughts about more of the future of Replit, the other exciting directions to go. I know you have so many interesting ones.
The grand vision is basically what I laid out. I’d like to contribute to that world, where we create that world of independent software vendors. I don’t know how the mechanics exactly would work, but this is where we want to go. If you want me to get more concrete…
About that? Sure!
Or just features that…?
Well, I feel like that’s interesting, and also if you have ideas on the technical ways… the programming language ways you’ll make that a reality.
I’m not thinking too much on the programming language level, although I’d want to. Part of the reason…
The tools?
Part of the reason I’m not thinking on the programing language level is because we need to be neutral on Replit.
Yesterday, we angered some people from the Elm community because we had promised them to add Elm, but then it took us a lot longer than they expected.
People are seeing us as this neutral ground right now. I think we just took a stance on that and I think we need to keep being as language agnostic as we can. I explained earlier that I believe in the plurality of software community. I believe in experimentation. I want Replit to be a part of that.
But, that doesn’t mean that we’re not enhancing that involved environment, but we’re more thinking on a systems level right now. We have some projects where we’re doing things in certain programming languages or certain environments.
For example, a previous guest of yours, Glen, who, if I tried to pronounce his last name, it’s going to be a bloodshed.
I think it’s Chiacchieri.
Chiacchieri, he is doing a little bit of research for us and now building a programming library that allows kids to write visual programmes and games really easily in Python.
We have projects here and there where we zoom in on the language or the experience, and we try to do it. But more so, I’m thinking on a systems level. I’m trying to think about how can we create a general purpose, modern IPC (IPC meaning interprocess communication). I don’t mean on on a single machine. I mean even over the network. T.
There’s Protobufs and these things, but they’re not very expressive. I want something more fluid; more easier to integrate. Can we create a system where it’s easy to call other functions or other methods on different programmes and different programming languages over the network?
If we were able to do that, then you’re able to link against other REPLs on the Replit ecosystem. I think link is the wrong word, but you’ll be able to call them and you’ll have this interaction where someone spins up a service or an API and everyone’s calling each other.
The easier thing is just to say everything is in HTTP to be and everyone’s calling each other, but then you are introducing a lot of overhead to the programmer.
Every programmer needs to create the HTTP servers and the JSON API for it. But we’re trying to think about how to make that more fluid. We have a lot of different ideas here and there, but I don’t think we have anything concrete to share right now. There’s some concrete projects. I do want to talk about it more in the future.
Mm-hmm (affirmative) Makes sense. In the near term, I’d be curious to hear about some of the exciting projects.
We just released a graphics and now we’re working on…
It’s native graphics, which is pretty cool in the browser.
This was a big one. We have this tradition of starting a lot of skunkwork projects, sometimes competing projects. Although we’re a small company, we’re six people, about to become seven, we’d have two different programmers working on the same thing because we’re not sure which direction to take. We wanted to add general purpose graphics to Replit. That means if you want to use PI game, if you want to use Java swing, if you’re going to use Qt; you’ll be able to use it. You want to use Tcl/Tk, you’ll be able to use it on the system.
One way we could have done it is we said… actually, there’s no graphics. Everything writes to the terminal. But, we found that there’s this old terminal feature called Sixel. Sixel allows you to draw images into the terminal. So, we decided to build a job purpose graphics system based on Sixel. It’s still standard compliant. It’s something we care a lot about to be always standard compliant. We started prototyping that. We got to the point where we ran Doom in Sixel.
We got kind of mad science-y on this one. We were able to make it work as like an IPython notebook as well… Or like in Mathematica, where you can program using images or using squares or using different things in the REPL.
So it added a lot of features and capacities to REPL. We haven’t released any of that yet because our end goal is to release a graphics system. So that was one approach.
But wasn’t the one you went with?
No, we didn’t go with that. It’s actually good. The last approach that actually worked is sort of underwhelming given the meandering that we did, but it works.
The second approach was… We want to actually be able to trap the frame buffer as a program is writing to the frame buffer and streaming down as video. If you want to do that, you’d want to be the kernel basically. So we started looking at the different userspace kernel implementations. One of the things that really attracted our eyes was Google’s G visor.
As we started contributing to Google G visor and working on it to get it to a point where we can do that sort of thing. That turned out to be a really long-term project. G visor is really early. There’s a lot of system calls, a lot of things that they want to implement.
One day, Rob, one of our engineers, was messing around and he started Chrome and he started VNC server with Chrome in it. We just had Chrome running on our infrastructure. We were watching YouTube together. I’m like, “All right, that’s it! We found our graphics system, it’s going to be VMC.” Everyone was like, “No, that’s too janky. We can’t just open a VNC server for every client. I’m like, “No, it works. Let’s just do it.”
So, you sometimes, as a manager, you have to just spend all this time on all these different things and you just say, all right, that’s it, we’re done. We’re all hands on deck. Commit. In two weeks we, we built a general purpose VNC launcher and system that works with any graphics, any language, any framework.
It’s crazy. I’ve been seeing all the images on Twitter of the recursiveness of how it grows, because you can load… you can pop open a web browser and load Replit, and then inside Replit, you can load Replit again.
Anytime we release a feature, we try to take it to the absurdist conclusion. When I was writing a blog for us, I was like, what would be cool if that as you’re reading a blog post, you would hit run and you would get Chrome to the same blog post.
We left a hint for people saying, “Hey, you can do it recursively.” So, people ran Replit in the blog post, it opened Chrome. They went into the Chrome, they ran their Replit again, they ran Replit again. I’ve seen people do it six times. Again, really tiny.
Six times?
Six times. People on Hacker News were commenting with their images and how far they got. Then people on Twitter were also doing that.
Was the limit just the pixel size? It wasn’t compute… cause all the compute stuff was happening on the server…
All the computer on the server. But it was a lot of fun.
That’s hilarious. So another one of the things that I find most interesting about Replit is the community. It seems like you have a very active community of youngsters. These game jams are a new thing. These competitions that you run… is the one that you’re running now the first one where there’s a reward or have you had that?
Yeah. We used to give them karma. Sometimes, something like an Amazon gift card or something like that.
Actually, the story of how we found our community is that obvious. Haya and I, my co-founder and I were… mostly me, I didn’t really know how active of a teen developer community we have. In retrospect now I understand why they love our tools. If I was growing up now, I would probably be all over. Based on my experience talking about how it was lonely, I would have loved something like that. But, at the time, it wasn’t really obvious to me that how big our community could be.
We started seeing a sort of semblance of a community on our feedback form. Some kids would leave us feedback and then some other kids would reply and start making friends with them, and start sharing REPLs with them talking… and it was like “This is strange.”
So we took the external software that we use for that, and we generated another feedback form, but we called it… something like forum, and… we wanted to populate the forum, so let’s do a challenge. So, we did a challenge: share your REPL on the best REPL wins.
The first hour we had a hundred shares. Then the second hour, another hundred, and then they wouldn’t stop. There’s all this energy and flood gates that we just opened it, and we should have done it years ago. There was all this pent up energy.
One kid built a chat room. He built a chat room, by the way, in the paradigm that I was talking about. He had a backend REPL that was doing the data storage and everything, and he had the clients being REPLs themselves. So, he would boot up into this prompt chat thing. This is connecting to this backend that’s connecting all the different clients together.
So, if I want to join the chat, it’s not a website, I have to open up a REPL.
You open up a REPL, you run it, and the prompt changes from the REPL prompt to a chat prompt.
You have to hit run?
You have to hit run, and then that connects to a backend, which is another REPL actually.
In a different language… ?
I think it was both Python, but it could’ve easily been a different language.
He did in two separate ones so people wouldn’t hack it, I guess?
Yes, because you also you need to connect the users. So, if you, if you had every process on its own, how would you connect it? You need some kind of federated system. So it was like a centralised system. He had some backend that they were connecting to.
The database, it would be persistent somehow?
No, I don’t think it was persistent at first. Later on, I think he made it persistent, but at first it was just like a broadcast system.
This kid was nine, probably, right?
Twelve. I went in the chat and started chatting with them and it was just amazing how much they started sharing their stuff and the community started. The community built itself. Then we started a Discord server for them because we wanted something more interesting. The Discord server started growing and we have these hyperactive, amazing group of kids on these servers building amazing software and collaborating and helping each other and helping other people in the community.
Even as I’m saying the story, it’s kind of unbelievable to my own ears how this whole thing progressed, but now we have this amazing community that’s sort of growing and we love it. I spend an insane amount of time in the community just hanging out and working with them.
We started a multiplayer session and we all hop into it. The other day I taught them how to do trampolines in JavaScript. Someone was running into a recursion problem where they were running out of stack space. I was like, “Oh, you should trampoline that. What does this trampoline?” Then I started a live session and showed them what a trampoline is.
I could see how powerful of a community… so engaged of a community like that could be. While you were cooking upstairs, Haya was telling me about how she was working on a design for a help system. You guys have a help channel in the Discord, but she wants to bake it into the actual interface. I can imagine… just be supercharged, cause you have all these kids wanting to talk to each other, so they’re desperate to help each other if anyone comes up with issues.
It’s really under utilised right now. We have a lot of energy of the community that could be better utilised it.
It reminds me of watching my brother and his friends playing Minecraft and then teaching each other how they do it. There’s no reason why we can’t apply that same mentoring energy to programming.
Yeah, in fact, if you merge the two, you’re golden. I think Roblox did a really good job. We’re starting to see a lot of kids from Replit using Replit to script Roblox and things like that. So there’s a lot of interconnectedness.
We spot trends really early on. Before Fortnite started becoming mainstream, we started seeing all these websites and bots prop up that do something relating Fortnite. Then two months later, Fortnite becomes this worldwide sensation. Same thing with Discord. We started seeing Discord all over the place… 2015 or 2016. Then of course, discord kind of exploded in 2017 and 2018. But it’s interesting how we see the trends early on. It’s interesting how teens are early adopters in a lot of ways, not just the latest social app, but a lot of different applications.
I guess this explains the Replit venture arm that you’re about to start, right?
I think that’s a good idea. I actually want to do it.
Well you better, or you got to sell this data to venture capital firms. Well, what’s your current prediction? What are you hearing about now?
We’re kind of like all around low hype cycle in a lot things. [crosstalk 01:50:26] I think Roblox is really starting to take up, but I haven’t really noticed something that’s screaming at me.
Sometimes, do you not realise it was a big deal until afterwards?
Yeah, maybe, but I think with Fortnite, I really knew it. It’s like, “This is insane, it’s everywhere! Every comment, every meme, everything… it’s Fortnite.” So it really is in your face. I think PewDiePie is now, with his battle with T-Series, it’s really everywhere. Have you heard about this?
Well, I heard about PewDiePie with the shootings.
No, it’s not that. By the way, that guy was a troll. PewDiePie just makes memes. But there’s this big battle for the number one spot for YouTube. It’s between this Indian channel called T series and PewDiePie. A lot of kids are into this and they’re trying to figure out a way to help PewDiePie. A lot of them are writing applications or bots to spread the message to say, “subscribe to PewDiePie.”
So that’s a big trend right now, but I don’t see any big overarching trends, except for maybe that and Roblox is another one, especially the developer community about Roblox.
When I first found out they existed… and kids make money from Roblox… I really liked the vision you were mentioning earlier of kids in Replit making money. Yeah. I definitely see you grabbing headlines in a couple of years, like “14 year-old made 100k in a year.”
Did you see that 19 year old kid that just became a millionaire on HackerOne?
No.
HackerOne is this bounty system for hacking. There was a kid, I don’t know, from where exactly, but he’s a 19 year old kid who had just been awarded over a million dollars in HackerOne prizes. This is the new rich. This is the 21st centuries that of millionaires that we’re going to start seeing, those internet natives, programmers, creators, designers, entrepreneurs, social media influencers that are making all this money online. It’s really interesting, and I think it’ll get bigger, it’ll be accessible to anyone who wants to do it. I just think it’s an exciting world to be in right now.
From the perspective of you guys making money, I’d be curious… Does it come mostly from education at this point?
Yeah, right now we’re selling to schools and we have some developers paying us for privacy, kind of the old GitHub model; of course GitHub made it public. So, this is a lot of where we’re sort of running lean and, and making sure we’re not burning a lot of money so that we can keep going and keep exploring the next frontiers of programming.
In terms of where we see our longterm business, we see ourselves as definitely something like… some kind of cloud provider… or there’s also a potential for a business model that looks something like Unity or some of those game developer platforms where it’s a toolkit and you use it to build applications that could make money. Then if you make money, we get a kickback somehow. The marketplace you’ve talked about is an interesting idea.
So, any way we can think about how our users can make money, and by virtue of them making money, us making money off of them, I think that’s the best, most aligned vision. It’s kind of like the Apple app store model- you’re really fully aligned with your creator and you want to support them, you want to give them as much sort of as much help as possible for them to succeed.
The Haruka model is actually quite high user hostile, developer hostile. Because if you’re successful in a Haruka model, you’re going to pay the penalty for being successful. You have to leave to cut costs and things like that. For us, we were trying to figure out a model where it scales with them, and we actually make money with you.
So, you can take your time figuring out how you’re going to make money, and then as you start making money, then we started making money with you. So I know that sounds vague, but that’s the direction that we’re taking. We’re not rushing it because we want to build something new.
We don’t want to repeat all the same things like Harukas been tried and all these are good businesses and they’ve done a great job. If we’re as successful as them, I’d be, I’d be happy. But also a big part of me is about trying new things, like graphics thing, We could have done something with JavaScript or WebGL or something like that, but really we really wanted to extend this to underserved communities. Meaning, the Python community doesn’t have a place online where you can like make Pygame. So a lot of what our ethos at Replit is less about competition, more about making something new in the world.
So we want to try new things and we have the luxury of having a lean team, having the support of our investors to kind of spend some time on this and try to figure it out.
That’s great. That’s really exciting. It’s getting late. I like to finish by having you kind of list all the ways that you want to be contacted on the internet or ways to get involved, collaborate, if you’re hiring and things like that.
We’re hiring mostly generalist hackers, mostly the kind of people that would be listening to this show. Even if you’re not looking for a full-time job, if you want to explore potentially a collaboration, like we do with Glen, we’re also open to that. We did a few of those and we’re happy with them.
But we’re also looking for full-time engineer. We’re looking for infrastructure and we’re looking for front end engineers. We just look for good hackers. We don’t really have any specific… we have a jobs page that you can look at, but on the top of every job we say, “This only an approximation. Just reach out if you’re a good engineer.” That’s basically what I say.
If you’re a bad engineer, stay away. Don’t waste Amjad’s time.
I guess what I mean by that is if you’re driven, you love the kind of stuff that we’re talking about, and you really want to work on them and dedicate a big portion of your career on this, then please do reach out.
In terms of where I could be found: amasad
all over the internet — GitHub, Replit, Twitter; all these different places. Then finally, I’m really excited about what you’re doing, the community that you’re building.
The reason we support the show is because there isn’t a lot of places where we can talk about these ideas, where we can discuss these ideas, we can explore these. I’m actually surprised that there isn’t a lot of these different places, so I’m glad you’re doing this. I’m super happy to be a supporter of the show, and of course a guest.
I’m so thrilled to finally have you on here and have you as a supporter, it’s been great working together.
Yeah. Awesome.
Cool. All right. Well, thanks for taking the time. This was a pleasure.
That’s the end of the interview. As I’m sure you heard Steve and Amjad thanking each other, so I’m not going to do all that again, other than saying: thanks, Steve, for starting the Future of Coding podcast and community, and doing all these great interviews.
I think there might be one more interview that is in the archive, as it were, from the Steve era of the show. I’m not sure if that one’s ever going to see the light of day or not. Otherwise, this might be the last time we hear from Steve as host, at least from the first round of the existence of this show.
Anyways, thanks for listening. Thanks for subscribing. If you are a subscriber and have stuck with me through the year of silence, and I will see you again in the future.