 I know this is going to make you rant because I know this topic frustrates you. You're just going to do it anyway, aren't you? Yeah, of course, because it makes great television. PWA is just like, it feels like the new technology, the new thing to be doing, and all the cool kids are doing it. But are PWAs the new native? And I know this is going to annoy you, so I'll let you rant. Okay, so PWAs is a term of just web tech. Certain APIs you can use in the web to bring native-like features, so you could conceivably have an offline experience, whereas before, you'd have the dinosaur. But this argument is still basically, can web compete with native, which is the long-running thing. And I used to be one of those guys who was like, the web can't compete with native at all. It was flat out, part of the community, everyone generally was just like, no, you don't use web tech in your apps because it's a bad experience. Then I kind of slowly came around to the idea that there's some web tech that you can use, and then eventually it was like, well, the web views are kind of the problem, so then Android changed to the Chromium-based web view and things got better. And then as I kind of shift more to just web side of things, I started realizing actually it's just much harder to make a solid web experience, but you can do it. And I think that it's less to do with can PWAs compete with native or anything like that. It's much more of a case of everyone just has to look at what actually makes sense for what they're trying to achieve and what are the teams capable of achieving. I remember way back in the day, I was trying to do just a navigation draw, so it just slide out, fade in a background. It couldn't get 60 frames per second on a desktop. I was talking to Paul Lewis and he was like, why is this not working? Can you please help me figure this out? And he kind of neutered on it a bit and then just sent back another JS bin. He was like, here you go, I fixed it. I was looking through the code and not much had changed except one thing where it was like opacity had changed from being 0 to 0.8 to being 0.001 to 0.8. I was just like, what the hell is that? Why have you done that? That doesn't make any sense. And he explained it to me. He was like, well, the browser is now trying to render 0.001 so it's basically invisible to the user. But as far as the browser is concerned, it's rendered it. So when you fade it in, it's already on a layer and it can just do some smart graphic stuff. And it's like no sane web developer who's new to the platform would ever do that. But if you've got experience, you would. And it's kind of the same with native. If you're an experienced native developer on some platform, there's probably certain things that you see a ton of new people to the platform do and you just feel like that's never how you do it. So I mean, it does feel like the web is a lot more hackery involved. It feels like you're having to do a lot more experiment things. It's not just as clear-cut as I use this library and this is what I'm definitely going to get. I know what I'm going to get and there's no problem with the web. And in a sense, I think that's the charm of the web. I know from a user point of view that's not necessarily the greatest thing because it requires you to have a certain knowledge and it requires us to make certain things common knowledge as well. Well, it's two things, right? Like on the one side, if you wanted like the Navdra example, like a native platform, it's almost encouraged that there's a clearly defined path of this is the UX best practices for this platform, how you do it, and you get like a ton of stuff for free. Web is just like, good luck figuring out what your navigation pattern is going to be. And at that point, it's great because you can come up with anything that you want. You can be as creative as you want, which is awesome. It's a good thing. The flip side of that is you have to build it from scratch yourself, borderline every single time, which is painful because you start doing that across everything you're doing in your experience and it's suddenly like you've got a big workload, whereas at least with native, you can pick and choose what you're going to do. But doesn't that also offer like the, I mean, you know, just to be playing devil's advocate, but doesn't that give you more freedom now on the web? In a sense, because you are responsible for everything. I mean, okay, you might use something like React or like one of the other sort of like frameworks or libraries or whatever, but you still have that kind of, you set the standard. You have that kind of creative freedom. Yes, but I feel like with native, it kind of comes a certain point of you can do certain things, you get a lot of stuff for free. And then what you end up spending your time on is the thing where we're going to go completely custom on this one thing and we're going to spend all our time and effort on it and we know it's going to have performance issues and these issues and these issues, but we're going to fix them. We just need to do a version and then fix it. That's an actual choice commitment thing that you're doing rather than on the web. You kind of sit there just being like, well, you've got to build this component, you need to build this component, you need to do this, you need to do that. And can we reuse any of this ever again? Maybe, maybe not, who knows. And it's way too easy to just get in a scenario where it's not reusable. It sounds like you're arguing against the web. Well, no, but this is, I think the thing for me is like, I think both sides have to acknowledge that one way or another you have to be an expert in what you want and you also have to set a certain bar of what you expect. I feel like a lot of web developers you could get to a point where actually this doesn't perform that great and it's very easy to then sit and go, well, the web is like that as a whole because you look at other examples of websites like, well, it's doing it there and it's doing it there and it's doing it there, that's fine. When actually it's like, well, no, just because they're all doing it doesn't mean you can then go, oh, this is fine for us as well. No, you should be driving to be better. Whereas I feel like with Native there's a certain set of things where you already get further ahead just from the offset because you're inheriting other work from the platform. And the other side is the standard generally is a lot higher because you've got something that's curated a list of his, a shining example of what we can do on this platform. But again, I mean, it does feel like the downside for me is everything feels very templated on Native platforms. Everything looks the same. I mean, you do occasionally get like a NAT which is completely unique. It feels like the web used to be more so like that and web's almost trying to become templated. Yeah, and that's kind of the awkward thing is you don't want it to be like that throughout the entire web. Like, I hit a website where it was like a Fibonacci curl. Yeah, I've seen that one. Yeah, and it was amazing because everything, like you just have a square and then the page scrolls around and it's like, it's beautiful. I've never seen anything like it. But the caveat of that is obviously is like, you've clearly gone so far a field that is completely custom. And you could do exactly the same thing. I feel like with web, we have those pseudo standards where it's just like, you remember like the web 2.0, like certain gradients and border radiuses everywhere. So I feel like the web has it. The problem is it's still that whole thing of everyone's vaguely doing the same thing, but everyone's writing the exact same thing over and over again. That's the bit that I... You think it's a bit frustrating? I find it frustrating, yes. And I think that's why you see things like Bootstrap. Like everyone loves that because it's just a common thing. You just inherit it, do it and it works. And it's kind of where I kind of want web components to fit into a lot of this. It's just like, okay, do this and then it works. My biggest concern there is if you look at some of the design patterns from platforms when they're just like, oh, here's a list view. They all largely follow the same, at least from the developer side like APIs and this is how you take your data set. You can do whatever you want in the middle and then the view will just do the smart stuff and make it fast. Components, it still feels like that gap is still very much in the component side and it's still very opinionated in terms of how it produces the final output. And it's just like, I need to customize this, this and this and I can't see a clean way of doing it. When I hear the word components, it scares me because it feels like, again, the homogenizing, is that the right word? Homogenizing the sort of design standards. And I know it's from a developer point of view you just want to have like the right answers so you know what you're doing is aesthetically good or functioning or from a UX point of view, we know that this pattern works. But the problem is that fear that everything becomes very samey. And I know that to make things as components it helps like enterprise applications because once they've got their style or design thing done, then having components that is like customized on the fly because of like an e-commerce site or whatever, it requires that kind of thing. But my fear is when the components become the library then everyone starts looking the same. I mean how do you fight that? The thing is when you use a component on a native platform for the most part you get styles but they're normally so horrific that you're forced to change them. Kind of that whole thing of like if you pull in just a list view it's very clear like they've done nothing to style this. So immediately the first thing you do is start customizing each individual item. And that's the bit that is like that's where you start getting in your own personality of what the app is. The problem with the web is I see a lot of these things where you go here's a list view and it's like already you start looking like a certain kind of UI app because it's a ton of styles just slapped on top of it and you're like they don't change it. That's the bit that I think is your fear which is why I'm kind of like you need a certain set of components where they're just like blank, boring, disgusting but they're functional and then you pile on the design and just how you want it to look and feel on top of it but you need that good base where it's flexible enough that you can do that and it's performant enough that there's no worries about pulling that in no fear that you have to rewrite it yourself. So PWAs are not the new native then is what you're saying? I think what people should be discussing is more of the fact of what is the experience you're trying to go for and you shouldn't really be worrying about the tech. It's like if you have a team of Android developers you should probably be building an Android app rather than asking them all to build a web app same as if you have a massive team of web developers there's no reason you should sit there and say go build an Android app for the sake of it when it's like well no you can do offline experiences you can do push notifications you can do tons of stuff that wasn't possible like from before so if you have the team of web developers get them building a PWA. I think the main thing is just don't look at like ah native apps are better in this way because they're more performant and they do this it's just like well no it's just the web can do that it's just you have to put the time and effort into it don't just see it as switch platforms and then all the problems are fixed which is what I think this conversation normally encourages.