Full Stack Javascript w/ Kelvin Omereshone

00:07.16
Chris Morrell
All right? Welcome back to overengineered the podcast where we asked the question. What's the absolute best way to do things we already have a perfectly acceptable solution for ah today I am here with Kelvin omarone. I don't know if I got that right? But um, ah, omera shoe is that is that about right? Um, and ah, he's ah he's a maintainer of sales Js right? and you're sort of a proponent of this this concept called the boring Javascript stack. Um.

00:26.75
Kelvin Omereshone
Yeah, it's about close.

00:39.67
Kelvin Omereshone
Yeah.

00:42.28
Chris Morrell
But I'll let you do a brief introduction. Let's let's talk for a while about ah full stack javascript javascript today.

00:48.62
Kelvin Omereshone
Yes, thank you so much Chris for having me here. So my name is kelvin o milishianai my last name is is work to pronounce by everybody so I just didn know Jessica alvin or kill online I'm the lead maintenance of sales i. Created or I okay I created a ball in Javascript stack because I got tired of the old shining javascript lands actually the full stack story so it was very It's so I've I've been through it all and I've seen that you know it's now working so we need something more stable more. Reliable I just like to ship stuff. So yeah, I'm glad to be here.

01:32.15
Chris Morrell
I'm glad to have you this is um this is interesting because you're kind of the first. The first person that I've had on the show that like I didn't have some sort of tangential connection to ahead of time. So I'm kind of looking forward to expanding the horizons a little bit. Um.

01:41.21
Kelvin Omereshone
Actually in. I show.

01:49.88
Chris Morrell
Yeah I'll I'll I'll set the stage a little bit and then we'll just kind of see where things go um you reached out to me a while ago and we have been kind of going back and forth and then ah the whole sort of ah remix versus lairrevel thing blew up on the internet and ah we thought well.

02:03.91
Kelvin Omereshone
Oh.

02:09.28
Chris Morrell
If there's ever a time to have this conversation. it's it's now um I've been a ph p developer for you know 20 plus Twenty five plus years Um I got into node Js not when it first came out but.

02:10.66
Kelvin Omereshone
Now.

02:27.20
Chris Morrell
Pretty early on because I really ah you know I really saw sort of the promise of well if we write everything in the same language. Obviously that reduces context switching and you know introduces opportunity for.

02:39.22
Kelvin Omereshone
Responsibility.

02:44.90
Chris Morrell
Ah, code reuse and sort of sharing concepts and stuff like that. Um, and I was really optimistic about that idea and and and went you know with some sort of side projects went down the path of like all in you know node with Express and like. Mongodb with mongoose and like the whole like throw away everything that we did before and try all the new stuff. Ah and got appropriately burned by that ah hum and ah you know over the years I've found myself kind of.

03:11.37
Kelvin Omereshone
A.

03:20.21
Chris Morrell
Shifting back away from from Javascript heavy approaches to to more server rendered with like alpine and js sprinkles but I still really um I I follow along I know. Closely is the right word but I follow along with sort of the major frameworks and and what folks are doing because I think you know I think there's a real opportunity here. Um for someone to nail. What I think of as truly full stack javascript. Um, and so.

03:45.65
Kelvin Omereshone
So.

03:51.77
Kelvin Omereshone
You know.

03:56.87
Chris Morrell
I remember looking at sales at 1 point but I I will admit I'm not super familiar with sales as as a ah backend framework. But what's really interesting to me is it. It sounds like um this sort of novel idea that you've had is taking this sort of established.

04:04.94
Kelvin Omereshone
And.

04:16.17
Chris Morrell
Backend javascript framework and pairing it with inertia which you know originally came from the Lairrevelle world but really isn't larevell specific at all. Um, so yeah I don't know I'd just love to hear a little bit about where that came from and and how that's going.

04:16.44
Kelvin Omereshone
Questions here. Okay.

04:24.92
Kelvin Omereshone
True.

04:32.64
Kelvin Omereshone
Yeah, for sure. So um, let me see how I could summarize 5 years worth of journey. So yeah, originally I I think I started fullsta web dev using phpi level.

04:49.31
Kelvin Omereshone
I can recall vividly um, at one point in the semester back in school and when we're taking a break I was like what I'm going to do for this break because of course why everyone else is going to take a break. You know, refresh your mind I wanted to learn something cool. I said I'm going to lend php and lar for that holiday and was what I did I really was into php I know the history you know I was just into it and I be a couple of things with it and um and I also was playing with Javascript at the time. So at the time before I got introduced to node. I was just doing stuff with Pplaville ah you know Javascript on Frontend. So my my first um, professional job was using vue as a frontend dev that was my first introduction to a ui framework. It took a lot of um, learning to understand why you need a ui framework. It was really interesting the journey for that. So I was doing vue you know, just you know I was stricking from there just going about my business. So after I left the job I was now contracting for for a web 3 project so they needed me to be the the api service that will be consumed by both web applications and the mobile app. So I was like you know since this node now you know I was being a little bit economical and also the fact that I kind of liked javascript more than I liked php in terms of how I write now like it make more sense to just you know use Javascript across the stack guess like the promise of node writes.

06:21.30
Kelvin Omereshone
But I was like Okay, what is the um, the law for node that was the question so I was on the Haunt. So I I already did a couple of work with thisra but I want that opinion because I know Israeli Javaska Developers don't like someone else's opinion. But I've. I Like the safety of you know this is all thought out for me at least days like you know this boost so that I can come and add mine. Not that I'm understanding from scratch and be like a package assembler like we do with the spreads you assemble everything and no to express. Application looks the same because everyone come over with the conventions I didn't want that I want something established. So I I tried that to co I tried that nest I didn't like it look too much like anngular too many you know, computer science things going in the um Adornis was very promising. But.

07:13.32
Kelvin Omereshone
In my opinion he was trying too much to copy lava 2 1 to 1 so it was it wasn't so looking like javascript for me then I found sales and this was all back in 20182019 s so it ah it's a long time ago. So then I found sales and the moment I installed. New app and I tried to all Javascript and okay this is it I also was using it. You know everyone also say no, this is outdated but I shipped with it so quickly and I was able to like make new features ship out new features. It was just epressive how I do. This is it so and there was a lot of cool concept India I was like why is everyone not using this then I was like okay yeah, I'm just gonna do it. You know I made like a business out of it that those guys will come to teach it. You know created a community. It was that of so come to conference. But. While I was doing that when I built salescast.com I built it in the same s sp filed which is you know a single placeulation in Javascript. Whatever I was using v so I use k noxt than my sales api then I because I wish I was just thinking about what I'm building as I'm going ahead I were like. Not making any sense I'm a one man team I'm intending to separate with code basese the api will never have a second client to consume it so it doesn't make sense we we could do better and of course there was this um double wraping going on that of loading spinoff. As example, the courses page has to have a loading spinner. But.

08:42.78
Kelvin Omereshone
The the cause is space is of no use to anybody without the course. So why is they loaded Spinna I was just questioning everything and then I was like this should did this should be a better way to do this I was just thinking like how can I do this I wont um, view inside the same code bits of sales.

08:47.29
Chris Morrell
Sure.

08:59.60
Kelvin Omereshone
My pages should be in view component looks like an s sp this was before I even found out about inertia so I was doing this thoughts. Um I was having this thought I'm just thinking then I found the work of Johnni Renick Inertia and it was light bulb movie like this is it like this is it like this is. Why didn't this come out from the javascript board I was always say like we are perfectly positioned to have this in the Javascript world because we have javascript at boot side but we didn't have each I was like no I shall send um an email to joniha like how do I be this is adapter were like oh man I I don't really have the bafe to help you with that. But just.

09:22.00
Chris Morrell
Ah.

