Yegge: You know John Cage is the composer who pissed everyone off with his 4 minutes and 37 seconds composition which was a dude sitting at a piano for 4 minutes and 37 seconds.
Yegge: And not playing it, was it 33 ?
Yegge: Oh man, I'm 4 seconds out.
Spolsky: You just, well I think you might have your own new composition.
Yegge & Spolsky: <laughs>
Spolsky: Our guest today on the StackOverflow Podcast is Mr Steve Yegge.
Yegge: Howdy howdy.
Spolsky: Formerly of Amazon, and the Navy even before that, currently of Google in Kirkland where Michael and I are visiting. Jeff is on the line from Emeryville.
Atwood: Well actually El Cerrito but close, very close.
Spolsky: El Cerrito?
Spolsky: That's a different Mexican resteraunt outside of Berkeley
Atwood: So how's the Google-plex treating you?
Spolsky: It's pretty nice, this isn't the flex I don't think...
Yegge: It's kind of plexuss, yeahII mean it's the plexiest we've got in Kirklandd
Spolsky: It's a little ugly plex
Yegge: It's frigidly cold here, but it's beautiful outside
Spolsky: Apparently the weather in Seattle is usually bad, we're having beautiful weather and everybody's saying we're lucky or something?
Yegge: You were, you're using our years quote of sunlight basically, but yeah we're in Kirkland offices and we had a nice lunch, it's "Earth day" tomorrow I guess, and so the chef came up and started begging us to take asparagus home
Spolsky: Oh yeah, there's a big old table of organic produce up there in the Amazon cafeteria
Yegge: GOOGLE cafeteria
Atwood: Amazon... <laughing>
Spolsky: So we're in the Google Cafeteria, there's a big old table set out there with like, raw asparagus and 20 kinds of fruits and vegetables
Yegge: Yeah, like a farmers market
Spolsky: All kinds of different apples and stuff
Yegge: And I was trying to explain to Joel that in certain other companies that I've worked at, I'm not naming any names, there was a big discussion about whether you should feel guilty if you're going to take food home, you know, if they're going to feed you because there's some cataclysmic event - and I was about to say, at Google, they've kind of cleared up the ambiguity - and the chef walks up and says PLEASE take ANY of this home you want, and he just starts handing us bags - so yeah there's a little bit of contrast there
Spolsky: Yeah. That's pretty nice, I was going to take some home to my friends at Microsoft because they don't get enough food over there, I don't think
Atwood: But it's a table full of vegetables, that's not very "programmery", it should be like Ding-Dongs and Twinkies and...
Spolsky: They had that too! They have the slightly healthier versions of the Ding-Dongs
Yegge: Yeah we have the much healthier (hard to work out) Red bull cola?
Spolsky: Red bull cola and stuff
Atwood: The "organic" red bull <laughs>
Yegge: We did have a brownie, there was a brownie
Spolsky: I'm just noticing that lava lamps seems to have an antenna which seems to be attached by a wire ...
Yegge: Oh yeah! That's our wired internet lava lamp, so you can check its...I'm just making this stuff up
<all 3 laugh>
Spolsky: It's a lava lamp, this little conference room along with a ... floating ... soccer ball
Yegge: It's not very lava lamp-ey either, it's ON but it's not MOVING, so maybe it's actually a, you know a... listening device or...
Spolsky: Optical illusion? It's just CGI that they added after
Yegge: <laughs> Could be!
Spolsky: So Jeff how are you doing?
Atwood: Good! Well I was going to tell you, I think your show was one of the most popular ones we ever did
Yegge: Yeah! One of the most popular
Atwood: Yeah, repeated - REPEATED compliments on that one, people really seemed to enjoy that show
Yegge: I don't remember ANY of it! But I hear it was good
Spolsky: We might have talked about programming languages, everybody likes a good programming language fight
Yegge: Oh yeah, yeah
Atwood: Oh yeah! Speaking of programming languages, I have a little anecdote, you guys probably knew this but me being a dumb ass, I didn't know that APL was ACTUALLY symbols? I thought you were kidding! You brought that up, and you were like, you know, I said well what if there was a programming language or - I think Alex brought it up actually from the Daily WTF, what if there was a programming language which was ENTIRELY symbols? and I was like, "Ha ha ha, that's hilarious!"
Spolsky: And I said "Yeah, APL"
Atwood: No, I was like, that's ridiculous, and then <laughs> in the comments after I put that show up people were like, "yeah, just like APL" and I was: "WHAT?" , I was like, "Joel wasn't just pulling my chain like he usually is?"
Spolsky: When did I ever pull your chain?
Atwood: You're CONSTANTLY yanking my chain
Spolsky: Yeah I think they got the idea from terminals that couldn't display Unicode? So you'd see little smiley faces and stuff? and they're like, you know what? This is even MORE <something> than Perl!
Spolsky: It's the line noise language! I don't know why they use symbols it's really a matrix language
Atwood: Well it's a mathematics thing, somebody said this is what happens when you let...mathematics design a programming language
Yagge: It's really concise
Spolsky: the whole Fibonacci generator is like 8 characters or something and the, you know, it's a very concise language
Yagge: It's good to be able to save space on your, Fibonacci generators
Yagge: The toy examples always drive me nuts, you know the, c++ you know the c++ toy example he uses AGAIN and AGAIN and AGAIN, it's the point class , and it's just SO hard in C and now we can have points, complex numbers, yeah same thing
Spolsky: You've got a whole programming language designed for complex numbers?
Yagge: Pretty much, and then he kinda bolted everything else on afterwards
Spolsky: and strings, that's the problem, that you couldn't do strings
Yagge: Exactly, and then Perl came along and they could do strings really well but not so much lists or (something) or data structures, and then it all went to hell and then now the Haskell and the Scala people are like “LOOK AT OUR QUICKSORT IT'S ONLY 3 LINES AND IT'S NOT ACTUALLY QUICKSORT BUT IT'S PRETTY CLOSE”
<all 3 laugh>
Yegge: It's foolish to, to, to try to ... I saw this dude, you know, hes not with us anymore and he left voluntarily, he was a good programmer, I mean people can get by with just basic V.I. But I mean the dude had, he was using not Vim, he was using V.I. Like Vi or whatever you call it, the old one. it was like Ed.
Spolsky: Ed. One comma three I <laughs>
Yegge: And I'd watch over his shoulder and i'd be like "Dude, you spelled it fuction again". Right ...
Spolsky: Doesn't—isn't there a problem that ... I know that in the case of IntelliSense, at least, it's very very hard to do good IntelliSense if you don't know the type that something is—that the variable is pointing at.
Yegge: Well, it is hard, but I notice that you didn't say it's impossible, and that's—that's the correct word, because it's not impossible.
Yegge: I don't know if we talk about it or anything. I know we're planning on open sourcing it—we're working on it.
Spolsky: Is it—is it the same as the one in Chrome?
Yegge: I don't know—no, it's not. The one in Chrome is a VM.
Spolsky: Oh, OK.
Yegge: It's a very—You know, it's kind of obfuscated—and it's not obfuscated...
Yegge: So there's classes, and there's methods, and inheritance, and there's even to some extent, you know, parameterized types and things like that.
Spolsky: Do you have to declare the types?
Yegge: You don't have to—there's type inference.
Yegge: So, the more types that you declare, especially at key points where there's a little bit of purchase for the type inference engine...
Spolsky: Yeah. Yeah.
Yegge: ...the better...
Yegge: …and it'll tell you, "Oh gosh, I have no idea what's going on here", right?
Yegge: …maybe it dispatches and does something different, you know?
Yegge: ...because they don't have overloading, right? So what you do is you just look at your arguments and see what you got and then do some dispatch, right?
Yegge: The type inference engine in JSCompiler will actually, like, figure out what all the possible things are that you do pass in, and create a union type for those, right?
Yegge: And none of this is ever surfaced in any sort of an IDE, or anything—it's just warnings or errors at build time, right?
Spolsky: So it can catch things faster.
Yegge: Yeah—but I mean, so it would be very nice if it could catch it as you typed it.
Spolsky: And plus, like, know what the type of that object is, so that... <overtalked>
Yegge: Absolutely. <overtalked> So that you could do—exactly—autocompletion, and things like that, right?
Yegge: ...I'm like, well, yeah. We have to write a Python compiler, you know..
Yegge: ...it's going to be some work. Because, the thing is, it's a very—it's a really sophisticated compiler. It does like 50 passes over the IR, and it does—it builds a, you know, control flow graph, and all that Dragon Book stuff, right?
Yegge: And it's starting—it's starting off with very few types. I mean, it's the types that you give it, right, but I mean, like, you could potentially, I mean, I think, eventually we're going to be able to run it on third-party code, where all—the only types are, like, you know, literals, and functions—you know, there isn't a type system, right? But it can still infer kind of a lot of stuff there, right?
Yegge: So, like, anyways, so, again, it's hard, it's a lot of work, and it could be better, and so on, but I mean it's pretty good. And then with C++, and with Java, and any statically typed language, you have types.
Yegge: So you have a lot of stuff for the IntelliJ...
Yegge: ...IntelliSense stuff to work.
Spolsky: And IntelliSense will almost work, and it'll use all kinds of exhaustive methods...
Spolsky: ...to try to guess what type things are.
Spolsky: Sometimes in ways that are maybe 95% accurate...
Yegge: And you know what?
Spolsky: <simultaneous> but not 100%...
Yegge: That's been my, sort of, core philosophy, is that if it's 95% accurate, then, you know, 5% of the time, you're going to be fixing it, you know...
Yegge: ...probably for C++, right? Every once in a while, it doesn't indent exactly the way you want, but as long as it's helping you...
Yegge: You know, um...
Spolsky: A lot of times, when it's failing, it's cuing you off as to something that you did nonstandard that's...
Yegge: That's true.
Spolsky: Or possibly even wrong.
Yegge: It could—you're right, it's actually kind of an incentive for you to sort of code in a more transparent way.
Yegge: "Your tool won't know what the hell you're doing."
Spolsky: Mm-hmm. <laughs>
Yegge: And that's your choice, right?