JOE: Do you have a phone in your shoe?
BRENDAN: … No.
[This episode is sponsored by Codeship.io. Don’t you wish you could simply deploy your code every time your tests pass? Wouldn’t it be nice if it were tied into a nice continuous integration system? That’s Codeship. They run your code. If all your tests pass, they deploy your code automatically. For fuss-free continuous delivery, check them out at Codeship.io, continuous delivery made simple.]
[This episode is sponsored by Component One, makers of Wijmo. If you need stunning UI elements or awesome graphs and charts, then go to Wijmo.com and check them out.]
JOE: Hey, everyone.
CHUCK: Aaron Frost.
CHUCK: AJ O’Neal.
AJ: Yo, yo, yo, coming at you live from Boston.
CHUCK: Jamison Dance.
JAMISON: Hey, friends.
CHUCK: Tim Caswell.
CHUCK: I’m Charles Max Wood from DevChat.TV. And this week we have a special guest, Brendan Eich.
CHUCK: Do you want to introduce yourself real quick for us, Brendan?
AARON: Still perpetuating the lie.
AARON: That’s awesome.
CHUCK: [Imitating old man’s voice] Once upon a time…
BRENDAN: Yeah, you guys should cut me off because it will go on and on. So, the thing you have to know about Netscape is it was a Jim Clark, Marc Andreessen joint. So, it was basically the union of NCSA Mosaic principals plus Lou Montulli from University of Kansas who did the Lynx browser. I think that was spelled L-Y-N-X, which is a text-based browser. But everybody else at Netscape on the first floor was either from NCSA Mosaic or NCSA HTTPd. They were all at the National Center for Supercomputing Applications at my alma mater, University of Illinois at Urbana-Champaign. So, Marc Andreessen recruited there heavily. And he paired up with Jim Clark, the founder of Silicon Graphics.
So, I was at Silicon Graphics out of grad school in 1985, which was great. It was pre-IPO. It was a hot valley company. This was back when you had technical Unix workstation companies building their own basically CPUs or building their own CPU boards around the Motorola 68020 or 68030 chip. And Sun and other companies have licensed the Stanford University Network Sun-1 architecture. And Andreas Bechtolsheim had given up his PhD to go found Sun with Bill Joy and others. It was a pretty awesome time in the valley. It was before the PC. The PC was out. There was the 8080 or 8086. There was IBM PC but it was kind of a joke. So, for real industrial computing you needed a workstation or a Minicomputer even. There were still minicomputers around then. Digital Equipment Corporation was a thing then.
And SGI was turned into a company from a Stanford research project Jim Clark was the professor of, which was building basically what became the GPU. They were building the Graphics Processing Unit as a whole graphics board using VLSI technology. Carver Mead at Cal Tech had written the book. People could make lots of transistors on a single silicon die. And they could build something that was really good at doing lots of graphics operations in parallel. And that’s where Silicon Graphics came from.
But by the time the 90s came along, Clark was I think kind of squeezed out of management politics at SGI. He was the chairman but not otherwise empowered. He was annoyed. So, he wanted to do something new. And I’m not sure exactly how, but he got introduced to Marc Andreessen in NCSA. There might have been some venture capitalists involved there. And they hit it off and they thought about doing something, which became Netscape. And the weirdest thing was they went through various ideas. I only know of one that I heard about, they were serious about for a few days or weeks which was, let’s build Nintendo 64 software for modem-connected N64 boxes. And that wasn’t…
BRENDAN: Looking too good after a few days. So, they decided, no, let’s go make the internet commercially [viable]. Let’s kill Mosaic by making a Mosaic killer browser which will be the killer app, which will actually have security for commercial e-commerce. And that’s what they did. That was Netscape1.0, 1.1. They did things like SSL. They did kill Mosaic. They took all its market share. At first they were called M Com, not Netscape, Mosaic Communications. And I think NCSA’s lawyers came calling and there was a rapid rename to Netscape. And of course when they were founded, because they had Clark as cofounder, he drew from Silicon Graphics’ early talents. So he drew Tom Paquin to manage engineering and Kipp Hickman who was my senior partner when I joined SGI out of grad school as a kernel hacker.
And Kipp called me up while I was at MicroUnity Systems Engineering, which is a crazy company I’ll tell you about later. And Kipp said, “Do you want to come join us? It’ll be fun. We’re going to do a Mosaic killer.” And I said, “Oh, I’ve still got some things to finish at MicroUnity.” So, I stayed a year like an idiot and missed out being on the first floor. So, I joined in April 1995 as year into Netscape. When I came onboard, Netscape 1.1 was heading toward release.
And because of some weird financial shenanigans, they couldn’t hire me into the group they wanted to hire me into. They had tempted me there, all these Silicon Graphics people. I knew Kipp, and John Giannandrea. They said, “Come and do Scheme in the browser. We need a programming language in the browser. Come and do Scheme.” And Scheme was a language that I only learned through book learning, through Sussman and Steele’s SICP, famous book, ‘Structure and Interpretation of Computer Programs’.
AARON: Did you like it though? Did you go, “I like Scheme. I’ll go do that”?
BRENDAN: Yeah, I said [chuckles] big idiot me, I said, “I like Scheme. I’ll go do that.” And of course, when I got there the answer was, “Oh, well wait. We’re doing a deal with Sun. And they have something called Java, renamed from Oak. And we can’t really let you do Scheme in the browser now.” [Chuckles] Plus because of financial machinations I don’t fully understand to this day, they hired me into the server team instead of the client team. [Laughs] So, that was weird. And they ended up having me work on HTTP 1.1 or what we thought would be HTTP 1.1. Way back then in April 1995 it had a lot in common with SPDY.
And I was working with the McCool twins, Rob McCool and Mike McCool who wrote NCSA HTTPd which then forked can do Apache. And they were fun to work with, and Ari Luotonen who worked on the proxy server that Netscape product-ized. So, for a month I was screwing around with server-side stuff but I was thinking about what to do to rescue the idea of a language for the browser, which wouldn’t be Scheme. And so, in May I got switched to the client team finally. They got, a headcount opened. Even in a company of 150 people, they had headcount shortages and little games where people had to trade requisitions.
BRENDAN: He’d get a milkshake. He’d drink milk at work. There were a lot of junk calories being consumed. And Netscape also had something I was horrified to learn about that has become standard in the valley, which is the sleeping room. So, Tom Paquin, the engineering first floor manager, would take the sheets home every other day to get cleaned, which was good.
CHUCK: Oh no.
BRENDAN: [Laughs] But people were actually…
AARON: That sounds horrible.
And the best I could pull off was, okay so you have a language, Java, which is compiled. You have to learn what a compiler is. You have to run Java C. You have to write Java source code which consists of classes including a class with a main method, a static method. And you have to compile that into bytecode. Right there, you’ve lost a lot of people who could write programs if they were written in an interpreted language, if they were… in Microsoft’s stack at the time, they could use Visual Basic and they wouldn’t have to worry about C++. But with Netscape and Sun cobbling up this deal, it was only Java and it was this compiled language. It was kind of hard to use. It was typed. I’m not saying it was bad. It was just not for the casual amateur or beginner programmer.
AARON: Can I do a timeout and ask you a question?
BRENDAN: Yeah, absolutely.
AARON: Did they come at you and say, “Brendan, you have a hard stop in 10 days.”
AARON: Or did the 10 days things would just be like, “I worked on it for 10 days and we had the initial prototype”? Or did someone say to you, “You got 10 days, otherwise this is dead”? What’s the 10 days thing?
I remember Marc specifically said, “No. You’ve got to be able to write the language, the source code, right in the HTML. You’ve got to be able to write it directly in there inside some kind of container tag.” And so, I went off and figured out how to make that work, which was horrendous because HTML, supposedly based on SGML but its own grammar, doesn’t have the ability to embed a less than operator in the middle of a tag unless you use a special content model for that element. And so, I figured all that out. I made the script tag. I made it all work.
But it was really a rush, not 10 days that reckoned, but pretty damn, quite fast in order to prove not only to Netscape but to Sun, and there were people in Sun and Netscape who doubted, that there was a value in having an easy-to-use language you could embed directly in HTML that amateurs could write. And that it could be done quickly enough that it could be shipped in the same release that Java was shipping in. And that release was Netscape 2.
CHUCK: So, we could have wound up with Java? I love you even more now. That’s all I have to say.
BRENDAN: If it was only Java. The fact is, Java bombed in the client. It took forever to die, but it’s pretty much dead. It’s a source of malware.
BRENDAN: Chrome and Firefox blacklisted it. It’s gone.
BRENDAN: Originally, Marc wanted to call it Mocha. And Marc actually [chuckles] I’ll tell you something I haven’t told anybody. So, Marc was actually not sure about Sun, so he thought, “Maybe we should do our own Java VM.” So, Kipp Hickman, my friend from early days at SGI who was a senior kernel hacker when I hired, he started writing his own JVM. And this was before we had done a source license for Sun’s Java Virtual Machine. So, he started writing his own. He was trying to self-host the Java C compiler that Arthur van Hoff wrote, which is written in Java, a very nice compiler written in Java. So, if Kipp’s VM could run it, we could conceivably do our own Netscape VM. It wouldn’t be the Sun VM. It would run Java. And then we’d be independent of Sun.
So, I was juggling with chainsaws trying to embed this arbitrary lifetime scripting language into a mandatory lifetime just so lifetime C codebase. And that meant Netscape 2 was a nightmare of bugs. But in spite of that, to finish my statement before I run on too long, there were people using it even in the beta releases who were doing amazing demos. They would write forms inside tables and they would write spreadsheets or calculators or various form-based applications, even what we might call single-page applications today. They didn’t have XHR but they could hide a form element or a link that they would auto-submit or auto-click inside a hidden frame. And they made it all work.
BRENDAN: So yeah, you’re talking about Web 2.0 or the Ajax revolution?
JAMISON: Yeah, yeah.
BRENDAN: 2004 or 2005?
JAMISON: But some of the stuff you describe sounds like that happened in the early days, too.
So, this was all ’95, ’96, dodging lots of bugs. One of the bugs was funny. It was HTML tables, as you might know, can nest. And so, Eric Bina who I like a lot, I really worked well with him, he was Marc Andreessen’s coding partner. He was the real programmer on NCSA Mosaic and then he joined Netscape. His layout engine was very brute force about tables. It would basically do a table layout by laying out its contents, measuring the heights that you got from the widths, measuring how much space it needed, and then laying out the parent table. And so, if you nest tables n levels deep, you get 2^n passes to do all this measurement.
And so, this particular contractor I mentioned, he was saying, “I’ve got a demo on Monday. I’m going to get fired if I can’t do it,” he couldn’t make the element come to life. And I said, “Oh, you’re using the first element or you’re using the array. That’s not the one to use. You want to actually drill down one level deeper and go to length-1 element. That’s the real element.” And when he did that and suddenly it started responding and showing that it was the real element, you could actually change its attributes and have effects on the presentation, he was overjoyed and so was I. So, there’s a real kick in helping people get workarounds to these things.
JOE: That’s funny.
AJ: That’s awesome.
AARON: That’s awesome.
JAMISON: Did any of these workarounds become enshrined into the language and then you regretted them later?
BRENDAN: Many of them.
BRENDAN: You can’t avoid some of the sort of DOM level 0 stuff is codified in HTML 5 thanks to the work in the WHATWG that we started with Apple and Opera when I was at Mozilla in 2004. And some of it has been warped through the IE4 lens. But a lot of the early stuff’s there, like the name attribute instead of the id attribute we all know from more modern HTML came via XML. The name attribute is kind of funky and you can get automatic arraying of things, like radio buttons automatically array. And I’m not sure if the old property that all form elements automatically become arrays if there’s [inaudible] instances with the same name, is still there. But that was there then and that was part of the workaround I mentioned.
JOE: What about Visual Basic?
BRENDAN: Visual Basic, no.
BRENDAN: I knew Basic from when I was a teenager and my friend had a Commodore PET and he wrote a Star Wars trench game. It was a 2D vector graphics trench game where you’re flying down Death Star trench trying to shoot at the exhaust port. And I knew Basic, but I didn’t think that would work in the modern era. And I was attracted to Self in particular because it was taking ideas in Smalltalk and simplifying them, trying to minimize the number of concepts, and then maximize their utility. And that was David Ungar and company. And it was good work.
They also did optimizing [inaudible] for it, which they founded a company out of Stanford about called Animorphic. And actually, a few years later Netscape, on loan to Sun, did some due diligence when Sun acquired Animorphic. And Animorphic had Lars Bak and others as the young programmers doing all the heavy lifting for the senior people like Dave Ungar and Craig Chambers on what became the Self with classes, jitting VM and the Strongtalk VM which was Smalltalk with types. Gilad Bracha did the work on the type system. Eventually that open sourced. And that led to V8, if you can believe it or not. From the names I’ve dropped, you probably can believe it.
CHUCK: I kind of hacked this in and it stayed.
AARON: That’s awesome.
JOE: And 15 years later, people are still fighting over it.
JAMISON: That’s every programmer’s nightmare, right?
CHUCK: It’s so true.
JAMISON: Just the hack [inaudible] that you made.
AJ: I felt a sudden tremor in the force as if a thousand semicolons suddenly screwed up everything.
BRENDAN: Netscape was the hottest name and the name that put the browser and things like URLs or the web on the map. It wasn’t Mosaic. We killed Mosaic and then we were the hot thing for a year and a half. And during that time it was awesome because Microsoft was behind. Bill Gates realized they made a mistake. They were doing an AOL killer called Blackburn, which was a proprietary content system for a dial-up network.
And when Gates saw what was happening with Netscape he said, “We’re going to lose unless we jump on this and embrace, extend, and extinguish it.” They actually tried to buy Netscape in late ’94. And they offered a hundred million or something paltry. So, they were told to get lost. And that meant they went and cloned it. And everybody knew it. When I joined Netscape in April ’95 it was like, “We’re doomed.” People were just thinking Microsoft was inevitable going to kill the company. It was only a matter of time.
CHUCK: And like they didn’t do it later on in IE?
BRENDAN: If you follow Visual Basic, there’s this crazy mistake where they blended it into .NET and they called Visual Thread or VB7 and it completely flopped. But even VB6 was incompatible and weirdly different from previous versions. And I was like, “Pot, kettle, black, hello.”
BRENDAN: But the pressure through developers was enough and the fact that they were coming, Mike Homer the marketing VP at Netscape said the monster truck was in our rearview mirror. Netscape’s in its little Yugo, the pedal to the metal going, topping out at 50 miles an hour heading toward distant horizon. And behind us is the monster truck that’s creeping up. And it’s far away and it’s a little dot and it’s getting bigger. And suddenly, it’s like its bumper, you can read the print on the bumper. And then you look ahead and you realize it isn’t the horizon you’re heading toward. It’s a wall. This is all Mike Homer’s metaphor. So, what do you do when you’re heading toward this wall? Ultimately, the executives decided to do [27:24]. They said, hard left and hope for somebody to survive. Don’t let the monster truck run you into the wall. Release the Netscape source code as open source.
So, they say, “It’s not an acronym. It’s a proper noun. Capital E, lowercase C-M-A, Ecma.” And so, they [chuckles] they started renaming themselves and saying, “Let’s do software standards.” And if you look on their sort of core agenda of standards at the time, it had things like Fortran standards and COBOL standards. These were wall long-standing ISO standards they embraced or wrapped up and repackaged. They also did a bunch of novel standards based on optical disks at the time. So, Philips was a big Ecma supporter. And getting into software with Netscape was good for them, so they went for it. Carl liked it because Microsoft didn’t have any [inaudible] power with them.
And Guy knew everything about things like floating point. In fact, if you wanted to do a floating point number to string and string to number conversions, the canonical paper still is one by Guy Steele and David M. Gay on this. And there’s still some C code that everyone uses. It’s ugly 70s C code that David Gay wrote. [Chuckles] But it’s the code to use for converting accurately because it turns out to be very hard to convert decimal strings of digits after the decimal point to binary fixed-precision IEEE double. You have to carry extra precision around to round correctly. So, that code and that standard was very helpful in ECMAScript.
AARON: Wow. So, AJ wants to know where the name Mozilla came from.
AJ: Yes, I do want to know that.
BRENDAN: That’s actually on the web. So, if you read Jamie Zawinski’s many posts on his site, he named it based on the idea of a Mosaic killer. When Netscape realized they weren’t going to do a Nintendo 64 modem networked software, they said, “Let’s do a Mosaic killer,” and Jamie started musing about Mosaic killer. Giant monster that kills Mosaic, Godzilla, Mozilla. So, that’s where the name Mozilla came from.
AJ: Oh, that’s funny.
AARON: That is cool.
BRENDAN: I feel like I should explain more of the DOM level 0, like setTimeout. Wacky because people use the form that takes a function as the first argument. And then it’s awkward because you put the timeout in milliseconds after that. And then if there are any arguments, actual arguments to the function, you pass them after the timeout. So, they’re interrupted by that timeout value. The original version of setTimeout in Netscape 2 did not have the function argument. It only had a quoted string which was eval-ed. So, you wrote an expression to be evaluated and milliseconds. And in Netscape 3 we added the function form and at that point it was too late to reorder the arguments because you can’t break the web. And so, that’s why it’s function, timeout, arguments. And you could still use the string form.
AJ: I always thought that that was better anyway, to put the function first, because then it’s composable.
BRENDAN: It’s a mixed bag. If you want to have something that applies or does partial application, you end up having to juggle both timeout and the arguments list. But you can do it.
JOE: So, I have a question. Why did you make functions first-class citizens?
So, functions were huge. And not making them first-class meant I was going to have to lock them down and get it all right and make the global object and built-in functions and the map object, make that all perfect from the first release. And I knew there was no time to do that. I realized that I needed to allow people to mutate the environment. I needed to let everything be mutable in order to patch, monkey-patch, polyfill, prolyfill. I didn’t see the whole evolution where people would actually anticipate standards by prolyfilling. But I did know that I could get it right and I had to leave it open. It is basically one bit of decision logic. Do I make it open and mutable, unsealed? Or do I make it closed, locked down, and sealed? And I said, if I make it closed [chuckles] I’m screwed. And in fact, Java’s world was much more closed and that hurt them.
CHUCK: So, you mentioned Java again. I just want to clarify because I’m not sure I got my answer out of your story.
BRENDAN: Like I said, Marc wanted to call it Mocha. I didn’t care except I liked Mocha because it was different. I didn’t know of any prior art but apparently there were software trademarks involving the name Mocha. But they were not related to a scripting language. So, Netscape could have probably fought for Mocha. When they hired the marketing guy who said, [inaudible] it’s going to be LiveScript, we have LiveWire which is like a server PHP-like project that would allow you to do configuration management and simple database query-based apps, but [inaudible] really PHP. He wanted to call that LiveWire. So suddenly, everything was Live this and Live that. And I was throwing up in my mouth a little bit. I didn’t like that name at all.
AARON: That’s funny.
CHUCK: Yeah, nowadays Sun, you mean Oracle, you mean, nah, never mind.
BRENDAN: Some of the people there are still people working there I know from the old days, like John Rose who did Nashorn and made sure it invoked dynamic, which is what we would call a jitted, polymorphic call site instruction, got into the JVM. So, my hat’s off to them. They’re long old-timers who want to keep evolving the JVM. And in fact, the JVM’s a great VM. It has lots of languages like Clojure and Scala. But it’s a server-side VM. There’s no way it could have survived in the client.
And meanwhile, Microsoft decided they didn’t want to play ball with Sun. And so, at some point they yanked Java from Windows, if you guys remember the history. And that led to something we all know and love called the XML and HTTP request that because Outlook Web Access needed Java to do asynchronous XML HTTP requests, once Microsoft decided they were breaking up with Sun they were going to yank Java and there was a lawsuit around that, that they needed a replacement for the Java async I/O class. And so, they just hacked in XHR. That’s how XHR came about. It was totally based on this fight between Microsoft and Sun.
JAMISON: It’s so crazy, because it’s such a convoluted story.
JAMISON: You could imagine ways where XHR wouldn’t exist and then the web would be totally different.
BRENDAN: I’ll tell you, having a hidden form or a link you click was a pain. XHR for all its funkiness and crap like the synchronous option, it’s better than [chuckles] what was there before. But all of it’s random. It’s like evolutionary biology. You don’t really get to choose. You just take what works and you’re lucky if you survive.
JOE: So, was XHR all of Microsoft’s invention?
BRENDAN: It was. But again, it was cloned, it was filling a vacuum that was left when they kicked Java out and they needed to keep Outlook Web Access working. And some of it had the flavor of Microsoft and Visual Basic informed API. Some of it was based pretty closely on the Java async I/O class that they booted.
JOE: Did you ever look at this baby that you created and at certain points wonder if something was going to kill it off, like say Flash for example?
BRENDAN: Oh, absolutely. [Chuckles] First of all, I was done working on, as the lone gun on it. I had some help. Ricardo Jenez who was working on some kind of Hadoop startup now with friends I know from Yahoo, like Raymie Stata. I forget the name of the company. But Ricardo came in to help me. He ported the David Gay floating point number to string and back code.
But other than those guys helping out on pieces, I had no help. Until late ’96, one of the Netscape founders Chris Houck decided to join me and I felt pressure in joining the Ecma group to make the language cleaner. So, I started to rewrite the VM, pay off technical debt, and I wrote what became SpiderMonkey. The original Mocha VM was not SpiderMonkey. It was much slower. It was a rush job. When I rewrote it as SpiderMonkey I had a garbage collector. I had things that I thought were better done. I had tagged values, machine words with low order bits that told you what the type was.
BRENDAN: This guy is on the web. He’s got his website called Javanko.com and he’s named after his ancestors going back to thousands of years and Sun lawyers come up and say, “You must cease and desist using the name Javanko. It’s not your name. It starts with J-A-V-A. It’s our name.” And he said, “Get out of here. It’s my ancestor’s name.” So, Sun was stupid. They didn’t want to give the name away to the standards body. So, Ecma said, “Oh, we’ll call it ECMAScript.” And once of the Microsoft guys, I forget his name, said, “That’s not a really good name. It sounds like a skin disease.”
AJ: It does.
But we finally got the committee to codify mostly what was shipped in Netscape. Microsoft after that first meeting where they didn’t send their A-team sent their A-team and that was Shon Katzenberger who’s very smart. He went to work on .NET with Andres Hejlsberg after that. And he actually told his bosses, he did what I did only more so, he told them to get lost and he spent six months working on what became the first edition of ECMAScript as a spec. And Guy Steele did a fair amount of work and others contributed pieces, but Shon did the backbone and the main part of the work. Six months to work on what became the first edition of ECMAScript. And he came up with the formalism for the date object, because the Java-based date object was crazy. He just [said], “Let’s make an extrapolated Gregorian calendar that goes plus or minus 200,000 years because we have that much accuracy, precision within IEEE double if you count milliseconds.”
CHUCK: So, why’d you call it SpiderMonkey?
BRENDAN: [Laughs] There’s a Wikipedia page which obviously somebody from Netscape has over-edited because it half-explains this but it doesn’t quite link to the correct explanation. If you look for Beavis and Butt-head Tom Anderson…
BRENDAN: Spider monkey.
CHUCK: [Laughs] Okay.
BRENDAN: You will be enlightened.
BRENDAN: The name was given by Chris Houck, Netscape cofounder.
AARON: So, I want to go back to this Ecma thing. I watched some talks at Yahoo where you and Douglas Crockford both gave two different explanations of this falling out. And I think that you compared it to the Lord of the Rings.
BRENDAN: Oh, this was the fourth edition falling out?
AARON: Yeah, yeah.
BRENDAN: Yeah, alright. [Sighs]
AARON: And he compared it to something like The Good, The Bad, and The Ugly, didn’t he?
BRENDAN: No, that was me also. [Laughs]
BRENDAN: That was my TXJS 2010 talk, I think.
BRENDAN: So yeah, Doug, I don’t know, Doug didn’t have a good metaphor for it. I made it Lord of the Rings. I actually had lots of fun trying to find Doug’s avatar. And I started with Yoda, but I realized he was too short.
AARON: It’s a toy. The web’s a toy.
CHUCK: That’s right.
BRENDAN: And until Firefox started taking market share back from IE, they were confident that was true. And then they were like, “Oh shit. We better actually do IE7. Oh wait. We haven’t really done IE7 right. Let’s do IE8.” And then finally, when Firefox triggered enough response from Microsoft and Google that Google did Chrome, then they really woke up and they did IE9.
BRENDAN: And like I said early on, it’s very hard to remove things from the web. You can’t really break compatibility. Nobody wants to do it. It’s biologically unsound, unfit. But Doug was up for it at first. So, we met summer in Oslo 2006 and we said, “Let’s do ES4, fourth edition.” The third edition was in ’99, maybe 2000 was the ISO version. It’s been a long time. Time to upgrade it, what can we do?
And so, by 2007 January, Douglas decided, “No, this is too big. And it looks like Java. It’s classy. And I like things small and simple and I want to take out the bad parts. So, this is all wrong.” And he forged an alliance with Microsoft. Now it may be coincidence, but at the time Microsoft was considering buying Yahoo. [Laughs] So, when we were heading into a spring meeting hosted at Microsoft Redmond, Washington near Seattle, Douglas was there early. He was having meetings on his own with Microsoft people. And we’re like, “Wait. What’s up?” And then Chris Wilson, now on the Google Chrome evangelist team, was at Microsoft still on the IE team saying, “Oh, we don’t really want ES4. It’s too much. It’s too incompatible,” by the way I agree with some of that, and, “We can’t have any of this.”
But at the time, Allen was working for Microsoft and he became the editor of ES3.1, which became ES5. And that was their, “Let’s do something less than ES4. Let’s do 3.1. Let’s do a no-new-syntax version of ES3.” So, Allen did that for Microsoft and he had Doug on board and others. And again, Doug couldn’t remove the bad parts, so I think he lost interest.
A year later, we said, “We’ll call it ES5 and we’ll just mop all ES4 as something that never shipped and onto ES6 and the modern Harmony era.” So, I forged the Harmony agreement. I was the rainmaker and the peacemaker, the group [hugger/ranter]. And I wrote the email that’s on ES Discuss that talked about ECMAScript Harmony and what was excluded and what was permissible to include in the future versions based on this new peace, this new era of peace. It was like the Treaty of Westphalia, if you will. So, that was all 2008.
The funniest story, which I’ll also share here exclusively with you guys, is Allen Wirfs-Brock jumped to Mozilla and I worked with Allen and he’s still the ES6 editor. Allen said, “Yeah, right before you guys folded on ES4, Microsoft was about to fold on it.” [Laughs] They were about to say, “Ugh. I guess we better implement ES4. It looks like it’s going to happen.”
BRENDAN: So, it was like “Dang it.” It was like poker and we didn’t bluff hard enough.
They won’t be like ES4. ES4 tried to make them actually mean something. And that’s extremely hard on the web, because you’re always loading code and you load new code that renders your old type judgments invalid. What do you do? Do you recompile the world? Do you throw a type error about the mixture being incompatible when the old code was already running? Like the old code was the basis of your Gmail user interface. Just because you load new code that invalidates those old type annotations doesn’t mean you should break your user Gmail experience. It doesn’t make any sense.
So did Netscape, because they wanted to do a life pod. It was partly executive vanity project and partly Mike Homer, his metaphor, the Yugo being chased by the Microsoft monster truck into a wall. Literally, you better, he did do a hard left and tried to bail out from [inaudible]. So, Mozilla was that bailout. It was that hope that you could dive from the Yugo, roll in the dust, and get up and then have another sequel movie that was even more exciting later. And so, Mozilla in 1998 launched with the Netscape codebase, which was all this student code plus my SpiderMonkey engine re-implemented in ’96 and ’97 and integrated into Netscape 4. And it was spaghetti. It was a mess. It was mostly C and it was rushed and it was full of technical debt.
And early on, we had very few contributions to the Mozilla project from outside the Netscape employee base. So, we started with everybody who was a committer, this was in the era of CVS, before Mercurial, before Git, before the modern distributed version control era. We had CVS server that was hosted by Netscape. We had a few contributors from outside who had submitted patches and gotten the permission to actually commit directly. Some of them had done things like replace the crypto module. Because in 1998 the US government ostensibly through the commerce department but really through the NSA would not let you export a crypto module. You could not export the crypto algorithm suite required for SSL.
So, when we released Mozilla codes in April 1st ’98, there was no SSL, there was no HTTPS. And pretty quickly, some people down under, Eric A. Young and Tim Hudson, somebody I had met when I was at SGI coincidentally, had hacked an early version of what became OpenSSL which was at that point called SSLeay, Eric A. Young. SSLeay, they’d hacked that into the open sourced Mozilla code to provide the missing crypto algorithms to provide HTTPS. That was one of the biggest, most impressive hacks that were done by open source contributors.
But other than that, it was such spaghetti, second-generation student code. Hardly anyone could to anything with it. And so, I was the technical leader of Mozilla. I was the architect. I said, “We can’t have this. We have to do something that’s more greenfield that allows homesteading by new contributors that allows people who care about standards to implement things correctly instead of hacking on this very non-standard codebase.”
And Netscape had acquired a company called Digital Styles that was known for rendering engines of some kind. And they started doing a next-generation engine in ’97 I think based on Java. And they thought, Netscape’s doing the Javagator, Netscape and Sun are going to kill Windows, Java’s going to be the future on the client side. Let’s build a Java engine. When Java got the plug pulled from it in late ’97, when the Electrical Fire JVM that Waldemar Horwat was building at Netscape got cancelled, when Sun went away because Netscape was basically going out of business slowly, the team that was doing this Java engine, this Java web engine, rendering engine called Raptor said, “Oh, we better rewrite it in,” maybe it was called Xena, I forget. They said, “We better rewrite it in C++.” And then they said, “Let’s sell it to Mozilla.”
And I was looking, as a buyer I was not just a chump. I was also looking for the greenfield, homesteading space for the open source standards-oriented contributors. So, we made a deal to reset the Mozilla project in October 1998 around rewriting everything from the ground up based on this Raptor engine which got renamed Gecko. And around the same time, the KHTML project, KDE was getting going. Now, we could have picked that, but it was also looking kind of raw and it wasn’t web-compatible enough. And Raptor was pretty raw. It had a lot of bugs. Gecko, early Gecko had a lot of mistakes that we had to rewrite over the years. But we did get the greenfield advantage. We did get the web standards folks interested. We did get new contributors.
And we did what Joel Spolsky describes as the big mistake. You don’t rewrite your codebase if you’re in the competitive market. You do Netscape 5, Netscape 6. You do Netscape every year. You keep trying to fight for your market share. Netscape didn’t do that. They basically trusted Mozilla to rewrite the codebase. Some of the executives thought it could be done in two years. And I was like, “No, four years.” It turned out to be, Netscape 6 was crapped out prematurely based on Mozilla 0.6. We wouldn’t call it 1.0. It was so bad, you guys may not remember it, or you may not have been born yet. Netscape 6 was a disaster.
BRENDAN: It not only had black and blue theme with circular buttons, it had ICQ and AIM and other AOL incrustations. But fundamentally, it was based on this crashy, buggy, slow version of Gecko. And so, the Mozilla leaders, like Mitchell and myself, were like, “No, not 1.0. You shouldn’t ship this yet.” The Netscape people living in fear of the AOL masters in Dulles, Virginia were like, “We have to ship or morale will fail,” and we were like, “No, morale’s going to be bad if you ship.” And what they really meant is their necks were on the line as basically the acquisition that had to deliver some value to the mother ship. So, they shipped and it was crappy and it got panned. And I think there were some executive beheadings.
BRENDAN: And Netscape lived on for another year or two, 2001, 2002. And finally we got Mozilla 1.0 done in 2002. And the best I can say is that it didn’t suck. At that point, you’re not looking for ultimate victory. You’re looking for something that you can build on. It was a stable base for API compatibility. It was a stable release. And Netscape did a version 7 or a 6.1 or 6.2. I can’t remember the number, that actually didn’t suck either but it was too late for them. And then a year later in 2003, AOL pulled the plug on Netscape.
CHUCK: Did the ICQ integration say, “Uh-oh”?
BRENDAN: I think it did. There were a lot of things that were jammed in that were closed source. It was not good. And the funny thing was, Mozilla doing open source only, at first we didn’t even provide binaries. You had to get your own compiler. You were using GCC or EGCS, if you guys remember what that is, a fork of GCC on Linux.
BRENDAN: Or you were using MinGW or Microsoft Visual C, or this was pre-Xcode. You’d use the Apple tools and PowerPlant, the user interface toolkit from CodeWarrior. You used CodeWarrior on Mac. This was old school. So, at some point we decided we’re going to do builds because we need testers who don’t have compilers to get the builds and test them for us. We don’t want to make everybody be a developer who knows how to compile their own bits. And so, by producing builds Mozilla started producing product. We didn’t even know it. But our Mozilla browser suite didn’t have ICQ in it. And people actually liked it better. So, we started getting adoption.
And at some point, I can’t remember when, 2001 or 2002, we actually had more users than Netscape did. [Laughs] So, at some point we were getting the signal, very real signal from the market, the users, saying “You should do your own browser.” And that’s when I think David Hyatt who went to Apple in 2001 who was one of the senior engineers there who did a lot of what became XUL, he and Blake Ross who went to Facebook and a few other people decided, screw all those Netscape browser suite 90’s era application suite where you have mail and news and ICQ and browser and editor and address book, like a Swiss army knife application. But just do a browser and make it really awesome. And they called it Mozilla/Browser. And then I think I was involved in this, that we said let’s call it Phoenix, like from the ashes and…
AJ: I remember when it was called Phoenix.
BRENDAN: Yeah. We kind of incubated it inside Netscape and sheltered it from management. And they were doing things, even Dave Hyatt who wrote Chimera which became the Camino Mac-only browser, he was practicing how to build a tab browser, how to build widgets, UI widgets in a cross-platform way, stuff that he then went to Apple and worked at Safari on. That all was making fools of Netscape management because they were still polishing the turd that was their application suite.
BRENDAN: So, we ended up building what became Firefox as this pirate ship inside Netscape. And then when AOL finally laid everybody off, Mitchell and I knew that was coming through backchannels, because Mitchell had already been laid off and gone to work for Mitch Kapor, the guy who created Lotus 1, 2, 3, big investor, very well off. Mitch was employing Mitchell to work part-time on Mozilla, part-time on the Open Source Applications Foundation, which was basically, I think Mitch was inspired by Mozilla and also Mitch always wants to recreate Lotus Agenda, if you know what that is. It’s a PIM, personal information manager. So, OSAF was trying to do that as open source 12, 14 years ago. And Mitchell was working on it, but she was also working on Mozilla.
Mitch Kapor knew one of the early AOL guys, Ted Leonsis, very nice guy. Business guy, not a technical guy. Very well off, of course he owns the Washington Capitals. Whatever. I like Ted, but Mitch and Ted ran into each other at the very first D Conference and Ted was like, “Mitch, I have this thing called Mozilla. I don’t know what to do with it inside AOL.” And Mitch who coincidentally, or maybe this was fate, hired Mitchell Baker when she was laid off by Netscape/AOL, said “I’ll tell you exactly what to do with it,” because Mitchell had been talking to him. So, through these backchannels also through IBM we knew that AOL was going to drop the axe on Netscape. They were going to lay off everybody.
Netscape had hundreds of employees in this building in California. AOL’s back in Dulles, Virginia. And they sent out some hatchet man VP. He had security goons behind him. They didn’t have individual meetings with people. They just did it Jonestown-style. They had everybody in one room, except for the people who went to the other room. The other room was much smaller. So, you had this weird day of event where the email went out and people were saying, “We’re all supposed to go to the big room,” and then somebody said, “Well, I’m going to the little room.” And then people said, “Wait, is that good or bad? I’m going to the big room. You’re going to the little room. Which one’s good?” [Laughs]
It pretty soon became clear that going to the little room was good and going to the big room was bad, because in the big room the hatchet man said, “You’re all fine people and you’re all fired.” And the little room involved people like me and David Baron and the build guy, Leaf and I think somebody else still at Mozilla. It might have been Asa Dotzler. We were all sitting there and we were not going to get laid off right away. We were going to have three more months and we were going to transition the Mozilla assets to a non-profit which involved the trademarks and some build machines. This is pre-Amazon Web Services, so we have an Amiga or something. I don’t know. We had a SunOS machine. We had an IRIX machine. We had PC. We had Macs. We had a very few rack-mounted machines we had to do our continuous integration on.
And by the way, Mozilla did pioneer that with Tinderbox. It’s something that’s a staple now and it’s been done better. But at the time, Tinderbox and continuous integration was a Mozilla feature that I think was new to the open source world. A lot of open source…
BRENDAN: Repositories wouldn’t even build if you went to their CVS. I guess I’m coming to another punchline, which is when we spun out Mozilla, we only had 12 people and we had Phoenix. Firebird, remember that name, also was contested, so we became…
AARON: Yep. I remember Firebird, yeah.
BRENDAN: And we went to Firefox. But when we got into 2004 we knew we had something that was big. And it was like, you guys remember Chrome in 2008 was hot. Firefox against IE was even hotter. And it was just amazing to be there then to do it, because you saw this opportunity to do a new browser and take back market share from Microsoft, which no one had ever done.
AARON: That was awesome.
AARON: That’s a lot of good history that I think…
AJ: Brendan, I don’t know if you know this, but you’re kind of a big deal.
BRENDAN: In some ways, I’m the person who was there at the time and had to do it. It’s true that nobody else in Netscape would have done it. I was the language buff and the fast implementer. But all those mistakes, I’m sure there are people elsewhere in the world who could have done a better job. But they weren’t there. Also, maybe they would have insisted on more time, and that would have failed. Or, maybe if they got that time, would have been better for it. But I didn’t do that either. [Laughs] So, it’s an accident but it’s I think a happy accident in terms of the developer community. A lot of the good ideas and the bug fixes and the optimizations and the extensions, the API extensions especially, came from developers. So, I couldn’t have done it without the developers.
JOE: That’s a great point.
CHUCK: [Laughs] Awesome.
And it shouldn’t have been a surprise. Once you have open source as a commodity, as a means for companies to hire people and get better QA, I think a lot of open source is like that. It isn’t necessarily about the community. It’s about how can I get my code better tested? How can I recruit talent that I can’t find otherwise that just comes to the open source project? And that’s fine, too. That’s really where a lot of value in open source comes from. V8 has benefitted from that and they’ve benefitted Node. And Node has benefitted people.
So, we’re starting to see convergence through compilers, cross-compilers, and through people working intentionally on the web to fill the gaps and do the extensible web manifesto thing of building up the lowest level possible that’s still efficient when you use it at scale so that you don’t have the standards bodies inventing these big sky castle high-level standards or high-level APIs. That should be done on GitHub. The standards bodies should be building up from below. And that I believe strongly in. If there was more intentional, coherent, collaborative work that way or even competitive work that way, I think the web could be even better than it is. And I think it will be.
AARON: That’s awesome.
JOE: Angular or Ember?
JAMISON: Oh, geez.
BRENDAN: Like I said, it would be a disaster. If you imagine the W3C trying to pick a winner and standardize it, it would be like they would pick Dojo right when jQuery was coming out. It would be a mistake. So, I don’t really have a dog in that fight. I actually like things about Ember that I’ve seen. I also like things about React, which is in some ways less ambitious because React just says, “We’re the view. You can use us with Ember or Angular.” So, people are starting to realize that MVC, the C is vestigial. The controller’s vestigial. And the view, there are various ways to skin that cat and I like the React way of using virtual DOM diffing and immutability. And the work Rich Hickey did with Clojure which has borne fruit in many areas based on lots of prior art about immutability solving the time versus state problem, that’s really appealing to me. Swannodette, if you guys [inaudible] this.
JAMISON: David Nolen.
JOE: That’s a very intelligent answer to a silly question that I asked as a joke.
JOE: But I love that answer. That’s great. I do want to ask you specifically, what do you think with what Angular does with customizing HTML, writing your own HTML?
JOE: Right, yeah.
In fact, you can do it, Sam Ruby demonstrated this years ago, you can make, HTML lets you make up unknown tags. And they turn into elements in the DOM that just don’t have any particular magic to them. And then you can go into them and inspect and rewrite them. So, Sam had a demo where he loaded MathML as HTML and it made a bunch of unknown elements. But then he went through with a tree-walker that recognized that these were MathML elements and it made them render MathML. You can do that with SVG.
At some point, Sweet.js ties the knot and people can write hygienic macros and extend the language. It can even do JSX. It can do markup, angle bracket delimited markup. And then it’s not quite the promise land, but it’s pretty close. It puts all the power in the developer’s hands. It lets people… The complaint is then macros allow you to do things like in Lisp, Common Lisp or Scheme, where you have basically dialects that different adherents cannot understand. They’re mutually incomprehensible because they don’t understand each other. There’s macrology, but they should just learn.
CHUCK: Is that the direction we’re going here with this?
So, I do see building large applications requires different tools and different affordances in the language. It involves problem solving among a larger team that isn’t just about the expressiveness of the language or whether it’s complete by some measure. It involves whether you can actually understand the other guy’s code or write tests for the other person’s code, or can you actually work together at scale? And that’s also coming. Again, TypeScript is smart because it’s embracing and extending. Let’s hope Microsoft doesn’t try to extinguish. That’s the third E.
BRENDAN: Trying to start over.
JOE: Well, they almost killed it with IronRuby, right?
BRENDAN: The whole thing where they were doing Silverlight in multiple languages and a .NET light, it didn’t work out. That was the same era as the Flash/Tamarin ActionScript era.
JOE: Right, right.
BRENDAN: The web endures. And yet, you have Zuckerberg two years ago saying the web was a big mistake for us for two years. We wasted a lot of money on it. But he buried his own lead in the same paragraph. He said the web’s still pretty important and pretty optimistic. It’s still bigger for us on the m site than the sum of all our native apps at that time. Now, they’ve gone on to have better native apps. But their native apps aren’t even fully native. If you look at the Facebook iOS app, it has a lot of web views in it. So clearly, the web’s important.
You look at the Amazon app on iOS. It’s got a native home screen of course. But once you get into the catalog, the marketplace, it’s web. It has to be, because Amazon has this incredible information architecture that they already mapped HTML in very detailed ways, like the cross-through-ed price with the cheaper price or the Kindle price. There’s no way you’re going to pay somebody to recreate all that presentation in Cocoa Touch. It’s just insane. You wouldn’t do it. You get it wrong…
AJ: To me, it seems like a lot of this native stuff is a step backwards. And I hear a lot people saying that the prediction is that the web is going to bow down to native. But it’s like, well then, there are so many different native frameworks. To me, it seems like their time would be better spent in optimizing the browser on that mobile device than coming out with Swift, for example. What are your thoughts on that?
BRENDAN: And like I mentioned, Swift, you read Chris Latter’s blog, not the public Apple’s propaganda, but Chris actually gave Rust at Mozilla Research credit for influencing Swift. And he said Swift started as his own personal project in 2010. So, I believe that. And Swift’s just a better language than Objective-C by far. And it’s an LLVM frontend language. So, the real asset there is the open source LLVM compiler framework for ahead of time compilation. And again, that benefits not just Swift but Emscripten. It benefits Epic games in Unity, Unreal Engine, and the Unity Engine. It benefits everybody else doing cross-compilation to the web.
That’s where Apple and Microsoft are cooperating in spite of their native frameworks. And even Google has a lot of solid web people, but they also have their native stack. And maybe they have too many [laughs] engineers. I don’t know. They seem to sometimes conflict with each other more than anybody else when I see them fight in standards bodies. But I think the web is too great an asset. The number of web developers, estimated, this is rough, 8 million or more now, far more than iOS and Android developers.
So, you see companies like Collin Jackson, a friend who was at Stanford under John Mitchell, he and Adam Barth were doing browser security back in the day when hardly any other academic CS researchers were looking at browsers. Collin has a company called Apportable which is cross-compiling iOS Cocoa 2D, Cocoa Touch apps, mostly games, to Android. Because a lot of those games get developed for iOS first because that’s where the high monetization user is, and then when you get to Android which is the big volume OS, you don’t want to rewrite it by hand. You just press a button, Apportable generates the code. So, I think that’s awesome. I think compilers and the web are a perfect marriage for keeping up with native.
And if the web just gets those gaps filled, like obviously I’m not going to lie to you guys. WebGL is based on OpenGL ES2. It should be OpenGL ES3. It should be, WebGL, it should be based on OpenGL 4, the desktop version, if the desktop GPU is there, because we’re all used to sorting through old browsers and [inaudible] hardware in small screens and not retina screens. Why can’t we have the best of the GPUs instead of the lowest common denominator? And I think anybody working on the web, and this is a problem at Mozilla too frankly, who thinks of the web as only the lowest common denominator is doing it wrong. You want the web to be the best of the native. You want to compete.
JOE: So, why aren’t we hearing more about ASM lately?
BRENDAN: I’m not at Mozilla, but I think they’re still plugging away. The Unreal Engine 4 is coming up in it. There’s work, I don’t want to get ahead of myself here but there’s work even with Googlers on exposing all the missing low-level APIs that are needed for native code, like threads frankly. SIMD is public. This is in the Ecma TC39 meeting notes that you’ll see on ESDiscuss.org.
On the other hand, that’s a far out bet. I think the nearer term thing is people experimenting with Arduinos and other such systems or people doing things like their own Nest-like things but not locked down or tied into Google’s mother ship. I’m much more confident in that sort of hobbyist, early adopter path. That’s what the personal computers in the 70s with the Apple and the Apple II and the S-100 bus computers people built, personal computers before the IBM PC, all that stuff was incredibly generative in its day. And obviously the biggest success there was Apple. It’s still with us.
But I don’t think internet of things is going to be a clean break from the internet. I think there has to be continuity and evolution. And if we end up finding a path that miniaturizes part of the web to fit on very small sensors or networks that are mostly powered off, I wouldn’t be surprised. But I think the web with all of its developers, 10 million developers, however many it is, that’s just too much to just press the reset button on. So, I’m still pretty committed to the web.
JOE: Awesome. That’s probably a good note to wrap up on, don’t you think?
CHUCK: Yeah, probably.
JAMISON: This has been fantastic.
CHUCK: Yeah, absolutely.
CHUCK: Thanks for coming, Brendan.
BRENDAN: Oh, look at the time. [Laughs]
CHUCK: Alright, well should we go ahead and do some picks?
CHUCK: Alright, Aaron, do you want to start us with the picks?
AARON: Yeah. I got three picks this week. The first one is I tried it out just to see what a what, but it’s called hapi.js. And it’s Walmart’s version of Express. I hate to say it like that. Walmart guys probably are like, “Screw you, man.” But it’s Walmart’s framework on top of Node to do REST API and I thought it was awesome. I really liked it.
JOE: Yeah, you normally don’t want to call something the Walmart version of anything, right?
JOE: That’s not a selling point.
AARON: Yeah, no, no, no.
AARON: I meant, yeah. So, it’s a really, really good framework. If anyone’s looking, maybe check it out.
And the last pick is self-serving. I’m doing a Frontend Masters course next month. It’s in Minnesota. It’ll be, you can listen live from home. But it’s on ES6. So, I won’t do it nearly as much justice as Brendan would, but Rick Waldron is going to go over most of the content to make sure that I’m not telling too many lies and that it looks good. But it’s going to be a great course. It’ll be really, really good. So, Frontend Masters next month. Those are my picks.
CHUCK: Awesome. AJ, what are your picks?
AJ: First of all, I’m going to pick that just perfect moment when Brendan said, “Cool story bro” talking about Chrome Apps.
AJ: Because that was epic in ways that only the long term listeners will understand, because Frosty is on here. And he’s always “Cool story bro”-ing people about stuff. And Chrome Apps are his thing.
AARON: I loved it. I thought it was awesome.
AJ: [Laughs] Oh, that was hilarious.
My other pick for today, actually I’m going to pick two more things. One, I’m going to pick ‘Don’t Stop Me Now’ by Queen.
AJ: Yes, because I also felt that that was very applicable in that moment. Brandon was just passionate and going and going. And then Frosty just had to cut him off. He was having a good time and he just had to cut him off. I’m sorry, I’m picking a little much.
And then the last thing I’m going to pick is Trending.fm. I don’t even think it’s in public beta yet, but I know these guys that are in this incubator and they’re working on Trending.fm. And it’s this cool music site where you can tune in and you basically create a group radio station kind of thing. One guy is the DJ and then everybody else can throw song suggestions in the chat window and the DJ guy can click add. And so, great for the office type scenario or something like that, or if you just know somebody who’s really into music. You love their style and you just want to listen to what they listen to all day.
CHUCK: Alright, Jamison, what are your picks?
JAMISON: Oh, man. I have more music. This is a music-themed episode, or music-themed picks at least. One of them is a soundtrack for a little arena shooter game. The game is pretty sweet, too. But the soundtrack is my real pick. It’s called ‘WE ARE DOOMED’ and it’s just really good synth-y electronic music. It’s my programming soundtrack for the past week.
My other pick is another video game soundtrack. There’s this PlayStation 3 game that just came out called Hohokum I think. It’s one of those weird artsy games that make you feel superior playing it even though it’s not very much fun. [Chuckles] But the soundtrack is another fantastic piece of music. It’s not as synth-y, but I don’t know. They’re both good listens for programming. Those are my picks.
CHUCK: Awesome. Joe, what are your picks?
JOE: Alright, so I better stick with the music theme and pick some music. I’m going to try to be a little less pedantic than the rest of you, though. [Laughs] I’m going to pick Nashville Outlaws.
AARON: Oh, geez.
JOE: A tribute to Motley Crue, a new album that I’m not sure when it came out. It came out in the last year. I just noticed it and it’s got a whole bunch of country artists singing the hits from Motley Crue. And I absolutely love it because I was a huge Motley Crue fan back in the day. And so, hearing it done by these country artists with totally different type of sound to it but still the songs that I know and love, I absolutely loved listening to it. Not really great to program to, because you just want to sing. But still a great album. So, I’ll pick that.
And then my second and final pick is going to be Audible. I was recently using AudioBooks.com. Bought some audio books. It was nice, because they were $12 every time I wanted to buy an additional one and didn’t have any kind of screwy plans the way that Audible does. But their app completely blows. And after I got the Audible app, I was like, okay, I’m never listening and using the other AudioBooks.com app again until they improve it. So, I’m also I guess in essence calling AudioBooks.com out on the floor saying, “Make your app better,” because the Audible app really rocks. And this would be my second and final pick.
CHUCK: Alright. I just have one pick. I’ve been working on some subscription stuff. I should have it out here within the next few weeks. Anyway, what I’ve been using to collect payments is Stripe. And I just love Stripe. It is really nice to integrate with, does subscriptions and one-off payments. And I actually have it set up right now at DevChat.TV/donate. But anyway, it’s just really easy to put together and integrate with. And they have libraries for freaking every language. So, go check them out. Stripe.com.
Brendan, what are your picks?
BRENDAN: Oh, Guardians of the Galaxy.
CHUCK: [Laughs] I love that movie.
AARON: [Chuckles] Which hero are you?
BRENDAN: I am Groot.
AARON: I was hoping you’d say that, bro.
CHUCK: [Laughs] Is that all of them?
BRENDAN: Yeah. I’m not nearly as hip as you guys. I’m old school. I still use vim in the terminal.
CHUCK: I use Emacs in the terminal. We can fight later.
BRENDAN: I used Emacs in 1979 and ’80 on DEC minicomputers. It was Richard Stallman’s Emacs. It didn’t have Elisp. It had TECO, this crazy stack language. You should look it up. I switched to vim and I can’t go back. I can do both. I can do Emacs if I have to.
CHUCK: Yeah, that’s pretty much what I say about vim, so.
BRENDAN: [Chuckles] It’s true. Typing your name in vim is very destructive whereas in Emacs it’s constructive.
CHUCK: Alright. Well, thanks for coming on the show. We really appreciate you taking the time.
JAMISON: Yeah, this was incredible. I’m really glad I got to hear the history lessons.
BRENDAN: My pleasure. I look forward to seeing it all online.
CHUCK: Yeah, next week.
[Working and learning from designers at Amazon and Quora, developers at SoundCloud and Heroku, and entrepreneurs like Patrick Ambron from BrandYourself, you can level up your design, dev, and promotion skills at Level Up Con taking place October 8th and 9th in downtown Saratoga Springs, New York. Only two hours by train from New York City, this is the perfect place to enjoy early fall and Oktoberfest while you mingle with industry pioneers in a resort town in upstate New York. Get your ticket today at LevelUpCon.com. Space is extremely limited for this premium conference experience. Don’t delay. Check out LevelUpCon.com now.]
[This episode is sponsored by MadGlory. You’ve been building software for a long time and sometimes it’s get a little overwhelming. Work piles up, hiring sucks, and it’s hard to get projects out the door. Check out MadGlory. They’re a small shop with experience shipping big products. They’re smart, dedicated, will augment your team and work as hard as you do. Find them online at MadGlory.com or on Twitter at MadGlory.]
[This episode is sponsored by RayGun.io. If at any point you application is crashing, what would that cost you? Lost users, customers, revenue? RayGun is an essential tool for every developer. RayGun takes minutes to integrate and you’ll be notified of your software bugs as they happen with automatic notifications, a full stack trace to detect, diagnose, and fix errors in record time. RayGun works with all major mobile and web programming languages in a matter of minutes. Try it for free today at RayGun.io.]
[Hosting and bandwidth provided by the Blue Box Group. Check them out at Bluebox.net.]
[Bandwidth for this segment is provided by CacheFly, the world’s fastest CDN. Deliver your content fast with CacheFly. Visit CacheFly.com to learn more.]