09:36.25
Kelvin Omereshone
Check out all the adapters with the dogs. You figure it out after yaho then I spent painstaking a want of time trying to let build the adapter for ourselves because I really wanted this to work I did it then I rewrote sales guys.com in the stack at the time there was so. I was calling it like rittack the vita because of you know you view innertii then sales. But you know it it was always changing i't like that then I shipped it for a year before I even mentioned it to the public because there were couple of things that was surprising to me that I thought okay I might be doing something wrong. So let's let's be testing this like. I didn't need state management code anymore. It was out the window like I've Shipped like 2 apps in prod without state management and it was way later when I saw the remix was also saying that dude you don't also needs did management away I say wow I've been doing this for a while and I I thought I was doing something wrong. So that was a thought like the whole.

10:16.40
Chris Morrell
Um.

10:30.41
Kelvin Omereshone
Full stack holistic experiment because sales gives you 80% of what love will maybe even a hundred in terms of everything I've used because whenever I'm using sales I have a lot of everything is just sales right? I don't have to piece a lot of things together so that was like the journey then i. Announced it in salesconf 2022 I guess or 2021 where I announced the boring javascript stack and it was named that because Javascript is too exciting. We build too much demos that users don't use and then we always. Debating too much on the front end and leaving the fullsag experience because I listen to Taylor Ottra a lot in fact that was one of the reason why I reached out to you I listened to his episode on this podcast and he said the same thing there's no complete fosag experience in Javascript. But that's not really true. They is in sales but is not as popular or shiny. As everything is out there the meta frameworks but people I've seen people who have moved over to sales and de boing stock. They enjoy it. They were like you need to market this thing more dude I was like yeah, it's good. It's works right? So even in my salesconf workshop I did. Migraty from man to debo javascript stack and it was just lovely with the way sales give you just so much. Yeah, so yeah, that's the summar.

11:54.80
Chris Morrell
So yeah I'm I'm curious. Um I guess I'm interested in sort of what the boundaries of sales are in in in that because you know if we're thinking about sales as.

12:04.50
Kelvin Omereshone
I.

12:12.60
Chris Morrell
Sort of the laravell piece of a lairravell inertia and some frontend Framework app. Um, you know are we talking about sales covering all the like quee queued jobs and scheduling and cash and.

12:15.10
Kelvin Omereshone
No yeah.

12:25.85
Kelvin Omereshone
Okay.

12:30.26
Chris Morrell
And Orm and all that stuff as well.

12:32.90
Kelvin Omereshone
Yes, so that's why I say it's the most complete so it have all of those and it's had it for years all right? So um, authorization authentication and a first party Orm called waterline which is superb. It's really good.

12:40.35
Chris Morrell
Um.

12:47.59
Kelvin Omereshone
And also so we have sales scripts which is our own version of and don't know um jobs that you could I do and we have um cash Sales Sta is also in there. We have sales mail for emailing. You know everything you need batteries included out of the box. It comes with it then? um.

13:07.34
Kelvin Omereshone
Views that or react is just the component and I think those Frameworks are really good but when how they feel is the usage in terms of the Adoption. We Meta Frameworks right? And so I like the component part of it which is what I always loved about this Ui library or components of or. Whatever Firmworks is that let me just write pure gxs if I'm using react and let me just write pure Vue Components. No Vue Routeta No react router sales can do everything in the back. No Middleware in the me of firmocle or whatever because sales can do that in. Ah, backend as Well. So just leave your phone really thin and focus to like displaying stuff and doing interactions. Yeah.

13:53.11
Chris Morrell
Yeah I I think that that's I mean I have I have said very similar to what what you said about adonis a number of times and I I always get a bunch of pushback whenever I do but ah and I think that part of the problem around.

14:01.30
Kelvin Omereshone
Here.

14:11.10
Chris Morrell
Talking about about something like that is it really does just come down to how it feels like there's absolutely nothing wrong with the framework and and every I mean it looks it. It looks incredible I know people who have used it and and said nothing but ah, really really positive things but it doesn't.

14:14.58
Kelvin Omereshone
Yeah, of course.

14:26.35
Kelvin Omereshone
You yeah.

14:29.22
Chris Morrell
It just doesn't quite feel right as a Javascript framework and and I do think that a big piece of it I don't think it's the I don't think it's the entirety of it but a big piece of it is kind of like for better or for worse ah xml style templating.

14:46.91
Chris Morrell
Has one out in the Javascript world either. Whether it's jsx or or view templates. Um, and so anything that doesn't follow that convention just feels out of place. Um, and so I do think that any modern day full stack framework that doesn't.

14:49.17
Kelvin Omereshone
A.

14:56.22
Kelvin Omereshone
Yeah.

15:05.91
Chris Morrell
Have a way to write components in Jsx is probably not going to be able to make it you know whether whether you want that to be the case or not is is maybe like a saary separate question I I Personally love Jsx I think that the syntax is fantastic. Um, you know I think that there are places where it's.

15:09.65
Kelvin Omereshone
True and it should.

15:19.78
Kelvin Omereshone
Okay.

15:25.18
Chris Morrell
It's clunky. But for the most part. Um I Really do appreciate it. Um, and so yeah I really get that and um I think it's It's a really interesting approach. Um, and so then the the.

15:28.27
Kelvin Omereshone

15:44.85
Chris Morrell
The sales inertia driver is something that you that you maintain specifically for the stack or is that something that's contributed back to Inertia or how does that work.

15:45.74
Kelvin Omereshone
And.

15:53.52
Kelvin Omereshone
Yeah, so I wrote the ineria sales adaptive for sales itself. So. It's also part of this mono report. We have going so for the boeing stock there secret sales cli I let you on npx create sales then you scoold the application. Know there's also the initial sales adapter and then there are there's startder kits or packs where you could just do nps quit sales. Whatever then when you scaffold your app with you's Umvelt or react you get. Full stack app with authentication authorization. Forget password you know I have this running joke that in most Javascript frameworklock when you scaffold enough you get it a count a counter thingy. How useful that to anybody. But. stuff like reals or lava you have a false application authentication in javascript blind black oh don't rule your own earthth black dude session north works. They've been working for decades so I don't understand they don't rule your old a thing. Yeah stuff.

16:59.91
Chris Morrell
Yes I I mean I would push back even further and say don't hand off 1 of the most important pieces of your application to some third party that like who knows what's going to happen I don't know.

17:06.76
Kelvin Omereshone
So yeah, oh yeah, yeah, it's true true and so we have all that out of the box and I had so the most recent. So 2 folks I have used sales one use this for the boring stack and they were building something they' having so much trouble with nextjs and they've seen me so about the boring stack and they just wish out like dude I need to try this stuff. How easy it is to migrate I you like yo give it a try. Ah you won't believe it I migrated in a day and. If fan in love with the stuff. It was like it's so simple because I I was intentionally so I thought about this problem deeply I know that what people like in react is jaxs all right? What a me framework marks give I don't think I give enough they won't have a category on their own but you know I don't know that much. So. When you have Jex Sayss and you have this full web framework covering everything you need to simply then you could build with confidence because you spend like 80% in your ui then just writing your actions setting your authorization your policies. Setting up email that you do once and then you just go wow we just writing your ui crafting up part and making it you know as much whatever you need, but you know that you have a reliable backend which is something that fors most of the metaphor from of first flying on your face. They'll tell you? Okay, we don't give you an m's not our problem.

18:41.80
Kelvin Omereshone
Go use prisma and then you have to go lend prisma and then find out how clun it is with your mena frameworkmo because it's not first party so you need to you go to eso to find out your answers. It's not first part you can't really feel that way and now you you you have to do a lot of decisions getting started. Um, one cool thing I like about this is when you're starting out your app. You don't have to worry about a database because ah um has a looko disk adapter which got sales disk is viewed on top of any db which is you just start your application as Cf. You have a database use. The. Or our um queries and stuff and it works because it's just going to write it to like a dfi which is like a text file what he knows have to handle like so you don't have to install anything at the get go so you could prototype really quickly and it's just amazing because at the end of the day you could just decide. Okay, what do I need to at the beginning your prototyping you need to.

19:33.86
Chris Morrell
Um.

19:39.60
Kelvin Omereshone
Like ship out an Mvp or you know get stakeholders buying. You don't have to make all those choices just scffold the project and just build us if you have a database the when comes time that you have to choose install an adapter put the connection string. It's done.

