Charles Max_Wood:
Hey, and welcome to another episode of JavaScript Jabber. This week on our panel, we have Dan Shapir.
Dan_Shappir:
Hey, coming from a warm yet slightly rainy Tel Aviv!
Charles Max_Wood:
We also have AJ O'Neil.
AJ_ONEAL:
Yo, yo, yo, coming at you live from Silicon Power.
Dan_Shappir:
Hmm.
Charles Max_Wood:
Okay, I'm
Dan_Shappir:
That
Charles Max_Wood:
Charles
Dan_Shappir:
sounds...
Charles Max_Wood:
Max Wood from Top End Devs, and I am trying not to cough my way through this episode. We have a special guest this week, and that is Simon Grimm. Simon, do you wanna introduce yourself, let people know who you are and why you're famous?
Simon_Grimm:
Thanks for that, yeah. Good evening from Germany. We also have quite nice spring weather. I'm Simon Grimm. I'm self-employed developer, content creator, influencer, whatever you want to call me. I run the Ionic Academy. I run galaxies.dev. I do YouTube. I do Twitter. I basically live the content creator dream right now. And I'm here to talk about something related to JavaScript, I guess.
Charles Max_Wood:
Nice, yeah, we're looking forward to talking about some of the cross-platform options that are out there. Yeah, you mentioned spring weather. This time last week, I think it was below freezing.
Simon_Grimm:
Yeah.
Charles Max_Wood:
And today it's supposed to get up to 74 degrees Fahrenheit, which is like 23, 24 degrees Celsius.
Simon_Grimm:
Oh really?
Charles Max_Wood:
So,
Simon_Grimm:
Nice.
Charles Max_Wood:
yeah,
Dan_Shappir:
Just so you
Charles Max_Wood:
so.
Dan_Shappir:
know, here it's 29 degrees Celsius, 27, 28.
Simon_Grimm:
That's basically
Charles Max_Wood:
See,
Simon_Grimm:
summer in Germany.
Charles Max_Wood:
that's hot. So yeah, you're not bragging anymore. 74 is perfect. So anyway, yeah, Simon, we've talked a bit about like Ionic Academy and galaxies.dev and yeah, you've done some courses on like Flutter and React Native and you obviously cover Ionic at Ionic Academy. So
Simon_Grimm:
Yeah.
Charles Max_Wood:
yeah, I mean, you've got kind of the cross platform app, and you know you're you've got some expertise there so I'm a little curious where you would start the conversation about this like if somebody came and said hey I do web development I want to do some cross-platform app dev where do we start
Simon_Grimm:
That's
Dan_Shappir:
Yeah, which one is best?
Simon_Grimm:
a...
Charles Max_Wood:
Oh,
Simon_Grimm:
Oh,
Charles Max_Wood:
you teed
Simon_Grimm:
I love
Charles Max_Wood:
that
Simon_Grimm:
that
Charles Max_Wood:
right
Simon_Grimm:
question.
Charles Max_Wood:
up for him to offend somebody.
Simon_Grimm:
I don't know if I've said this before, but I basically get that question every week. And yeah, I got a nice little overview about the different frameworks and technologies, and I've used all of them, more or less. And everyone's asking that question, but I'm sorry to disappoint you, Dan. There is no best framework. They also have a different purpose. Just like React and Angular and Vue, they all have some ups and downs. We got some differences between them. and you say, hey, can I also build native apps? Then it's probably the best time in 2023 because all the tools, all the frameworks, and of course also the devices have improved a lot. So I started, I said this before on a different podcast, I started with Titanium Studio or,
Charles Max_Wood:
Oh, the good old days.
Simon_Grimm:
like that was at least 10 years ago, I think.
Charles Max_Wood:
Mm-hmm.
Simon_Grimm:
cross-platform apps or hybrid apps. By the way, people don't really call them hybrid apps anymore these days, do they? I haven't heard hybrid apps for a long time.
Charles Max_Wood:
Only
Dan_Shappir:
I don't
Charles Max_Wood:
cars.
Dan_Shappir:
think so. I think that term went away with the gemstack and isomorphic code and other terms like that. They had their heyday and now they're gone.
Simon_Grimm:
Yeah, it's probably better. I
Charles Max_Wood:
Yeah,
Simon_Grimm:
think people
Charles Max_Wood:
some-
Simon_Grimm:
used to assign something bad and slow to hybrid apps. And, I mean, that's the case. Ten years ago, the apps were shit.
Dan_Shappir:
Yeah, but
Charles Max_Wood:
Hahaha
Dan_Shappir:
I actually would like to pull the conversation even further back. You know, I jokingly started by asking which one of these cross platform development frameworks is the best. But, you know, taking it even further back, if I'm out to build, if I want to build a native application, why would I want to use one of these rather than native application. I mean, you know, Swift is pretty cool and so is Kotlin. I mean, you know, why not just go full native?
Simon_Grimm:
I mean, in a perfect world, we would all build just native apps if we just had the time, budget, and resources to do so. The problem is that usually most companies don't have a dedicated iOS native developer and a dedicated Android native developer, because those are different skills. While pretty much every developer these days knows how to do web development, like it's almost become a commodity to do web development. But at the same time, of course, we got benefits by doing this kind of cross-platform development, as you just need to maintain one code base. So for example, if you write a React Native application that usually runs on Android and iOS from one code base, while if you do a native iOS and a native Android app, you always need to maintain them. If you get any bugs, you need to fix it on both platforms. You need to submit it again on both platforms. So it's becoming just, it comes down
Dan_Shappir:
Yeah.
Simon_Grimm:
And I would love to do just native development, but if I go 100% on Swift, which I definitely love, so I can tell you, I basically started as an Objective-C and Swift developer, so I'm really still in love with that. But if you also want to target Android, which I wanted after like two years of my career, then you just have to find a way to make that work. And for me, that way wasn't learning native Android as well and maintaining two code bases,
Dan_Shappir:
So basically
Charles Max_Wood:
Well.
Dan_Shappir:
what you're saying is that web developers are cheaper and more plentiful than
Simon_Grimm:
Yeah
Dan_Shappir:
native developers and therefore building hybrid application is more cost effective.
Charles Max_Wood:
Maybe.
Simon_Grimm:
It is definitely, it is usually more cost effective,
Charles Max_Wood:
Yeah.
Simon_Grimm:
yeah. I don't know
AJ_ONEAL:
Well...
Simon_Grimm:
about the salaries of native and cross-platform developers, but I don't
Charles Max_Wood:
One other
Simon_Grimm:
actually
Charles Max_Wood:
thing I
Simon_Grimm:
know.
Charles Max_Wood:
want to throw in on this, though, is that if I am already building an application with either a node back end or a web component to my, not web component, like web components, but a web, part of my technology stack is web, then I have somebody that I can more easily repurpose to something like React Native or Ionic or something like that, depending on the technology stack that I already have, as opposed to them learning a completely new way in Swift or Kotlin. And so
Dan_Shappir:
Yeah.
Charles Max_Wood:
there's that too, right? Where you have this transferability that you get from the one or the other. And I think a lot of it really just depends on how the company's organized and what the context that they're working in is and things like that.
Dan_Shappir:
I think there is an inherent assumption here that's getting to be a bit problematic, which is that everybody has a web application by definition, and then being able to repurpose some of that code to native application is like
Charles Max_Wood:
Nah.
Dan_Shappir:
a no-brainer.
Simon_Grimm:
Yeah.
Dan_Shappir:
And I kind of contest that. which did use React Native, and I believe they still do, even though they were using React Native, the code base was actually distinct from the React code
Charles Max_Wood:
Mm-hmm.
Dan_Shappir:
that was used to drive the web applications. And currently, at Next Insurance, where I work, our native applications are also built using React Native, and also it's a totally separate code base from our web applications. some of which are actually implemented in Angular and not in React.
Simon_Grimm:
Yeah, so this is now getting to the differences between the different cross-platform approaches. You're totally right. If you're using React Native, you're not really reusing your React web application. I mean, you can reuse some of your business logic, like some kind of hooks you have probably made, some API interaction you've outsourced into different modules, and then you can share that code. But you're right. On React Native, there's not the React DOM you're used to from the web. it looks completely different. You have a view element, a scroll view, a list, and these kind of things that you don't usually have
Dan_Shappir:
you
Simon_Grimm:
on the web. While if you take a look at Capacitor, which is not super new, but it's kind of unknown. You see it represented just in single digit percentage in the state of JS survey. With Capacitor, you could basically wrap your React application with just that and build a native application. And with Capacitor, the dream of the web of 100% code sharing across different platforms is actually possible. So there is a difference between the tools. Of course, the output from a capacitor app, or if you also put in Ionic in the mix, which is often done, is different to what you get with React Native. But then it not only comes down to the cost and the knowledge of your developers, but ultimately also about what your customers actually want or who your customers are. If you are developing an in-house enterprise app that you're, I don't know, marketing people, sales people, or whatever in-house just want to use,
Dan_Shappir:
you
Simon_Grimm:
then usually it doesn't really matter if the app loads in one second or in two seconds, or if a certain screen doesn't look perfectly native. While if you build a little game or anything consumer facing that should look and work really great, you are putting a lot more effort and making sure the app really feels native. So ultimately, you need to factor that in as well. Like, who is going to using your app? What do they expect? Do they expect native performance? Or could they be just fine with a progressive web app, probably even? Like, we haven't even talked about that yet.
Dan_Shappir:
Yeah, well, progressive web app, you know, iOS is always in the state of getting there.
Simon_Grimm:
Yeah, constantly since five years.
Charles Max_Wood:
Oh, Safari.
Dan_Shappir:
Yeah, I gather that they're starting to approach it, kind of, but from my understanding it's still not there. Don't get me wrong, I love the mobile web is the web, whether you're
Charles Max_Wood:
Mm-hmm.
Dan_Shappir:
a progressive web application or not. But that being said, going back to what you were talking about, the two types of applications, an internal application with a captive audience and you're not competing for, you know, with other applications in the app store versus a commercial application, let's say, where it's definitely, you know, it's in your best interest to make it as shiny and as seamless as possible. Which different platforms would you use in each of these scenarios then?
Simon_Grimm:
You mean like the native platforms of which?
Dan_Shappir:
I'm talking about the development platforms that you were talking about before, like React Native with or without Capacitor, like the others that you mentioned, the names escape me.
Simon_Grimm:
So I would put these on a scale, and I would add Flutter to the mix as well, because it's just too popular to not mention it here. I will leave out Xamarin, because I'm really not in the.NET world. And I don't know if anyone from the.NET world is listening here, but I'm sorry. I don't really have any experience about Xamarin or.NET MAUI, what they're currently working on. So sorry about that. But in terms of the others, Capacitor, as I said, you could just have a web application capacitor, install it, and then you have a native app. That is probably the least native performance and solution, as the technology behind capacitor is basically you're putting a WebView element, like a WK WebView on iOS and on Android, a WebView component into a native app. And in that WebView, you display your web application. And that could be Angular, could be React, could be whatever. running basically inside a web view, which is always the criticism these kind of apps will get. In the middle, getting a bit more native is React Native. But then again, as I said before, with React Native, you're moving away from the code sharing that you have with Capacitor. With Capacitor, you can 100% use just the web code. With React Native, you can only use a fraction of usually somewhat more native or what people would consider a more native application. Now, if you go to the other end of the spectrum, which is to me, Flutter, you get something
AJ_ONEAL:
One
Simon_Grimm:
that...
AJ_ONEAL:
second, just one second. Capacitor, how is that spelled?
Simon_Grimm:
C
Charles Max_Wood:
capacitor.
Simon_Grimm:
A P
AJ_ONEAL:
Oh, capacitor.
Simon_Grimm:
A like the capacitor
AJ_ONEAL:
OK, because there's also a capacitor. OK, all right. Sorry. Go
Simon_Grimm:
spessator.
AJ_ONEAL:
on, Flutter.
Simon_Grimm:
Yes. So on the other end of the spectrum is probably Flutter, which, if you don't know, is using Google's language Dart. So it is completely something else. It is not using your web code unless you've built a web app with Dart. But I don't know of people who've done
Charles Max_Wood:
Some
Simon_Grimm:
that.
Charles Max_Wood:
people do it.
AJ_ONEAL:
Well,
Simon_Grimm:
Congratulations.
AJ_ONEAL:
they do. And the argument is the same as react native, right? You can use react native to build your website. You don't have to use react native to build mobile and same is true of a flutter is that if you
Charles Max_Wood:
That's getting better,
Simon_Grimm:
Yeah,
Charles Max_Wood:
but...
Simon_Grimm:
I honestly don't really get that. So I'm following a few expo guys.
AJ_ONEAL:
Okay.
Simon_Grimm:
So with React Native, you can use expo and it's pretty cool. And they are making a lot of advancement to use React Native now on the web again. Like, why are we like React Native was made for native and now we're going back? Like, I don't really
Dan_Shappir:
So
Simon_Grimm:
get that.
Dan_Shappir:
we actually had Taj Singh from a few episodes back talking about that. The case he was making for it essentially was that with proper tooling, it's almost as easy to do or to use as plain old React. So there's a little price to pay in terms of how to work on the web with the added advantage, as you said, that you get much more cross-platform code. So he came to it from the perspective that he's running a small startup, and they need to have a web presence, and they need to have a mobile presence. And that's just, for them, the most cost-effective way to go about it, because they cannot afford to have too many developers. So that was the case he was making. But to be honest, I've yet to encounter many other companies if at all that are pursuing this policy. So you know time will tell.
Charles Max_Wood:
I've
Simon_Grimm:
Yeah.
Charles Max_Wood:
also been on a few sites that I know are using React Native Web and it's hit or miss. Some of them work fine and some of them just don't.
Simon_Grimm:
How does the DOM look if you inspect it? Have you ever done that?
Charles Max_Wood:
I haven't.
Simon_Grimm:
Okay.
AJ_ONEAL:
Let's go back a second. Why? Why would someone want to create a mobile app? My fear is that if you have a good reason to create a mobile app, none of this stuff is going to work. Well, it's going to be a crappy experience for people that are used to an iPhone app. So why
Charles Max_Wood:
That's actually
AJ_ONEAL:
would you
Charles Max_Wood:
not
AJ_ONEAL:
want
Charles Max_Wood:
true.
AJ_ONEAL:
a mobile app in the first place?
Dan_Shappir:
That's
AJ_ONEAL:
Okay.
Dan_Shappir:
totally not true, AJ.
AJ_ONEAL:
Okay. Tell me more. Tell me more. So why would
Dan_Shappir:
I
AJ_ONEAL:
you want mobile?
Dan_Shappir:
said it before, both Wix and Next, both of which are investing heavily in their native presence because native is a must. Both of them use React Native for their mobile native applications.
Charles Max_Wood:
Yeah, I've used apps that I, you know, cause I'm always curious what people are using. I've used apps that I know we're using capacitor and Ionic or without Ionic. I've used apps that use phone gap and you know, just something pasted on the top of it. You know, so Vue.js is one that comes to mind. I have a friend that all of his apps are that way. And I've used React Native apps that I know are React Native apps and Flutter apps that I know are Flutter apps. And yeah, they all more or less act just like the regular
Dan_Shappir:
Yeah,
Charles Max_Wood:
apps. You really can't tell.
Dan_Shappir:
the one thing that I do have to add in that context is that both Wix and Next also employ native developers. So
Charles Max_Wood:
Mm-hmm.
Dan_Shappir:
the people who are working at the React layer are people who are working primarily on the business logic and leverage either the components that you get by native developers.
AJ_ONEAL:
Okay. And
Charles Max_Wood:
Right.
AJ_ONEAL:
that's, that's one of the missing pieces for me, because when I look at these things, what I see is here's how to do generic stuff that you can pretty much already do in the web, but rather than using the geolocation API of the browser, use the geolocation API of the phone. It's like, okay. What's the point of being native, but if you've got people in house that are building native code, and then you're making that native code available and well and doesn't, you know, do the same thing that web pages do where they just, every element's overlapping every element and the subscribe and cookie banners are in the way of each other. So you can't X out of either one of them, you know, then, then I get that.
Charles Max_Wood:
Well, and there are a lot of libraries too that incorporate the native code, right? It's not just that you have to have in-house folks. I've done a bit with React Native and they have libraries that will do the translation to the native code without my having to be a Swift or Kotlin
Dan_Shappir:
Thanks for watching!
Charles Max_Wood:
developer. I've done some Swift, I haven't done any Kotlin.
Dan_Shappir:
Thanks for watching!
Charles Max_Wood:
And so, I just pull it in, it does the native thing and I don't have to think about it. specialized on that or if I had to do something that wasn't a common enough case for somebody to have already written that library for a React Native or something then yeah, I might have to go pick it up and figure it out myself,
Dan_Shappir:
By
Charles Max_Wood:
but
Dan_Shappir:
the way,
Charles Max_Wood:
generally I
Simon_Grimm:
you
Charles Max_Wood:
haven't had to do that
Dan_Shappir:
I have to say
AJ_ONEAL:
So.
Dan_Shappir:
that from my experience, the primary motivations for building native applications have nothing to do with building better user interfaces or better user experiences. Absolutely nothing. They might say something like, oh, click here to install our app for a better experience, but that's BS.
AJ_ONEAL:
It's for the tracking.
Dan_Shappir:
It's for the tracking. It's for the stickiness. I like visiting a website on your mobile phone, it's like somebody like a guest at a hotel. Like the device is the hotel and it's just a guest coming in and leaving just as easily. Whereas when you install an app, it's like a tenant moving in. It's a much more sticky type of a relationship. And that's what most companies want. a tenant on your phone. They want to be able to reach out and touch
Simon_Grimm:
you
Dan_Shappir:
you, to track you, to send you messages whenever they want, and to get money from you. Because what's the solution for payment on the mobile web?
AJ_ONEAL:
Stripe? PayPal?
Dan_Shappir:
Yeah, but it's not built in. It's not as a seamless
Charles Max_Wood:
Right.
Dan_Shappir:
experience
Simon_Grimm:
Hmm.
Dan_Shappir:
as buying something
AJ_ONEAL:
Good.
Dan_Shappir:
through your mobile, native mobile application.
AJ_ONEAL:
Are we still
Charles Max_Wood:
That's
AJ_ONEAL:
sitting
Charles Max_Wood:
true.
AJ_ONEAL:
at 30% of Apple's cuts or I heard something about a lawsuit recently with that
Dan_Shappir:
Yeah.
AJ_ONEAL:
was significantly changing
Charles Max_Wood:
I think
AJ_ONEAL:
that
Charles Max_Wood:
it's
AJ_ONEAL:
is
Charles Max_Wood:
still
AJ_ONEAL:
that happened.
Charles Max_Wood:
30%, but I don't know.
Dan_Shappir:
It's still 30%.
Simon_Grimm:
Yeah.
Charles Max_Wood:
Anyway, Simon, I'm curious what your take is on this, right? Because yeah, a lot of the functionality that we talk about getting on the mobile app, you know, you can get from a PWA, for example. But yeah, you don't get
Simon_Grimm:
you
Charles Max_Wood:
the icon on the home screen and there are a few other things. What are the advantages
Simon_Grimm:
I mean
Charles Max_Wood:
you see?
Simon_Grimm:
you get the icon on the home screen with the PWA but most of the stuff inside the PWA
Dan_Shappir:
On Android,
Simon_Grimm:
is using...
Dan_Shappir:
not so much on iPhone.
Simon_Grimm:
On iPhone you
AJ_ONEAL:
It
Dan_Shappir:
Well,
Simon_Grimm:
also
AJ_ONEAL:
works
Simon_Grimm:
get
AJ_ONEAL:
on
Simon_Grimm:
an
AJ_ONEAL:
iPhone.
Simon_Grimm:
icon.
Dan_Shappir:
you can,
AJ_ONEAL:
It's even
Dan_Shappir:
but
AJ_ONEAL:
easier on the iPhone.
Dan_Shappir:
it's,
AJ_ONEAL:
You just tap a button.
Dan_Shappir:
yeah, you just tap a button. It's a much more manual process, let's put it that
Charles Max_Wood:
It
Dan_Shappir:
way.
Charles Max_Wood:
is a manual
Simon_Grimm:
Yeah,
Charles Max_Wood:
process. Yeah.
Simon_Grimm:
yeah,
AJ_ONEAL:
Yeah. Yeah.
Simon_Grimm:
yeah.
AJ_ONEAL:
Yeah. They, they put the little arrow that says tap here. And then you tap that it'll say tap here and select add to home screen. And then you tap
Dan_Shappir:
I'm retarded,
AJ_ONEAL:
and you add to home.
Dan_Shappir:
I can't put it for you, so you have to do it for me.
Charles Max_Wood:
Hahaha
Simon_Grimm:
Yeah, the installation experience of a PWA on iOS is horrible. And to be honest,
AJ_ONEAL:
RIT
Simon_Grimm:
none of my non-tech friends knows about it. Really. Nobody knows about PWAs really.
AJ_ONEAL:
Well, they,
Charles Max_Wood:
I will also...
AJ_ONEAL:
they, the apps do it have the little arrow and the arrow says tap add to own home screen is literally two taps is tap once tap twice. But I
Simon_Grimm:
This
AJ_ONEAL:
get,
Simon_Grimm:
isn't
AJ_ONEAL:
I
Simon_Grimm:
you.
Charles Max_Wood:
I've
AJ_ONEAL:
get
Charles Max_Wood:
never
AJ_ONEAL:
you.
Charles Max_Wood:
seen
AJ_ONEAL:
People
Charles Max_Wood:
it.
AJ_ONEAL:
don't search that way.
Charles Max_Wood:
Yeah.
AJ_ONEAL:
I, they very few apps do it these days. I have a couple
Charles Max_Wood:
Yeah.
AJ_ONEAL:
of brands that are hardcore PWA advocates. And so their sites will do it. But yeah, I wish more sites did it. Twitter, the Twitter experience works that way. And it's, it's awesome. Twitter is like, like I said before, I think. Twitter is the best web app on a phone in terms of it appears native. There's
Dan_Shappir:
I
AJ_ONEAL:
no
Dan_Shappir:
think it's not called Twitter anymore, I think it's now called Titter.
AJ_ONEAL:
I thought it was called Dojer.
Dan_Shappir:
No, that's...
Charles Max_Wood:
All right,
Simon_Grimm:
I think we're all on Mestadon.
Charles Max_Wood:
I'm gonna rewind things for a second here because I think one of the other things that gets me at least for the apps versus, you know, having a web experience, especially on iOS, is that I haven't really gotten the push notifications to work well
Simon_Grimm:
Yeah.
Charles Max_Wood:
on a PWA. And push notifications on apps that you're trying to monetize in particular become really important because you are able to, you know, as Dan said, on the phone now and you can send them a message and say, hey, did you want to be part of this? Hey, did you want to be involved in this? Hey, did you remember that we're doing this event or whatever?
Simon_Grimm:
Yeah, having push notifications is usually a showstopper for most companies. If you approach them and say, hey, let's build a PWA and then, oh, but we can't do push notifications, then it's usually a no-no. But it looks like Apple is opening up, so I haven't implemented it yet with Safari, but it looks like web push notifications should now work with Safari as well. However, the whole PWA versus native thing. And for example, if you use the geolocation, it might work inside a PWA, but you're not getting anywhere close to the performance and the accuracy of using the native geolocation plugin. Like, this is
AJ_ONEAL:
So
Simon_Grimm:
a whole
AJ_ONEAL:
I wouldn't
Simon_Grimm:
different
AJ_ONEAL:
write my.
Simon_Grimm:
level. Like if you want to track your Uber driver or something,
AJ_ONEAL:
Right,
Simon_Grimm:
you don't want
AJ_ONEAL:
right.
Simon_Grimm:
to use the web geolocation.
AJ_ONEAL:
Right, I get you, I get you.
Simon_Grimm:
So
AJ_ONEAL:
I'm on board.
Simon_Grimm:
this is definitely another big plus for going native. And check, yeah, there are tons of native plugins. Like if you look into the Codover community, so Codover came basically before Capacitor. I mean, it's a different company. And before that, it was PhoneGap. But then
Charles Max_Wood:
Bye.
Simon_Grimm:
I think Adobe got it or something. I
Charles Max_Wood:
Yeah
Simon_Grimm:
don't know
Charles Max_Wood:
Adobe
Simon_Grimm:
the exact
Charles Max_Wood:
got
Simon_Grimm:
process.
Charles Max_Wood:
it and then they turned it over to the, was it the Apache
Simon_Grimm:
A
Charles Max_Wood:
Foundation?
Simon_Grimm:
Pachyphone? Yeah, right.
Charles Max_Wood:
And
AJ_ONEAL:
The Apache
Charles Max_Wood:
I think that's
AJ_ONEAL:
Graveyard.
Charles Max_Wood:
when the name changed. So Apache
Simon_Grimm:
Yeah.
Charles Max_Wood:
changed the name of it because PhoneGap
Dan_Shappir:
Thanks for watching!
Charles Max_Wood:
was still a proprietary trademark. Yeah, anyway, there's
Simon_Grimm:
Yeah,
Charles Max_Wood:
a lot of
Simon_Grimm:
and
Charles Max_Wood:
history
Simon_Grimm:
so we
Charles Max_Wood:
there.
Simon_Grimm:
end up with tons of Cordova plugins, which basically wrap native device functionality so you can use it with JavaScript. However, tons of these plugins are not outdated, but not maintained, because most of them were community created. And if you look at GitHub repositories and see the last commit is like five years ago, you can usually already bet that these plugins won't
Dan_Shappir:
Thanks
Simon_Grimm:
work
Dan_Shappir:
for
Simon_Grimm:
with
Dan_Shappir:
watching!
Simon_Grimm:
today's iOS or Android version. anyway because like it's some kind of
Dan_Shappir:
So going back to where we started before, if I hire you to develop a native application for me, I've got a small company, I need a native application, I want it to run on Android and iOS, what would you use?
Simon_Grimm:
I would ask you a few more things, like who's your end user? Do you only want to have a native application, or do you also want to have a web application? Is some of the platform more important? Probably you just have iOS users. Some people say they have 95% of Android users. I mean, I wouldn't ask you what your previous experience is, because I would be the consultant to develop your
Charles Max_Wood:
Hehehe
Simon_Grimm:
app. So I would use what I think is best. We would have to really figure out what's the best thing. If you want a lot of code sharing, then we would do something with Capacitor. If you want a totally unique native experience, we would either go with Flutter or we would even do it completely native with Swift and Android. If you say, OK, I'm fine. In the future, we're going to have to maintain and update two platforms and two code bases. If you say, well, I want to be everywhere, then probably we would go with React Native because usually the output at the native performance is the best and what I've seen so far with Expo for the web is quite acceptable. But then again, maybe web is more important for you. So we should start and build a great web application first and then go native. So this is really a trade-off and I mean, I've tried and used all these technologies and to be honest, I don't think there is a perfect solution that covers everything yet. that has complete code sharing between web and native, that looks great on the web, that just uses web technologies, but on a device is also super native. I think we're not yet there. I mean, in theory, Capacitor could fill that gap, but we are always just running in a web view with Capacitor, so we will always be kind of limited.
Dan_Shappir:
I think that such a solution cannot exist almost by definition, I think. Because
Simon_Grimm:
It would make the native platforms obsolete.
Dan_Shappir:
yeah, well, yeah, first. And the second, and because they don't want to be obsolete, there's always going to be UI aspects or UX aspects to the native applications that are problematic to achieve on the web. from this perspective. The most successful category, I think, of native applications are mobile games. And
Simon_Grimm:
Yep.
Dan_Shappir:
how many mobile games do you know that run on the web? I think it's more or less zero.
Charles Max_Wood:
I mean, we did an episode about Phaser and JavaScript games, but yeah, there aren't a lot. Most of them, in fact, it's funny, I was talking to Jason Wyman, who he, Game.courses, and it'll come out as a bonus episode next week as we record this. I'm not sure the timing on the two, but we were talking Unity, and a lot of the games are written in Unity and pushed that way. So I don't know that
Simon_Grimm:
So...
Charles Max_Wood:
mobile games is a use case that we're gonna talk a lot about.
Simon_Grimm:
That's actually an interesting point. We talk about wrappers and that we don't build native apps, yet so many developers, especially game developers, don't care about doing it with Swift or N-RAID. They use Unity because they want to run everywhere. So we
Charles Max_Wood:
Mm-hmm.
Simon_Grimm:
always have this layer in between. I think it's not a problem. In the past,
Charles Max_Wood:
Yeah.
Simon_Grimm:
we had Flash, by the way. They were also
Charles Max_Wood:
Mm-hmm.
Simon_Grimm:
a very successful category.
Charles Max_Wood:
Well.
Simon_Grimm:
You could build games with Flash.
Charles Max_Wood:
Yeah. Well, I think you can export Unity to WebGL and run it on the web anyway.
Dan_Shappir:
or web GPU these days, but technically you can. Practically though, it's not happening.
Charles Max_Wood:
Sure.
Dan_Shappir:
Now, to be honest, I've not tried to investigate in recent years why it's not happening. I can tell you that a couple of years back, I was working at the company that was doing a remote access solution in the web, and getting it to work really well on mobile challenging around issues like even, you know, how do I get it to be full screen and not see the bar at the top. Now, we can do these sort of things with a PWA, but there's always, there are like always sort of caveats around it. There's always limitations that you run into. And like I said, the proof of the pudding is in the eating. their mobile games as web, if only to get away from the Apple tax. And yet they don't. Now I don't know, maybe it's because people are used to looking for games in the app store and not using Google search. I don't know why it is.
Simon_Grimm:
people also pay a lot faster inside native mobile applications.
Dan_Shappir:
Also,
Simon_Grimm:
Like,
Dan_Shappir:
for sure.
Simon_Grimm:
just paying $2, it's just two clicks and Face ID, and I got by 100 gems per chase. Like, it's so easy.
Charles Max_Wood:
Yeah.
Simon_Grimm:
So I completely agreed. The whole category of games, I wouldn't do games with either of these technologies. Like, it would probably work. And yes, you could use something like Phaser, but usually that category of games. Or let's go crazy. Well, you probably wouldn't go to Capacitor or React Native or Flutter. You would go directly to Swift and the Metal and probably use Unity, but nothing else.
Charles Max_Wood:
Yeah, I think you get a better experience if it's already on the phone, running on the phone. More important than the 30% tax
Dan_Shappir:
Thanks for watching!
Charles Max_Wood:
is, can I get people to keep playing my game? I think most of the games out there that are highly profitable are making money off of the in-app purchase. So you have to keep them coming back. I could work on web, but I don't often see it.
Dan_Shappir:
To be honest, when I'm looking at some of the games that I'm playing, and I'm not a big gamer on mobile or at all, but most of them, the graphics are not that amazing. It's not something that could not be implemented using something like Canvas on the web. I think it more has to do with in-app purchases that are just
Charles Max_Wood:
Mm-hmm.
Dan_Shappir:
really problematic. to looking for games in the app store rather than online. They just wouldn't know where to find the game. They would go, you know, somebody will tell them that this great new game that I'm really liking and they would go to the app store and if they don't find it there then they just don't find it.
Charles Max_Wood:
Yep.
Dan_Shappir:
So, so yeah.
Simon_Grimm:
There is, by the way, also a big difference between iOS and Android users. So I've seen some statistics of indie developers. They mostly now said that they only develop apps for iOS because 95% of their revenue is coming from iOS. So I'm not an Android user, but it looks like Android users don't like to pay or are more used to free stuff. And iOS users are just, yeah. I don't know why.
Dan_Shappir:
iOS.
Simon_Grimm:
of people who own iPhones.
Dan_Shappir:
iOS users are richer.
Simon_Grimm:
I don't want to say
AJ_ONEAL:
I think
Simon_Grimm:
that,
AJ_ONEAL:
that's,
Simon_Grimm:
but it looks like that.
AJ_ONEAL:
I think that's true. I think iOS users are, they're more likely to be more affluent. But I, I think that the more, I think the bigger thing is that iOS users are more likely to pay period because they're used to the ecosystem of paying back in the old days, you had to pay for OS X. I miss those days. Cause back then every update was an update. You were waiting to get your hands on, not dreading coming and
Simon_Grimm:
Oh,
AJ_ONEAL:
ruining
Simon_Grimm:
now
AJ_ONEAL:
things.
Simon_Grimm:
let's not talk about iOS updates.
AJ_ONEAL:
But
Charles Max_Wood:
Hmph.
AJ_ONEAL:
but but back in the back in the old days, you know, and and it's always been you pay for apps on your Mac, you know, you pay for iCloud and me.com and all those things. Yet Apple has long fostered an ecosystem of paying and that yields. I like it because it yields higher reliability. I like paying three dollars for an app because it makes me think that when the next version of the app comes out, it's still going to be there. All the free apps that I used to use And I think that's the biggest thing. And I think that's the biggest thing. And I think that's the biggest thing. And I think that's the biggest thing. And I think that's the biggest thing. And I think that's the biggest thing. And I think that's the biggest thing. And I think that's the biggest thing. And I think that's the biggest thing. And I think that's the biggest thing. And I think that's the biggest thing. And I think that's the biggest thing. And I think that's the biggest thing. And I think that's the biggest thing. And I think that's the biggest thing.
Charles Max_Wood:
Thanks for watching!
AJ_ONEAL:
And I think that's the biggest thing. And I think that's the biggest thing. And I think that's the biggest thing. And I think that's the biggest thing. And I think that's the biggest thing.
Dan_Shappir:
Thanks for watching!
AJ_ONEAL:
And I think And it happens on Android too. You have to recompile the Android apps every once in a while.
Dan_Shappir:
Yeah, that's like one of the biggest advantages of the web. I mean, a website built for the original web back in 19... What was it? 87? Still works fine today.
Charles Max_Wood:
I'm going to fire up web space invaders. I'm really looking forward to
Dan_Shappir:
Should
Charles Max_Wood:
that.
Dan_Shappir:
work.
AJ_ONEAL:
except the blank tag.
Dan_Shappir:
Except the blink tag
AJ_ONEAL:
The
Charles Max_Wood:
Right?
Dan_Shappir:
and except for
AJ_ONEAL:
blank.
Dan_Shappir:
flash. But that's not really
AJ_ONEAL:
Marky.
Dan_Shappir:
part of the web.
Charles Max_Wood:
Yeah, yeah, Dan's got
AJ_ONEAL:
Oh,
Charles Max_Wood:
Hangman
AJ_ONEAL:
shouts
Charles Max_Wood:
installed
AJ_ONEAL:
fired.
Charles Max_Wood:
on his phone.
Dan_Shappir:
Snake.
Charles Max_Wood:
Snake, there you go. Anyway, but getting back to kind of this cross-platform app setup then, you talked about a lot of different options. How do I decide, right? How do I decide which one to use? Because it sounds like some of it might come down to like, I want a more native feeling or less native feeling, or maybe I have more familiarity with React versus something else, right? And so I might pick a react native versus, you know,
Dan_Shappir:
Thanks for watching!
Charles Max_Wood:
you know, Hey, I have a react app that I can run on a capacitor with a little less work than the other. I mean, how do you start making
Dan_Shappir:
Thanks for watching!
Charles Max_Wood:
that decision? Because I could see companies saying, yeah, we want a mobile presence. We've got this web app, or maybe they don't even have that. You know, how do you start? How do you start making that call?
Simon_Grimm:
I mean, some companies know their customers and know that they wouldn't care if the app feels a bit more web-like or looks a bit more web-like. And in that case, I would always go with Capacitor because you got like the 100% code sharing. However,
Charles Max_Wood:
Mm-hmm.
Simon_Grimm:
if you're talking about like developers,
Dan_Shappir:
So,
Simon_Grimm:
specifically,
Dan_Shappir:
just
Simon_Grimm:
like
Dan_Shappir:
to
Simon_Grimm:
if you're
Dan_Shappir:
pause
Simon_Grimm:
starting
Dan_Shappir:
you on
Simon_Grimm:
out
Dan_Shappir:
that
Simon_Grimm:
in...
Dan_Shappir:
for a minute, just to make sure that I understand. So, Capacitor, as you explained it, is this technology where effectively the native version is a web, is a wrapped web view. So it's really my code is pure web, but it's like, or is it like a zipped version of my HTML
Simon_Grimm:
No.
Dan_Shappir:
and JavaScript? Or is it even coming from the server in that scenario? just download it to a custom browser. What's the approach?
Simon_Grimm:
So if you have an Angular web app or a React web app, you would just install Capacitor with npm install Capacitor. And then you would have access to the Capacitor CLI in that project. Through the Capacitor CLI, you would then add the iOS platform and the Android platform in that project. And that would add an iOS or an Android folder containing either an Android Studio project or an Xcode project. And Capacitor will, in that project, create all the storyboard files and whatever project and in that at your web view and whenever you run a build of your app like npm run build or whatever capacitor would run or sync your dist folder into that native folder and put all your web files and minified javascript files into that native project and if you then deploy that xcode project or android project to your device you would just see like a native application because or a hybrid application, this is in Apple's terms or in Android terms, a native application. I can just go through Xcode and Android Studio and create an APK or bundle and submit it to the stores. This is not like it has any relatedness to web anymore at that point.
Dan_Shappir:
and
Simon_Grimm:
I mean,
Dan_Shappir:
add the stores.
Simon_Grimm:
people like to discuss what is a native app and whatnot, but it's a native
Dan_Shappir:
So,
Simon_Grimm:
app.
Dan_Shappir:
okay, so I understand. So the JavaScript files, the HTML files, the CSS files are all bundled into that package that gets delivered
Simon_Grimm:
Yes.
Dan_Shappir:
and installed on the client side. None of them are coming down in real time via HTTP from a web server.
Simon_Grimm:
Yes, that is usually also forbidden by Apple. You are not allowed
Dan_Shappir:
Mmm.
Simon_Grimm:
to just load your whole application from a remote server because of security issues. You could bundle everything
Dan_Shappir:
I understand.
Simon_Grimm:
into that.
Dan_Shappir:
And Apple are okay with like the Apple Store rules are fine with this type of an installation?
Simon_Grimm:
Yes, because it's a native application built with Xcode. It is using a native control, the WKWebView control, and they're totally fine with
Dan_Shappir:
And
Simon_Grimm:
this.
Dan_Shappir:
if I do want to use some sort of a custom local API in this type of a scenario or configuration, is this doable?
Simon_Grimm:
What kind of API?
Dan_Shappir:
I don't know, some API that's available
Charles Max_Wood:
Bluetooth.
Dan_Shappir:
to native but not available to web. I don't know, something with monetization.
Simon_Grimm:
Yeah, so in that case, you would add a capacitor plug-in, which is pretty much like a Cordova plug-in, of wrapper around native code. So a capacitor plug-in consists of two or three folders, having an iOS and Android implementation, and probably also a web implementation. And then you would just say, for example, the camera. You would install a capacitor camera. You would import the camera, and you just call camera.getPhoto. It doesn't matter on which platform you run. Like if you run this code on the web, it will also bring up a little web preview to capture an image. On Android, it will use the native camera. On iOS, it will also open the native camera. Because that is the magic of Capacitor. They have this unified API, which usually for the plugins works everywhere. So you don't have if Android, if iOS, you just have this one
Dan_Shappir:
And
Simon_Grimm:
line.
Dan_Shappir:
you're saying that the advantage of this approach is that it's the most cross-platform. The disadvantage is that being cross-platform, the applications end up looking like web applications even when they run natively.
Simon_Grimm:
To some degree, yes, that is the short form. I mean, you can make your web applications look really native. That is most likely what Ionic is about. So we haven't really talked about Ionic. Ionic is the company which also built Capacita, by the way. And Ionic is most likely just a UI kit. Ionic framework gives you components like a navigation bar, tabs, native animations. to a details page, Ionic would handle this kind of routing. So it's not just replacing your view, but actually doing a push transition on iOS or an Android bringing it up from the bottom. They got modals and overlays and that kind of stuff. Because I completely agree. If you just take your React application, and yes, your React application on the web is responsive and it looks great on small devices, but if you just throw it into a native container and run it as a native app, it won't look and feel application. Because if you do the routing, you just replace the pages, right? Users would immediately notice that this is not a native application. So in those cases, you would really need something like Ionic for an improved native UI.
Dan_Shappir:
So an Ionic is effectively like a library of components on top of capacitor.
Simon_Grimm:
It's not on top of Compasitor. It's actually not like they're separate packages.
Dan_Shappir:
Huh.
Simon_Grimm:
I would think of Ionic, not like Tailwind or Bootstrap, but like a component library. Why do they market themselves currently? I think they currently call themselves the mobile UI toolkit.
Dan_Shappir:
So while you're looking
Simon_Grimm:
Yeah,
Dan_Shappir:
for that, how
Simon_Grimm:
something.
Dan_Shappir:
would you then pick between Ionic and React Native?
Simon_Grimm:
Ionic looks very native, but some people still criticize that it's not feeling native. So just yesterday I had a conversation with someone on Twitter which was interesting. He pointed out that for example if you have a card model, like on iOS this is like when the background goes a bit back and the front stacks above it. You see it I think in the contact list or something when something slides up. And he brought up that the Ionic implementation doesn't feel native. I thought like, no, it looks good. But then he made a little video where he was using the card with a finger. And you could clearly see that the card was dragging behind. His finger was down while the card was still like 150 pixels above it. Now, if you check out the native iOS application, the context or something, and you try that same, you're going to notice it completely snaps to your finger. These are just small things. He noticed it. Some people might notice it, I actually didn't notice it immediately. So Ionic does a pretty good job in disguising that you are using a web application. And Chuck, I think you can agree
Charles Max_Wood:
Yeah.
Simon_Grimm:
you've built a few Ionic apps. They usually like to your own, they will usually look like a super
Charles Max_Wood:
Yeah,
Simon_Grimm:
native application.
Charles Max_Wood:
yep, that's been my
Simon_Grimm:
So.
Charles Max_Wood:
experience. And I'm not so picky that I would have even noticed it. Like, yeah, I haven't gone in and like directly tried to compare them, but I didn't feel like it was, that it felt different from
Simon_Grimm:
Yeah.
Charles Max_Wood:
the regular native app.
Simon_Grimm:
And so these super small and tiny things, this will probably work better with Flutter and React Native. I haven't made a total comparison. I will
Charles Max_Wood:
Yep.
Simon_Grimm:
definitely do it on exactly this thing. But I guess this is what people point out if they say, hey, this looks like a web application. But again, with Ionic, if you just look at the application in general, it just looks totally native. You have native buttons, sliders, toggles, inputs, whatever. And the cool thing about Ionic, by the way, is that if you use, for example, an input field with Ionic, you would get on iOS an input field that looks like iOS, but on Android you would get one that looks like Android because they have this adaptive styling. They have components and in the background they basically have two separate CSS files. So if your app runs on iOS, they would attach to the body the class iOS, and if your app runs on Android they
Dan_Shappir:
Wait
Simon_Grimm:
attach
Dan_Shappir:
a minute,
Simon_Grimm:
the class
Dan_Shappir:
so so wait a minute just to clarify that I understand so with ionic the components look native But they're actually web
Charles Max_Wood:
Mm-hmm.
Dan_Shappir:
Oh,
Simon_Grimm:
Yes, it's their web components,
Dan_Shappir:
so that's the big
Simon_Grimm:
HTML,
Dan_Shappir:
difference
Simon_Grimm:
CSS.
Dan_Shappir:
between IONIQ and React Native, where with
Charles Max_Wood:
Right.
Dan_Shappir:
React Native, the components themselves would be native components, which means that you probably want to have a native developer on hand to deal with issues having to do with the native components.
AJ_ONEAL:
So
Simon_Grimm:
Yes.
AJ_ONEAL:
I'm looking at the ionic page right now, and my heart has just grown three times bigger because they are the only framework that I've ever seen where if you drag a slider, it works. In iOS
Charles Max_Wood:
Ha ha ha
AJ_ONEAL:
native,
Charles Max_Wood:
ha.
AJ_ONEAL:
you cannot drag a slider. You have to tap it in order for it to go to the other side. In Angular, it literally in the Angular's material UI demo page to this day, right now, the it has a little slider image and if you and it says slide me that's literally the text on top of it slide me and you cannot slide it you have to click on it ionic is the first time I've ever seen the slider implemented that if I click and drag it over it works so I am I am through the roof right now believing that if they've paid attention to detail in a way that they've beat out Apple at their own game seriously looking into, worth seriously looking into because they are paying attention to the fine details. Maybe they're off by that, you know, they don't have native responsiveness, which is a grievous sin. But I would say that in this case, having the slider actually work when you slide it makes up for that.
Simon_Grimm:
you
Charles Max_Wood:
I just have
Simon_Grimm:
Yes
Charles Max_Wood:
to say
Simon_Grimm:
sir.
Charles Max_Wood:
that I'm pretty gratified that AJ made a Grinch reference to himself. Yeah, and just to add a little bit to this conversation, yeah, so both Flutter and React Native, the UI is native UI, and then it connects across the JavaScript bridge that lets you run your business logic and stuff in JavaScript. So that's
Simon_Grimm:
this.
Charles Max_Wood:
the difference is your components are not web at that point, they're native components
Simon_Grimm:
Yeah,
Charles Max_Wood:
in your view.
Simon_Grimm:
so Ionic is 100% web. And just to clarify, because people, it's hard to separate, Ionic is the company. They do
Charles Max_Wood:
Hmm.
Simon_Grimm:
have Ionic framework, which is this set of UI components. They also developed Capacitor because they saw problems with Codover and the approach Codover took. So they built Capacitor. But Capacitor is not related to Ionic. You can use Capacitor with jQuery or something. It doesn't
Charles Max_Wood:
Mm-hmm.
Simon_Grimm:
really matter. Ionic also builds Stencil,
Charles Max_Wood:
Yep.
Simon_Grimm:
which is a tool to build web components. Because all the Ionic components, like items, cards, and whatever, these things are also now web components, which enabled Ionic some versions ago to open up to other frameworks, like React. So until, I think, Ionic 3, you could only use Ionic with Angular. And that's also the reason why a lot of Angular people know about Ionic. And Ionic is used by, like, I don't know the exact numbers, I think it's still 70% Angular. But since they switched to Web Components, you can basically import Ionic components wherever you want. And then you benefit from the adaptive CSS, which means native iOS or native Android styling.
Charles Max_Wood:
So
AJ_ONEAL:
Nope.
Charles Max_Wood:
I have a question about cross-platform, because we keep talking iOS and Android. For a while there, people kept trying to push the Microsoft phone OS into the conversation, but that's kind of just not a thing anymore. But one thing that people use, for example, Apple's TV OS is effectively iOS with modifications, right? You've got the Amazon Firestick, which is Android with modifications. You've got some of these other systems. Maybe I want to make an app that will run on my mobile device or on my desktop. So how far does cross-platform go, right? Can I run it on a video game console?
Simon_Grimm:
I honestly don't know. I think it runs everywhere the web is, but I haven't built anything for Apple TV. After this conversation, I will definitely add this to my list of to try things, because this will definitely be interesting. So one thing I know is that you can also have something that targets your watch with Ionic,
Charles Max_Wood:
Mm-hmm.
Simon_Grimm:
but basically this is, like you're not getting code sharing for that kind of project. You would have to add that natively Xcode project, like you have a watch clip in Xcode that you can do because Capacitor works that way, but this is not really related to cross-platform that anymore.
Charles Max_Wood:
Yeah, I'm pretty sure that
Simon_Grimm:
However
Charles Max_Wood:
React
Simon_Grimm:
you
Charles Max_Wood:
Native does tvOS.
Simon_Grimm:
Yeah, do they? Then I would hope Ionic does as well. I just quickly looked this up, and there is a post from 2019 on the Ionic forum. Does Ionic Framework support Apple TV and Android TV? No answer.
Charles Max_Wood:
Mwahaha
Simon_Grimm:
So that's not really giving me any hope on
Dan_Shappir:
All
Simon_Grimm:
that topic.
Dan_Shappir:
I can tell you is that my children, my kids, they watch Netflix and whatnot on their phones, not on TV.
Simon_Grimm:
True, true.
Charles Max_Wood:
Weirdos.
AJ_ONEAL:
All that 4K gone to waste.
Simon_Grimm:
But you can definitely
Charles Max_Wood:
My kids
Simon_Grimm:
add
Charles Max_Wood:
will
Simon_Grimm:
the
Charles Max_Wood:
do that
Simon_Grimm:
Electron
Charles Max_Wood:
too, by
Simon_Grimm:
platform
Charles Max_Wood:
the way.
Simon_Grimm:
if you want to. So with Electron platform, you could at least build Linux or Windows or Mac app from your web app code. I've done that before and that part works actually pretty great. People are kind of surprised.
Charles Max_Wood:
Yeah, I knew Ionic did that.
Simon_Grimm:
Visual Studio Code is Electron and tons of applications were using Electron. possible. However, I really, if the listener of the podcast is curious, I would also recommend to check out something like Tori, which is getting a lot of fame. I think Dan is now killing me internally because I'm bringing up one of another hype JavaScript. No, it's actually not JavaScript. It's Rust, which brings
AJ_ONEAL:
And it's.
Simon_Grimm:
another thing to this conversation, Rust.
AJ_ONEAL:
And it's not hype, it's a practical solution for a real problem of I don't want to have a 500 megabyte installer for a web view.
Simon_Grimm:
Yeah,
AJ_ONEAL:
That's
Simon_Grimm:
yeah,
AJ_ONEAL:
a
Simon_Grimm:
yeah,
Charles Max_Wood:
Hehehehe
AJ_ONEAL:
real
Simon_Grimm:
definitely.
AJ_ONEAL:
problem.
Simon_Grimm:
Have you tried it?
AJ_ONEAL:
I don't know. I'm really, I, so we, there is an app that we are working on at dash incubator where Tory is
Charles Max_Wood:
Hang on, I accidentally stopped recording. Okay,
AJ_ONEAL:
Oh,
Charles Max_Wood:
go ahead.
AJ_ONEAL:
so
Charles Max_Wood:
I clicked the wrong
AJ_ONEAL:
a dash
Charles Max_Wood:
button.
AJ_ONEAL:
incubator, a dash incubator, there is an app that we are tentatively planning to use Tory for. I don't know whether or not any of the apps that I've installed natively are using Tory or not. I know that
Simon_Grimm:
Me
AJ_ONEAL:
while
Simon_Grimm:
neither.
AJ_ONEAL:
I know the ones that aren't because they take forever to load, I don't know if any of them are. So there is that, that disclaimer, but in terms of what it is supposed to do. That basically everything's baked in. So you don't, you don't have to do a custom compile for the normal stuff. The normal stuff is there. You can literally just take your JavaScript project and then basically have it bundled in a zip file in the binary. So that the binary access is the zip file as virtual media, essentially. It opens the web view from, from that, but you get access to things like local storage and whatever. You don't have to install rust and compile rust or write rust plugins to be able to do the basic stuff with it. If you need to do something really. really, really native, then yeah, you have to dip into rest, but for the basic stuff, you don't. And so that, and, and it's supposed to be kilobytes. So I guess I have to backpedal cause I, I don't, I don't know if I've been using anything with it, but it, it solves a problem that I have. I wish that Slack and discord and the other 10 electron apps that I have would use that instead.
Simon_Grimm:
Yeah, that's certainly a problem of Electron, I agree. I haven't tried Tori yet, but it looks promising. And I think I saw a solution where somebody used, I think, a Next.js application and somehow created like a binary from that Next.js application and put that into your Tori application with Rust. So you can also get like the Next.js API endpoints in that Tori application working. It looked kind of crazy, but at the same time, what was actually
Dan_Shappir:
you
Simon_Grimm:
So if that is a solution...
Dan_Shappir:
I have to say that I'm not such a big fan of such a solution. I think the primary motivation for modern meta frameworks is kind of synchronizing the back end and the front end in modern web applications, like creating the full stack experience. And that's kind of not how you build native apps. are fully local. So this whole React with server components are moving to be back-end first. That's totally foreign to your approach when you're building a native application. So I don't know how these kind of work well together. If anything, I expect to see maybe frameworks if that kind of makes sense. I don't know time will tell
Simon_Grimm:
I haven't seen anything in that space yet come up over the last time, but would be interesting to see. I use tons of the modern frameworks like Astro and everything that's cool right now. But ultimately, yeah, I agree that native in the past, when the company where I work with, we usually said the native application is dumb and doesn't do a lot. It's just displaying your JSON data in some way. I mean, there are tons of other applications things, but I agree that we probably shouldn't do everything that's possible. And I think this case where somebody bundled this as a binary with Tori was more like experimenting and playing around with what's possible. Um, but
AJ_ONEAL:
So
Simon_Grimm:
like
AJ_ONEAL:
I'm.
Simon_Grimm:
in this meme, we should probably stop and think about if what's possible is actually a good idea.
AJ_ONEAL:
Oh,
Charles Max_Wood:
We need
AJ_ONEAL:
absolutely.
Charles Max_Wood:
to do picks
AJ_ONEAL:
Oh,
Charles Max_Wood:
soon.
AJ_ONEAL:
what, what was the complaint about this? Or I missed something. Cause I was just thinking that they did the normal thing you're supposed to do, create an app and then bundle it with Tory. But it sounds what, why was this? What, what was the contention or the conflict about what they did? Cause I missed that.
Simon_Grimm:
I think Dan brought up some objection about it.
Dan_Shappir:
Yeah, my point was that Simon mentioned that they were using it to take a Next.js application and transform it into a native application. And I said that Next.js is inappropriate for native applications because the whole point of something like a Next.js is to build a full stack type of an application. And that's not what you're aiming to do when you're building native applications.
AJ_ONEAL:
Oh, okay. So you're saying because it runs the backend with the database or something like that.
Dan_Shappir:
I'm saying that if you're looking at the native application, your backend is probably going to be, I don't know, note with Express, or
AJ_ONEAL:
Right.
Dan_Shappir:
maybe just talk directly to the microservices that are implemented in Go or whatever. Because what's the point of having React on the backend when you're doing a native application?
AJ_ONEAL:
Okay. Yeah, I, I, I get that. It would not make sense. It seems like an abuse of the Tory use case to bundle node with it for. Server side stuff, but I, I, I could see just having a light
Simon_Grimm:
you
AJ_ONEAL:
API and then have that API connect out to the file storage, the, the system, uh, key chain, the, you know, that, that sort of stuff.
Dan_Shappir:
So yes, so nodes with Express, you know, you don't need
AJ_ONEAL:
No,
Dan_Shappir:
anything
AJ_ONEAL:
no, no, no,
Dan_Shappir:
more
AJ_ONEAL:
not
Dan_Shappir:
than
AJ_ONEAL:
node,
Dan_Shappir:
that.
AJ_ONEAL:
not node. No, I mean, Tory using Tory.
Dan_Shappir:
Ah, okay.
AJ_ONEAL:
So just like having, having some sort of routing layer to glue between the API call to Tori rather than having the API call directly having one layer of separation that's more similar to what you would do in a client server application, because then if you needed to do it on the web and local, you still have that layer of separation there. It doesn't have to be expressed on the backend. It could just be connecting to Tori, but have a layer such that it gives you the same isolation and you can copy and paste and say, okay, our web uses our database that you log into but the local version uses the the Tori file
Charles Max_Wood:
as
AJ_ONEAL:
store.
Charles Max_Wood:
some kind of caching and yeah.
Dan_Shappir:
Yeah, I would probably, what I would probably do is I would have like, make sure that I can use the same set of microservices implemented as whatever for both my next, let's say next JS application and the native. And the native just have a very thin layer of a node JS talking to those web app to those a VIRestful API or something like that. I don't see the need for anything more substantial than that if you're talking about a native application.
Charles Max_Wood:
All right, I'm gonna push us to picks. We're kind of getting to that point. But yeah, I think you're both, you know, you're making points, so anyway. And I don't know if I follow all of it either, but let's go ahead and do picks. I'm just being honest. Now we've been doing the kind of the self promo thing, but I'm not sure it's really getting people what they want. Self promo, like the listener, I mean. So if you have a self promo, just keep it to 30 seconds and put it in as one of your picks. I definitely have one. But AJ, what are your picks?
AJ_ONEAL:
Okay. So I am going to pick volume master and video speed, which I think I picked these before these are Chrome plugins. Volume master allows you to manage volume, particularly to boost volume. So for me, for whatever reason, Simon was really, really low. And so I was able to boost my volume to 300%, which I have no idea what that means. I wish they would use DB because that's the scale that actually is coherent, but whatever 300% means I boosted it 300%.
Dan_Shappir:
you
AJ_ONEAL:
able to hear and I have to do this YouTube videos all the time where the YouTube video was recorded with really low volume. And so volume master is just really awesome. And then it'll show you which
Dan_Shappir:
Does
AJ_ONEAL:
tabs
Dan_Shappir:
it go
AJ_ONEAL:
have things.
Dan_Shappir:
to 11 AJ?
AJ_ONEAL:
Uh, unfortunately, no, unfortunately, no, but I did contact him to ask him to use DB instead and he said, normal people don't understand DB to which I responded.
Dan_Shappir:
Yeah.
AJ_ONEAL:
Well, normal people don't understand percent either because percents don't mean anything in volume. They
Dan_Shappir:
By
AJ_ONEAL:
have,
Dan_Shappir:
the way,
AJ_ONEAL:
they
Dan_Shappir:
do you
AJ_ONEAL:
literally
Dan_Shappir:
know, do
AJ_ONEAL:
don't.
Dan_Shappir:
you get my reference of going to 11?
AJ_ONEAL:
Yes. Yes,
Dan_Shappir:
I
AJ_ONEAL:
they
Dan_Shappir:
just
AJ_ONEAL:
do.
Dan_Shappir:
wanted, I needed to make sure.
AJ_ONEAL:
Yes, yes, yes, I did. But you can take it to 11 with DB. You can put it to 12 DB.
Dan_Shappir:
Hahaha
AJ_ONEAL:
But anyway, and then the video speed allows you to do video speed. So you can just, I think it's DNS are the keyboard shortcuts and it will speed up the video by 0.1 or decrement the video speed by 0.1. So if you've got a voice you're really familiar with to a podcast on YouTube, you can put it on three X or four X or whatever it is that you personally can handle, but it lets you get higher than YouTube's default to, which I often find with voices that I'm familiar with and they're familiar with their accent, I can handle a 2.5. Okay. And sometimes even three. And so I like the video speed. And then also I'm going to go ahead and pick speechify. There's a lot of things that I still have gripes about speech speechify, but I am finding more and more uses for it. little bit because I don't know if they're actually a security focused company and their browser plugin has access to my email and things like that. But I can just click play in an email and their voices do a pretty decent job. And it, it works on, uh, the web, the web version seems to work pretty well. The iOS version is kind of meh, but it, it uses AI voices and they don't sound So those are kind of my picks and I'll throw in the awesome Tory repo. I'm actually looking through this to see what kind of things I want to use. I'm looking at off me as one of them potentially, but I, yeah, I'm very interested to see what, what things that I'm using now that I could be using Tory with instead. And then as far as self promo goes, uh, beyond code workshops, if you're interested in, in that, uh, I'm going to be using the, the, the, the, the Reach out to me at underscore beyond code on Twitter, or you can hit up my inbox. You can find my email and then be in an A. So I I've been talking about the hosting service. We've called it being an A now. The landing page is that being an A dot net right now. It's just a sign up form, but I imagine by the time you hear this in two to three weeks, we will have our first. We'll be open to to beta customers and have our payment portal up as well. hosting that is cheaper by the bunch. That's being an egg.
Charles Max_Wood:
Awesome. Dan, what are your picks?
Dan_Shappir:
Okay, so first I will start with a little bit of self promo. I think I did it in a previous episode But I'll do it again. I'm starting a kind of a conference round for the next two and a half months So I'll be speaking at IJS London on April the 27th Then I'll be speaking at JS nation the online version on What is it?
Charles Max_Wood:
It's May 31st
Simon_Grimm:
you
Charles Max_Wood:
through June.
Dan_Shappir:
Yeah, so I'll be speaking
Charles Max_Wood:
Yeah.
Dan_Shappir:
on June 5th. Yeah, and then
Charles Max_Wood:
Okay.
Dan_Shappir:
I'll be speaking at Jane nation. Yeah, it's a different conference in Portugal in Coimbra on May 6th and then I'll be at React next in Tel Aviv in Israel on June 27th So so yeah, those are a lot of conferences and hopefully, you know If you're listening to this podcast you'll be able to attend at least one and If you are, then please do come and say hi, because I really like to get up and close with our listeners. So that's my bit of self-promo. And then with regard to picks, it's not so much of a pick as an observation. I have to say that, to judge by my wife, Google are in deep, deep trouble. Google for searches completely. She's searching, she's looking for everything using chat GPT. For example, we're currently planning our trips around the conferences. One of the great things about conferences is that either before or after, we usually do a bit of vacationing. So that's true for a visit in, for IJS after London, we'll be heading to France. And it's nation Portugal where we'll be touring Portugal and She's helping me build our trip and she's not googling at all She's just using GP teach a chat GPT to ask it where to go and what to see and what to visit And you know, what's good and what's bad and what? because the Information it provides is so much more accessible Than Google first of all with Google you got this whole bunch of promoted shit that has nothing to do with whatever you're searching for. And then you've got sites that are unclear which one is better and which one is worse. And a lot of them are just promoting stuff. And with ChatGPT, she's just getting the answer that she's looking for. So yeah, if I were Google, I would be quaking in my boots. And it's getting to the point where I'm thinking that if you're holding Stock earth Uh,
Charles Max_Wood:
Haha
Dan_Shappir:
yeah
AJ_ONEAL:
Well,
Dan_Shappir:
Uh
AJ_ONEAL:
let me, let me ask though, cause my main problem with chat GPT is anything that's well known, which I imagine vacation locations and what to see are things that well are super well known. Most of the articles on the web were probably written by GPT over the last 10 years that it's been around, right? So it probably knows a lot better how to filter it out to not the crap because it wrote most of those articles I would imagine, but what about that? Sounds right and it's 100% wrong.
Dan_Shappir:
Yeah, it's even worse when it's sounds right, but it's, I don't know, 80% right and 20% wrong, and you don't know which 20%.
Charles Max_Wood:
Right.
Dan_Shappir:
So I actually, I actually spoke about this, like either the previous episode or the one before that, Anthony Campallo actually suggested to me to ask ChatGPT about myself. And since there's information, since I have presence before 2021, chat GPT has information about me. So I basically asked something like, what is Dan Shapiro known for? And it gave a very flattering response. I really enjoyed what it said. But unfortunately, about 20% of the answer was totally wrong. It kind of provided my CV.
Simon_Grimm:
you
Dan_Shappir:
And it said that I worked at Google. I've never worked at Google. It said that I worked at Akamai. at Akamai. It did mention that I worked at Wix, which is correct, and that I think it also mentioned. Actually, it didn't mention that I currently work at Next because that's too new. But bringing up two companies that I've never worked at but might have worked at, or you could reasonably assume that I have worked at, that's problematic. And that kind of highlights
AJ_ONEAL:
Thank you.
Dan_Shappir:
the risk or the challenge with it. other hand, so much of the information that you find via using Google is also
Simon_Grimm:
you
Dan_Shappir:
wrong. So
AJ_ONEAL:
Yes, but that's kind of, again, I would point to the information that's wrong on Google is the sites that were completely generated by AI in the first place.
Dan_Shappir:
Hahaha,
AJ_ONEAL:
Right.
Charles Max_Wood:
Heh.
AJ_ONEAL:
And so
Dan_Shappir:
yeah.
AJ_ONEAL:
you have to sift out to this, but once you find a site that's written by humans, which is hard and normally they're not as pretty, those sites have correct information, but most
Dan_Shappir:
What?
AJ_ONEAL:
sites on the internet are chat GPT analyze it. Cause people don't realize chat GPT has been around for what, 15 years now. as I mean it's it's been around a long time and we're only now hearing about it but most articles on Forbes most articles on ESPN every top 10 site all of that stuff has been written predominantly by chat gpt with a human doing some curation to say oh that's a bad paragraph don't put that
Dan_Shappir:
I have to say that what kind of surprises surprises me though is that they don't use some well-known resources for validation of the answers. It doesn't seem like that would be you know technologically too difficult to do. Like if you're asking somebody, like you're asking about somebody specifically, like in my case asking about myself, I mean using LinkedIn to verify that worked at the places where it said I've worked doesn't seem like to be too much of a technical challenge or validating historical facts with I don't know Wikipedia or something like that so I don't know it seems that they could you know automatically do more validation that they're currently doing but you know this is
Charles Max_Wood:
validating
Dan_Shappir:
not my area
Charles Max_Wood:
against Wikipedia.
Dan_Shappir:
it's better than nothing
Charles Max_Wood:
That's true. But anyway,
Dan_Shappir:
Yeah.
Charles Max_Wood:
I'm gonna close the tangent. But yeah, I think you both make good points. Cause yeah, a lot of times it's got great info. But the other thing that I've seen, I was talking to somebody who was doing C sharp development and basically asked it to write them C sharp code. And he was like, it's decent code. But then he tried to get it to write embedded code enough training data on it. And so it just fumbled on it. So I think it really
AJ_ONEAL:
Yeah.
Charles Max_Wood:
just depends on what it's been trained on. Anyway, Dan, did you have other picks?
Dan_Shappir:
Well, just the usual stuff of support the people of Israel in their fight for democracy and support the people of Ukraine in their fight to survive. And those are my picks for today.
Charles Max_Wood:
All right, I'm gonna throw in some picks then. My self promo, I've got so many things going on. I'm just gonna do the one that's kind of the most timely. And that is, I did an interview, as I said earlier, with Jason Wyman on how to build video games. We've talked our way around how, you know, these options aren't great for that, but
Simon_Grimm:
you
Charles Max_Wood:
he has a course on how to do
Simon_Grimm:
Thanks for watching!
Charles Max_Wood:
Unity to build mobile and desktop games. I think you can also do console games other things with it as well. We also talked about building business apps with Unity. And anyway, I'm gonna be going through his course. I think I've mentioned that before. Basically, the week after next, starting on Thursdays at 9 a.m. Mountain Time, that's 8 a.m. Pacific Time and 11 a.m. Eastern Time. I tried to pick a time that would work for people in Europe as well. I'm gonna be going through the course and then whoever shows up on those calls, I'm not going to charge for it. You don't have to have a membership for it. I just want people to go through the process with me. And so you can go get his course. I'll put a link in the show notes to it. It's on game.courses if you can
Simon_Grimm:
Thanks for watching!
Charles Max_Wood:
find it there. He gave me a coupon code for 20% off. That's JavaScript 5. He's also going to be putting up a bundle. So Dan talked about conferences, and I'll talk about that in a second. But they're doing an online summit for game developers. We're also going to have a gather.town where you can kind of walk through the virtual expo area and chat with folks and I'll be there. And that's the gamedevguild.com and the same coupon code, JavaScript 5 will get you 20% off the ticket to that. And they've got like thousands of dollars worth of freebies that Unity and other companies have basically donated. So anyway, it's a really cool deal. And yeah, looking forward to getting into some game dev with Unity. I guess it's a promo, but it's a promo mostly because I want people to talk to about game dev. And then conferences, I'm gonna be at JS Nation. I'm actually gonna be at JS Nation. And they're doing the React Summit right before, right afterward, I can't remember.
Dan_Shappir:
Lucky
Charles Max_Wood:
But I'll be
Dan_Shappir:
bastard.
Charles Max_Wood:
at that too. So,
Simon_Grimm:
Thank you.
Charles Max_Wood:
yeah, I will be in Amsterdam for the conference.
Dan_Shappir:
Amsterdam
Charles Max_Wood:
If you're
Dan_Shappir:
is a great
Charles Max_Wood:
gonna be
Dan_Shappir:
city.
Charles Max_Wood:
there, let me know. Yeah, I've been there once. So I'm really looking forward to seeing
Dan_Shappir:
Highly, highly recommended
Charles Max_Wood:
the city.
Dan_Shappir:
place. Highly recommended place to visit. I think Simon
Charles Max_Wood:
Yep.
Dan_Shappir:
would agree with me.
Simon_Grimm:
Yeah, not too far away from us.
Charles Max_Wood:
Yeah, you'll have to come up and visit. All right, so as far as board games go. What game do I want to pick today? I didn't actually prep and I should have. I'm going to pick kind of a hybrid video game slash, you can get cards and play it. I don't know if you guys have all ever played Star Realms. But yeah, it started out, I think, actually as a deck building game, right? So you pick the cards that go into your hand and then you can play it. I played the digital version. In fact, I think I've only played the digital version. I have friends that own the physical cards. And so you can buy it. Let's see, Board Game Geek has it at 1.93. And it's, you know, so it's a relatively simple game to pick up, you know. Anybody can play it. And yeah, a round takes like 20 minutes. You know, I've had rounds go faster. I've had rounds go slower. When you're playing on the phone, you can either play against other people or play against the computer. And sometimes the computer is hard and sometimes the computer is not hard to beat. So anyway, I'm going to pick Star Realms a fun one and that's one that you can carry in your pocket, right? As far as other things go,
Simon_Grimm:
you
Charles Max_Wood:
I think I'm going to take a page out of Dan's book a little bit. I'm not going to get too specific, but at least here in the US things are starting to warm up as far as like people running for office and stuff like that. We're going to be seeing that a whole lot more next year. But I just want to encourage people, if there are things that are important to you, Go find out what's happening in your state legislatures, because a lot of things are moving there right now. Pay attention to who's running for governor in your state. What I'm seeing is that a lot of these battles are starting to be fought in the states instead of in the federal government here in the US. I know that that's probably different depending on what country you're in, you know, in other things, right? Dan's been pretty involved in the political situation over in Israel. You know, you have to stay on top of this stuff, know what's going on, know what the implications are. And then the other piece of that is that a lot of times we hear... There I go, I cough. All right, so the other thing that I see though is that a lot of times we see kind of hyperbolic rhetoric about one side or the other. You know, they're trying to completely destroy the country and the other side is also trying to completely destroy the country. And I would encourage you to go talk to people who are on the other side of whatever issue that you're concerned about because what I find is that a lot of times we can kind of agree on some things, right? We kind of want certain levels of stability in our lives or certain, you know, common principles about how the government runs even if we disagree on how to get there. And just being able to see and understand other people's point of view, it really goes a long way. And I'm not picking any issue one way or the other, but that's something that I've I don't know that it's necessarily deeply changed the way that I see some of these issues, but it does humanize the people on the other side so that they're not just terrible, evil people.
Dan_Shappir:
I would also add that after 250 years, one politician is unlikely to destroy the US.
Charles Max_Wood:
There. Anyway, so those are my picks. I'm just gonna encourage people, you know, be kind, be curious and yeah, go get involved. Simon, what are your picks?
Simon_Grimm:
Uh, shameless promo is galaxies.dev, um, which is my latest platform for all web development, uh, focused courses. We got courses from myself and I got some guest creators creating a pro courses. So check it out at galaxies.dev.
Dan_Shappir:
I looked through it, it looks really good. I checked some of the promo content there and I liked it a lot. So I definitely encourage our listeners to go and check it out.
Simon_Grimm:
Thanks, yeah. A lot more is planned. I currently also work on an updated view for some courses and having this improved. Just go through it. You can actually join for free and check out the community and stuff and then upgrade to pro if you wanna get the pro courses. Besides that, my picks are kinda short, but I'm currently diving into everything AI because I think this is like the most important thing right now we should follow. be yet. It is probably not replacing developers in two years, but just last or two weeks ago, I basically created a whole app using AI. So I started creating UI screens with Mid Journey. If you don't know, check it out, midjourney.com. You can just need to join a Discord. So all of this feels a bit like Web3, but it's pretty, pretty amazing. Like I generated app UIs that look chat GPT all the time to help me with the react native coding questions and scaffold screens. My whole in-app purchase flow was basically done with chat GPT because I didn't know how it works. I created app icons with mid-journey. I used chat GPT to create the App Store description. Like, I used Copilot while coding. Like, this whole AI-driven development, it just works, and it just made me a lot faster. And the app, you can check it out. It's called Unique Bedtime Stories. It's an app where you can just
Dan_Shappir:
Thanks for watching!
Simon_Grimm:
put in a few things about your children, like age, name, and characters they like, and then with the OpenAI API generates a little story like how Elsa in Arendelle is playing around with Harry Potter and something crazy.
Dan_Shappir:
So you're using
Charles Max_Wood:
Nice.
Dan_Shappir:
AI to build AI applications. There's
Simon_Grimm:
Yes, exactly. It's the
Dan_Shappir:
something,
Simon_Grimm:
AI-ception.
Dan_Shappir:
it's kind of meta. There's something
Charles Max_Wood:
Yeah.
Dan_Shappir:
to consider.
Simon_Grimm:
Yeah, I just highly recommend both this and also just being curious about the AI tools, like what's going on, what is Pinecone, what are vector embeddings. If you can jump onto this and just have a bit of understanding about what's going on right now, I think you're in a pretty good spot over the next month or years to build and ship cool products.
Dan_Shappir:
So it's
Simon_Grimm:
And that's
Dan_Shappir:
not
Simon_Grimm:
definitely
Dan_Shappir:
enough
Simon_Grimm:
what
Dan_Shappir:
that
Simon_Grimm:
I try.
Dan_Shappir:
I have JavaScript Formal, now I also have AI Formal.
Simon_Grimm:
You know what? I felt pretty good about AI and following some stuff. And then two, two days ago evening, I read a Reddit thread about everything that happened in AI in that week. And I opened that thread and I just scrolled with my thumb on the screen. And I had like five times scrolling until I came to the end of the list. And at that point I was like, it is impossible to follow everything that happens in just one week. So, uh,
Dan_Shappir:
Thanks for watching!
Simon_Grimm:
just, just do your best. I don't know, subscribe to like two newsletters, which keep you posted a week. You could probably spend your whole day, the rest of the next, I don't know, two years, just looking at iNews and what's coming out, which new model and which diagram and how things work, and then you get the, what's it called, artificial general intelligence, baby AGI. I use all of that. It's crazy. It's mind-blowing. Just be curious and don't say this is the next Web 3, because I So with building this app, everything AI related is really something I would consume.
Dan_Shappir:
Unlike Web3, Web3 won't take control of the world in a couple of years and turn us into its slaves.
Simon_Grimm:
Yeah, and Web3 won't replace developers.
Charles Max_Wood:
Yeah.
Simon_Grimm:
So that's my plug. And I think we know a lost chuck.
Dan_Shappir:
Okay, in that case, I think I'll wrap us up. Another great episode. Just before we conclude, if people want to find you and contact you, what's the best way to do so?
Simon_Grimm:
You can find me on Twitter, just search for Simon Grimm. My name was picked, I don't know, 15 years ago. So it's Schlimson, S-C-H-L-I-M-M-S-O-N. But you can also search for Simon Grimm. I also now have this blue check mark. Yeah,
Charles Max_Wood:
Ooh fancy.
Simon_Grimm:
I don't know if it helps. Yeah, I don't know if it helps, but I'm happy to pay Elon the $5.
Dan_Shappir:
Yeah, he needs
Charles Max_Wood:
All
Dan_Shappir:
the
Charles Max_Wood:
right.
Dan_Shappir:
money.
Simon_Grimm:
It's going down anyway.
Charles Max_Wood:
Yeah, Twitter's values dropped a ton. Anyway, thanks for coming, Simon. This was a ton of fun.
Simon_Grimm:
It was a pleasure to be here. Thanks for having me.
Charles Max_Wood:
All right, folks, we're gonna wrap it up here. Till next time, Max out.
Dan_Shappir:
Bye!