CHUCK:
Dude, you alive?
[Does your team need to master AngularJS? Oasis Digital offers Angular Boot Camp, a three-day, in-person workshop class for individuals or teams. Bring us to your site or send developers to ours -AngularBootCamp.com.]
[This episode is sponsored by Wijmo 5, a brand new generation of JavaScript Controls. A pretty amazing line of HTML5 and JavaScript products for enterprise application development, Wijmo 5 leverages ECMAScript 5 and each control ships with AngularJS directives. Check out the faster, lighter and more mobile Wijmo 5.]
CHUCK:
Hey, everybody and welcome to Episode 30 of the Adventures in Angular Show. This week on our panel we have Joe Eames.
JOE:
Hey, everybody!
CHUCK:
I'm Charles Max Wood from devchat.tv. This week, we have two special guests. We have the Angular interns; we have Rodric.
RODRIC:
Hey, there!
CHUCK:
And Anting. Do you guys wanna introduce yourselves really quickly?
RODRIC:
Sure. Personally, I’ve been a contributor for a while for Angular and last summer, I got to go for an internship for a team in Mountain View. It was an interesting experience that I guess we'll talk about today.
ANTING:
And I would just work on [?] Angular for my first internship, so for my second internship, I figured I’d try the Angular team and I mostly worked on Angular Dart instead of AngularJS.
CHUCK:
Oh, that’s cool!
JOE:
Yeah, that’s cool.
CHUCK:
I have to say that on the sitcoms, the interns were always the easy comic relief. Is that what you do or is there something else that you do there?
RODRIC:
Personally, when I was an intern, I worked just like any other team member because I was used to the project and I was contributing on GitHub and everything, so there wasn’t much of a difference.
ANTING:
What I will say is about the same.
CHUCK:
So what sorts of contribution did you make while you were an intern?
RODRIC:
At the beginning, I was just continuing to work on GitHub with the issues. I mean, we had over a thousand issues opened including pull requests so I help on managing that. And then I branched off to work on Traceur for ECMAScript 6 for stuff that the team wanted and just helped around with any task that I picked up. I didn’t have a specific project set for me.
ANTING:
Me, the first half I was working on rewriting the dependency injection portion of Angular Dart and then after the rewrite which was mostly just for performance I switched to like the Dart version of Traceur and doing other random things that the team wanted.
CHUCK:
The Dart version of Traceur? Isn’t Traceur an ES6 thingy?
ANTING:
Yeah. Well, it compiles Dart into Traceur. It was kind of an experiment to see if it was doable.
CHUCK:
So for our current browsers you transpiled Dart into Traceur and then Traceur into ES5?
ANTING:
Yes, except it was mostly for maintaining two libraries like the watch, the change detection library for AngularJS and Angular Dart, so they wouldn’t have to maintain both of them, so it was like [?] had like no dependencies and they will be exactly the same.
CHUCK:
Gotcha.
RODRIC:
I don't know, Anting, if you’ve followed the project, the Angular after internship [?] but, so initially, we wanted to have one codebase and use it for JavaScript and Dart and so Anting worked on a thing on for a part in his internship to convert Dart to ECMAScript6 and then convert that to ECMAScript5 but I think now with AtScript, we want to convert AtScript to Dart.
CHUCK:
Round and round and round it goes!
ANTING:
I think it was mostly like an experiment.
CHUCK:
Yeah, that makes sense.
JOE:
Are you going to be able to do one of those Google Translate things where you take your AtScript, translate it to Dart, translate it back to ES6 and then maybe translate it back to AtScript again and go around a few times and see what comes out?
CHUCK:
That sounds like a terrible, awesome idea.
JOE:
[Laughs]
ANTING:
Well I think if you do that, everything would still work.
RODRIC:
Probably.
JOE:
Yeah, probably. It doesn’t really have the comic capability to Google Translate those.
RODRIC:
[Chuckles]
CHUCK:
I'm kind of wondering; let’s say that I'm a big fan of Angular and I'm in a position to do an internship, how do you line that up? How do you get to be an intern for the AngularJS awesomeness?
ANTING:
Rodric and I had pretty different experiences. I just applied normally through the Google internship program, then when I got matched with different teams, I picked the Angular team.
RODRIC:
Yeah. So usually, when you wanna do a Google internship, you had to do technical interviews and then once you pass that, you through a project matching phase then you get to match with one of the projects that interests you, and as long as the project managers are interested in you as well. But for my case, since I was contributing to Angular before, what actually happened is that at last ng-Conf, I’ve met the team in person. They knew me by my name; by my pull requests and so on. And we talked and they told me, “Do you wanna come as an intern?” So it was more of an in person thing and then they put me in contact with HR. I passed the interviews and then I already had done my project matching phase in the way. I got matched to Angular straight away, but you still need to pass through the whole Google stuff because as an intern, I mean you have a Google badge; you're working at Google; Google is paying you.
CHUCK:
Very nice.
RODRIC:
And I'm sure if someone is interested and wants to come as an intern, the best way I find is to get recognized was pull requests and help with issues and so on. And a very easy way then is sending an email to Igor or Brad and say, “Hey, I'm interested in internship. I'm studying, so I’m qualified for an internship.”
CHUCK:
Sounds good! I'm going to tell everybody.
JOE:
[Chuckles]
RODRIC:
So you have to be a student. Graduate, of course, as well.
JOE:
If I quit my job and like watch some Coursera courses, does that count?
RODRIC:
[Chuckles] I believe Google requires you to have… I remember I had proof from my college that I'm actually a student.
ANTING:
Yeah. I learned from like a movie that you have to go enroll in [?] or something and then apply for a Google internship.
CHUCK:
Oh, there you go. I'm going to start my own university.
ANTING:
Sure. That’s great. Maybe.
CHUCK:
[Chuckles]
JOE:
University of Chuck.
CHUCK:
It doesn’t have to be accredited or anything, right?
JOE:
So, did you guys work on site in Mountain View?
RODRIC:
Yeah. So you need to be next to your supervisor, because every week you have to meet one on one with him or her and so on. So yes, you need to be in Mountain View.
JOE:
Awesome. Are you guys from the Bay Area or did you go there for the internship?
ANTING:
I go to school in Berkeley, so I'm pretty familiar here but I think Rodric came pretty far.
RODRIC:
yeah. I'm from Montreal, Canada so I have to travel there and Google pretty much covers the costs.
JOE:
That’s nice. So what was it like working with the team? Are they like the superhumans everybody assumes that they are?
ANTING:
I think they are fantastic. Misko is funny.
RODRIC:
Yeah, they are great people, that’s for sure. I remember the first time I talked with Igor at ng-Conf, I was afraid, like he's so important but I mean, I spent the whole internship with him as my supervisor. I mean, they are regular humans. They just do awesome work. And they are building a superhero, right? Angular.
JOE:
Right!
ANTING:
And I was excited that someone else uses Dvorak.
JOE:
Who else uses Dvorak?
ANTING:
Misko.
JOE:
Oh, really?
ANTING:
Yeah.
CHUCK:
Don't his fingers get tangled up?
ANTING:
Apparently not.
CHUCK:
[Chuckles]
JOE:
That’s pretty funny.
CHUCK:
So kind of walk us through what the experience is like. You apply, you get accepted, and then Google helps you move out to Mountain View and then do you just basically show up to work? Is that kind of the field that’s there for that or is there something else that happens?
ANTING:
Interns, their first week, you do a lot of intern stuff and intern process and orientation, but other than that, it's pretty much work at the office. You start off by fixing some small bugs to get to know the code or I guess in Rodric’s case, he already knew the code so he could get straight to work.
RODRIC:
Yeah. I mean, we're considered as Google interns, so we have to learn about the internal infrastructure and so on, even though like for me everything I did was on GitHub and we had never touched the actual code base of Google. So we were in total of about 900 interns, I believe, so they already have stuff set up for all interns. It just happened that our project was open source.
ANTING:
I thought there was many more interns than that.
RODRIC:
I thought it was 900 in the Bay Area. Maybe it's more.
ANTING:
Okay.
RODRIC:
So usually, you have your first week of orientation in Google and then afterwards you just come to the office with your laptop and work and you have all the free food and perks from Google.
JOE:
That’s pretty cool. So I hear that it's possible to practically just live on campus because Google has everything for you. Is that true?
ANTING:
They don't have a bed. [Laughter]
JOE:
What about those little pod things that you like pull over and you kind of lay down?
RODRIC:
The nap pods?
JOE:
Yeah.
RODRIC:
They are good for naps, not for sleeping. But there's a lot of sofas and a lot of bean bags. Like I remember in the last week, [?] was sleeping on the bean bag during work. Personally, I did spend more than one night at Google. [Chuckles]
JOE:
[Chuckles]
RODRIC:
It's not recommended, and the first time I did it, it was in San Francisco because I missed the last train back to the Mountain View, and so I had to go somewhere and I went to the San Francisco office. So it's not recommended, but there's showers, there's food, whatever else you need. You have all your basic needs.
JOE:
Right. What was the work schedule on the Angular team? Was it like really crazy? Were you putting in a lots of hours? Was it the opposite? Was there some crazy times where you’re doing tons of stuff and sometimes [?]
ANTING:
A lot of people have kids so people didn’t really stay too late, so its apparently normal hours.
JOE:
No death marches?
ANTING:
No.
RODRIC:
Yeah. The hours were flexible in Google. But personally, for example, I had some I remember I sometimes had meetings in the morning, so somebody is expecting you there in the morning, so you'd have to go early.
ANTING:
Yeah, the day does start earlier than a lot of other teams and companies I would say.
RODRIC:
Plus if you wanna grab breakfast at work, then you have to come in early.
ANTING:
But usually, people are out of there by, like, five.
JOE:
Gotcha. That’s kind of surprising.
RODRIC:
Since I spent a couple of nights there, I did see people there at 2am. [Chuckles] So it really depends on the project. So for Angular, we didn’t have any deadlines from somebody else other than us, so if we wanted to… we didn’t have big pressure – external pressure -- all the pressure was internal. So yeah I didn’t really feel any issues with work schedule and so on.
JOE:
So what's the actual Google office like? Is there a bunch of slides and ping pong tables and drones to fly around? What's the physical atmosphere like?
RODRIC:
It's very open. I had two Nerf guns. I feel like was a must, but that helps a lot. I mean, there were Nerf Gun battles inside the office that would fairly often, actually. We had arcades, places to sit, meeting rooms named after awesome stuff. It’s very open. I mean, you could ask somebody and you will probably have another bean bag and so on.
CHUCK:
How did they decide what you were going to work on or what you were going to contribute to in the Angular space?
RODRIC:
Well that came through your supervisor. So each intern has his supervisor or her supervisor. It depends on what you wanna work on, what they want you to work on. At the end, get you evaluated on your work, so it should be something you like and something your supervisor could help you with.
ANTING:
And there's one on one meetings where you can discuss what you want to work on.
CHUCK:
Gotcha.
RODRIC:
And also something that’s nice since the team is in Google, there's also a lot of activities for Google so we can attend them, and a lot of presentations from the executives at Google and so on. And also stuff like yoga classes or dancing classes or yoyo classes, I went to that. That was fun.
CHUCK:
[Laughs]
JOE:
Yoyo classes.
RODRIC:
One Googler did that once and invited whoever wants to show up. [Chuckles]
JOE:
That’s pretty crazy. For each of you, what was your favorite experience of your internship?
RODRIC:
For me, it's probably that now my favorite number is in the Angular codebase and now any person using Angular have my favorite number on their HTML elements. [Chuckles] That happened because I was a release master, I forgot which version, and so we released and we changed some stuff for performance and created the name conflict, and so we had to decide for a unique and so I just appended my favorite number to the variable.
ANTING:
What was it? What was the number?
RODRIC:
Oh, 339.
ANTING:
Oh, okay. Because I put 42 in the code somewhere. [Laughter]
JOE:
That’s awesome!
ANTING:
And I remember somebody opening the issue of why “339” and I just closed it saying it's my favorite number. [Laughter]
CHUCK:
Why is it your favorite number?
RODRIC:
Because when I was younger, I used to breakdance and in my first break dance competition, that was my participant number.
JOE:
Really? That’s awesome. So, are you a big fan of the movie Break-In?
RODRIC:
No, I don't know that.
JOE:
Oh, you’ve got to see the movie Break-In. it's from the 80s when you know, break dancing was invented.
RODRIC:
Oh, okay. I stopped break dancing when I was about 11 or so, so it was a long time ago.
JOE:
Right. That's awesome. Anting, did you have your chance to go?
ANTING:
I think it was when we get like all the code merged into the actual to get it deployed. That’s a pretty good experience. It's actually really hard to get deployed because there's so many other teams that depend on your code, since we were like doing breaking changes and changing the API, it was pretty hard to get everyone onto the new version since Google doesn’t actually do versioning and everyone has to use the same version.
RODRIC:
Yeah, so it's pretty crazy, in Google, as Anting said there's no versioning, so whenever we do an update in Angular, all the Google applications that you use Angular actually get the new version, so they are always on head if you want. There’s one consequence of that is whenever we do a new release, we merge it to the code base but before completing that, we actually run the tests of all the application that use Angular, was a new Angular version and check if anything of them break. So for AngularJS, not only do we run our 4000 tests or so, we also run all the tests of all the Google applications that use Angular.
CHUCK:
Was there ever a time when somebody really missed something up and everything broke everywhere? It sounds like you're pretty careful. I'm just curious.
RODRIC:
Yeah, so for example when my favorite number got into the code base, it was because we broke one application that used the same variable name in the global scope. [Chuckles] So usually, we see the test results and if they are red, we investigate. So Google has their internal tools to avoid that. It makes the framework more robust, so I like it.
JOE:
Aaron, do you have questions for the interns?
ANTING:
Yeah, so I was interested when I heard about the Angular Lint project and I know that Brian told us it was kind of an intern project thing. Did you guys get a chance to work on that and if you did, do you know what was the status of it?
RODRIC:
There were two other interns that worked on it.
JOE:
Okay.
CHUCK:
That’s what I tell my clients when something goes wrong. [Laughter]
JOE:
“It was totally two other guys.”
RODRIC:
I personally didn’t touch Angular Lint. I did see their presentation every time they had progress.
AARON:
So can you tell us a little bit about it?
RODRIC:
I know that the goal of it was to do stuff like prevents you from… warning you when you touch the DOM in your controllers and I should have listened more to the presentation.
ANTING:
I think it was like those warnings when you are following like best practices for Angular or something.
RODRIC:
I remember they had to mock it on a stuff, compiler and so on just to intercept the calls and make sure that what you're doing follows best practices.
ANTING:
It's really useful though.
AARON:
Yeah, it sounds super useful.
RODRIC:
They did also stuff like typos for directives, so if you have a type in your HTML, they actually tell you, “Hey, this attribute actually you might have put a typo in that attribute” and so on. They were here to talk a lot more about it.
AARON:
Well, that was the right question then. So are you guys both still interns? Are you still interning there?
ANTING:
I'm done. It's just one summer. And I don't think they do internships during the school year and you have to work at the office anyway, so it's not really feasible.
RODRIC:
Yeah, internships at Google are usually 12-14 weeks and like there's a whole evaluation stuff and so on. And actually, if you did a good internship, you can come for another one next summer.
AARON:
So are you guys both heading back next summer?
RODRIC:
I started becoming a contractor for the team working part time as I study.
AARON:
Oh, cool.
RODRIC:
And switching from contractor intern, and then back and forth.
JOE:
[Chuckles]
AARON:
So like if a company had like special needs they would contact the Angular team and then Angular team would send it to you as a contractor?
RODRIC:
No, I work for the team just remotely.
AARON:
Oh! So it was like you work for google as a contractor, gotcha.
RODRIC:
Yes. I'm just doing a part time working on some things.
CHUCK:
If I ever got a check from Google that was for more than like $5, I’d frame it.
AARON:
Yeah. I know, right?
ANTING:
I don't think I ever got a paper check, unfortunately.
CHUCK:
Oh, I guess that's [?]
AARON:
Now, we're going to create some check envy because some of them probably get checks.
CHUCK:
So did you have any exposure to Larry or Sergey or any of the folks higher up in the company?
RODRIC:
Yeah. So every week, there's a TGIF where it's actually Larry and Sergey that hosts it. There's presentation with the new staff in Google and interns have access to it. So pretty much every week, we could see them. I once opened the door for Sergey, so that's something.
CHUCK:
Oh, there you go.
ANTING:
And Larry almost tripped over my backpack once.
AARON:
Dude, that would have been a nice claim to fame!
[Laughter]
RODRIC:
They are definitely reachable. I had also intern friends who asked them for coffee and be accepted.
ANTING:
I also heard they say no to selfies.
CHUCK:
[Laughs] And now we get all the Google lore. I love it.
AARON:
Yeah.
CHUCK:
Well, I think we're getting close to our time limit, but are there things that people just don't know about or think about in the context of Google in Angular either about the team or the company?
RODRIC:
One thing I would say is like I remember when 2.0 got announced and so on, people often talk about Angular as in it was Google making the decisions, like, oh, Google’s [?] 1.x but we're not. And in 1.4 is in beta and we plan 1.5, I believe. But really, it's just the team. And most of the team are people in the open source community that joined the team after they have done good work. So it's really not “Google people” that make the decisions. I mean, it's the community and we have over 1,000 contributors on GitHub. So it's really the team that does the decisions. People think it's Google, but I mean, we are in Google but we're still separate in a way.
JOE:
Right. Makes sense. You mean it's not Larry or it's not Sergey up there making those decisions?
RODRIC:
No. Also big part of the team are outside of Google.
AARON:
So, I think it's a little weird. I don't know how much you guys are exposed to it at Google but, it's weird to me that like so many geniuses at Google on the frontend side, there's like a bunch of guys that all pretend like the Angular team doesn’t exists and it's weird to kind of see Angular be so successful and Polymer not be… be it the Polymer guys pretend that Angular doesn’t exists and it's weird to see the two teams not sync up or get a little more in the same page. Did you guys ever have any like weirdness around that when you were there?
RODRIC:
I remember I was in a meeting. Well, we do have meetings between the Angular team and the Polymer team and talk about the challenges and so on. We had different visions like Polymer is more on the forefront of web components and so on, just Angular is being used by clients that can’t afford that. We do definitely sync up. We do talk and everything, it's just the two different frameworks. [?] But there's definitely collaborations, just not on the code level; more on thoughts.
ANTING:
I've never actually worked with anyone from Polymer but in the meeting, we talk about how we want to like play nicely with the Polymer people.
AARON:
Yeah, it's always been interesting to me.
RODRIC:
Just Polymer, I remember [?] project, so it's two different goals. They don't aim at the same thing [?]
CHUCK:
Cool. Well, I'm going to push us into picks. Joe, do you wanna start us with the picks?
JOE:
Sure! I can do that. So my pick today is going to be Kent Beck. For some reason, I was like, looked
at my LinkedIn, all of my like accepted like LinkedIn requests and they came up with like all those suggestions of people you should connect to, and all of a sudden, there's Kent Beck. And so if you don't happen to know who Kent Beck is listening to this podcast, I feel that that’s very sad because Kent Beck is one of the pioneers and luminaries of our industry. He invented Extreme Programming and Test Driven Development. He’s one of the original signers of the Agile Manifesto. He's currently this like fellowship engineer over at Facebook, where his job was to like teach all the senior engineers how to really code. So it's just an awesome, awesome guy and amazing guy who's done so many amazing things for our industry, so I just felt like, “Hey, I'm going to connect, send a connect request and just see.” And lo and behold, he accepted that which I thought was pretty cool. So you know, kind of got a little jolt of excitement that I got connected to Kent Beck. One of my idols as a developer. So I'm going to pick Kent Beck. If you happen to not know who Kent Beck is, I highly recommend you do a little bit of Googling and check out some of his work. His book Test Driven Development By Example was how I learned to do Test Driven Development.
CHUCK:
Very cool. Related plug: we actually had Kent on the Ruby Rogues podcast talking about Small Talk Best Practice Patterns, which is a book I recommend to all kinds of people who are doing anything with programming and object orientation. And the reason is because it basically gives you a bunch of simple patterns you can use to do just massively powerful things with anything that even looks like object oriented code. So he is definitely pioneered a lot of different areas. Aaron, do you have some picks for us?
AARON:
I'm going to pick rent coming up in Silicon Valley. It's called Angular U. And it sounds like it's going to be pretty big and I know there's a lot of people out there who’s going to wanna speak in an Angular event and Angular U right now has their call for papers open, so I'm going to pick that just so that everyone get their papers in. And then there's also another Angular event coming to Vegas that people should keep their ears open for. And I'm not sure if anyone else has any more information on that, but I'm going to just pick those new Angular events that are popping up. It's kind of exciting.
JOE:
Isn’t the date for that Vegas event set? I think that they can be announced.
AARON:
Yeah. The Vegas event is on 7th and 8th of May. But yeah, I don't know if there's much more details to announce right now.
CHUCK:
Awesome. I'm just going to go ahead and pick sleep. The last two nights have been pretty rough…
[Laughter]
Why is that funny?
JOE:
That was pretty funny.
AARON:
It's a solid pick, bro.
JOE:
Who was it that pick “air”… I think that was me, actually.
CHUCK:
Could be. Anyway, so I've been putting up JS Remote Conf this week and so I had a few infrastructure things to take care of Monday night and then I was helping speakers get everything squared away with the system we're using for it last night, and then uploading videos so that attendees could re-watch. So anyway, [chuckles] I'm pretty tired. I'm running on potato chips and Mountain Dew [chuckles].
AARON:
Solid fuel though. That’s good fuel.
CHUCK:
Yeah! But yeah, that’s where I'm living right now, so. Rodric, what are your picks?
RODRIC:
I want to pick Ecmascript7. I worked on ECMAScript6 Traceur while I was in my internship, and there's this great video from Jafar Husain called The Evolution of JavaScript Version 7 and he talks about Async functions and so on. And so maybe you can watch that and then go to sleep with your head filled with amazing stuff that will come. So yeah, my pick is his talk. It's actually from the Netflix UI Engineering.
AARON:
What's it called again?
RODRIC:
Version 7: The Evolution of JavaScript by Jafar Husain.
CHUCK:
Anting, what are your picks?
ANTING:
I think I'll pick the Code Golf Stack Exchange. I go on there quite a bit and there's lots of like cool programming challenges where people have solved them and it's fun to learn new algorithms and sometimes kind of learn little quirks about languages that you never knew existed and people also post pretty funny answers and it's very entertaining.
CHUCK:
Awesome! Well, thanks you guys for coming and talking to us about interning on the Angular team.
RODRIC:
It was great to be here. Thank you for inviting us.
ANTING:
Thank you!
CHUCK:
Yeah, we'll look forward to seeing you… oh, I forgot to ask, are there any announcements about ng-Conf that you guys wanna put out there?
JOE:
Not really. We're getting so close that there’s not too much to announce.
AARON:
We'll going to be doing some teasers over the next few weeks, but one teaser is that we are going to have some amazing stickering going at the conference, so you're going to be excited when you get to the event.
CHUCK:
Cool. Well, if you're going to be there, have a look around for all of the folks that are on this show because I'm pretty sure that everybody who is a regular host on the show is going to be there.
AARON:
Yeah, I think that you're right. I think you're right.
CHUCK:
Anyway, thanks for coming guys. We're going to wrap up the show and we'll catch you all next week!
[This episode is sponsored by Mad Glory. You’ve been building software for a long time and sometimes it gets a little overwhelming; work piles up, hiring sucks, and it's hard to get projects out the door. Check out Mad Glory. They are 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.]
[Hosting and bandwidth provided by The Blue Box Group. Check them out at bluebox.net]
[Bandwidth for this segment is provided by Cache Fly, the world’s fastest CDN. Deliver your content fast with Cache Fly. Visit cachefly.com to learn more.]
[Do you wanna have conversations with the Adventures in Angular crew and their guests? Do you wanna support the show? Now you can. Go to adventuresinangular.com/forum and sign up today!]