19:56.51
Chris Morrell
Um, does um how does sales handle things like database migrations and seeding and stuff like that great.

20:03.86
Kelvin Omereshone
Like yeah for sure. So we have all 2 migration strategy in sales. So you don't migrate um, manually so we have 3 strategies. We have the author strategy to drop. And safe save is set by default in prod because we don't want you to go nook your production database right? So by Yeah yeah, yes, so it's so something we we have we've had it for like forever. So.

20:23.99
Chris Morrell
That's fair. Okay.

20:30.79
Kelvin Omereshone
In development you're mostly going to be in Ot then in tests and drop because you're goingnna drop the entire data isn't do it therefore seeding. We have satisfactory wish you could use to to set seeds and just you know get the datas you need um and fake data and and all that stuff. So he's all so there.

20:47.13
Chris Morrell
So the the Auto migration just is like diffing the existing schema against what the like generated schema would be very cool and then the say is the safe strategy just like basically that but with confirmation or what's the difference between automatic and safe. Yeah.

20:49.40
Kelvin Omereshone
Yeah, yes.

21:04.19
Kelvin Omereshone
Yeah, so Safe. Don't don't so Safe. Don't migrate in Production. So um, this is one thing I myself I'll be thinking that we could probably do a little bit better though because I've been asking the fact I did a tweet asking like how do you all migrate in production in love in Love Rose. And most of the answers I get which is the same way with do here. Yeah, which is you know you do the the use your psqr or all that stuff to do it in Prod which have more fine grid control. So It doesn't migrate at all in production because we don't want to nook your database by any chance. So It's a Autom miration makes sense but I don't think we want to do that in Pro. Anyhow, so that in case, an error comes and your data gets nuked or corrupted or something so we we don't do migration improd at all. Yeah yeah.

21:56.12
Chris Morrell
Um, okay, um, so you do so in Laravell everything is a There's a there's a um like a migration.

21:59.32
Kelvin Omereshone
How do you date in lava when I'm quite curious though like.

22:12.30
Chris Morrell
Process that's built on top of sort of like schema blueprints. So you'll um, either create or update a table in your migrations and your migrations typically have an up and a down method. Um up is taking.

22:13.44
Kelvin Omereshone
Okay.

22:22.51
Kelvin Omereshone
A.

22:27.28
Chris Morrell
The existing schema and migrating it to the new version then down is reverting those changes if like you need to revert in an emergency. Um, and so for example I might have like a migration called create Users table and that'll ah create a table.

22:33.83
Kelvin Omereshone
Okay, okay, okay.

22:43.21
Chris Morrell
And there's like some nice syntax built on top of this stuff but essentially it's just like give me a table with these columns and then I might have a second migration that's called like you know, add avatar to user s table and that would just add a new column to the table.

22:43.46
Kelvin Omereshone
A.

22:48.96
Kelvin Omereshone
A.

22:54.68
Kelvin Omereshone
No.

23:00.16
Chris Morrell
The up method and remove that column from the table in the down method. Um and Laraville just has ah 1 table that it manages in the database called migrations I believe that's just a list of all the migration files that have run so it just.

23:02.17
Kelvin Omereshone
A.

23:11.82
Kelvin Omereshone
A a.

23:18.40
Chris Morrell
Scans your Migrations directory and compares the migrations that exist in your in your code base against the migrations that have run on the database and um runs any migrations that haven't been run yet and so that way.

23:25.70
Kelvin Omereshone
A.

23:31.50
Kelvin Omereshone
No okay here.

23:35.25
Chris Morrell
Yeah, it's It's a lot more manual in the sense that you have to you know, write down what you want the changes to be but it's a lot safer in production because you know you're you're kind of committing those changes to code you're reviewing. Um, you're using the same migrations in in local and in testing.

23:36.25
Kelvin Omereshone
Yeah, yeah, yeah I get it if yeah.

23:47.75
Kelvin Omereshone
Yeah. So yeah, yeah.

23:54.51
Chris Morrell
Um, yeah, and so like then when you run your tests Lareville will just fresh create a fresh database and run all your migrations right before the test So your test database is always like kind of matching what what the code that you're testing under is going to is going to operate in.

24:03.89
Kelvin Omereshone
Yeah.

24:12.20
Kelvin Omereshone
Yeah, that's that's cool.

24:13.95
Chris Morrell
Um, and I think you know I think that there's a there's a world where sort of like auto-generated migrations by like diffing a schema would be a pretty neat feature. Um, but.

24:25.19
Kelvin Omereshone
Yeah, yeah.

24:32.38
Chris Morrell
I Do like the sort of safety of that approach of.

24:35.49
Kelvin Omereshone
Yeah, for sure for sure. Yeah, definitely So yeah, just like I said um, we don't do migration on Files and I think that was a pretty good reason for it and so far it's really been fully cool because you just drop down to like you know. Your database tools like for my like for me for example I use um Beekeeper studios when in production. Yeah I don't if you know it so I could um it could give me a dump of my schemas and I could just you know do stuff with it.

24:58.49
Chris Morrell
Okay.

25:10.30
Kelvin Omereshone
But I definitely I I'm looking I'm always thinking of that part because we can't really do it automatically but you have to give like a an escape hatch that is manual that would not really get the div. What just let you do. Um, manual migrations. It will be fun. E.

25:29.10
Chris Morrell
Um, yeah I mean is there a way to basically take the existing Auto migrator and essentially like find some way to serialize the changes that you would make and write those to a file instead that like can be committed to the code and you can.

25:41.49
Kelvin Omereshone
Yeah.

25:45.98
Chris Morrell
You can check manually and test manually before you go and push it to production and.

25:48.98
Kelvin Omereshone
Yeah I think so especially with something like sales script which you could run just ss as your production and show I think that's something I I need to investigate some more because we've spoken about it in Salesco. It's not really like a pain for all our users because it's had limitation. I guess they all know how to do or they just used to it anyways. Well I think it's something that wo can't be nicer is really in pro because I do like that is safe in broad. But that time where you need to like add a new column. You shouldn't just you know okay, let me go grab my database tool and do this. But yeah, definitely.

26:25.33
Chris Morrell
Yeah I mean I think in particular like when you get to a place where you have a long running app I mean I just looked at our production app. We took a snapshot in 2017 so

26:27.30
Kelvin Omereshone
Something was looking at.

26:34.40
Kelvin Omereshone
Yeah, yeah.

26:40.32
Kelvin Omereshone
In.

26:43.38
Chris Morrell
Laville has a way of just like basically take a snapshot of the existing schema and then just throw away all the migrations because you just have a snapshot of the result of all the migrations. So I don't know how many migrations existed prior to that snapshot. But since since our 2017 snapshot you know we've.

26:47.19
Kelvin Omereshone
Yeah, yeah.

26:53.28
Kelvin Omereshone
And.

27:02.41
Chris Morrell
Pushed 113 migrations to production. Um I think for you know apps of any particular scale that that live over a long period of time you know schema just has to change.

27:04.61
Kelvin Omereshone
Wow.

27:19.51
Chris Morrell
And I think having a good story in production makes a lot of sense. Um, so what's your take on ah the you know Lairve versus ah react or lairrevell versus remix ah debate that happened over the weekend. You have any.

27:20.70
Kelvin Omereshone
Yeah, true true. Definitely.

27:33.42
Kelvin Omereshone
Yeah, oh else? Yeah, that was fun. You know I loved the conversation. Especially Taylor's flecks with testimonies on how.

27:37.90
Chris Morrell
Any thoughts or hot takes.

