Lex Fridman Podcast - #126 – James Gosling: Java, JVM, Emacs, and the Early Days of Computing
Episode Date: September 24, 2020James Gosling is the founder and lead designer of the Java programming language. Please check out our sponsors to get a discount and to support this podcast: - Public Goods: https://publicgoods.com/le...x and use code LEX - BetterHelp: https://betterhelp.com/lex - ExpressVPN: https://www.expressvpn.com/lexpod If you would like to get more information about this podcast go to https://lexfridman.com/podcast or connect with @lexfridman on Twitter, LinkedIn, Facebook, Medium, or YouTube where you can watch the video versions of these conversations. If you enjoy the podcast, please rate it 5 stars on Apple Podcasts, follow on Spotify, or support it on Patreon. Here's the outline of the episode. On some podcast players you should be able to click the timestamp to jump to that time. OUTLINE: 0:00 - Introduction 4:45 - Irrational numbers 8:04 - Math and programming 10:36 - Coding style 14:41 - First computer 23:54 - Lisp 27:22 - Write an Emacs implementation in C 35:15 - Early days of the Internet 45:57 - Elon Musk, Steve Jobs, Jeff Bezos 56:13 - Work hard and smart 58:48 - Open source 1:10:25 - Java 1:28:31 - Java virtual machine 1:44:05 - Android 1:47:04 - Advice
Transcript
Discussion (0)
The following is a conversation with James Gosling, the founder and lead designer behind the Java programming language,
which in many indices is the most popular programming language in the world,
or is always at least in the top two or three.
We only had a limited time for this conversation, but I'm sure we'll talk again several times in this podcast.
Quicks summary of the sponsors, public goods, better help, and express VPN.
Please check out these sponsors in the description
to get this content to support this podcast.
As a side note, let me say that Java is the language
with which I first learned object-oriented programming
and with it, the art and science of software engineering.
Also early on in my undergraduate education,
I took a course on concurrent programming with Java.
Looking back at that time, before fell in love with neural networks, the art of parallel
computing was both algorithmically and philosophically fascinating to me.
The concept of a computer in my mind before then was something that does one thing at a
time.
The idea that we could create
an abstraction of parallelism where you could do many things at the same time while still
guaranteeing stability and correctness was beautiful. While some folks in college took
drugs to expand their mind, I took concurrent programming. If you enjoyed this thing, subscribe
on YouTube, review it with 5 stars and up a podcast,
follow on Spotify, support on Patreon, or connect with me on Twitter, at Lex Friedman.
As usual, I'll do a few minutes of ads now and no ads in the middle.
I try to make these interesting, but I do give you time stamps, so go ahead and skip,
but please do check out the sponsors by clicking the links in the description.
It's the best way to support this podcast.
This show sponsored by Public Goods, the one-stop shop for affordable, sustainable, healthy,
household products.
I take their official and use their toothbrush, for example.
Their products often have a minimalist black and white design that I find to be just beautiful.
Some people ask why wear this black suit white design that I find to be just beautiful. Some people ask why I wear this black suit and tie. There's a simplicity to it that to me
focuses my mind on the most important bits of every moment of every day,
pulling only at the thread of the essential. You know that life has a throw at me.
It's not about how I look, it's about how I feel. That's what design is to me,
creating an inner conscious experience, not an external look.
Anyway, Publik Goods plants one tree for every order placed.
Which is kind of cool.
Visit Publik Goods.com slash Lex or use code Lex at checkout to get 15 bucks off your
first order.
This show is also sponsored by BetterHelp. Spelled H-E-L-P-E-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H Of course, I also regularly talk to David Goggins these days, who is definitely not a licensed
professional therapist, but he does help me meet his and my demons and become comfortable
to exist in their presence.
Everyone is different, but for me, I think suffering is essential for creation, but you
can suffer beautifully in a way that doesn't destroy you.
I think therapy can help in whatever form that therapy takes, and I do think that better
help is an option worth trying.
They're easy, private, affordable, and available worldwide.
You can communicate by text anytime and schedule weekly audio and video sessions.
Check it out at betterhelp.com slash flex.
This show is also sponsored by ExpressVPN.
You can use it to unlock movies and shows
that are only available in other countries.
I did this recently with Star Trek Discovery
and UK Netflix mostly because I wonder what it's like
to live in London.
I'm thinking of moving from Boston
to a place where I can build a business
of always dreamed of building.
London is probably not in the top 3, but top 10 for sure.
The number one choice currently is Austin. For many reasons that I'll probably speak
to another time. San Francisco, unfortunately, dropped out from the number one spot, but
it's still in the running. If you have advice, let me know.
Anyway, check out ExpressVPN.
It lets you change your location to almost 100 countries and it's super fast.
Go to ExpressVPN.com slash Lex pod to get an extra 3 months of ExpressVPN for free.
That's ExpressVPN.com slash Lex pod.
And now, here's my conversation with James Gosling. I've read somewhere that the square root of two is your favorite irrational number.
I have no idea where that got started.
Is there any truth to it?
Is there anything in mathematics or numbers that you find beautiful?
Oh, well, there's lots of things in math that's really beautiful.
You know, I used to consider myself really good at math and these days I consider
myself really bad at math. I never had really had a thing for the square root of two, but
when I was a teenager, there was this book called The Dictionary of Curious and Interesting dictionary of curious and interesting numbers, which for some reason I read through and
damn near memorized the whole thing.
And I started this weird habit of when I was like filling out checks, you know, or, you
know, paying for things with credit cards, I would want to make
the receipt add up to an interesting number. Is there some numbers that stuck
with you that just kind of make you feel good? They'll have a story and
fortunately I've actually mostly forgotten all of them.
Are they so like 42?
Well, yeah, I mean, 42 is pretty magical.
And then the rationals, I mean, but is there a square of two story in there somewhere? How does that go?
I'm a good son. It's, it's like the only number that has destroyed a religion.
Which way?
that has destroyed a religion. In which way?
Well, the pathagorians, they believe that all numbers were perfect and you could represent
anything as a rational number. in that time period, this proof came out that there was no rational fraction whose value
was equal to the square root of two.
And that means nothing in this world is perfect, not even mathematics.
Well, it means that your definition of perfect was imperfect.
Well, then there's the gator and completeness theorems in the 20th century that ruined it
once again for everybody.
Yeah, although girdles theorem, the less than I take from Gurdles' theorem is not that there are things you can't know,
which is fundamentally what it says.
But people want black and white answers.
They want true or false. But if you allow a three-state logic that is true false or maybe, then life's good.
I feel like there's a parallel to modern political discourse in there somewhere.
Let me ask, so with your early love or appreciation of the beauty of mathematics, do you see a parallel
between that world and the world of programming?
You know, programming is all about logical structure, understanding the patterns that come out of computation, understanding sort of, I mean,
it's often like, you know, the path through the graph of possibilities to find a short,
a short route.
Meaning like, find a short program that gets the job done, you know, kind of thing.
But so then on the topic of irrational numbers, do you see, do you see programming?
You just painted it so cleanly.
It's a little this trajectory to find like a nice little program, but do you see it as fundamentally
messy?
Maybe unlike mathematics. I don't think of it. I mean, you know, you watch somebody who's good at math, do math. And you know, often it's fairly messy. Sometimes it's kind of magical.
it's kind of magical. When I was a grad student, one of the students, his name was Jim Sacks, was,
he had this reputation of being sort of a walking, talking, human, a theorem-proving machine.
And if you were having a hard problem with something,
you could just like,
a costume in the hall and say,
Jim, and he would do this,
this funny thing where he would stand up straight.
His eyes would kind of defocus.
He'd go, you know, just like, you know,
like, something in today's movies, he'd just, yeah. And then he'd go, you know, just like, you know, like something in today's movies, he's just
and he's straightening up and say, end log in and walk away. And you go, well, okay, so end log in
is the answer. How did he get there? By which time he's, you know, down the hallway somewhere.
Yeah. Hey, Dave's just the Oracle.
The black box, it just gives you the answer.
Yeah, and then you have to figure out the path from the question to the answer.
I think in one of the videos I watched, you mentioned Don Knuth.
Well, at least recommending his book is something people should read. But in terms of, you
know, theoretical computer science, do you see something beautiful that has been inspiring
to you, speaking of NLog N, in your work on programming languages, that's in that whole
world of algorithms and complexity and you know these kinds of
more formal mathematical things.
Or did that not really stick with you in your programming life?
Well, it did stick pretty clearly for me because one of the things that I care about is being able to
sort of look at a piece of code and be able to prove to myself that it works.
And so for example, I find that I'm at odds with many of the people around me over issues about how you lay out a piece of software.
Software engineers get really cranky about how they format the documents that are
the programs, you know, where they put new lines and where they put, you know, the braces,
the braces and all the rest of the. Right. And I tend to go for a style that's very dense. Minimize the weight space. Yeah, well, to maximize the amount
that I can see at once. Right. So I like to be able to see a whole function and to understand
what it does, rather than have to go scroll, scroll, remember right yeah I'm with you on that yeah that's and people don't like that.
Yeah I've had I've had you know multiple times when engineering teams have staged what was effectively an intervention.
mention. You know, they invite me to a meeting and everybody's arrived before me and they said, all look at me and say, James, about your well verbally. I am just naturally a slow reader.
I'm what most people would call a visual thinker. So when you think about a program, what do you see? I see pictures. Right. So when I look at a piece of code on a piece of
paper, it very quickly gets transformed into a picture. And you know, it's almost like a piece
of machinery with, you know, this connected to that and like these gear and sizes. Yeah.
Yeah, I see them more like that than I see the, the, the, the sort of verbal structure or
the like school structure of letters.
So then when you look at the program, that's why you want to see it all in the same place,
then you can just map it to something visual.
Yeah, and it's just kind of like, like it leaps off the page at me. Yeah.
Yeah. What are the inputs? What are the outputs? What the heck is this thing doing? Yeah. Yeah.
Yeah. Getting a whole vision of it. Can we go back into your memory? Memory, long-term memory
access. What's the first program you've ever written? Oh. I have no idea what the first one was. I know the first
machine that I learned to program on. What is it? It was a PDP 8 at the University of Calgary. Do you remember the specs? Oh, yeah, so the thing had 4k of RAM.
12-bit words.
The clock rate was
It was about a
third of a megahertz. Oh, so I didn't even get to the M, okay?
Yeah, yeah.
So, you know, we're like 10,000 times faster these days.
And was this kind of like a super compute, like a serious computer for?
No, the PDP 8i was the first thing that people were calling like mini computer. They were sort
of inexpensive enough that a university lab could maybe afford to buy one.
It was their time sharing all that kind of stuff for you?
Um, there actually was a time sharing OS for that, but it wasn't used really widely. The machine that I learned
on was one that was kind of hidden in the back corner of the computer center. And it was
was it was bought as part of a project to do computer networking. But, you know, they didn't actually use it very much.
It was mostly just kind of sitting there.
And it was kind of sitting there.
And I noticed it was just kind of sitting there.
So I started fooling around with it.
And nobody seemed to mind.
So I just kept doing that and I had a keyboard and a monitor.
Oh, this was way before monitors were common.
So it was literally a Model 33 teletype with a paper tape reader.
Okay, so the user interface wasn't very good.
Yeah, it was the first computer ever built with integrated circuits.
But by integrated circuits, I mean that they would have like 10 or 12 transistors on one piece of silicon.
Not the 10 or 12 billion that machines have today.
So what do that, I mean, feel like if you remember those, I mean, did you have kind of inkling of the magic of exponential kind of improvement of
Moore's law of the potential of the future that was that your fingertips kind of thing?
Or was it just a cool time?
Yeah, it was just a toy.
You know, I had always like building stuff, but one of the problems with building stuff is that you need to have parts.
You need to have pieces of wood or wire or switches or stuff like that.
And that was all cost money.
And here you could build.
You could build arbitrarily complicated things and I didn't need any physical materials.
It required no money.
That's a good way to put programming.
You're right.
It's, if you love building things, it's, you know, completely accessible.
You don't need anything.
And anybody from anywhere could just build something really cool.
Yeah.
If you've got access to a computer, you can build all kinds of crazy stuff.
And when you were somebody like me who had really no money.
And I remember just lusting after being able to buy like a transistor.
You know, and when I would do sort of electronics kind of projects, they were mostly made done by like dumpster diving for trash. And one of my big halls was discarded relay racks
from the back of the phone company switching center.
Oh nice.
That was the big memorable treasure.
Oh yeah, yeah.
That was a...
What do you use that for?
I built a machine that played Tic-Tac-Toe.
Nice.
Out of relays, of course, the thing that was really hard
was that all the relays required a specific voltage,
but getting a power supply that would do that voltage was pretty hard.
And since I had a bunch of trashed television sets, I had to
sort of cobble together something that was wrong but worked. So I was actually running these
relays at 300 volts. And none of the electrical connections were like properly sealed off.
So, probably you survived that period of your life.
Oh, for so many reasons. For so many reasons. I mean, you know, you're, you know, it's pretty
common for teenage geeks to discover, oh, third mind, that's real easy to make.
Yeah, well, I'm glad you did, but do you remember the, do you remember what program
and Calgary that you wrote, anything that stands out? And what language?
Well, so mostly the anything of any size was assembly code.
And actually, before I learned assembly code, there was this programming language on the
PDP8 called focal 5.
And focal 5 was kind of like a really stripped down Fortran.
And I remember playing, you know, building programs that did things like
Play Blackjack
or Solitaire or,
and for some reason,
or the things that I really liked were ones where
they were just like plot plotting graphs.
So something with like a function or a data and then you plot it?
Yeah, yeah, I did a bunches of those things and went, ooh, pretty pictures.
And so this would like print out again, no monitors.
Right, so it was like on a teletype.
Yeah. Yeah. So it's using something that's kind of like a typewriter.
Yeah. And then using those to plot functions.
So when I apologize to romanticize things, but when did you first
So when I apologize to romanticize things, but when did you first fall in love with programming? What was the first programming language?
Like a serious maybe software engineer, or you thought this is a beautiful thing?
I guess I never really thought of any particular language as being like beautiful,
because it was never really about the language for me. It was about what you could do with it.
And, you know, even today, you know, people try to get me into arguments about particular forms of syntax for this or that.
And I'm like, who cares? It's about what you can do, not how you spell the word.
So, back in those days, I learned, like, peel one and foretran and co-wall.
And by the time that people were willing to hire me to do stuff,
it was mostly assembly code and PDP know, PDP8 assembly code and
and Fortran code and control data assembly code for like the CDC 6400, which was an early, I guess, super computer. Even though that super computer has less compute power than my phone by a lot.
And that was mostly, like said, Fortran world. That said, you've also showed appreciation for
the greatest language ever that I think everyone agrees is Lisp.
list. Well, list was definitely on my list of the greatest ones that have existed. Is it a number one or I mean, or are you, I mean, you know, the thing is that it's, you
know, I wouldn't put it number one now. Is it the parentheses? What do you not love about this?
Well, I guess the number one thing to not love about it is so freaking many
parentheses. On the love thing is, you know, out of those
tons of parentheses,
you actually get an interesting language structure.
And I've always thought that there was a friendly version
of Lisp hiding out there somewhere,
but I've never really spent much time thinking about it.
But, like up the food chain for me,
than from Lesb is Simula, which a very small number
of people have ever used.
But a lot of people, I think, get a huge influence, right?
And the programming, but in a similar,
I apologize if I'm wrong on this,
but is that one of the first functional languages?
Or no, it was the first object oriented programming language. It's really where
object oriented and languages sort of came together.
And it was also the language where co-routines first showed up as a part of the language.
where co-routines first showed up as a part of the language.
So you could have a programming style that was, you could think of it as multi-threaded,
with a lot of parallelism.
Really?
Either as a parallelism in there?
Yeah.
Yeah, so that was back, you know, so the first stimulus back was
Simula 67. For like 1967? Yeah. Wow. So it had, it had
coroutines which are almost threads. The thing about coroutines is that they
don't have true concurrency. so you can get away without really complex
locking.
You can't useably do cover routines on a multi-core machine.
Or if you try to do cover routines on a multi-core machine, you don't actually get to use
the multiple cores. Yeah.
Other than that, you start then having to get into the universe of
semaphores and locks and things like that.
But in terms of the style of programming,
you could write code and think of it as being multi-threaded.
The mental model was very much a multi-threaded one and all kinds of problems you could approach
very differently.
To return to the world of Lisbon, at CMU, you wrote a version of EMAX
that I think was very impactful in the history of EMAX.
What was your motivation for doing so?
At that time, so that was in like 85 or 86. I had been using Unix for a few years. And
mostly editing was this tool called EP, which was sort of an ancestor of Vi.
And is it a pretty good editor? Not a good editor? Well, if what you're using, if your input device is a teletype, it's pretty good.
Yeah. It's certainly more humane than Tico, which was kind of the common thing in a lot of the
deck universe at the time.
TICO is both TK?
Is that the one?
No.
TICO, TECO, the text editor and corrector.
Correct, so EMAX stands for editor macros and TICO had a way of writing macros.
And so the original EMAX from MIT sort of started out as a collection of macros for T-GO. But then, you know, the sort of E-MAC style got popular originally at MIT, and then people
did a few other implementations of E-MACs that were, you know, the code base was entirely
different, but it was sort of the philosophical style of the original EMAX.
What was the philosophy of EMAX? And by the way, were all the implementations always in C?
And then...
No.
And how does Lisp fit into the picture?
No, so the very first EMAX was written as a bunch of macros for the TICO text that appeared.
Wow, that's so interesting. And the macro language for Tico was probably the most
ridiculously obscure format.
If you just look at a Tico program on a page,
you think it was just random characters.
It really looks like just line noise.
Just kind of like late tech or something.
Oh, or way worse than late tech. Way, way worse than late tech.
But, you know, if you use Tico a lot, which I did, the Tico was completely optimized for touch typing at high speed.
So there were no two character commands.
Or there were a few, but mostly they were just one character.
So every character in the keyboard was a separate command.
And actually every character in the keyboard, we usually tour three commands because you
know, you get shift and control and all of those things.
And it's just a way of very tightly encoding it.
And mostly what Emax did was it made that that visual, right?
So one way to think of Tico is use Emax with your eyes closed.
Where you have to maintain a mental model of, you know, sort of a mental image of your document, you have to go, okay, so the cursor is between the A and the E. And I want to exchange those.
So I do these things, right?
So it is almost exactly the Emax command set.
Well, it's roughly approximate,
roughly the same as Emax command set,
but using Emax with your eyes closed.
So what Emax, part of what Emacs added to the whole thing
was being able to visually see what you were editing
in a form that matched your document.
And a lot of things changed in the command set.
It, because it was programmable, it was really flexible.
You could add new commands for all kinds of things.
And then people rewrote EMAX like multiple times in Lisp.
There was one done at MIT for the Lisp machine.
There was one done for Miltics.
And one summer, I got a summer job to work
on the Pascal compiler for Miltics.
And that was actually the first time I used EMAX.
And so to write the compiler. So you've walked in compilers to this. Yeah, that's
a thing. Yeah. So I did a lot of work. I mean, I spent like a really intense three months
working on this Pascal compiler, basically living in Emax. And it was it was the one written in Maclas by
Bernie Greenberg and I thought wow this is just a way better way to do
editing and then I got back to CMU where we had kind of one of everything, and two of a bunch of things, and four of a few things.
And since I mostly worked in the Unix universe,
and Unix didn't have an EMAX,
I decided that I needed to fix that problem.
So I wrote this, this implementation of EMAX in C,
because at the time C was really the only language
that worked on Unix.
On Unix.
And you were comfortable with C as well at that point?
Yeah, at that time I had done a lot of C coding.
This was in like 86. And you know, it was running well enough to be for me to use it to edit itself within
a month or two, and then it kind of took over the university and then it went outside. Yeah, and then it went outside the, and largely because UNIX kind of took over the research
community on the, on the, on the arpanet, then, and EMAX was, was kind of the best editor
out there.
It kind of took over.
And there was actually a brief period where I actually had login
IDs on every non-military host on the Arpanette. You know, because people would say, oh, can
we install this? And I'd like, well, yeah, but you'll need some help.
The day's one security wasn't-
When nobody cared.
Nobody cared.
Yeah.
I mean, it can ask briefly what were those early days of our Pranet and the internet
like?
What was, I mean, did you, again, sorry for the silly question, but could you have possibly
imagined that the internet would look like what it is today?
You know, some of it is remarkably unchanged.
So like one of the things that I noticed really early on when I was at Carnegie Mellon was that a lot of
social life became centered around the arpanet. So things like between email and text messaging,
because text messaging was a part of the
ARP and it really early on. There were no cell phones, but you're
sitting at a terminal and you're typing stuff. And essentially
email or like what is just like a one line message, right? So
so so cool. So like chat, like chat., so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, so, know, it was all like driven by social media. Right in the in the in the 80s.
Easier than Francois, yeah. You know, and my life had gotten to where, you know, I media from like the early mid 80s. And so when it sort of transformed into the internet
and social media explodes, I was kind of like, what's the big deal?
Yeah, it's just a scale thing. It's it's it's right that the scale thing is just astonishing. But the fundamentals in some
ways, the fundamentals of have hardly changed. And you know, the technologies behind the
networking have changed significantly, the watershed moment of, you know, going from the arpanet to the internet.
And then people starting to just scale and scale and scale.
I mean, the scaling that happened in the early 90s and the way that so many vested interests fought the internet.
Oh, who, oh, interesting.
What was the, oh, because you can't really control the internet.
Yeah, so, so, so, so, fundamentally the, you know, the cable TV companies and broadcasters and phone companies
You know at the deepest fibers of their being they hated the internet
But it was often kind of a funny thing
because
You know, so so think of a cable company
Right most of the employees of a cable company
their job is
Getting TV shows movies what whatever out to their customers
They view their business as serving their customers.
But as you climb up the hierarchy in the cable companies, that view shifts because
because really the business of the cable companies
had always been selling eyeballs to advertisers.
And that view of like a cable company
didn't really dawn on most people who worked at the cable companies.
But, you know, I had various dust-ups with various cable companies where you could see,
you know, in the stratified layers of the corporation that this view of, you know of the reason that you have cable TV is to capture eyeballs.
They didn't see it that way.
Well, so the people who worked at the phone company or at the cable companies, their
view was that their job was getting delightful content out to their customers and
their customers would pay for them would pay for that higher up they viewed
this as as a way of attracting eyeballs to them and and then what they were
really doing was selling the eyeballs.
They were glued to their content to the advertisers.
To the advertisers, yeah.
And so the internet was a competition in that sense. Right. And, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and and, and, and, and, and, and, and, and, and, and, and, and, and and, and, and, and, and, and, and, and, and, and, and, and, and, and, and And there was one proposal that we sent, that we won detailed proposal that we wrote
up, you know, back at that sun in the early 90s that was essentially like, look, anybody,
you know, with internet technologies, anybody can become provider of content. So, you know, you could be distributing home movies
to your parents or your cousins or who are anywhere else.
So anybody can become a publisher.
Wow, you were thinking about that already.
Yeah, that was like, yeah, that was that that was like in the in the early 90s. Yeah
And we thought this would be great
You could you know and the kind of content we were thinking about at the time was like
You know home movies kids essays
You know stuff from like grocery stores or you know that stores or a restaurant that they could actually start sending information
about.
And as brilliant.
And the reaction of the cable companies was like, fuck no.
Because then we're out of business.
What is it about companies that,
because they could have just,
they could have been ahead of that wave,
they could have listened to that,
and they could have,
they didn't see a path to revenue.
You know, there's,
there's somewhere in there there's a lesson for like big companies, right?
Like to listen to, to try to anticipate the, the renegade out there out of the box,
people like yourself in their early days, the writing proposals about what this could possibly be.
Well, and that, you know, you know, it wasn't, you know, if you're in a position where you're making
truckloads of money off of a particular business model,
you know, the whole thought of like, you know, leaping the chasm, right? You know, you can see, oh, new models
that are more effective are emerging, right? So like digital cameras versus film cameras.
You know, I mean, why take the leap? Why take the leap? Because you're making so much money off of film.
And, you know, in my past at Tsan,
one of our big customers was Kodak.
And I ended up interacting with folks from Kodak quite a lot.
And they actually had a big digital camera research and digital imaging business or
the development group.
And they knew that you just look at the trend lines and you look at the emerging quality of these digital cameras.
And you can just plot on the graph. And it's like, sure, film is better today.
But digital is improving like this.
The lines are going to cross.
And the point at which the lines cross is going to be a collapse in their business.
And they could see that.
They absolutely knew that.
The problem is that, you know, up to the point
where they hit the wall, they were making truckloads of money, right? And when
they did the math, it never started to make sense for them to kind of lead the charge.
And part of the issues for a lot of companies for this kind of stuff is that, you know,
if you're going to leap over a chasm like that, like with Kodak going from film to digital,
that's a transition that's going to take a while. Right? We had we had fights like this with people over like smart cards.
The smart cards fights were just ludicrous.
But that's what visionary leadership comes in, right? There's something you need to roll in and say,
then take the leap.
Well, it's it partly take the leap, but it's also partly take the hit.
Take the hit and it's time.
Right, so, so, so you can draw all the graphs you want
that show that, you know, if we leap from here,
you know, that, you know, on our present trajectory,
we're doing this and there's a cliff.
If we force ourselves into it, into a transition,
and we proactively do that, we can be on the next wave,
but there will be a period when we're in a trough.
And pretty much always there ends up being a trough as you leap the chasm.
But the way that public companies work on this planet,
they're reporting every quarter. And the one thing that a CEO must never do
is take a big hit over some quarter. And many of these transitions involve a big hit for a period of time,
you know, one, two, three quarters. And so you get some companies and, you know, like Tesla and Amazon are really good examples of companies that take huge hits.
But they have the luxury of being able to ignore the stock market for a little while.
And that's not so true today, really.
But, you know, in the early days of both of those companies,
you know, like, like, like, like, they both did this thing of, you know,
I don't care about the quarterly reports, I care about how many, how many happy customers we have.
Yeah. Right. And having as many happy customers as possible can often be an enemy of the bottom line.
Yeah, so how do they make that work? I mean, Amazon operated the negative for a long time.
It's like investing into the future. Right. But, you know, so Amazon and Google and Tesla and Facebook,
a lot of those had what amounted amount to patient money. Often because there's there's like
a charismatic central figure who has a really large block of stock and they can just make it so.
So what on that topic just maybe it's a little small tangent, but you've gotten a chance to work with
some pretty big leaders.
What are your thoughts about on the test society, La Musk leadership, Amazon side, Jeff
Bezos, all of these folks with large amounts of stock and vision in their company?
I mean, they're founders.
Yeah. Either the complete founders are like early on
folks. And they're, the Amazon have taken a lot of leaps and blue, you know, that probably at the time
people would criticize as like, what is this bookstore thing? Why? Yeah. And, you know, Bezos had a vision. And he had the ability to just follow it.
Lots of people have visions. And, you know, the average vision is completely idiotic and you crash and burn.
You know, the silicon valley crash and burn rate is pretty high.
They don't necessarily crash and burn because they were dumb ideas, but often it's just timing and luck. he's like Tesla.
And really, the original Tesla,
you know, sort of pre-Elon,
was kind of doing sort of okay, but he just drove them.
And because he had a really strong vision,
he would make calls that were always,
well, mostly pretty good.
I mean, the Model X was kind of a goofball thing to do.
But he did it boldly anyway.
Like, there's so many people that just said,
like there's so many people that oppose them on the Falcon Wind door, like the door. Yeah.
From the engineering perspective, those doors are ridiculous. It's like, yeah, they are a complete
travesty. But they're, but they're exactly the symbol of what great leadership is, which is like,
you have a vision and you just go, like,
if you're gonna do something stupid, make it really stupid. Yeah, and go all in. Yeah, yeah, and,
and, you know, to him, my credit, he's a really sharp guy. So going back in time a little bit to Steve
Jobs, you know, Steve Jobs was a similar sort of character
who had a strong vision and was really, really smart.
And you know, and he wasn't smart
about the technology parts of things,
but sort of he was really sharp about the,
this sort of human relationship between, you know, the relationship between humans and objects.
And but he was a jerk.
You know, right?
Can we just linger on that a little bit?
Like people say he's a jerk.
Is that a feature or a bug? Well, that's, that's, that's the jerk, is that a feature or a bug?
Well, that's the question, right?
So you take people like Steve,
it was really hard on people.
And so the question is, was he really,
was he needlessly hard on people
or was he just making people reach to meet his vision.
And you could kind of spin it either way.
Well, the results tell a story.
He's whatever jerk ways he had, he made people often do the best work of their life. Yeah, yeah, and that was absolutely true. And you know, I interviewed with him. And even though kind of personally I liked him, I could never work for him.
What, why do you think that what can you put into words, the kind of tension that you feel would be
into words, the kind of tension that you feel would be destructive as opposed to constructive.
Oh, he'd yell at people, he'd call them names.
And you don't like that? No. No, I don't think you need to do that. And, you know, he would, you know, I think, you know, there's, there's
pushing people to excel. And then there's too far. And I think he was on the wrong side
of the line. And I've never worked for Musk. I know a number of people who have many of them
have said and it shows up in the press a lot that Musk is kind of that way. And one of the
things that I sort of loathe about Silicon Valley these days is that a lot of the high flying successes are run by people who are complete jerks.
But it seems like there's become this sort of mythology out of Steve Jobs that the reason succeeded was because he was super hard on people. And and and and and and and and in a number
of corners, people start going, oh, if I want to succeed, I need to be a real jerk.
Yeah. Right. And and and that for me just does not compute. I mean, I know a lot of successful people who are not jerks,
who are perfectly fine people.
You know, they tend to not be in the public eye.
The general public somehow lifts the jerks up into the hero status.
Well, they, because they do things
that get them in the press.
Yeah.
And, you know, the people who,
you know, don't do the kind of things
that spill into the press.
Yeah, just talk to Chris Ladner, um, for the second time, he's a super nice guy.
Just an example of this kind of kind of individual that's in the background.
I feel like he's behind like a million technologies, but he also talked about
the jerkiness of some of the folks. Yeah, And the fact that being a jerk has become your required style.
But one thing I maybe want to ask on that is maybe to push back a little bit.
So there's the jerk side, but there's also, if I were to criticize what I've seen
as the accountability, which is almost the resistance to working hard. So, on the jerkiness side is, it's, so, post-e jobs and Elon kind of pushed people to work
really hard to do.
And it's a question whether it's possible to do that nicely.
But one of the things that bothers me, maybe I'm just Russian and just kind of,
romanticize the whole suffering thing,
but I think working hard is essential
for accomplishing anything interesting, like really hard.
And in the parlance of Sok on Valley,
it's probably too hard.
This idea of the issue works smart, not hard.
Often, to me,
sounds like you should be lazy because, of course, you want to be the work smart. Of course,
you would be a maximally efficient, but in order to discover the efficient path, like
we're talking about with the short programs, the smart hard thing isn't an either or it's an and as an end, yeah, right and
You know the the the the
People who say you should work smart not hard
They pretty much always fail. Yeah, thank you
I mean that's that's that's just just a recipe for disaster. I mean,
there are there are counter examples, but they're more people who benefited from luck. And you're saying,
yeah, exactly. Look, look, in timing, like you said, is often an essential thing. But you're saying,
you know, you can be, you can push people to work hard and do incredible work without without without without being nasty. Yeah, without being
nasty. I think Google is a good example of not being nasty and being kind.
Yeah, I mean the twins, Larry and Sergey, are both pretty nice people.
It's underpichas, very nice.
Yeah.
Yeah.
And, you know, it's a cultural of people who work really, really hard.
Let me ask a maybe a little bit of a tense question.
We're talking about E-Max.
It seems like you've done some incredible work
so outside of Java, you've done some incredible work
that didn't become as popular as it could have
because of like licensing issues and open sourcing, like,
there are issues.
What are your thoughts about
that entire mess?
About open source, now in retrospect, looking back,
about licensing, about open sourcing,
do you think open source is a good thing, a bad thing?
Do you have regrets?
Do you have wisdom that you've learned from that whole experience?
So, in general, I'm a big fan of open source.
It means the way that it can be used to build communities and promote the development of
things and promote collaboration and all of that is really pretty grand. When open source turns
into a religion that says all things must be open source. Right.
I get kind of weird about that because it's sort of like saying,
you know, some versions of that end up saying that all software engineers must take about poverty. Right.
As though it's unethical to have money. Yeah. To build a company to
all right. And you know, there's a there's a there's a slice of me that actually kind of buys into
that. Right. Because, you know, people who make billions of dollars off of like a patent.
And the patent came from like, you know, literally a stroke of lightning that hits you as you lie,
half awake and bad. Yeah, that's lucky. Good for you.
lucky, good for you, the way that that sometimes sort of explodes into something that looks to me a lot like exploitation.
You see a lot of that in like the drug industry.
You know, when you've got medications that cost, you know, cost you like $100 a day.
And it's like, no.
Yeah, so the interesting thing about the sort of open source, what bothers me is when something
is not open source and because of that, it's a worse product.
Yeah.
So, like, I mean, if I look at your just implementation of EMAX, like that could have been the dominant
implementation, like I use EMAX, that's my main ID, I apologize to the world, but I still
love it. And I could have been using your implementation of EMAX and why aren't I?
So are you using the GNU EMAX?
I guess the default on Linux is that GNU?
Yeah. And that through a strange passage started out as the one that I wrote.
Exactly. So it's still has, yeah. Right.
Well, and part of that was because, you know, in, you know, the last couple of years of
grad school, it, it became really clear to me that I was either going to be Mr. Emax forever
I was either going to be Mr. Emax forever or I was going to graduate.
Couldn't actually do both.
Was that a hard decision? That's so interesting to think about you as a putt. It's a different trajectory that could have happened.
Yeah. That's fascinating.
And maybe I could be fabulously wealthy today
if I had become Mr. Emax.
And Emax had mushroomed into a series
of text processing applications and all kinds of stuff.
And I would have, but I have a long history
of financially suboptimal decisions because I didn't want that life.
Right. And, you know, I went to grad school because I wanted to graduate. And, you know, being Mr. Emax for a while was kind of fun, and then
it kind of became not fun. And, you know, when it was not fun, and I was, there was no way I could pay my rent.
And I was like, okay, do I carry on as a grad student?
I had a research assistantship, and I was sort of living off of that and I was trying to do my,
you know, I was doing all my RA work, all my RA, you know, being grads and work and being
Mr. E-Mex all at the same time. And I decided to pick one. And one of the things that I did at the time was I went around, you know, all the people
I knew on the the Arprinette who might be able to take over looking after Emax and pretty much
everybody said, I got a day job. So, so I actually found, you know, two folks and a couple of folks in a garage in New Jersey
complete with a dog. We were willing to take it over, but they were going to have to charge money.
But they were going to have to charge money. But my deal with them was that they would only, that they would make it free for universities
and schools and stuff.
And they said sure.
And you know that upset some people.
So you have some, now I don't know the full history of this, but I think it's kind of interesting. You have some tension with Mr.
Richard Stahlman. He kind of represents this kind of like you mentioned free software.
Sort of a dogmatic focus on all information must be free.
Must be free. So what is there an interesting way to paint a picture of the
disagreement you have with Richard through the years? My basic opposition is
that when you say information must be free, to a really extreme form that turns into, you
know, all people whose job is the production of everything from movies to software. They must all take about poverty because information
must be free, and that doesn't work for me. Right? And I don't want to be wildly rich. I am not wildly rich. I do okay.
But I do actually, you know, I've, you know, I can feed my children.
Yeah, I totally agree with you. It does just make me sad that sometimes the closing of the source, for some reason the people that
like bureaucracy begins to build and sometimes it doesn't, it hurts the product.
Oh, absolutely, absolutely. It's always sad. And there is a balance in there. That's a balance. And it's not hard over, you know, rapacious capitalism
and it's not hard over in the other direction. And a lot of the open source movement,
And a lot of the open source movement, they have been managing to find a path to actually making money.
So doing things like services and support works for a lot of people. And there are some ways where it's kind of...
Some of them are a little perverse, right?
So as a part of things like this,
Sarbanes Oxley Act, and various people's interpretations
of all kinds of accounting principles.
And this is kind of a worldwide thing, but if you've got a corporation that is depending on some piece of software, you know, that often, you know, various accounting and reporting standards
say if you don't have a support contract on this thing that
your business is depending on, then that's bad. So if you've got a database, you need to pay for
support. But there's a difference between the support contracts that the average open source
database producer charges and what somebody who is truly repatious like Oracle charges. Yes, it's a balance. It is absolutely a balance. And you know, there are a lot of different
ways to make the math workout for everybody. And you know, the very unbalanced, like the winner takes all thing that happens in so much of modern
commerce, that just doesn't work for me either. I know you've talked about this in quite a few places,
but you have created one of the most popular programming languages in the world.
It's the programming language that I first learned about
how I'm picturing a programming with.
I think it's a programming language that a lot of people use in a lot of different places
and millions of devices today, Java.
So the absurd question, but can you tell the origin story of Java?
So one time ago it's on, in about 1990, there was a group of us who were kind of worried that
there was stuff going on in the universe of computing, that the computing industry was missing out on.
And so a few of us started this project at Sun.
The really got going, I mean, we started talking about it in 1990
and it really got going in 1991.
And it was all about what was happening
in terms of computing hardware processors and networking and all of that
that was outside of the computer industry.
And that was everything from the early glimmers of cell phones that were happening then to,
you know, you look at elevators and locomotives
and process control systems and factories
and all kinds of audio equipment and video equipment.
They all had processors in them
and they were all doing stuff with them.
And it sort of felt like there was something going on there that we needed
to understand. And...
So C and C plus plus was in the air already?
Oh no, C and C plus plus absolutely owned the universe at that time. Everything was written
in C and C plus plus.
So where was the hunch that there was a need for revolution?
Well, so the need for revolution was not about a language. It was about, it was just as simple
and vague as there are things happening out there. We need to understand them. We need to understand them. And so a few of us went
on several somewhat epic road trips. Literal road trips? Literal road trips. It's like
get on their plane, go to Japan, visit, you know, Toshibaiba and Sharp and Mitsubishi and Sony and all of these folks.
And because we worked for Sun, we had folks who were willing to give us introductions.
We visited Samsung and a bunch of Korean companies and we went all over Europe, went to places like
Phillips and Siemens and Thompson and...
What did you see there?
For me, one of the things that sort of left out was that they were doing all the usual computer
things that people had been doing like 20 years before.
The thing that really leapt out to me was that they were
sort of reinventing computer networking
and they were making all the mistakes
that people in the computer industry had made.
And since I had been doing a lot of work
in the networking area,
we'd go and visit company X,
they'd describe this networking thing that they were doing.
And just without any thought,
I could tell them like the 25 things
that were going to be complete disasters with that thing that they were
doing. And I don't know whether that had any impact on any of them, but that particular story of
repeating the disasters of the computer science industry was there.
And one of the things we thought was,
well, maybe we could do something useful here
with like bringing them forward somewhat,
but also at the same time,
we learned a bunch of things from these,
mostly consumer electronics companies.
And, you know, high on the list was that they viewed their relationship with the customer
as sacred. They were never, ever willing to make trade-offs between for safety.
All right, so one of the things that had always made me nervous in the computer industry industry was that people were willing to make trade-offs in reliability to get performance.
They want faster, faster.
It breaks a little more often because it's fast.
Maybe you run it a little hotter than you should or like the one that always blew my mind was the way that the folks at
Cray supercomputers got their division to be really fast was that they did Newton-Raphson
approximations. And so, you know, the bottom several bits of, you know, A over B were essentially random
numbers.
What could possibly go wrong?
What could go wrong, right?
And, you know, just figuring out how to nail the bottom bit, how to make sure that, you know, if you put a piece of toast in a
toaster, it's not going to kill the customer. It's not going to burst into flames and burn the host down.
So those are, I guess those are the principles that we're inspiring, but how did from the days of Java
is called oak, because of a tree outside the windows, the way that a lot of people know,
how did it become this incredible, like, powerful language?
Well, so it was a bunch of things. So we, you know, after all that, we started,
you know, the way that we decided that we could understand things better was by building
a demo, building a prototype of something. So kind of because it was easy and fun, we
decided to build a control system for some home electronics,
you know, TV, VCO, that kind of stuff.
And as we were building it, we sort of discovered that there were some things about standard practice in C programming
that were really getting in the way. And it wasn't exactly, you know,
because we were writing all this C code
and C++ code that we couldn't write it
to do the right thing, but that one of the things
that was weird in the group was that we had a guy
who's, who's, you know, his sort of top-level job was, he was a business guy. You know,
he was sort of an MBA kind of person, you know, think about business plans and all of that. And
you know, there were a bunch of things that were kind of, you know, and we would talk about
things that were going wrong and other things that were going wrong, things that were're kind of, you know, and we will talk about things that we're going wrong and, or things that we're going wrong, things that we're going right. And, you know, as we
thought about, you know, things like, like the requirements for security and safety,
some low-level details and see, like, naked pointers. Yeah. And, you know, so And so back in the early 90s, it was well understood that the number one source
of security vulnerabilities was just bugs. And it was, 50, 60, 70 percent of all security vulnerabilities
were bugs. And the vast majority of them were like buffer overflows. So you're like, we have
to fix this. We have to make sure that this cannot happen. And that was kind of the original
And that was kind of the original thing for me was this cannot, this cannot continue. And one of the things I find really entertaining this year was I forget which rag published it,
but there was this article that came out that was an examination, it was sort of the result of an examination
of all the security vulnerabilities in Chrome.
In Chrome is like a giant piece of C++ code.
And 60 or 70 percent of all the security vulnerabilities were stupid pointer tricks. And I thought, it's 30 years later, and we're still there.
And we're still there.
And we're still there.
And you know, that's one of those, you know,
slap your forehead and just just want to cry.
So, would you attribute, or is that too much of a
simplification, but would you attribute the creation of Java to to
see pointers?
obvious problem. Well, that mean that was that was one of the the trigger
points. And currency you've mentioned concurrency was a big deal.
Yeah, you know, because when you're interacting with people, the last thing you
ever want to see is the thing like waiting. And issues about the software development process,
when faults happen, can you recover from them? What can you do to make it easier to create and
eliminate complex data structures? What can you do to fix one of the most
common C problems, which is storage leaks? And it's evil, twin, the freed, but still being used,
piece of memory, you free something,
and then you keep using it.
Oh, yeah.
So when I was originally thinking about that,
I was thinking about that in terms of safety and security issues.
And one of the things I sort of came to believe,
came to understand was that it wasn't just about safety
and security, but it was about developer velocity.
So, and I got really religious about this
because at that point, I had spent an ungodly amount of my life hunting down mystery
pointer bugs.
And like two thirds of my time as a software developer was, you know, because the mystery
pointer bugs tend to be the hardest to find because they tend to be very, very statistical.
The ones that hurt, you know, they're like a one
and a million chance.
And...
But nevertheless create an infinite amount of suffering.
Right.
Because when you're doing a billion operations a second,
you know, one and a million chance means it's gonna happen.
And so I got really religious about this thing about, you know, making it so that if something fails, it fails immediately and visibly. And one of the things that was a real attraction of Java to lots of development
shops was that we get our code up and running, twice as fast.
You mean like the entirety of the development process, debugging, all that kind of stuff. Yeah, so if you measure time from, you know, you've first
touch fingers to keyboard until you get your first demo out,
not much different, but if you look from fingers touching
keyboard to solid piece of software that you could release in
production, it would be way faster.
And I think what people don't often realize is there's things that really slow you down.
The hard to catch bugs probably is the thing that really slows down that. It's really slow things down. But also there were, one of the things that you get out of object oriented programming
is a strict methodology about what are the interfaces
between things and being really clear about how parts relate
to each other.
And what that helps with is so many times what people do is they kind of like sneak around the
side. So if you've built something and people are using it and then and you say
and you say, well okay you know I built this thing you use it this way and then
you change it in such a way that that it still does what you said it does.
It just does it a little bit different.
But then you find out that somebody out there was sneaking around the side.
They sort of tiled in a back door and this person, their code broke.
And because they were sneaking through a side door. And normally the attitude is
dummy. But a lot of times, you know, you can't get away, you can't, you can't just slap their hand and tell them to not do that. Because it's somebody's,
some banks account reconciliation system
that some developer decided,
oh, I'm lazy, I'll just sneak through the back door.
And because the language allows it,
I mean, you can't even matter them.
And so one of the things I did that,
that on the one hand upset a bunch of people,
was that I made it so that you really couldn't
go through back doors, right?
So the whole point of that was to say,
if you need, you know, if the interface here isn't right,
the wrong way to deal with that is,
is to go through a back door.
The right way to deal with it is to walk up to the developer
of this thing and say, uh,
change the interface.
Fix it.
Yep.
Right.
And so it was kind of like a social engineering thing.
Yeah.
And, um,
is it brilliant?
And people ended up discovering that that really made a difference in terms of, you know,
and a bunch of this stuff, you know, if you're just like screwing around right in your own
like, you know, class project scale stuff, a lot of stuff doesn't, isn't quite so, so important
quite so, so important because you're both sides of the interface. But when you're building larger, more complex pieces of software that have a lot of people
working on them, and especially when they span organizations, having really clear, having clarity about how that gets structured saves your life.
Especially, there's so much software that is fundamentally untestable until you do the
real thing. It's better to write good code in the beginning as opposed to writing crappy code and then trying
to fix it and trying to scramble and figure out and through testing figure out where the bugs are.
Yeah, it's like, it's like, which shortcut caused that rocket to not get where it was needed to go.
So, I think one of the most beautiful ideas philosophically and technically is of a virtual machine,
the Java virtual machine.
Well, again, apologize to romanticize things, but how did the idea of the JVM come to
be?
How do you radical of an idea it is?
Because it seems to me to be just a really interesting idea in the history of programming.
So, and what is it? So, the Java Virtual Machine, you can think of it in different ways,
because it was carefully designed to have
different ways of viewing it.
So, one view of it that most people don't really realize
as there is that you can view it as sort of an encoding of the abstract syntax
tree and reverse Polish notation. I don't know if that makes any sense at all. I could explain
it and that would blow all over time. But the other way to think of it and the way that it ends up being explained
is that it's like the instruction set of an abstract machine that's designed such that you
can translate that abstract machine to a physical machine. And the reason that that's important.
And the reason that that's important, so if you wind back to the early 90s when we were talking to all of these companies doing consumer electronics and you talk to the purchasing
people, there were interesting conversations with purchasing. So if you look at how these devices come together,
there are sheet metal and gears and circuit boards
and capacitors and resistors and stuff.
And everything you buy has multiple sources, right?
So you can buy a capacitor from here, you can buy a
capacitor from there, and you've got kind of a market so that you can actually get a
decent price for a capacitor. But CPUs, and particularly in the early 90s, CPUs were all different and all proprietary.
So if you use the chip from Intel, you had to be an Intel customer for the end of time.
Because if you wrote a bunch of software,
when you wrote software using whatever technique you wanted,
and C was particularly bad about this,
because there was a lot of properties
of the underlying machine that came through.
So the code you wrote, you were stuck to that particular machine.
You were stuck to that particular machine, which meant that they couldn't decide,
you know, Intel is screwing us.
I'll start buying chips from, you know, Bob's better chips.
from, you know, Bob's better chips. This drove the, like the purchasing people absolutely insane, that they would, they were welded into this decision. And it would, they would
have to make this decision before the first line of software was written.
It's funny that you're talking about the purchasing people.
So that's one perspective, right?
It's that you could,
there's a lot of other perspectives
that all probably hated this idea.
Right.
But from a technical aspect,
just like the creation of an abstraction layer
that's agnostic to the underlying machine
often the perspective of the developer.
I mean, it's brilliant.
Right.
Well, and, and, and, and, you know, so that's like across the spectrum of, of providers of chips.
But then there's also the, the time thing because, um, you know, as you went from one generation
to the next generation to the next generation, they were all different.
And you would often have to rewrite your software.
I mean, the generations of CPU of machines of different kinds.
Yeah. So, so like, like, like, like one of the things that's talked about a year out of my life was when
Son went from the, the Motorola 68 O10 processor to the 68 O20 processor. Then they had a number of differences
and one of them hit us really hard and I ended up being the the point guy on the worst case of where
the new instruction cache architecture hurt us.
Well, okay, so I mean, so when did this idea?
I mean, okay, so yeah, you articulate a really clear fundamental problem in all of computing.
But where do you get the guts to think?
We can actually solve this.
You know, in our conversations with all these vendors,
these problems started to show up.
And I kind of had this epiphany
because it reminded me of
a summer job that I had had in grad school. So back in grad school, my thesis advisor,
well, I had two thesis advisors for bizarre reasons. One of them was a guy named Raj, right? He the other one was Bob Sproul.
And Raj, I love Raj, I really love both of them.
But, right.
So the department had bought a bunch of like early work
stations from a company called Three Rivers Computer Company. And Three Rivers Computer Company was a bunch of electrical engineers who wanted to do
as little software as possible.
So they knew that they'd need to have like compilers and OS and stuff like that and they
didn't want to do any of that.
And they wanted to do that for as close to zero money as possible.
So, what they did was they built a machine whose instruction set was,
literally the bytecode for the UCSD Pascal, the P code.
And so we had a bunch of software
that was written for this machine.
And for various reasons,
the company wasn't doing terrifically well.
We had all the software on these machines,
and we wanted it to run on other machines,
principally the Vax.
And Sir Raj asked me if I could come up with a way
to port all of this software from the from from from the the the
perk machines to Vax's and I think he you know what he had in mind was
something that would translate from like Pascal to see or Pascal to,
I actually at those times pretty much it was,
you could translate to see or see.
And if you didn't like translate to see,
you could translate to see.
There was, it's like the Henry Ford,
any color you want, it just along as this black.
the Henry Ford, you know, any color you want, it just along as this black.
And I went, that's really hard.
And say, and I, and I noticed that, you know, and I was like looking at stuff and I went,
oh, I bet I could rewrite the P code into Vax assembly code.
And then I started to realize that, you know, there were some properties of p
code that made that really easy, some properties that made it really hard.
So I ended up writing this thing that translated from p code on the three rivers perks into assembly code on the
backs. And I actually got higher quality code than the
Seacompiler. And so everything just got really fast. It was really easy. It
was like, wow, I thought that was a sleazy hack because I was lazy.
And in actual fact, it worked really well. And I tried to convince people that that was maybe a good
thesis topic. And nobody was like nah. Really? It's kind of a brilliant idea, right?
Or maybe you didn't have the, you weren't able to articulate the big picture of it.
Yeah, and I think that was a key part.
But so then clock comes forward a few years and it's like,
we've got to be able to, you know,
if they wanted to be able to switch from,
you know, this weird microprocessor to that weird
and totally different microprocessor, how do you do that?
And I kind of went, oh, maybe by doing something
kind of in the space of Pascal P code, I could do multiple
translators.
And I spent some time thinking about that and thinking about what didn't work when I
did the P code to Vax translator.
And I talked to some of the folks who are involved in small talk because
small talk also did a bytecode. And then I kind of went, yeah, I want to do that because
that act, you know, and it had the other advantage that you could either interpret it or compile it. And interpreters
are usually easier to do, but not as fast as a compiler. And so I figured, good, I can
be lazy again. You know, sometimes I think that most of my good ideas are driven by laziness. And often
I find that some of the people stupidest ideas are because they're insufficiently lazy.
Yeah, they just want to build something really complicated. It doesn't need to be that complicated.
complicated. It doesn't need to be that complicated. Yeah, and so that's how that came out.
But that also turned into a religious position on my part, which got me in several other fights.
One of the things that was a real difference was the way that Arithmetik worked. You know, once upon a time, there were, you know, it wasn't always just
two's complement Arithmetik. There were some machines that had one's complement Arithmetik,
which was like almost anything built by CDC. And occasionally there
were machines that were decimal arithmetic. And I was like, this is crazy. Pretty much
to his complement integer arithmetic as one. So just do that.
Just do that.
One of the other places where there was a lot of variability was in the way that floating
point behaved.
And that was causing people throughout the software industry much pain because you couldn't
do an numerical computing library that would work on CDC and then have
it work on an IBM machine and work on a deck machine.
And as a part of that whole struggle, there had been this big body of work on floating
point standards. And this thing emerged that came to be called IEEE 754,
which is the floating point standard that pretty much has taken over the entire universe.
And at the time I was doing Java, it had pretty much completed taking over the universe.
There were still a few pockets of holdouts,
but I was like, you know, it's important to be able to say
what 2 plus 2 means.
Yeah.
And so I went that.
And one of the ways that I got into fights with people
was that there were a few machines that
did not implement IEEE 754 correctly.
Well, of course, that's all short-term kind of fights, I think, in the long-term, I
think this vision is one-out.
Yeah, and I think it's, you know, and it worked out over time. I mean, the biggest fights were with Intel
because they had done some strange things with rounding. They had done some strange things with
their transcendental functions, which might turn into a mushroom cloud of, you know, weirdness.
And the name in the name of optimization, but from the perspective of the developer
That's not that's not good. Well, there issues with transcendental functions were just stupid
Okay, so that
That's not even a dread of that's just absolutely. Yeah, they were they were doing range reduction in
First sign and cosine
Using a slightly wrong value for pie.
Got it.
Go ahead, 10 minutes.
So in the interest of time, two questions.
So one about Android, one about life.
So one, I mean, we could talk for many more hours.
I hope eventually we may talk again, but I got to ask you about Android
and the use of Java there because it's one of the many places where Java
just has a huge impact on this world.
Just on your opinion is there
things that make you happy
about the way Android Java is used in the Android world and are there things that
you wish were different?
I don't know how to do a short answer to that, but I have to do a short answer to that.
So, you know, I'm happy that they did it.
Java had been running on cell phones at that time for quite a few years, and it worked
really, really well. There were things about how they did it and in particular various ways that they
kind of violated all kinds of contracts. The guy who led it, Andy Rubin, he crossed a lot of lines. There's some lines crossed.
Yeah, lines were crossed, but have since, you know,
mushroomed into giant court cases.
And, you know, they didn't need to do that.
And in fact, it would have been so much cheaper for them
to not cross lines.
I mean, I suppose they didn't anticipate the success of this whole endeavor.
Or do you think at that time it was already clear that this is going to blow up?
I guess I sort of came to believe that it didn't matter what Andy did, it was going to blow
up. Okay. You see, he, you know, I kind of started to think of him as, as, as like a manufacturer
of bombs.
Uh, yeah.
Some of the best things in this world come about.
They're a little bit of, uh, explosive.
Well, in some of the worst. In some of the worst.
I beautifully put.
But is there, like you said, does that make you proud that Java is in millions?
I mean, it could be billions of devices.
Yeah.
Well, it was in billions of phones before Android came along. And, you know, I'm just as proud of the way
that the smart card standards adopted Java. And they did a, you know, everybody involved
in that did a really good job. And that's, you know, billions and billions.
It's crazy. The SIM cards, the SIM cards in your pocket.
Yeah, I mean, it's outside of that world for a decade.
So I don't know how that has evolved, but it's just been crazy.
So in that topic, let me ask ask again, there's a million technical things we could talk about,
but let me ask the absurd, the old philosophical question about life.
What do you hope when you look back at your life and people talk about you, write about you, 500 years from now.
Would you hope your legacy is?
People not being afraid to take a leap of faith.
I've got this kind of weird history of doing weird stuff.
It worked out pretty well.
It worked out, right?
And I think some of the weirdest stuff that I've done
has been the coolest.
And some of it crashed and burned.
And I think well over half of the stuff
that I've done has crashed and burned, which is
occasionally been really annoying. But still you keep doing it. Yeah. Yeah. And you
know there, you know, even when things crash and burn, you'll at least learn
something from it. By way of advice, you know, people, developers, engineers, scientists, or just people who are young to
look up to you, what advice would you give them, how to approach their life?
Don't be afraid of risk.
It's okay to do stupid things once.
Maybe a couple times. You know, you get a pass on the first time or two that you do something stupid.
You know, the third or fourth time, yeah, not so much.
But also, you know, I don't know why, but really early on, I started to think about ethical choices in my life.
And because I, a big science fiction fan, I got to thinking about, like, just about every
technical decision I make in terms of how do you want
you know are you building Blade Runner or Star Trek? Which one's better?
Which future would you rather live in? You know. So what's the answer to that?
Well I would rather live in the universe of Star Trek.
Star Trek, yeah. That opens up a whole topic about AI, but that's a really interesting.
Yeah.
Yeah.
Yeah.
It's a really interesting idea.
So your favorite AI system would be data from Star Trek as well.
And the least favorite would easily be Skynet.
Yeah.
Beautifully put.
I don't think there's a better way to end it, James.
I can't say enough how much of an honor it is to meet you to talk to you.
Thanks so much for wasting your time with me today.
It's not a waste at all.
Thanks James.
Alright, thanks.
Thanks for listening to this conversation with James Gosling and thank you to our sponsors.
Public goods, better help and express VPN.
Please check out these sponsors in the description to get a discount and to support
this podcast. If you enjoy this thing, subscribe by YouTube, review it with 5 stars and
Apple podcasts, follow on Spotify, support on Patreon, or connect with me on Twitter
at Lex Friedman. And now, let me leave you with some words from James Cosling. One of the
toughest things about life is making choices.
Thank you for listening and hope to see you next time.
you