Minko Gechev talks with Ward, Dan, and Craig about the state of Angular in early 2021. What changes have been made to the debugging tools in Angular? What are the goals for Angular?
John Papa @John_Papa
Ward Bell @WardBell
Dan Wahlin @DanWahlin
Craig Shoemaker @craigshoemaker
Minko Gechev @mgechev
Podcast editing on this episode done by Chris Enns of Lemon Productions.
Craig Shoemaker 0:04
Welcome to web rush, the weekly talk show that brings you Stories of Real World development from industry experts. And developers like you and me. Each week, Ward Bell, Dan Wahlin, Craig Shoemaker, and John Papa, find out what it takes to write, deploy and maintain apps that stand up to the demands of the real world. And now, here are your hosts.
Dan Wahlin 0:29
Well, welcome to Episode 124 of web rush, everyone. We are excited to be back with you talking about all things web. And I have my glorious co hosts on today. Ward Bell and Craig Shoemaker Ward, what do you been up to?
Ward Bell 0:47
Well, I am deep into this audio videos stuff and my mind is just POW. It's just overloaded. But, you know, and I, I have to remind myself, it's not just age. You know, this is just a lot of information. And there's a lot of angles to this stuff. So
Dan Wahlin 1:08
I think that's why glorious came to mind war, because compared to your previous camera setup, and I know people can't see this audio only podcast. It's pretty amazing. You should see Ward he's looking pretty amazing right now. So
Ward Bell 1:23
yeah, well, I've rubbed some Vaseline. Vaseline on the lens. You know, I got to make myself look pretty now. Craig, what
Dan Wahlin 1:30
about you? What
do you been up to?
Craig Shoemaker 1:31
Well, I've always wanted to grow up and be like Ward, but now even more, so.
Dan Wahlin 1:36
Craig Shoemaker 1:36
I know. Cuz he's got all the awesome gear. No, I Well, I've been up to about six foot.
Dan Wahlin 1:42
Nice. Yeah, that's a I think that's about an inch less than I remember you at Is that right?
Craig Shoemaker 1:48
Oh, yeah. It's been too long since we've seen each other in person. That's right.
Ward Bell 1:52
I used to be six, eight, but I'm shrinking.
Dan Wahlin 1:55
Ward Bell 1:56
But 556 now.
Dan Wahlin 1:59
Excellent. So we are super excited to have Minko Gechev with us. And if you don't know Minko he's done amazing things. He's can't remember the name of it. , I have to admit you're one of the favorite people I follow on Twitter, because the tips you give are amazing, but let me tell you a little bit more. Minko is leading the angular devrel team at Google. And before working on open source full time, he co founded rhymed calm, which Coursera acquired in 2019. I don't think I knew that Minko. Congrats on that. That's pretty exciting. So first off, welcome to the show. And tell us I know, kind of what you've been up to because of Twitter. But what have you what's been going on your way?
Minko Gechev 2:41
Yeah, well, a lot of exciting Angular stuff we have been working on both like products and community side of things recently. So currently, I've been very highly involved in improving the debugging experience for and you're also making sure that your applications perform work well, according to like core web vitals like the user centric search metric, user centric performance metrics coming from Chrome, and a bunch of viral things starting its RFC process on dangerous sites, going to some community, other community initiatives, just running different surveys to understand what people would want to see an Angular recording video, like pretty much all of us.
Ward Bell 3:27
Now wait a minute, wait a minute, I heard that Angular is dead. It's only being used internally at Angular, they've cut themselves off from the west to the rest of the world. And that's so not true.
Minko Gechev 3:42
Yeah, I haven't heard about it. Well, I haven't heard that.
Ward Bell 3:46
There are people who say things like that. So I we want to know, we want to know what what the what you know, what's going on?
Unknown Speaker 3:54
Yeah, social media is a dark place. I have. We have been, angular has been doing pretty well, actually, we looked at we are running an annual developer survey. And last time, we got about 30,000 responses. That's like only Angular developers. Yeah, we released our survey results. So like, it was hard to analyze all the open ended answers, right, you can imagine 30 1000s of them. We run some we worked with the vendor in order to make sure that we provide we run some natural language processing on them so that we can categorize them in different areas of focus. And we released survey results. on our blog about a month ago, I was really happy to see that more than 50% of people actually read it anywhere with a nine or a 10. Out of out of 10 Yeah. And they were I think about 6% of people who rated it with less than a five. So we have pretty good feedback from the Angular community.
Ward Bell 4:56
And yeah, that's people who actually use it as opposed to people who are Who throw darts at it from across them?
Unknown Speaker 5:03
Dan Wahlin 5:44
What you mentioned debugging there.
Because, you know, that's, that's an area that honestly, I don't think it matters, what library or framework I use, it's challenging sometimes.
what are some of the things going on there? Because I know, you've also done a lot of, you know, have deep insight into the compiler and all how all that works, too. But what are some things going on in that area that you feel are? I don't know, big productivity boost? Maybe
Unknown Speaker 6:09
depths? Yeah, we had, yeah, I had some my side projects, which we're building on top of the compiler to allow you to explore your application, even in the three dimensional spaces. That's kind of like, I think, working on my colleague, Jeremy corsets discount of unnecessary inventions. So it's kind of true. Yeah, on the blogging sites, in my like, no spare time. But in my job, currently, we're working on a couple of initiatives. One of them is just to improve the error messages for everyone. And this includes primarily newcomers to the framework. So what we released as part of version 11.1, I think that was just a few minor releases back, we released a brand new brand new error messages. So the top certain amount of error messages now have a URL associated with them and the unique code. So when you follow the URL, you're actually going to in your IO, where you can find a guide, that's includes a short video about two to five minutes on how on what this error message is all about, and how you can fix it. And also, actually, oh,
Ward Bell 7:16
that is wonderful. That's that was something that I, I, you know, I used to be involved in the documentation for Angular some years ago. And that was on my wish list for a long time. That's, that's really a great thing.
Unknown Speaker 7:30
Yeah, you can look at the stuff at Angular IO slash years.
Ward Bell 7:37
So john, one of the things I like about ag grid, which is a data grid component for the kind of complex grid scenarios that we encounter all the time in enterprise apps, one of things I really like about it, is that it works for a variety of frameworks, angular react view, or, or just vanilla j. s,
John Papa 7:57
Does that ring a bell for you? No, it really does. There's all these different companies that I work with, where they have no choice, but to use a lot of these different tools, they have different teams working on them. So being able to port their code or share that code, that technical investment they have is really important to them.
Ward Bell 8:14
Now, it's important to us, I do believe we're a consulting company. And I, you know, we never know what our clients going to want to use Angular react view, but they're all going to need a grid. And it's great to be able to reach for the one grid that works everywhere, ag grid,
John Papa 8:28
you know, at any size company, too, because you could have these teams that maybe they only use one framework, but eventually they're going to switch to another one and be able to take that investment again and use it reuse it is really nice.
Ward Bell 8:38
So if multi framework, data grid makes sense to you, please go check out ag grid at ag dash grid.com.
Craig Shoemaker 8:48
What are some examples of the types of errors people might encounter that they'll be able to see a video and have these rich experiences with? Oh, we
Unknown Speaker 8:56
have the infamous expression changed after checks. That's one of the one of my favorite ones, I'll say, Yeah. Does video currently has the highest the largest the highest number of years as, like not surprised to see that. You can see the circular dependency and dependency injection or no provide no provider founds selection selector collision, nice. A bunch of these. They're both runtime and compile timer, error messages that we added to URLs here. So that's part of the initiative, some on improving debugging. And another one will just to go through all the different error messages that we have in framework and make sure that they're providing valuable information that was the first stage. So that was a improving their errors was secondary guys. Another thing is angular dev tools. So this is a collaboration between the Angular team and the original authors of algorri, which was the previous version of Angular dev tools. Prior to AI. We have been working with them on improving The debugging story for understanding the structure of Angular applications and also being able to profile them more profile and better just by implementing different profiling tools for Angular, which check how long did it take you to see how much time you spent in change detection in particular components? How much how many times you've walked change detection, overall, stuff like that, and will trigger change detection, sometimes it's not obvious.
Dan Wahlin 10:27
That is awesome. Because I, in my role, now at Microsoft, I'm dealing with a lot of different frameworks actually, just because we have to certain things I'm on we have to make them work, you know, everywhere. And in I won't even say it because I don't want to get into battles between this and this. But in one of them, it turns out, there was a ton and it wasn't Angular, by the way, there was a ton of you know, what we would call change detection checks in Angular going on, and nobody caught it until a little bit later, man, because none of us had looked at it to be honest. So I'll take some blame there for not looking at it. So it sounds like you're gonna make that come much more to the surface, then to be able to easily profile it and see those.
Unknown Speaker 11:10
Yeah, yeah, we do. We're currently dogfooding. This extent, it's pretty much a Chrome extension that you can even run in electron application. In general, it's pretty decoupled. So it just, you can even run it remotely. When I think about it. It's just like a synchronous communication channel. We found a couple of interesting performance issues in some really large Google projects that they're using endure internally. And they were not very obvious to find otherwise. But with dev tools, people were able to just run the profiler and see the change detection going on and just like click on a particular change detection frame, and see how much time they spent on each individual component, and what do they do there. And until we get there, because we still want to work on better integration with the framework right now, between dev tools and the framework, we want to establish a good interface for communication. We also release some videos on our YouTube channel. So we have here kind of revamping our YouTube channel to make sure that we're posting content regularly now, it's youtube.com, slash Angular. And you can find how you can debug your application with Chrome Dev Tools. And ultimately, Chrome Dev Tools provides you even more compared to what's in your dev tools is going to, to give you because you can look at the individual function invocations and but at the same time, all this information could be a little bit overwhelming. That's the purpose of dev tools to highlight a little bit of this and show you exactly what you need to see for your Angular apps.
Ward Bell 12:40
Now, is this all YouTube content produced by the Angular team? Or are you accepting outside contributions? How does that work?
Unknown Speaker 12:47
Yeah, what's on the error? Guys? We actually work with farshid bio. I, that's I think the only YouTube channel I'm subscribed to, from my personal account, maybe this one and One Minute Physics when I think about it, but yeah, we work with them on introducing on developing the content for your guides. And aside from that, I think the primary the content is developed by by Angular team.
Ward Bell 13:18
But that's, that's great. That's great stuff. Is there? Is there a sort of a theme for the direction of Angular over the coming release or releases that we should know about? Cuz I mean, you're always fixing stuff all over the place. But often, a framework has a sort of a major initiative that it's working toward a goal. Is there or is there a goal or a series of goals that you're working toward?
Unknown Speaker 13:46
Craig Shoemaker 15:13
that Can you pull out a few items from the roadmap that you think would be worthwhile for people to look into? Yeah,
Unknown Speaker 15:19
yeah, generally, angular in Angular is vision, we want to be opinionated and to provide best practices from the start. So if you look at that's kind of a common theme between all the efforts in the in the roadmap, something that is coming up soon, is just strict mode, where we'll be introducing stricter type checking for enter your templates and TypeScript code. I don't think it's even on the roadmap, because it's kind of a relatively small effort. Something else in this direction is simplifying the framework. Generally, we want to be opinionated, with best practice from the start, but at the same time to not overwhelm people with a bunch of concepts that are part of their critical learning journey. So this is optional engine modules is part of this vision. That's something that we can do looking at for a while. And we haven't implemented only because it's, we want to make sure it doesn't have braking impact on the ecosystem.
Dan Wahlin 16:18
You know, that was going to be my number one thing I was going to ask you about, because having done a lot of training and stuff like that on Angular over the years, that's always the first thing is what's with this module? Like, why can't I just write a component and it runs? So I'm excited see that, you know, it's a hard problem to solve. because like you said, You can't be I mean, AngularJS had modules, you know. So it's not like, you could just rip those out, and hope that everything works perfectly, because it probably won't. But I'm glad to hear what's going on. What's some of the areas you're looking at there, then like what some more details? Cuz I think that's pretty exciting.
Unknown Speaker 16:56
Yeah, yeah. Actually, when I joined the team in 2018, before that, I've been part of the Angular community. I was thinking about this yesterday, almost 10 years now. That's Wow. Yeah. 2018, when I joined the team working on Angular I was my first pull request was to make ENTJ modules optional, but I wasn't thinking about the consequences that this could have. And like all the implications, so clearly, this, this wasn't able to go through. And we have you planning computer how to make the rollout in a smooth way to ensure a smooth transition, and also to still provide any modules for other large applications which need them because we find them as a really great organizational pattern for large apps, such as, let's say, Google class, which I think they have over 2 million lines of TypeScript right now. And wow. Yeah, we might
Ward Bell 17:47
not have been in that half too much.
Unknown Speaker 17:53
Ward Bell 19:05
Let me tell you why I think that's a terrible idea. And what I how I think that that can be, you can square the circular that I have absolutely no interest in taking each of my components and figuring out which components I'm using on there, when in fact, I mean, that's one of the reasons I have a shared module, right? Because there I just I say here, here's a grab bag of the things that I might use on any individual component. And I can just know that those are going to be available. When I create my next component. They're all going to be there by their you know, it's my little input things or whatever. And so, if I was required on every component to sort of take inventory, and make sure I listed it would drive me mad. Now, I don't know that and the way Angular modules is constructed today is the best way to do that. It's actually pretty clumsy, as we all know. Well, if you made me put All that stuff in the component minko, I would first I would tear all my hair out, and then I would find you and tear all of your hair out.
Unknown Speaker 20:09
Yeah, that was actually only the first part of the proposal. In the second part of the proposal, we are thinking about letting folks import an entire engine module in their component metadata so that you don't have to list the declarations one by one. And this is going to be much more ergonomic way to go with
Ward Bell 20:26
that. Now, now you got me back. Now it's now like, we could be friends, again,
Craig Shoemaker 20:31
everyone's hair is safe.
Dan Wahlin 20:34
Cuz I need all I can.
Ward Bell 20:36
Yeah, we're gonna go pull all of John's hairs out. But
Dan Wahlin 20:42
I really like to see that though. Because I the way, I'm a big fan of modules for the exact reason you said minko. As applications grow, I'm used to working with other languages and frameworks where they do have what I call buckets, where you can organize things. And without those buckets, I've seen what happens. I'm sure Ward and Craig have to I know you have Minko probably Google alone. You know, for folks that haven't gone that route. use something else maybe. So I think it's a big deal. But I also think for those, especially when people are getting started, or they just want to kind of quick app to just get out there, whether it's prototyping or so it's not a big app, to have to have that extra baggage, I'm gonna call it when all your goal is is to get a few components going, I think that are really lower the barrier to entry, which is probably a lot of what you're after, I would guess. Yeah,
Unknown Speaker 21:37
Craig Shoemaker 23:42
Unknown Speaker 24:00
Ward Bell 24:24
The goal here is fast load right first time the first page first interact fast time the first interaction, and it does. This is generally we know this is server side rendering, or is that is there a different name that you would go put it under?
Unknown Speaker 24:39
It's server side rendering with progressive hydration? I guess that's the fence that we use. There are different frameworks coded in different ways. Yeah, there is Google i o video from 2019, where we show this in action and it's still like nowhere close to completion. They're still looking into this, but the individual efforts on their own Map are just taking your steps forward this direction without blocking us from achieving this, like optimal streaming of web applications is literally streaming.
Ward Bell 25:12
Yes. Speaking of things that took longer than expected, your has to view engines fuel two ways to Bill, you know, the view, that stuff can appear on your screen. And one of them call is called, I guess who and and one of them was called IV. And there's IV was the future for a long time. Is IV The present?
Unknown Speaker 25:36
Yeah, yeah. He has been the president for the past. exactly a year. I think it's, it's Yeah, it's crazy. When I think about it, we released it in tweet winning. That's one of the few good things that happened in 2020.
Ward Bell 25:51
But that's now the default. Right? And yeah, and watch it. But there used to be a problem with AI. If I had a library that I was sharing. It would still be using the old view engine and how do I integrate it with things I write in IV? And I kind of like left the building about the point that that was? Because that looked messy. ngcc I don't know all these little acronyms. So where is that now? Is that process of building libraries that work with IV easier or getting easier?
Unknown Speaker 26:21
Yeah, yeah, yeah, correct. Previously, we had a compensability compiler that was compiling libraries using the previous rendering to it. And it's working pretty well, but at some extra post install step, so people need to wait a couple of seconds after they install their NPM dependencies. For the step to pass, we released an RFC that was our first RFC. Well, we can be having collar attempts for RFC that was one of the first RFCs for the new RFC process, let's say, where we asked the community for feedback on the new way to distribute IV libraries. So this is something that we it's currently in a roll out, we're going to make it the default in version 12, where people will be able to distribute it libraries without needing to package them, as you mentioned,
Ward Bell 27:11
are you building a web application needs to deliver it soon and don't have the people to do it? Maybe you're not sure your company has the skill set or experience to do it. And maybe we can help. I'm your host word bell. And my day job is building applications for companies like yours. I don't do it alone. I'm president of idea blade, a consultancy that specializes in enterprise web application development. We're particularly strong in Angular RX JS NGR, x Redux, on the front end, and dotnet, Microsoft technologies on the server, or small, tight knit group of people handpicked by me, for their expertise, experience integrity, and team spirit. Maybe we can help you with architectural guidance and hands on development. And if there's something we don't know, and in our field, really, there's too much to know, we can draw on our personal connections in the Microsoft rd MVP, and Google GDP networks, as well as our international circle of really great developers, people we know and trust personally, if you've got a project that's keeping you up at night, shoot us an email at info at idea blade calm. That's info at idea blade.com. And now back to the show.
Dan Wahlin 28:22
One thing I want to circle back to minko was, so you mentioned this, I'm going to call it SS SSR. ph would that be right? server side rendering progressive hydration? Yes. I if anybody uses that acronym, it is now copyrighted trademarked? Anyway,
what what I
know one thing that I first thought of when he said that was, so is that going to be like a complete replacement for what Angular Angular universal does then? Or is this just a new way to do what it does? I wasn't clear on that part.
Unknown Speaker 28:56
Yeah, your universal would not change in this case. I think there is a very minimal amount of changes required there is mostly on the cloud side, how are we going to handle user interactions? And how are we going to load individual components one by one. In fact, this is something we have been using in Google for many years now. Not necessarily for Angular only. But it's actually doable with Angular even today, but it's not enabled. Like it requires some custom work there, you need to put the work into making sure it works with your application is very interesting problem to solve because at the same time, when you think about it, you don't need to bundle your entire application. Since the bonding happens dynamically when a user interacts with a particular component, we need to figure out this components and all of its dependencies and on demand bundle a subset of the application in order to deliver it to the client. And it requires a custom serving infrastructure or Maybe just pushing code over USB two or USB three. Yeah, it's it's interesting problem that involves intersec. Not only actually the client side rendering, but the changes in Universal are going to be minimal. Yeah, university not going anywhere. We have been consistently improving it over the past few few months, we are in an ongoing collaboration with the Google Chrome team. Particularly a team that is very closely working with the folks who are developing core web vitals in order to make sure that Angular is very well optimized, recorded vitals. So this has been an ongoing collaboration where we shipped inlining phones, in mining of critical styles, and also giving feedback to people on the implementation of individual metrics so that we can make sure that they are not penalizing can existing Angular or non Angular applications?
Dan Wahlin 30:58
Let me go a little different direction here real quick. For those that don't are on Twitter and don't follow Minko, you should because you provide some tips. And I'll have to admit, there's been multiple of these tips where I'm like, holy cow, I did not know about that, you know, because it's just these little subtle language things. is, you know, quick segue from Angular here. Is that something you just kind of research for fun on the side? or How are you digging up all these cool tips?
Unknown Speaker 31:29
Craig Shoemaker 31:58
on your blog, you have an introduction to who you are, and you have I am and then you have this code block that has this insane array structure in an eval statement, which I ran in a incognito browser, because I didn't know what that eval statement was going to do. And it prints up your name, which I thought was insanely fascinating. But then I'm looking at the code, and I have no clue how that works. So if you're listening, you should check out Nico's blog and look at this. And I was just curious, can you tell us how that works?
Unknown Speaker 32:34
Craig Shoemaker 33:50
you can access the characters associated with specific Unicode code points that you looked for every any error code that had any of the letters that you needed for your named your name, and then use this technique in order to access the the location of the string, just spell out minko. Am I understanding that correctly?
Minko Gechev 34:13
Yeah, pretty much. Pretty much. Yeah.
Craig Shoemaker 34:15
Dan Wahlin 34:16
Greg, I have to admit, that was the find of the year so far. I'm also just baffled. There's a link in the show notes for everybody. If you want to see this. It's crazy.
Ward Bell 34:25
Unknown Speaker 34:41
Yeah, love it, too. Yeah, the tricky part, I guess, is to go to stream dot from character codes. So that's like from there, you can already get pretty much any characters out there in the Unicode. So yeah, but never forget all these characters. It's like a lot of work to get to there.
Craig Shoemaker 34:59
How long did that Project take you. Oh,
Unknown Speaker 35:01
I did it some time back. I don't remember it was a while. I don't remember it was many years ago, maybe a few, maybe a few days. That's, that's pretty awesome.
Dan Wahlin 35:12
He's blocked it from his memory so painful. Through a memory exception,
Unknown Speaker 35:19
I actually have a translator, yeah, I have something which can translate any string to the Wow.
Ward Bell 35:24
I'll make sure I slip this into some client code and charge them.
Dan Wahlin 35:29
I look forward was just thinking, can you imagine if somebody cuz you can make this work? Obviously, beignets would just be like, what it'd be one of those where you put the comment up above it. And say, every time you change this, and it breaks something, please increment this number, you know, and there, you
Ward Bell 35:47
just got to make sure that the commit is checked in under somebody else's name, you just change the email under the way. It'll look like Dan, while he put that in the code.
Dan Wahlin 35:56
That's all just for the crate. Exactly.
Ward Bell 35:59
So it sounds like thematically, you're just you're really working on Angular use? Well, you're working on performance kinds of things, because I hear that as part of the theme, one of the themes. But it did sound like in the beginning, though, you were talking more about usability and ease of learning. And that that's that there's an effort to do that. And I think that's, that would be really important, particularly the competitive landscape. Where let's let's face it, angular has a, I think deserved reputation for complexity and being hard to learn and things like that relative to say, some of its competitors out there, like view. I mean, React also has this way of starting out simple and then quickly, becoming a challenge and becoming overwhelming to but but Angular kinda leads the pack in a reputation for being difficult to learn and is so is that that's something that the angular Core i get a group is sort of kind of recognizes and is putting effort into.
Unknown Speaker 37:08
Oh, yeah, absolutely. Yeah, absolutely. So there are many initiatives in in in this direction that we're looking at. So really, there are some updates in the learning journey, and in the documentation itself, where we want to introduce this motor. And you're in a smaller way without talking about engine modules and RHS from the beginning, and even thinking about RHS, it shouldn't be part of anyone's critical learning journey. So that's another thing. Another thing we've been looking at, I suppose, documentation, I'll say there, because we have only one abstraction only event emitter, which is an observable, and it doesn't really you folks through the gym, don't need to understand it. This observable observables is a big, big part of it. And optional range modules is another effort. Having more ergonomic error messages, when you get an error message that an expression has changed, stops, race has been checked. That's not the easiest thing to get.
Dan Wahlin 38:08
Every time I get that even after years of Angular experience, I still go Oh, boy, here we go. Here we go down the rabbit hole to figure out what I screwed up.
Ward Bell 38:17
Yeah, time to break out set time up.
Dan Wahlin 38:20
I will say though, Minko, and you probably went through this too. And more than Craig, you might have, back before Angular even hit two. It was you know, the alpha. Literally, there used to be this air. It was like index is is not zero, I think something like and No. And again, this was early, early days, it wasn't even out yet. You know, this was like alpha really early builds. I'm not even sure they were public yet. And I still remember to this day, me and john getting on award, you're probably on those calls to just go. And so where do we start? Because there was no file name? Nothing. Whereas now Angular, I think it actually has really good messages. And obviously you guys are making it even better. That's pretty awesome.
Unknown Speaker 39:05
Yeah. Yeah, I was surprised if we don't have that many years, actually. So I in order to extract all the errors, we had a rerun the scripts were channelized the soldier type script called find themselves where we were throwing error messages and output this into our CDs file. And we went through StackOverflow GitHub, just like general Google search to figure out which are the most common error messages so that we can first target them. And there were not too many there are for sure, less than a hundreds, both compile time and run time error messages. I'll see that there may be around 15 more seconds. Maybe that's a mixture between anger errors, and that's critters as well.
Ward Bell 39:47
I am curious about what you were just saying a minute ago about RX js. Now. Let me preface this by saying I am. I consider myself I use RX JS heavily I consider myself pretty good. It added, it took me about two years of daily use to get to the point where I would describe myself as better than the average programmer with RX js. But it's just kills everybody who's working on the team who doesn't live in and breathe it. And I, it's so it's so powerful and rich, but I have a feeling that we could use it with a lot less of it in the code. And I'm sorry, I apologize to everybody I've worked with that I have forced so much rx jassa. So, with that background, it sounds like you're Oh, and I should also say, at NC comp, which is the year League, big conference around Angular, I was looking at the talks that have been selected. And as usual, about it feels like 50% of the rxjs talks that said to me, so So you guys are gradually steering people to await you know, originally, we seem to be steering everybody towards our x j. s, all the things. Now you guys are sort of backed off that a little bit and made it made a softer entrance into it. And we're not, you know, are we not demanding, you know, of all of our developers that they immediately do everything in our ext JS? Is that the new trend? Yeah,
Unknown Speaker 41:22
this is reasonable. I have a similar experience with it's like, it's very expressive API. So you can have very beautiful and elegant solutions. But at the same time, there is very specific semantics between a very short word like very short operator, and it's like not obvious what this does. And especially when you buy a bunch of them together, it's even less obvious. It's similar to Haskell. I like functional programming languages and more, I guess, he's terrific ideas.
Ward Bell 41:53
Yeah, there's they're intellectually challenging. I love trying to get the type flow right through all of these things. And after I've spent a good six or seven hours getting that just right, and solving a problem I could have solved in two seconds for another way. I feel like that was really six hours well spent, but nobody else does.
Craig Shoemaker 42:13
As long as you're killing
Ward Bell 42:14
Yeah. Well, yeah.
That's the thing, Craig, I
wish I could feel for that. But I immediately feel guilty. And I just write those hours.
Dan Wahlin 42:23
Don't you build by operator or?
Ward Bell 42:29
You write Haskell is a good example of that. You just feel so alive when you're writing in Haskell. But everybody else thinks you're nuts.
Unknown Speaker 42:38
Yeah, yeah, we already Jeff, I guess it's cooler. We are, we definitely are not pulling back. It's definitely we will have space for improvements between the integration of Angular and rhs. And there are some things that we're planning on doing in this direction. But this doesn't necessarily imply that more API cinavia are going to get more coupled with RX JS itself, we can just understand better observables and handle these, this transparently, internally for developers. Rather than introducing more RX JS API's to the public API surface.
Ward Bell 43:13
That was a great relief, that's going to be a great relief for the Angular community, honestly.
Unknown Speaker 43:18
Yeah. Yeah, I'll just get to see it, it's here as a good opportunity to support not only the folks who are getting started with Angular, and don't necessarily like or want to use rxjs, and also the folks who love to use rxjs. And they need more friendly, ergonomic syntax.
Dan Wahlin 43:36
And that's exactly what I was about to say is, I think your work with, you know, simplifying the whole module approach, and then what you just talked about of, there's still observables, but you don't have to be a guru, like Ward Ward is my go to guy. By the way, if I have an arc JS question, I ping ward. You don't have to be Ward Bell, though, to start building things. Because, you know, when you're coming from a lot of these other areas, you pretty much learn promises, and you're good to go. And we all know promises, you know, especially with streaming types of data, I think, you know, WebSockets, for one example, promises aren't as cool there as like observables. But at the same time, I think there's a lot to be said about simplifying and, you know, I think it all comes down to lowering the barrier to entry. So that's good to hear.
Craig Shoemaker 44:22
Yeah. So minko is there anything that's on your wish list that maybe isn't on the roadmap yet that you would love to see in Angular?
Unknown Speaker 44:32
There are a few things. The first one is the streaming rendering that we discussed. It's not on the immediate roadmap but this is still something that we're going to get to eventually something else that will
Ward Bell 44:43
follow back up with what is streaming rendering streamed right now
Minko Gechev 44:48
is a progressive hydration Sorry, I'm use a
Ward Bell 44:51
Dan Wahlin 44:52
Yeah, expand my acronym less now. SSR. Goes to I don't know what
Unknown Speaker 44:59
Yeah, I'm thinking At the streaming rendering, because your applications like streams to you, it comes like on pieces to, depending on your interaction. So it's similar to, I think about it as video rendering to certain, like to certain extent. And another thing that we haven't looked into, it's really cool idea, though, but there is already some exploration in the community s concurrent rendering of your application. So pretty much figuring out. So yeah, Chrome, Chrome is working on experimental scheduling API where you could schedule tasks with low high or medium priority. And this provides opportunities to render parts of the UI with higher purity than other for example, something that is visible in the viewport, we have higher purity compared to something that is outside of the viewport. And there are some community, there is some community work actually, in this space? Michael hotkey has been he actually implemented concurrent votes concurrent rendering to newer. And yeah, that's a really cool idea that you could look at,
Ward Bell 46:04
oh, there's something like that in react, I'm trying to remember the name for it. What were they do that kind of prioritized? work and time slicing? I can't remember the name of it.
Minko Gechev 46:14
The the current law, right?
Ward Bell 46:17
Yeah. It could be that it could be that Yeah. Too many angles.
Dan Wahlin 46:22
So lastly, wanted to ask about minko. I know, I used to always hear the numbers about internally at Google, how he was being used. And I think we mentioned earlier, just Google Cloud alone had some pretty massive lines of code with this. But what is the story, you know, nowadays in Google with the angular adoption and usage?
Unknown Speaker 46:43
Yeah, it's. So that's both. Like we're very happy with it. And also, it's kind of a challenge for us, because we manage older. And your applications as well, we pretty much make sure that all the applications are keeping are kept up to date. We currently have, I believe, about 27 to 2800s. And your apps. And they vary from small shopping lists, for example, Google, Assistant, Google systems, shopping lists to submit your application, the web version. And that's one of the I guess, on the smaller scale to something large, such as Google Cloud Console, which estimation to realize, of course, and we have a lot in between, for example, the culture of your system that we're using on daily basis internally, it's implemented in anywhere. Cold search, that is the functionality for looking up source code in our moderator is implemented in there are a lot of infrastructure critical projects are currently built with Angular. And we have a few established frameworks. Well, a few set sounds to me, there are fewer than that I'll see. Let's see two official frameworks. And I'm sure there are other other folks were implementing their applications in other technologies as well, that's in I'm currently working in core developer web. This is the organization that manages the web infrastructure in Google and and your and with that is yellow technology. We are the most commonly used web technologies, I'll say, where Angular is currently the most popular web framework ads in the company.
Ward Bell 48:24
One of the one of the things people may not know, is that every time the Angular team comes up with a feature or a fix, or does anything pushes anything, you guys rebuild every single Angular app at Google, if I recall, and if it breaks any of those, then there's a mad scramble to go back and do it. So so the angular we consume out here has been tortured by every Angular app at at Google. Is that true? still true?
Unknown Speaker 48:55
Yeah, yeah, that's the fun part. Well, maybe not the soul fun part for us, because it requires a lot of work on our site to make sure that each individual push coming from an Angular team member or a community member goes through internal validation, where we have hundreds of 1000s of test targets that running across these 1000s of applications. And we make sure that none of these test fails, and your is going to be as backward compatible as it was before the change happened. So this is
Dan Wahlin 49:29
obviously one of the biggest powers of being backed by Google that we have access to this internal monitoring repo where we can ensure that we have this enormous test coverage. I've always viewed that as a major, major benefit because like Ward and Craig with various companies we've been with in the past or worked with having that confidence level. I guess, that first off, it's not going away, right, because it's just used too much internally for that to happen. But second off, that there's this magic have massive use internally so that the testing, like you said hundreds of 1000s of sound like targets for validation that I mean, that's a big deal. Because in addition to all the community validation, you have all this internal stuff we never hear about,
Ward Bell 50:13
right? It's all automated. Like, yeah, you know, it's when you break something.
I remember when I was there, it was a bad scramble the big red light goes on. And, and so that's, that's a curse. I
Dan Wahlin 50:25
was like, Oh, yeah.
Ward Bell 50:28
Unknown Speaker 50:29
Yeah, yeah. When you break something, you go there and fix it. And it's fun to look into an application you've never seen before, and tried to figure out what breaks and why,
Dan Wahlin 50:40
and why that's fun in air quotes on that one, right.
Unknown Speaker 50:45
But gather the tuning. We haven't turned in a video support support as this they darn well reports this huge ci that is able to understand, like all the all the applications that are impacted by certain change. It's Yeah, it has been really helpful. That's great. Well, we
Dan Wahlin 51:03
really appreciate you coming on Minko and sharing all your knowledge. I think, you know, whether a developers Angular or not listening, I think it's great to hear about what are these plans, whether it's, you know, the performance and profiling or the simplifications that are planned, and I love it, it's great information that I think we can all benefit from. So thanks again, for coming on. Before we wrap up, we always like to do our kind of Final thoughts, where we'll just share some things we've been thinking on or working on or whatever. So Craig, let me start with you. What are your final thoughts for today,
Craig Shoemaker 51:38
Dan Wahlin 52:07
Yeah, and you know, what I love about it, Craig and minko said, you did it is you do it real professional, you know, I don't know what you're using to produce it. But it's like, really nice, side by side. And so yeah, keep keep those tips up. Because I learned a lot from Ward, what's your final thoughts for today?
Ward Bell 52:22
Well, staying in this area. I I want to say that, that I find this encouraging because if you're using Angular today, you don't have to be shamed about it. There's a lot of buzz out there about you know, I love me all the other frameworks too. I you know, I want I want to do react and, and, and view, fast fouls and all that other stuff. Totally intrigued by all that. But I I don't have to suffer from framework envy or worry that I've made a terrible choice. I you know, Angular is still a really solid choice. That's awesome. Minko,
Dan Wahlin 52:59
any final thoughts forums? Oh, yeah, sure. So
Unknown Speaker 53:02
something that was, I guess it's going to be an update from the angular side of things. And something that the community was really excited about recently was that we actually run a survey, public survey to ask people what new things they want to see in dangerous Eli? And the answer was that they would want to see better integration with tailwinds. And yeah, we have dealt with integration stars this last week. So yeah, you're welcome to use it. This has been a really high feature from really high demands. And we're now looking into ways how to better showcase how to take advantage of it. It's pretty much just adding tailwind to your project and adding your tailwind config, but we want to have some more videos and potentially streams around it. That's awesome.
Dan Wahlin 53:52
I've been playing with tailwind a little bit. And it's, you know, it's a completely different approach. But I really like it because I just don't write as much Custom CSS classes. So really nice. Let's get here. My final thoughts I swear over the last few months minor always related to something I'm personally working on. So one of the things I try to do, too, you know, I'm, like all of us pulled in a million directions every day like this meeting, then this meeting and then got to work on this and you know how it is. So I'm trying I've been doing this for a long time, but I've kind of slacked off lately, especially towards the end of 2020. And that is either at night or first thing in the morning, defining what are the top three things I can do for today. So at the end of the day, I actually feel like I got something done. Because there are so many days where maybe it's just me, but you get to the end of the day and you're like well that was a waste because you just don't feel like he got things done because you were pulled so many directions. So if you haven't tried that before for folks when I have been Pretty religious about doing it like either every night, which is even better, I think. Or every morning. It's amazing how much more like fulfilled you feel at the end of the day. So something to try out if you haven't done that, and these are big goals. These are like really? Oh, Luke Craig, people can't see Craig's actually holding up a sticky note with his things for the day. I think your daughter just scribbled that on Craig because it's blurry and we can't read it. I don't think I have put on shoes breathe and eat. I'm feel accomplished for the day.
Ward Bell 55:32
put on pants. That's
Dan Wahlin 55:33
gotta start you got to start somewhere. So with that face again, minko Thanks, warden. Craig's been great talking with everyone. And for all of you listening, check with us every week for the next episode of web rush