27:49.40
Kelvin Omereshone
Effective using Laville is it. It's it's something that I've been speaking about in the Js word in a for a long time which is we need to move past this old meta framework thing I don't really know what they are or the value they bring at to be honest, really, but. I feel we need more full stack solution. You know the more things like adonis and sales because at the end of the day we don't have a full stack story or or at least we do with the boing stack but not everyone would you know everyone to go with next or remix because you know they're more popular and stuff. But we need more full stack solution because like I said things like inertia should have come out from the Javascript Robot we are too focused on like what Telo said the get side of an app you know, get from Prisma get from click you know, just. Third party is the express thing all over again, just peace. So now we're not piecing modular packages now we're piecing third party Apis altogether you know they are Sases. So did she just just a nightmare so for a beginner comment to Len. Javascript fulls stack javascript they are not really learning full stack javascript because I did a poll and my audience is primarily javascript dev I was asking about sessions where those session data leave and it was just weird that folks didn't really know like I think.

29:21.90
Kelvin Omereshone
More than half was saying like on the client side and when I'm so doing the arguments with tilllo and remix and all I um commented the boring javascript stack this so on was it like why you explain authorization authentication and session. Soia should already know. But in reality they don't because this is the thing this is my theory about why we have all this mess in Javascript Javascript was originally a client side language. So anyone who has been using Javascript whether they like it or know they started using Javascript from the client.

29:52.89
Chris Morrell
4 Yep.

30:00.17
Kelvin Omereshone
That habits sticks. So for it's hard for them to start thinking. It's not It's not impossible but's a little bit hard because they'reformed to this pattern of client client. So every innovation that happens is is client. Centric is always clients driven. Even. Ah, Rc the old idea of components. It came from the clients right now I'm trying to you know massage it into server and now the old ecosystem is confused. We don't even know what it is. There's the a lot of debates as to what it is. It's just nightmare. But for someone that has learnedt php or c sharp no dot net. They have a server experience and they also have been touching the client like you know sprinkling Javascript around you know to do stuff so they have this idea of the meaty part of an app which is the backend because the backend logic is the backend is a very significant part of your app, right? Your authentication your authorization. So they have this knowledge javascript dev don't really have it that much. You'd be surprised as to the trivial backet things like if you ask dev might not even know or understand what it caches you know, like and all that stuff because they don't really do it. Or they would know about this local storage or index. It's it' even miracle they know about indexdb because there've been strictly client side firstrst. So I don't really blame them so that's why the ah innovation and the meta framework thing is just weird.

31:29.70
Kelvin Omereshone
So I liked that Taylorlo did that you know I was just all laughing I like yes this is this is we need more of this. We need to like you know like javascript. What are you doing. We are late to the full stack story.

31:44.90
Chris Morrell
Um I I do think I was I was talking I was going back. You know I I threw a few punches over the weekend. Not really punches but I got involved a little bit and um I think you know one of the things that.

31:51.21
Kelvin Omereshone
And.

32:02.34
Chris Morrell
That comes up for me listening you talk about that is there's this reality in the world of Web development that is we all have to deal with browsers in the end right? like.

32:14.28
Kelvin Omereshone
If.

32:17.90
Chris Morrell
The the the final biggest constraint of all this stuff is what can a web browser do um and so you know and that's why when node first came out. It was so exciting because it's like well we're forced to write javascript.

32:21.41
Kelvin Omereshone
Yes.

32:36.20
Chris Morrell
To some degree if we want any you know any sophisticated ui or any level of interactivity. That's that's you know at a level of fidelity that's beyond like a full page reload right? Um, and that's dictated by. The browser like the browser runs Javascript. It doesn't run php it renders html. It doesn't render anything else. Well exactly um and ah and so I do think that there's sort of this reality that.

32:55.97
Kelvin Omereshone
Or good.

33:12.49
Chris Morrell
If you are a backend developer to some degree. You're still always faced with the constraints of the browser if you want to do certain things you end up having to write javascript you end up having to understand Css you end up having to write html. Um.

33:19.18
Kelvin Omereshone
Of course. Yeah.

33:25.36
Kelvin Omereshone
Please. Okay.

33:30.55
Chris Morrell
And I think you're right to a degree as a Javascript developer while maybe you can't um you know you certainly can't do everything in the the front end you can get a lot further without having to really understand or think about the backend. Um.

33:40.90
Kelvin Omereshone
Okay.

33:47.17
Kelvin Omereshone
The.

33:49.78
Chris Morrell
You know to some degree I think that's because we see a lot more specialization in like front end specific. Um development. Um, you know I think that sure you have like folks who specialize in the back end but they still end up having to have a.

33:57.18
Kelvin Omereshone
Yeah, yeah.

34:08.71
Chris Morrell
A little bit of an understanding of what's what's happening on the the front end um and to a degree I Think that's maybe just sort of like the era that some of this stuff happened in where um.

34:10.87
Kelvin Omereshone
Yeah, sure.

34:19.27
Kelvin Omereshone
Like true.

34:23.79
Chris Morrell
There's just a lot more there are there are a lot more just service options that you can kind of throw at problems instead of implement them yourself and there's nothing necessarily wrong with that. Um, you know I know that there are folks who use you know firebase and.

34:27.00
Kelvin Omereshone
A.

34:41.62
Kelvin Omereshone
Yeah, oh yes.

34:42.90
Chris Morrell
Ah, author and clerk and all all those tools you know perfectly effectively? Um, but it is in my mind. Yeah much more about just like you know the the paradox of choice like. You just get overwhelmed by the number of choices you have to make if every single thing you have to do comes down to well yeah I can I can install one of 10000 javascript packages that helps me send email.

35:13.36
Kelvin Omereshone
He moment.

35:15.89
Chris Morrell
Right? Some of them might be tied to a specific email provider. Some might be abstracting things away some might be more functional. Some might be old school callback. You know callback hell some might be. You know there's there's ah, there's a million options out there.

35:25.50
Kelvin Omereshone
Yeah. Yeah, so.

35:32.36
Chris Morrell
And having to assess each one of those for each important part of my application is just so overwhelming and um I think 1 interesting thing that came out of the the debate over the weekend is um I think that there's been a little bit more exposure for the.

35:36.54
Kelvin Omereshone
Yeah.

35:50.90
Chris Morrell
Lesser known Frameworks that are trying to trying to solve this I think that um you know I think adonis has gotten some some great exposure and I think that's great. It sounds like sales has as well or the the boring stack has I Also um, ah.

35:51.51
Kelvin Omereshone
And.

35:58.21
Kelvin Omereshone
Yeah, sure.

36:07.63
Chris Morrell
Heard about Nest Js have you ever looked at nest is that one of the ones that you were saying you looked at at the very beginning right.

36:09.66
Kelvin Omereshone
Yes I did Yes, it's It's very heavy for the ankle. So anyone who likes angular and that's route they will definitely feel had on with nests there.

36:22.94
Chris Morrell
Interesting. What what makes you say I haven't looked at it Beyond just kind of like scanning through the Docs What makes you say that.

36:32.15
Kelvin Omereshone
Yeah, because it's it's um I think it's the inventor or Jamaica sort of like have a strong angular or typescript background. So. There's a lot of decorators in there for things like routes. So and all the patterns is just you know you you would you definitely see that. Okay, this has a lot of influence or was inspired by typescript and alo it is is very typescriptd driven and also decorators and all the patterns. You know ioc and all that jazz is all there. So yeah, it's it's it's really popular to people use it I know a couple of people and most times people use it those who use it? Yeah They also have great blackness or angular because it just looks like angular for backend. Yeah.

37:19.60
Chris Morrell
Um, does nest have a a front end a ending or is it agnostic there. Do you know.

37:25.19
Kelvin Omereshone
Yes, it is agnostic. Yes, it is agnostic. So I've had um I think I had someone from who uses nests come on my Tik white show. So you know it's agnostic. You could even swap so you uses as Express by default you could swap that as well. So it's it.

37:42.83
Kelvin Omereshone
It doesn't have strong opinions which is I get it's ah it's an effect of Js ecosystem where everyone just want flexibility for no reason so you could swap express for fastify if you want you could swap whatever you could move things around so it doesnt It has very loose opinions. So lets you do stuff so it's not really as opinionated as lover.

37:49.89
Chris Morrell
Yeah.

38:02.59
Kelvin Omereshone
Or sales. Yeah, yeah.

38:04.66
Chris Morrell
Yeah, that's a really difficult line to draw because I do think you know we talk a lot about how opinionated larevell is um and you know how conventional it is and the same with something like rails I'm not.

38:17.15
Kelvin Omereshone
Yeah.

38:19.35
Chris Morrell
I am not familiar with rails at all. So I I can't really speak speak to ruby or rails at all. But in on the Lareville side. My experience is yes ah lairvell is opinionated and leans on conventions very heavily. But if you have a good reason. To do something outside of those conventions. There's always, ah, there are often many many layers of escape hatches. You know so you might have just like sort of the lightest escape hatch is just oh there. There's a callback available to you to like modify things a little bit.

38:46.81
Kelvin Omereshone
Okay.

38:55.63
Kelvin Omereshone
Yeah, and.

38:58.80
Chris Morrell
And then like the next layer down you might like be able to implement a custom driver for the like system. So you're still interacting with the same interface but under the hood. There's a different driver and then like going further down you may just.

39:03.36
Kelvin Omereshone
You know.

39:09.53
Kelvin Omereshone
A.

39:15.57
Chris Morrell
Swap out that entire system. There's nothing forcing you to use Larall's scheduler or Laraville's mail system or or or m or Cory builder or any of that stuff and so I've always appreciated that because you know I came to larave from ah you know working on a Pachp project. That's.

39:21.74
Kelvin Omereshone
Yeah, go for sure in.

39:35.46
Chris Morrell
Been around since the late 90 s ah before any ah any frameworks existed. Um so I had to kind of like migrate ah migrate things that didn't necessarily fit into the traditional or the the modern lairville patterns. Um, and.

39:49.84
Kelvin Omereshone
Yeah, yeah.

39:55.80
Chris Morrell
Yeah I I guess I bring that up to say I wonder Um how how do you approach that in um, in sales How have you seen that approached in some of these other frameworks That's something that I often wonder about when you get into these more full stack situations.

40:07.27
Kelvin Omereshone
A. Here.

40:14.57
Chris Morrell
And other in other ecosystems like how much of that capacity is there.

40:19.20
Kelvin Omereshone
Yeah, definitely so those sales is opinionity and is conventions over configuration. It's very ostensible in terms of something call sales hooks which lets you extend the framework to like whatever needs you have and you could have. Generators and also build your own database adapter. So if for example, you like you have like a a custom need for like a new postgres adapter you could just rule your own right? and so far is respect the adapter interface you could do whatever you want there. And I've seen folks use sales in different ways even our Orm. Um, you could use it standalone if you want I've never used this standalone because I'm always working with sales so it doesn't get in your way if you want to drop down and do anything even the orlm gives you an escape hash to the draw clients of your database. So if it's Mongo you could go to have access to the role client so you could do raw queries in your database. The same thing for sql and risece. So. It's really robust but of course not everyone will like your opinion. So if you want to drop down. You can definitely so we have very. Open escape hatches that anyone can use I've seen folks um, bring their own templating language to the framework. So by default it uses ejs so you could bring your handlebar is very easy to configure as well. So yeah, what's the it's it's just that robust.

41:53.99
Kelvin Omereshone
And you can make changes to as much as you want if need be I've never had to do any of those. But if you want it's all there. Yeah yeah, so it's like yeah, be embedded ruby so es is like the the same counter butd but in Javascript. Um.

42:02.42
Chris Morrell
Um, ah what is ejs I'm not familiar with that.

42:12.25
Chris Morrell
Okay, okay, and so that's the default for sales. But then the boring stack kind of do you end up having to write these gs templates as well or do you pretty much kind of swap those out for your frontend.

42:12.34
Kelvin Omereshone
Andb Betterded Javascript is like bleed for sales. Yeah yeah.

42:30.61
Kelvin Omereshone
Yeah, so the thing is you cant so for me even in hackfish. For example, if you go to the landed page the landing page don't have any interactivity is so it's serverside rendered in the traditional sense. Not the sense we have now with Javascript board where the.

42:31.00
Chris Morrell
Framework of choice. So.

42:48.16
Kelvin Omereshone
The template is being compiled by the server and sent html. That's safe so you have this choice you can if you want to? So if you want everything to be in react vers vert you can do that but because I understand the stack a lot I'll be like at these pages. They're very static. There's no need to make them v. Components So I write them I write them in Dot E Js they're rendered at request time on the server send down eachtml but you could go all in so right now I have like a mix So like the homepage is all in E Js. There's no interactivity there even the pricing page I think too is also in E js. But for the dashboard and for the main app itself the app itself they are all in view Files. So It gives you this nice mix of you determining? Okay, what pages should be because not every page is the same in an application your contact page your your company page. There doesn't have any reason to be that view. Well it can be.. It's all there is all about taste At this point. So yeah, so you could use the pure dot you file across everywhere or you could use a mixture of both which I kind of like yeah.

43:56.58
Chris Morrell
So is there a way to statically render ah reactor view. Um and deliver just the static result or if you want to use 1 of these frontend frameworks are you shipping the front end code. Always.

44:11.42
Kelvin Omereshone
Yeah, so you once if you're using du boing stack. You are building on ssp like experience so you are definitely the shipping the default code I had this thought which I sort of like I I just kept the pin on because I think it would be a little bit confusing because I was. Thinking that and I think Hono Hono Js did it for um, the clothlef framework where you could render that ja says just like it use jss as a template in language right? But I think it would be a little bit confusing in terms of dx. Because you'd see if if everything look like it jesify even do you? you know, write a tonne of documentation. People would say think if I put like an on click here I should be able to click this thing but this jx says is static. It should be just a template engine. And in fact, I bet you you would have a lot of this planning to do. About what templatepl engines are to a lot of Javascript developer because they didn't come from that word. they' be like what is a templating engine this looks like jxs can't I just put on click here. Can I use my use state here. It should work but no, it's a template engine. So that confuciian is why like okay know what? let's just leave it a little bit. Let leave it be. Let's just.

45:09.90
Chris Morrell
Yeah, yeah.

45:22.98
Kelvin Omereshone
Riffits and let people just write the yeah interactive code in do jxs I did they even want to like static awareness of like the email and stuff they should do it in Ejs because you just create this fine line because I can't tell it's going to be maintenance. He people are going to put on click in there because that's the where they came from. Clients ward.

45:42.90
Chris Morrell
Yeah I mean it it feels to me like the only way that could work is if the sort of compiler was smart enough to know you know if this has no interactivity I can just send it down as as static html. But if.

45:54.92
Kelvin Omereshone
Yeah, and.

45:59.84
Chris Morrell
You know the moment you add an Onclick. Essentially you're opting in to sending down the the client side code you know something like that.

46:03.65
Kelvin Omereshone
Mayor you know, yeah, did that's fair. So you something I'm safe thinking if I want to pursue it because I feel the dx would be good if executed properly because I wouldn't my writing in everything in dot view files and. It's a template language when there's no interaction in there. So I'm thinking about it I saw Netflix did it I think they still do where they they render they use um react as a template engine on the backend. So it's I'm I'm looking at it I'm trying to swayde the pros and cons you know like we have this poll going on in even the ripo we're discussing how to really a execute this but something that would really want in the future where the framework or the start just knows how when to do templates. Ah, went to just let this who gonna be like you know s sps as I don't really like du whole idea of hyration because I feel it'ss it's it's a good idea, but there's a lot of hydration issues I've seen in folks up that laitude I don't think this is worth it. So let's just see how that goes it I are building a pure Sba.

46:59.93
Chris Morrell
Yep.

47:16.25
Kelvin Omereshone
That you know it just is pure or for those pages that you don't need to just do es for now while I refam like okay, let's see where we could consolidate all this ah you could just write your egs as templates is gonna take a lot of education even if the stuff does it? Well I think Hono is already doing it really? well. So Yeah I think it's possible I'm just thinking realize what's pursuing or not yeah so.

47:38.24
Chris Morrell
Sure yeah, it just feels to me like that's I mean that's the ultimate dream right? The ultimate dream of this sort of approach is I think that there are 2 for me. There are kind of 2 things that that seem like the most obvious.

47:43.44
Kelvin Omereshone
Yes, yes, it is.

47:57.88
Chris Morrell
1 is templating and the other is validation like if I'm already writing jsx for my client side app I feel like I would I want to live in a world where I can just write jsx for all you I right.

47:59.16
Kelvin Omereshone
10 Yeah.

48:12.82
Kelvin Omereshone
Yes.

48:15.89
Chris Morrell
Like and I don't have to think about is this client side is his server side like the framework is smart enough to handle it for me I mean this is just me imagining a perfect world I I understand that the complexity of what I'm saying and um I mean I think validation is another perfect example, It's like.

48:22.23
Kelvin Omereshone
Man That's my dream to really here.

48:33.60
Chris Morrell
In the Pp world. Um, at like larave has um, has kind of taken not not an official approach but there's I think there's been a shift to just send the payload to the server and run server-side validation. So that.

48:49.84
Kelvin Omereshone
Oh.

48:52.96
Chris Morrell
You're always getting the that The error messages are always consistent because the worst thing that you could do is have client implement client side and serverside validation to have them just be like ever so slightly different and so like you hit submit and it errors out.

48:57.96
Kelvin Omereshone
Yeah, yeah, yeah. Yeah, yeah.

49:12.41
Chris Morrell
On the server when it didn't error on the client and then maybe you fix it and now it errors on the client but does it on the server you know, um, and so I've always thought yeah like that's a perfect example of why implementing everything in Javascript is is such an incredible idea is like.

49:14.11
Kelvin Omereshone
And see yeah. No Hope we yeah.

49:29.61
Chris Morrell
You can run that exact same validation on both the client and the server and you're going to get exactly the same results and obviously there are validations that you can only run on the server when it when it has to talk to a database or make an api call or something like that. But um.

49:30.87
Kelvin Omereshone
Yeah, yeah. Yeah, for sure. Yeah, So we we? yeah, Definitely so validation is handled by Sales. So we've had validation for like the longest time and.

49:46.63
Chris Morrell
And I'm sure there are other places like that. So.

49:55.73
Kelvin Omereshone
Sort of like so there's something that's Mike Mcneil who is the maker of sales invented called nude machines they sort of like a it's an equivalent to typescript or a run time because he has a lot of yeah so this is one-time typescript. So.

50:02.55
Chris Morrell
Okay.

50:09.27
Chris Morrell
Okay, so.

50:14.58
Kelvin Omereshone
We have. We have a system called Ottc Run time type checking and also ank for validation. So let's say you have an action and you specify impute. So this action is the login action it handle the login right? So you have like the let's see the email addresss and the password.

50:18.80
Chris Morrell
Okay.

50:33.25
Kelvin Omereshone
So where you define the email address as a Javascript object you say type a string this is on in your action now right? something like zod but it's I always been in sales for like forever. So type is string um is email equal true. So in your controller logic. You don't write any logicic to silkie. This string is an email with the email. If. For example, you't instead. So you use the type of of email in your client in your inputs once you hit the server before it runs the action code the run time type checking would happen and sales will handle it like ah this. Supposed to be an email so you errors out and we will propagate that that arrow to the clients flash it to the session and just show it to the user. So. It's very user, friendly or the dx is great but you have all that so you could do max length mean length. Is in like you have like enomemstein going that. Okay, this value should be off 1 of these um strings and all that and it's all handled in your nude machine which have imputes and exits It's so beautiful. So it's we don't use espress style redres in sales we use. Machine switch is something that really really good and I was currently to working on sales language tools. It's going to be an official vs code extension for sales and it's going to leverage that because node machines that are self documentcued so just imagine that's the the vs code extension or the language server can.

52:08.57
Kelvin Omereshone
Can can pipe into that and so you could have a lot of things like Diagnostics Auto to complete that could propagate even to client code is just beautiful here. No date dear not.

52:18.40
Chris Morrell
So are these node machines essentially state machines.

52:25.27
Kelvin Omereshone
You know state machines in this says I wrote an article for Soma Magazine explaining what it is so it's more of like so what make up a machine is the function to run the imputes and the possible exits it exit means that this machine exited.

52:35.54
Chris Morrell
Okay, no.

52:43.47
Kelvin Omereshone
In our in is states that means this it's sent back the desire out output right? Then Any other exit is an error right? So what's so what we did is to find a way to write our action as machine. So if I send a success I could say return. So.

52:50.62
Chris Morrell
Okay.

53:02.51
Kelvin Omereshone
In sales you could return or through a response so I could do return a page. It will exit with this exit. So. If for example, they say not found exits and something happened I could throw not found like literally through the not found String. And sales will be able to like actually okay yeah, this is not Fun. So It's four 4 and I will do what happens when there's a 4 4 that happened in the app. Yeah, it's it's it's yeah it is something I need to talk more about it's really.

53:28.75
Chris Morrell
Yeah, it's.

53:36.11
Kelvin Omereshone
Amazing where you understand what it does is how we've be writing um sales helpers sales actions even sales script walks this way where you could Define Impus exit and the function to run is is very interesting. Yeah I could yeah yeah for sure.

53:51.50
Chris Morrell
Um, yeah I'll have to look at it more I I'm not sure that I quite follow. But ah yeah, it's an interesting concept. Um, it ah it occurred to me. Um, you know I don't know I don't know if you remember I know it's.

53:55.57
Kelvin Omereshone
Good Wish Yeah yeah, I'll show you link.

54:08.39
Kelvin Omereshone
Senior.

54:08.63
Chris Morrell
Ah, been a couple weeks now. But um, when you when you first reached out after having listened to the episode that I did with Taylor was there was there something in particular that that um, you know, sort of ah made you interested in talking about. Um, was there you know was there anything that kind of came out of that that you were wanting to react to or was it ah more general than that.

54:29.57
Kelvin Omereshone
Yeah, yeah, yeah for sure because so the the thing is I mostly want to you know because I've been looking up to like taillo d shit for like the longest put the frameworks there is I spend I think I spend. A lot of time on dear dogs love or dogs rose dogs just trying to understand listen to all your podcasts and everything because I really loved the way debut software. So even though they influenced me I'm not writing any of the language they do because I kind of like javascript more and Taylor doesn't I don't think they. Telo know quite yet about sales because again, what's popular in Javascript Land is next Js remix. You know, even a donnis doesn't even have as much love as it should as a proper full stack framework so listening to to be like oh there's no full stack experiences. It will be like with days. But it's not Javascript developers don't like it because it's not um, remix style meta from work's not a metaphorta from Oxford so it exist. It's just not popular enough. So like we need to like you know this stuff happens here and it works because. There's literally a few things that can happen in lava that I can't do in sales just really really few in terms of like you know we could just do like a checklist and just okay, yes, it does this. It does authenticationization. You know templating engine. You know, um, fast-party Orm check.

56:04.35
Kelvin Omereshone
We have all these things so its maps 1 to 1 and it's really good, but it's not Popular. So I really wanted to like you know, let's have having a more full stack conversation I sort of move away from the metaphor work because they are just I think they just. Make the front end better there like the framework for the front end or backend for front end kind of thing happening there. Yeah.

56:28.56
Chris Morrell
Yeah I like that distinction that they're not there. They maybe build themselves as full stack Frameworks but they're not actually they're more just like ah an extension of a frontend framework sort of extending the frontend into the backend. Yeah, that's interesting.

56:37.52
Kelvin Omereshone
Yeah, yeah, shit.

56:45.23
Chris Morrell
Um, shoot there was something that you said that that I flagged in my head but now I lost it. Um do well Oh and no I remember do you think? So do you think that that's more a function of time or do you think that's something else. Do you think that? Ah, what needs to happen is just.

56:53.69
Kelvin Omereshone
That's so okay.

57:05.90
Chris Morrell
Now that there are you know, 2 or 3 um relatively feature complete full stack frameworks in the js ecosystem even though they're not as popular as something like next or or remix. Um, do you think it just it's it's really just we need to wait.

57:06.79
Kelvin Omereshone
And.

57:15.85
Kelvin Omereshone
And.

57:24.18
Chris Morrell
For the Javascript world to kind of come around to this way of thinking more or do you think that there is still some sort of bridge that needs to be figured out to like bridge that gap that there's something about the js ecosystem that just.

57:34.27
Kelvin Omereshone
A.

57:42.71
Chris Morrell
Fundamentally needs to shift. Ah before you know before folks start to embrace this paradigm.

57:44.00
Kelvin Omereshone
Oh.

57:50.49
Kelvin Omereshone
Yeah, so I think it's more because I I understand the javascript because to an extent in the sense that there's a lot of market and it's more marketing than tech and it's more um, the next shiny thing syndrome than stability. So for any of us to actually get more market share. We need to do a healthy effect more amount of marketing than the other players because they have markets in money. They have the the conference money they have the influenza sponsorship money. It's all there. You can't beat that. So you have to it little bit be more persistent because when I've actively started talking about sales I've visited for so long we should be like 10 years now or more right? but most people still don't know about it because of you know the marketing like. Mike has went on to like be the Ceo of fleet device management is' using sales there pay stack which is like a stripe equivalent for for payments. They also ship sales as their public Api Postman Ship sales for a lot of their microservices as well for these big players. They don't really they are just focused on you know, doing that business and stuff. So no, no one is doing a lot of lucky marketing for the tech to like you know, go to conferences to talk about it and all that stuff so for us to like.

59:18.40
Kelvin Omereshone
Tell more people we have to tell more people so they have to be a lot of you know, good being out there writing the dogs making workshops doing courses. A lot of people if you most would have had about this for the past three years they've there's a. Great likelihood that they heard it from me because I've just been like the one. Yeah I just made the one shouting about it like ah so here's the fun fact. Um someone who walked with me in my company. It went on to like be like the lead tech of a fintech product. So. When he came the first version of the potter they tried doing field. They couldn't get to markets and it was like we got to use sales there was pushback were like oh sales. No you know old updateated. But when they decided using it. Oh it works and they were able to go to markets and now they are doing I think. The last and devol their doings like sixty four billion Nara and they are running all that with $60 per month in terms of hosting at all and and the yeah and that company would never have picked sales if the.

01:00:28.21
Chris Morrell
That's wild.

01:00:32.59
Kelvin Omereshone
Delete Dev haven't heard about sales for me and used it I knew that his works. Yes, you see that this level of what bit.

01:00:42.74
Chris Morrell
It is wild just how much. Um, yeah, how much can be done with so few resources if you just kind of like build things. The boring way you know it. It really is it. It is funny I mean you know we're we're at a scale.

01:00:47.77
Kelvin Omereshone
Oh yes, yes.

01:01:00.66
Chris Morrell
We're we're at a decent scale where we're operating a couple of application servers but it's still like it's it's probably overkill to be running 3 application servers in a load balancer like.

01:01:11.64
Kelvin Omereshone
Yeah, exactly yeah exactly because but like for example, anyone who wants to do outh in the javascript boardd I guarantee you they're using superbase or firebase or any of the.

01:01:15.35
Chris Morrell
You just get so much with the modern resources that we have you know.

01:01:30.60
Kelvin Omereshone
Ah, the authentication provider out there. What you have that for free with the bogain stock using sales wish so you have orth for free if I I showed you to someone from the ask ecosystem. Well I wait you're using firebase right? I think you don't really have to use firebase for oth. You can understand how we implement it and just write the code for it and they couldn't wrap their heads around it because what they noise lot is firebase. Um. Logging with Google it's it has to be firebas right? So that's the world. We're live in in the javascript ecosystem where all this little thing that we can take for granted knowing better. It's not the um, their take because that's where they came from like you you got to use firebase if I I know people having. Backend fre modes but still used for obvious authentication which doesn't make any sense I don't know why you have to do that. But that's the reality.

01:02:25.67
Chris Morrell
Yeah, yeah, it does just seem like that's that's still the mindset my mindset in the Javascript world and you know I think that? Ah, ah, you know I think that things are shifting I think that you know in reality like Javascript has been. As language has been around for a long time but sort of professional javascript. Especially full stack. Javascript is is like in the scale of things a relatively new concept right? and it's still maturing very seriously like um.

01:02:43.47
Kelvin Omereshone
Yeah, yeah.

01:02:53.33
Kelvin Omereshone
Natural true. Yeah.

01:03:01.49
Chris Morrell
And a lot of these other sort of backend Concepts have just been around longer in other and other spaces and so you know it makes sense that there's going to be a lot of volatility until things kind of settle down. Um, and there's nothing wrong with that. You know that.

01:03:06.30
Kelvin Omereshone
See and. Yeah, so need to do.

01:03:19.26
Chris Morrell
You get a lot of really fantastic innovation out of that sort of like stage. Um, but it is also really difficult to happen to live through that stage if you want to like build something that's just like solid. It lasts.

01:03:22.30
Kelvin Omereshone
So.

01:03:30.12
Kelvin Omereshone
Yeah, so yeah, so there's there's not a lot of so what I've seen. There's not a lot of incentive for the big players to invest in full stack experience because they have services that cater for that you know.

01:03:46.15
Chris Morrell
So.

01:03:48.34
Kelvin Omereshone
Like things like clerk for outh you know, which and there's a lot of serverless. There's um, backend as a service. It's veryvalent in the Javascript world because Javascript devs are scared of the backend. So there is not. It's not enough incentive to want to give so I think it's both.

01:03:58.84
Chris Morrell
M.

01:04:07.21
Kelvin Omereshone
They don't really like I think it's It's just it might be just that the business decision more than a takes choice because if you give a proper full stack experience. What happens to the other this as a service right? Yeah, so so that's the thing.

01:04:12.80
Chris Morrell
So yeah.

01:04:22.77
Chris Morrell
Um, yeah, well and it's it. Also I I see what you're saying I When when you said it's a business decision I think it also comes down to in a lot of ways choosing a.

01:04:26.90
Kelvin Omereshone
Yeah.

01:04:39.61
Chris Morrell
Simple established straightforward approach. Ah often makes sense from a business perspective but doesn't necessarily isn't necessarily flashy and fun and new and exciting. Um, and so I do think that a ah lot of times.

01:04:49.92
Kelvin Omereshone
1 yes.

01:04:58.71
Chris Morrell
Um, you know the folks who end up making those decisions are making those decisions as much around what technology they want to play with and experience ah and less about like what's the the best long term decision for the business for better or for worse and.

01:05:06.80
Kelvin Omereshone
Yeah, yeah, yeah, yeah.

01:05:17.62
Chris Morrell
I Don't think I think that there's um, you know I think there's there's been some pushback against that and like this this idea that everything has to be taken more seriously and I I don't necessarily buy that entirely I think that over.

01:05:33.83
Kelvin Omereshone
She.

01:05:36.49
Chris Morrell
Over my career I've benefited a lot from exploring new things and being exposed to new Concepts Even if I didn't end up using them for decades. Um, and I think that's I think that for the folks that are here writing code because it's something they love to do.

01:05:44.46
Kelvin Omereshone
And.

01:05:56.40
Chris Morrell
Um, making sure that it stays fun is important I think that it's easy to undervalue that at a certain point. Um, so I think there's something to be said for it. But at the same time There is a real balance between that and.

01:05:59.29
Kelvin Omereshone
You know? okay.

01:06:14.12
Chris Morrell
You know if I just pick something simple I can just get get the work done and be done with it. You know.

01:06:21.30
Kelvin Omereshone
Yeah, so um, like what I want to see is more just like whatillo said 1 person be in the next git or the next you know the next slack like I framework to empower you that well it's something i. I've wanted because I always like to build what I would use is what I want for the boring stack and it's happening so someone reach out to me a while ago and he turned out at the very first crappy version of the bois that that they load a box. They literally moved they sort of like water. Delivery service in the Uk which was like a desktop app or something they moved it to the boage stack and they've been using it silently they're able to buildot everything they are using it to handle their riders. You know, take payments and take orders were shipping 2 brothers. If they were just shipping this up and that's what I want like that's empowerment that you don't have to go piece everything together pay for this tool pay for that too. You have all the building blocks for free and you build businesses on it right? So it's more I want more people building so it's is ideal for indie hackers.

01:07:16.84
Chris Morrell
Ah.

01:07:35.49
Kelvin Omereshone
I do for enterprise because enterprise don't want to be moving. Um always on the bleeding edge every six months you know the okay, there's this big rewrite. We go to do they don't it. It doesn't make sense. Always do that. But if you want something stable I just focus on the business side of the business logic of your app and just ship. With peace of mind because every now and then there's always an issue with the simplesity for example, next year there's always an issue with next oth because the next author authentication is not baked into next you do they? a there's a package for it and this package breaks in production every other day and. Do it. This. not good for business. right it's not good for business so it just yeah, like just like there's every year that I've seen a screenshot of one next year day that is angry like why is next or working in prod and there's someone else who can be like okay this is the best authentication library for next I'm like it.

01:08:15.60
Chris Morrell
No.

01:08:31.28
Kelvin Omereshone
We should be ashamed of ourselves that was talking about authentication this late in the game. Why are we still finding what how to do Earth Author has been solved. What are you doing you in he.

01:08:34.10
Chris Morrell
Right now.

01:08:41.63
Chris Morrell
Right? And it shouldn't be. It shouldn't be a recipe page on your Docs you know it should be This is how auth is done. This is not. It's not this is one way to do off like just because not to say that there aren't multiple viable ways to do off. But.

01:08:50.93
Kelvin Omereshone
Yeah, no.

01:09:01.43
Chris Morrell
Shouldn't be like ah well here's here's an example of how you might do auth in our framework. You probably need to you know make it a little bit more solid for production. But here's a good starting point. You know that's not we shouldn't be there. Yeah.

01:09:04.27
Kelvin Omereshone
Yeah.

01:09:13.38
Kelvin Omereshone
Now Yeah, it is just crazy So We we mostly see so anytime people start debating? What's often new hot and New I Just be like well they are just writing them was app for conference stages or for benchmarking needs. So They don't really. They't Only get it that this we are just we should just be ashamed of ourselves at this point about all the things we celebrate like I saw this video by someone of ver episode where it was talking about lifting states to the yeah url and it had a lot of likes and views and comment I were like. Really, What are we talking about here. This is web dev 1 or 1 you everybody know you could do query strings right? or don't we while we celebrating this stuff as if it's something Magical. So Just tell you how like.

01:09:59.47
Chris Morrell
Ah, ah, right right? yeah.

01:10:05.43
Kelvin Omereshone
Oblivious Well of the fact of full stack experience. We don't even know that state could be on the Ul anymore. It's just weird. Do she's also read the theme about web Dev the javascript they've done't know because they forgot too much on the Ui Yeah yeah.

01:10:19.23
Chris Morrell
That's so funny too. It's also funny because I feel like I I Very distinctly remember the time when we were all trying to get state out of the query string because like it looks gross and like you know felt yeah, that's so funny. Oh.

01:10:28.55
Kelvin Omereshone
No pleading back.

01:10:36.83
Chris Morrell
Well is there ah is there anything else that you you want to touch base on this has been a really interesting conversation.

01:10:37.29
Kelvin Omereshone
Ah, and.

01:10:41.78
Kelvin Omereshone
Me Yeah I love this as well. So yeah, they just I think there's it's my job. You know as lead maintain and my job is more of course I'm working a lot of cool stuff or tech. But it's more like an awareness by because I think we're having um.

01:10:59.34
Kelvin Omereshone
Javascript for fatigue and that's because I have never had Javascript for fatigue since 2018 because I was just lucky to have found sales and I just had anytime I write so I like I write javascript so it just I'm always writing Javascript which I like. So. A lot of fatigue. You know teams are getting weary people are just embrace in the shining. So what I want is more people to like keep an open mind I use established tech. You don't have to what's trend doesn't have to be the thing you go use because it's just what is. It out like the state of gs people using that for for like making their decisions and we need more stable stuff more less flexing of you know the the more performance like we care about performance too much in Javascript or whatever we know what that means anymore. And in the in the very interesting parties. Foted performance. You know is just weird. So let's more let's start caring more about a full stack. You know, start caring about databases about all about obsess about cash like anytime I watch la on eu or like on us or realw world. And I go watch Javascript ah, and I is not is. It's this's not exciting like there's so much cool things coming out from your world and real world right? like it's just exciting because this is extracted from like business use cases or like Telo.

01:12:31.16
Kelvin Omereshone
Working on forge or or all the other Sas ds is working on Baseca or hey they can extract real value. But what we have here is rsc and we're debating it since it's almost a year now debating what rs is. We got to grow up that just did we got to grow up.

01:12:56.14
Chris Morrell
Ah, well it seems it seems like it's starting to happen a little bit so I'm curious to see what the next couple years look like in the ah the Javascript world all right? Well um, how ah what's the best place for folks to find you on the internet.

01:12:58.75
Kelvin Omereshone
Yeah, yeah, sure.

01:13:11.21
Kelvin Omereshone
Yeah, just mostly Twitter at Dominos underscore Kelvin Dominos Onaskovvin no youtube I have a healthy Youtube I do a lot of teach giving your thin session inviting people I just had a session with with the makeup hgmx.

01:13:13.50
Chris Morrell
Where do you where should they go? yeah.

01:13:29.80
Kelvin Omereshone
Was very interesting session I also had um, very cool session with a an engineer from ten seven signals on hot wire or tobu superb. So yeah, you could you? Yeah so like I like learning about these different tech and different ways of doing things. It just makes you so.

01:13:40.70
Chris Morrell
Um.

01:13:48.92
Kelvin Omereshone
I say that we are all neighbors on the internet. So I want to see how my neighbor is building on the web because it's always fun to see all these different approaches. So yeah, thanks.

01:13:57.71
Chris Morrell
Um, yeah, absolutely and then um, where's the best place to find out about sales and the boring stack.

01:14:03.19
Kelvin Omereshone
So you could go to sales shares dot com for sales. The web framework the boring stock you go to yeah to salescast.com/boring. it takes you to the gitub Repo which could also take you to the docks right? So the dogs is dogs dot sales guys dot com slash boring stack.

01:14:07.64
Chris Morrell
Okay.

01:14:20.51
Kelvin Omereshone
Yeah, so it's it's all there yet for sure. Thank you.

01:14:20.79
Chris Morrell
Okay, okay I'll and I'll add that to the show notes and then um, is there anything else that you want to sort of Rap or promote like what's Ah, what's what is your day job. What what do you do when you're not working on all this stuff.

01:14:33.71
Kelvin Omereshone
Yeah, so my day job I am an indie hacker so I'm indie hack notton products like salesco.com which is my educational platform for sales and hackfish thought io which is um it like is an always for creators. So right now the first program I'm solv is.

01:14:42.90
Chris Morrell
Okay.

01:14:53.44
Kelvin Omereshone
Invoicing you know because I send a lot of invoice myself. So just like a place to manage it so its hackishy invoice so you could send invoice from this you know had your clients and all that stuff so more a lot of indie hacking products I'm working on my next project which is secret ah going to announce July Third Got project 50 I have render sent and onboard business partner for the project already. So It's something that really excited about yeah to to ship out there. No.

01:15:18.58
Chris Morrell
So awesome. All right? Well I'll add those to the show notes as well. Um, this has been fun. Thanks so much for for hanging out all right here. We go.

01:15:27.74
Kelvin Omereshone
Yeah, thank you Chris This was amazing. Thank you for having me.

Creators and Guests

Chris Morrell
Host
Chris Morrell
Father of two. Mostly talking about PHP/Laravel/React on Twitter. He/him.
Kelvin Omereshone
Guest
Kelvin Omereshone
I help web development teams Ship less JavaScript™️. Lead maintainer, @sailsjs. Indie hacking my way to $1.2M a year and sharing everything I learn.
Full Stack Javascript w/ Kelvin Omereshone
Broadcast by