Empower Apps

Adegboyega Olusunmade joins to talk about building his Full Stack Swift app Lyriq and what did he learn along the way: the differences between building an iOS app and a server app to deploying a server application.

Guest

Announcements

Links

Related Episodes

Social Media

Email
leo@brightdigit.com
GitHub - @brightdigit

Twitter
BrightDigit - @brightdigit

Leo - @leogdion

LinkedIn
BrightDigit

Leo
Patreon - brightdigit

Credits

Music from https://filmmusic.io
"Blippy Trance" by Kevin MacLeod (https://incompetech.com)
License: CC BY (http://creativecommons.org/licenses/by/4.0/)

  • (00:00) - Building Lyriq: Challenges and Decisions
  • (16:55) - Exploring Swift and Database Management
  • (22:24) - Transitioning from iOS to Server-Side Swift
Thanks to our monthly supporters
  • Holly Borla
  • Bertram Eber
  • Edward Sanchez
  • Satoshi Mitsumori
  • Steven Lipton
★ Support this podcast on Patreon ★

Creators & Guests

Host
Leo Dion
Swift developer for Apple devices and more; Founder of BrightDigit; husband and father of 6 adorable kids
Guest
Gboyega
Amateur @forloveco@playlyriq
Guest
Natan Rolnik
3x Dad | @natanrolnik@mastodon.social | iOS @MondayDotCom | Writing @SwiftToolkit | Brazilian making his dreams come true in Israel

What is Empower Apps?

An exploration of Apple business news and technology. We talk about how businesses can use new technology to empower their business and employees, from Leo Dion, founder of BrightDigit.

[00:00:00] Building Lyriq: Challenges and Decisions
---

[00:00:00] Leo Dion (host): Welcome to another episode of Empower Apps. I'm your host, Leo Dion. Today I'm joined by a Adegboyega Olusunmade. Boyega is so good to see you

[00:00:13] Adegboyega Olusunmade: Lovely to see you as well. Yeah.

[00:00:16] Leo Dion (host): as well.

[00:00:16] Adegboyega Olusunmade: Haven't seen you since the Swift Server Conference.

[00:00:20] Leo Dion (host): Yes. And today we're gonna be talking about your wonderful talk at Server Side Swift, and your experience building a full stack app Lyriq. Before we get into that, I'll let you go ahead and introduce yourself.

[00:00:32] Adegboyega Olusunmade: Great. So my name is Boyega. I currently work as an indie developer working on two projects, Lyriq, a music gaming app, and glad Mind a journaling app. So prior to this, I used to work as a senior dev. At a FinTech company called Go Money. And there I helped build out a digital wallet for them.

[00:00:53] Adegboyega Olusunmade: And, but before that I have a little bit of web experience working at an agency, right? So all of that kind of tied into the talk I gave in the service side Swift Conference, which ex, which essentially was about how I built Lyriq a music trivia website and application. Yeah, so just about me.

[00:01:12] Adegboyega Olusunmade: Yeah.

[00:01:13] Leo Dion (host): Okay, so like how, when did you get into iOS development or were you always was it just building this one app was your first experience or did you have other experience building iOS apps?

[00:01:25] Adegboyega Olusunmade: That's a great question. So I got into iOS Dev 2015. I would say just as a more sort of a casual level. So essentially building out little projects before I got my first iOS gig. 2019. So prior to that, I built out I just built out like small apps and then I got my first iOS gig for a company and built out like the digital Solve a Dig digital wallets app for them, but then be, but that's been my iOS experience.

[00:01:54] Adegboyega Olusunmade: Yeah.

[00:01:55] Leo Dion (host): Okay, so you had you, when you built this full Stack app, you had already had iOS experience. Is that

[00:02:01] Adegboyega Olusunmade: Yes, I did.

[00:02:02] Leo Dion (host): Okay, so what made you want to build your backend in Swift?

[00:02:09] Adegboyega Olusunmade: That's a great question. So when I started, I had me and a backend engineer. We had first started it, but we were, we had some trouble going back and forth as quick as was necessary. He's a JavaScript, the classic JavaScript stack? No, the engineer. But I just felt the communication wasn't moving as fast as I wanted it to, and so I just decided, you know what?

[00:02:31] Adegboyega Olusunmade: I can write Swift, so I should just write Swift. And the backend too. So that's what I did.

[00:02:35] Leo Dion (host): How did you do? You did the website for Lyriq as well? Correct.

[00:02:40] Adegboyega Olusunmade: Yes, I did.

[00:02:41] Leo Dion (host): Okay. How was it working with your web front end? Was it JavaScript type script?

[00:02:48] Adegboyega Olusunmade: So on the front, on, on the front end is, so it's pretty much vanilla. So it's vanilla, HTML, vanilla, j js. So yeah. Just pretty much the basics just connected to the backend through leaf. A template and engine that vapor uses. So pretty much that mm-hmm.

[00:03:07] Leo Dion (host): And that worked out pretty well as far as like any JavaScript you had to write clients on the web.

[00:03:13] Adegboyega Olusunmade: Yeah, so on the web it, it worked out really nice. 'cause most of the, the JavaScript, the game mechanics are pretty simple. So the JavaScript I wrote for the front end was just pretty basic JavaScripts, right? So just in terms of figuring out game mechanics for the trivia part of the app. And then the rest of the logic was mostly server defined blood.

[00:03:34] Leo Dion (host): it sounds like basically you're using Leaf for those who don't know, leaf is like an HTML templating engine for Vapor, and you're pretty much using that to, to build your pages. And then the JavaScript sounds pretty minimal, so you're not doing anything fancy making HX calls or something like that, or calling a REST API on the Java script, it's all just flat out HTML, is that correct?

[00:03:57] Adegboyega Olusunmade: That is correct. Although I do make a few API calls a few rest calls from the JavaScript and a little bit of some dumb manipulation with the JavaScript as well. Just, yeah, just a

[00:04:08] Leo Dion (host): you're all doing that, but you're all doing that vanilla, which is amazing.

[00:04:12] Adegboyega Olusunmade: Yeah.

[00:04:13] Leo Dion (host): So how did you come up with the idea for Lyriq?

[00:04:17] Adegboyega Olusunmade: So I've always loved music. I still do, and it was just, I just always wanted to build something revolving around the idea of music and. Building in that space. And like it actually came about a while ago actually, so 2018 I just had the idea of doing something which was just like, just, it was, it started off hiphop, so I was just like, I'll do some hiphop songs and people could play, I could play with my friends.

[00:04:40] Adegboyega Olusunmade: And then, I'll couple of years I just said, let's add more genres to it and make it more fun.

[00:04:46] Leo Dion (host): Okay. And trivia apps you do, I assume you're a big fan of that,

[00:04:50] Adegboyega Olusunmade: oh yes. Big fan of that category. Yes.

[00:04:53] Leo Dion (host): Okay. Okay. So what was like your biggest mind shift going from. Building a backend, I guess a note's going to Swift.

[00:05:03] Adegboyega Olusunmade: I, the, I think the biggest mindset was the packages, I would say. From the note ecosystem, there's a lot of libraries, a lot of things you can get into already so easily, but, with Swift and the server, just certain. Certain things that weren't available when I started writing it.

[00:05:20] Adegboyega Olusunmade: But of late, there have been more things in the community, but I guess that was like a little bit of a mind shift. But as soon as I started writing it and, in my use case was pretty, it was pretty trivial, let's say. And so I just started figuring out that if I wanted something, I could write it and they're just like, vapor is also quite robust.

[00:05:39] Adegboyega Olusunmade: For my use case, I would say.

[00:05:42] Leo Dion (host): Okay. Any particular packages you had to use or you had to bring in besides using Vapor?

[00:05:49] Adegboyega Olusunmade: So we do sign in with Apple. So we, which uses JWT the web tokens for authentication. And so I did have to get the authentication package, the JWT Apple authentication package. And so that was, so that, that was pretty much the only package aside from Vapor that we used. And,

[00:06:09] Leo Dion (host): I wanna go ahead.

[00:06:12] Adegboyega Olusunmade: no. And then just database stuff. So just like Postgres stuff and that's pretty much it.

[00:06:18] Leo Dion (host): So how, what was the decision for using sign in with Apple? I'm curious. 'cause as I used sign in with Apple with my apps. For me it was just the ease of authentication. And just it wasn't that bad, honestly, getting it set up like what was your decision process and experience using Sign-in with Apple. Yeah,

[00:06:38] Adegboyega Olusunmade: Yes so just like you. I think that kind of contributed the ease of use contributed a lot. And just because when I was building the app, it was going to be iOS first. We have plans to bring it to other platforms, but it's gonna be iOS first. And we just decided, that just. Reduce the complexity that we need to get started.

[00:06:57] Adegboyega Olusunmade: Maybe we'll add more authentication methods in the future. And so assign with Apple was perfect.

[00:07:02] Leo Dion (host): Yeah. I was gonna ask, so like a little bit getting ahead of the gun here, but would you ever build like an Android app and then have to support sign in with Google, you think? Is that kind of a dream, an aspiration or is it like, eh, we got more important things to do?

[00:07:19] Adegboyega Olusunmade: No. So I think we probably will have to support Google sign up very soon just because of on the web we are going to have people do that, want to get in. So I guess that's one reason too.

[00:07:30] Leo Dion (host): Yeah. Do you have any like plans? I don't know I'm, this is something I need to look up, but like how do services allow for multiple authentications but the single account, I had to figure that out at some point because I just know people are gonna sign it with Google on one's place and then use sign it with Apple and another.

[00:07:48] Leo Dion (host): 'cause people are people, right? Yeah.

[00:07:52] Adegboyega Olusunmade: That is true. Currently the mental model I have for that is we might have we will probably initially start with a very naive approach of having to, you could, if you create another account with another service, you would have two accounts essentially, but the reconciliation of making it into one account.

[00:08:09] Adegboyega Olusunmade: Is something that we might do down the line where if you've signed in with one of those, you could like, you could have a single user model that has a sign in with Apple token or like a Google sign in token. Something like that.

[00:08:22] Leo Dion (host): Yep. That makes total sense.

[00:08:24] Leo Dion (host): Okay, so you mentioned besides sign it with Apple, you had to bring in some database stuff. Let's talk about that. How, what kind of database did you end up using and why did you pick that one? Let's just start with that first.

[00:08:39] Adegboyega Olusunmade: yeah, no, let's start with that. So I ended up going with Postgres for the database. It was, I. It wasn't really too much of a difficult decision because like one of, we initially right now SQL Lights is getting a lot of like praise and being very minimal and easy to deploy in the backend.

[00:08:57] Adegboyega Olusunmade: But when I was building it, post I initially wanted it, I put it on Mongo DB on on Heroku and. Heroku had really good Postgres support and so that was like the main reason we went with Postgres. Just 'cause of Heroku support was like really good. But using it currently with Vapor is also just a breeze because of it gets to use like Fluence for instance.

[00:09:18] Adegboyega Olusunmade: And there's just like a lot of good integrations with Vapor. So that was the consideration.

[00:09:23] Leo Dion (host): Where are you hosting the site now?

[00:09:27] Adegboyega Olusunmade: Currently it's being hosted on fly. Yeah, McKayla has a lot of thoughts on that, so

[00:09:33] Leo Dion (host): Yes. Yes. How do you I don't want to let's stick with the database stuff. So you're, you use fluent, right? For your da, let's explain kind of maybe if you wanna try, explain what fluent is. Yes.

[00:09:46] Adegboyega Olusunmade: So fluent is an ORM, so object, relational mapper for your database. If you're writing Swift or any objective. Object oriented language, you converting objects to like what their database counterpart is. Fluent helps with that. So it's so it's vapors, it's a vapor library, so it really just helps with the conversion from from objects to to Postgre native,

[00:10:10] Leo Dion (host): types. Yeah. Yeah. Was there any issues setting up your objects and tables? I assume you use the fluent migration stuff, right? I do.

[00:10:20] Adegboyega Olusunmade: I do. I do. I've had to migrate. I've had to migrate a couple of times. Just 'cause I think that's the thing with building like relational databases is, you have an idea of a structure. But until you actually deploy before, this is the right structure for this particular use case.

[00:10:36] Adegboyega Olusunmade: You do need to evolve it a couple of times and yeah, so the migrations are really nice with that.

[00:10:42] Leo Dion (host): Yeah, I agree a hundred percent. But like as far as like setting up the objects and tables, were there any fields that you're like, it does it this way and I want it this way, or any like weird parent-child relationships?

[00:10:55] Adegboyega Olusunmade: Yeah. Yeah. So like a particular use case, so we have like eras errors for for the songs that we do. And one, one way to do that would be to like, make a. Make a table and have a parent-child relation with the eras of the songs. And, but so that, that was like one implementation.

[00:11:18] Adegboyega Olusunmade: But another way would be to have the songs be, have years of on the songs and then compute it in a way where it's where you just compute the ranges of songs that fall in between that. And I guess, database professional might be like, just make an ever table.

[00:11:32] Adegboyega Olusunmade: And that's really, that works. But if you do like the year thing, it's like a lot more, the data is a lot more malleable in the future. You could do like a lot more stuff with it instead of just like creating like a table that just has early 2000s or the nineties era tag on it. So I guess that was one where we just, it was, it would be nice to be more flexible than less.

[00:11:54] Leo Dion (host): Are there songs that are like a song that came out in 1990 that still sounds very 1980s or even 91? Or is there like a song maybe that's like a bit like early eighties but has like still a lot of like it's kind of disco, so people as seeing it with seventies, do you know what I mean?

[00:12:12] Leo Dion (host): Do you ever run into issues with that calculation?

[00:12:15] Adegboyega Olusunmade: There's some songs that are early two thousands that do sound like really nineties, and people are like people would tell me like, wait, no, this song was like in the nineties. And I'm like, no, it's actually in the two thousands. But I guess that, yeah, so that's that's just like a cultural thing where people feel like a song

[00:12:34] Leo Dion (host): right,

[00:12:35] Adegboyega Olusunmade: so it's, yeah.

[00:12:36] Adegboyega Olusunmade: So that's gotta, yeah.

[00:12:39] Leo Dion (host): Were there any other like quirks with the database that you had to take into consideration with the way music and songs are? I can think of a ton of issues, but Go ahead. Yeah.

[00:12:50] Adegboyega Olusunmade: yeah, so I think sourcing for instance, was like a thing where we had to figure out, 'cause we're trying to, so we're trying to get as much as many songs as we can. And one way to when, there are a lot of ways to go about that, for instance. But figuring out like the, a particular lyric it's like more.

[00:13:07] Adegboyega Olusunmade: More work than you think because you have to get like a particular song lyric that sounds good, isn't too recognizable, but isn't not too recognizable. So you have to strike like a healthy balance. And so that was like a very manual process of like actually going through tons of songs. So if you made it like an automated process that it was just like that, we maybe would call in some API and going through songs manually with a machine assisted.

[00:13:33] Adegboyega Olusunmade: Wait, it wouldn't be to get the same effect. So I would say that was like one thing, working with Datat was different, AI is here, so who knows what happens

[00:13:42] Leo Dion (host): So let me get so the way the app works is it gives you a piece of lyric and you're supposed to figure out the song. Is that correct?

[00:13:49] Adegboyega Olusunmade: Yes. So you're supposed to figure out the artist.

[00:13:52] Leo Dion (host): The artist. Okay. How did you source your database? Like how did you get the data in there?

[00:13:56] Leo Dion (host): First of all.

[00:13:58] Adegboyega Olusunmade: So Mo most of it is actually pretty man. So it's a man process. So we've got a couple of, we had, so just me and my team, we had a bunch of people go through particular songs, particular particular playlist of like popular songs and then try to get like a particular. Using our methodology, try to get like a particular lyric that fits into what our brand is.

[00:14:20] Adegboyega Olusunmade: So just just trying to source without profanity against songs that are like catchy but not too catchy, stuff like that. So I guess it was, that's kinda like the source I would say.

[00:14:30] Leo Dion (host): How this, I'm getting really technical and specific here, but so your team did it have a spreadsheet and then you imported the spreadsheet into Postgres, or what did you do exactly.

[00:14:41] Adegboyega Olusunmade: So we, we had an air table. So we had an air table and we also have, I. We also have a collecting app. So we have an app where you just, it's a simple form, right? So you'd enter into the form and then you could put it to the database, right? So you just like, so if you sort, if you're working around and you get like a really nice song, you get a really nice letter, you could just use the app and just enter in the details and it goes to the backend.

[00:15:05] Adegboyega Olusunmade: So that was just really convenient as well as the air table. Yeah.

[00:15:09] Leo Dion (host): Is this only internal that people can add lyrics or is it like in the app itself, you can add lyrics.

[00:15:16] Adegboyega Olusunmade: So it's only internal for now, but I could see a future. Yeah. I could see a future where people could DM us to submit lyrics and just that's much more, doing things that don't scale, the classic, yeah.

[00:15:29] Leo Dion (host): Yeah. Yeah. Any other, like, how do you deal with something like various art, like an album that has multiple singers? I assume you have a parent child relationship, so you could have one song with multiple artists. Is that how you do it?

[00:15:42] Adegboyega Olusunmade: yes. So you could have one song for multiple artists. You can also have. One song with multiple, and I tweeted about this. So one song with multiple errors. So there there's songs like, so lemme give you an instance. So there's a song, there's a song feeling good Nina Simone.

[00:16:01] Adegboyega Olusunmade: And there's also one by some Michael Bubbly. And

[00:16:04] Leo Dion (host): Yeah. Like a remake or a cover, right?

[00:16:07] Adegboyega Olusunmade: like a remake. Exactly. So we have instances where we just have different samples all referenced the same song.

[00:16:14] Leo Dion (host): That feels like the kind of song too that would've been sampled by a DJ and then used there. Like how do you deal with something like that? You know what I mean?

[00:16:25] Adegboyega Olusunmade: Yeah. Yeah. So that's the, that's, so that's an interesting question. In those cases, we just make a Neil song, so it's essentially a Neil song. We'll, yeah, so this a separate thing.

[00:16:35] Leo Dion (host): Because I feel like that's, that song's been used in a sample in a few not even, I wouldn't say like a hip hop or rap, but like something like a techno type

[00:16:42] Adegboyega Olusunmade: Like techno songs. Yeah. Yeah. I, if you think about some of the Whitney Houston songs, there are like so many electro techno versions of

[00:16:51] Leo Dion (host): yeah. Of course.

[00:16:52] Adegboyega Olusunmade: Whitney songs, for instance. Yeah.

[00:16:54] Leo Dion (host): Yeah.

[00:16:55] Exploring Swift and Database Management
---

[00:16:55] Leo Dion (host): Anything else database related you wanna talk about?

[00:16:58] Adegboyega Olusunmade: Yeah do we do a lot, some database stuff? We also do some. And in memory stuff as well with some of the data. So because of working with Swift objects is also like really nice for certain parts of the app. Trying to get some stuff up and running, just like experimental features.

[00:17:13] Adegboyega Olusunmade: We might just write it as like a native Swift type and just test that out. So if you wanted to do like a little thing that we didn't really need a database for and because of the app size itself. Isn't quite large. We could like work in memory on certain things and then just test that out.

[00:17:29] Adegboyega Olusunmade: And that really allows for like really quick deployments and real, really quick changes just to make sure something is up and running live really quick. So that is just another consideration with databases.

[00:17:40] Leo Dion (host): Did you use like red for any of that or is it just all memory? You're talking about using memory and testing?

[00:17:46] Adegboyega Olusunmade: So it's just in memory, so it's just not Redis. So just we've got like native Swift objects yet.

[00:17:52] Leo Dion (host): Okay. Did you have to do anything with Swift six or are you just Swift five?

[00:17:57] Adegboyega Olusunmade: Currently it's Swift five. But yeah.

[00:17:59] Leo Dion (host): good.

[00:18:02] Adegboyega Olusunmade: Are you having any troubles with Swift six?

[00:18:04] Leo Dion (host): I've done a little bit of backend stuff in SW six, but yeah, it's it's something there's something I want to ask about, you mentioned Fly io Heroku. How's your deployment process been?

[00:18:14] Adegboyega Olusunmade: It's it's been it's been interesting. We don't use any CICD at the moment just 'cause it's just me for like backend stuff. So essentially it's w with when it used to be Heroku, it was just a simple get push command and, that would update the Heroku as well, but with fly, locally, we just do the fly deploy thing and it spins up instances like really fast. And so that's, it's a little too convenient 'cause you get, you can push the production like really easily. So that's currently how it is?

[00:18:42] Leo Dion (host): Are you using like a Docker file? Yes.

[00:18:45] Adegboyega Olusunmade: Yes. So we're using a Docker file. Yeah.

[00:18:48] Leo Dion (host): Are you using remote builders on fly io or are you just doing the builds locally and then uploading them? Or how do you do that?

[00:18:57] Adegboyega Olusunmade: No, so it's, so it uses remote builders. So FLY has like some magic where they don't actually use containers, but they use containers and so yeah. So the remote builders like do all of the work for us.

[00:19:09] Leo Dion (host): I've had issues with the remote builders lately. So hopefully your yours are still working. What were you gonna say? Go ahead.

[00:19:18] Adegboyega Olusunmade: oh, no. Wait. What is the issue we're having with them?

[00:19:22] Leo Dion (host): so I think Fly io they outsourced the builders recently in the last few weeks, and it'll just hang on me whenever I do a remote builder. So I've started going to doing local bills of my containers and then doing it that way.

[00:19:37] Leo Dion (host): Yeah, I don't know. It's not great. Yeah, and I use ci, so like I do all that stuff. But yeah. Cool. Any do wanna ask, and speaking, Mikayla did a really good episode where we talked about choosing the right backend. What's your thoughts on somebody who was getting started?

[00:19:54] Leo Dion (host): Where would you have them deploy right now?

[00:19:56] Adegboyega Olusunmade: , so McKay and I actually, like we talked about, we actually talk about this a lot actually, but I think I would still go with Fly for a first time. Even if you're, even if you're like, if you're write a Swift, I think Fly is really good for a first time, just to get started.

[00:20:12] Adegboyega Olusunmade: Yeah.

[00:20:13] Leo Dion (host): I do Heroku is easier but. The thing that I like about Fly, and I am on my bucket list of things I want to do. I want to compare, there's several other ones I have on my list to compare. But what I like is the whole Docker thing. I think it's definitely a learning curve, but once you get over Docker, it's actually really nice and the fact that you can just have it in a Docker file means that I can move it anywhere I want and I don't have to be tied to fly.

[00:20:43] Leo Dion (host): Whereas with Heroku, Heroku is pretty. Pretty portable, but like the whole build pack thing is weird. It's just not like a first class citizen and it feels awkward and Swift, whereas at least like Docker file, everybody uses a Docker file. You can use a Docker file. I can use a Docker

[00:21:00] Adegboyega Olusunmade: Anywhere.

[00:21:01] Leo Dion (host): Yeah, so I, that to me is a big plus with fly io.

[00:21:06] Adegboyega Olusunmade: It is.

[00:21:06] Leo Dion (host): probably the cost. I think it's like basically free kind of to get started yeah. I'll hold my breath to see how long that lasts, but Yeah.

[00:21:13] Adegboyega Olusunmade: Yeah. Yeah. I mean it, I think they did like a price thing that they changed. They changed like a price a while back, but it's basically still free for some reason. So that's good. But you, like

[00:21:24] Leo Dion (host): Heroku. Nothing against Heroku. I know there, there was this big exodus from Heroku, but like it's not that expensive. It's seven bucks a month. Come on.

[00:21:32] Adegboyega Olusunmade: Yeah. It's not it's not that bad.

[00:21:34] Leo Dion (host): You

[00:21:34] Adegboyega Olusunmade: But like you said, yeah, so like you were saying just Heroku not being like first class citizens to like, say Swift deployments. I'm sure if you're like a sort of a Ruby Dev, it would be

[00:21:45] Leo Dion (host): That's their cup of tea, right? Is Ruby, and maybe like Node would be number two, but yeah, they're big in a ruby, so yeah.

[00:21:53] Adegboyega Olusunmade: Yeah, exactly. So I mean until we have like our own like Swift deploy thing, then maybe we would have more fun, I would

[00:22:01] Leo Dion (host): Yeah. I mean I don't even want that though. Like I like the docker file 'cause it's everybody uses that. That's great that there's a server side Swift backend, but I don't wanna be only server side Swift backend. I want it to be used by anybody and like I want Swift to be used everywhere.

[00:22:17] Leo Dion (host): So like the, yeah. I get where you're coming from though. X clo Xcode cloud for the server.

[00:22:23] Adegboyega Olusunmade: Yeah.

[00:22:24] Transitioning from iOS to Server-Side Swift
---

[00:22:24] Leo Dion (host): So what tips do you have? So you started off doing web development, then you did iOS development, and then you did server side Swift development. Tips do you have for somebody who's going from, let's start off, let's, what tips do you have for somebody who's going from iOS to server site?

[00:22:40] Leo Dion (host): Swift vapor.

[00:22:41] Adegboyega Olusunmade: If you're going from iOS and service it's more of a mindset shift and, just a big one in terms of what you are responsible for, I would say. If you're in iOS, there's a lot of that's taken care of for you, just in terms of say. Memory management, for instance, or like just working with databases, working with the view, working with a lot of packages, things like that.

[00:23:03] Adegboyega Olusunmade: So I guess the ownership is like the switch in your mind and sometimes people don't really make that assumption, but it's just switching ownership in terms of what you're responsible for. And so I think that's the biggest switch. And then fig, I think then that also just working with community, like there's a lot of.

[00:23:19] Adegboyega Olusunmade: There's a lot of great packages that are written for Swift. So you know, if you do check the Swift package index and you see something that's nice, you could always pick it up like really easy. So I guess that's like a mindset shift that you should have just, yeah.

[00:23:34] Leo Dion (host): How about, did you do any backend like node stuff?

[00:23:38] Adegboyega Olusunmade: I did a little bit of node. I did, and this is particularly relevant to say LEAF for. I did a lot, I did some PHP work and WordPress. So templates and libraries like Leaf have some of some similarity to PHP and

[00:23:51] Leo Dion (host): That makes sense. What was your big mind shift from that? From PHP and Node to doing Back-End and Swift stuff?

[00:23:57] Adegboyega Olusunmade: So I guess this is gonna sound. I feel like just Swift is like a really nice language just for Back-End. Just 'cause of just it's our handling is something that's, that just really felt really natural. So just ensuring that, you are working with ours like as a native citizen native type really.

[00:24:17] Adegboyega Olusunmade: That's kinda like a mind chef Swift switch I had and yeah.

[00:24:22] Leo Dion (host): Yeah, especially if you're working on WordPress, PHP, I could see how like PHP is loosey goosey and JavaScript is at least used to be loosey goosey, right? Whether it's type system where Swift is like it's all about compile, break on, compile, not break on run. So

[00:24:38] Adegboyega Olusunmade: Yeah, exactly. Exactly.

[00:24:40] Leo Dion (host): Yeah,

[00:24:41] Adegboyega Olusunmade: Yeah. Except maybe if you're like, yeah, if you're like a TypeScript person for instance, maybe that's slightly different JavaScript people really do like JavaScript, I would say. But yeah, it's, dynamically type, so you do have to watch out for the bugs and stuff

[00:24:54] Leo Dion (host): Yeah. That's why I've gone with TypeScript for my. Web development stuff

[00:24:59] Adegboyega Olusunmade: Oh, that's good.

[00:25:00] Leo Dion (host): I love it. It's really matured a lot. I get a lot of that type safety in there. There's some weird stuff with the way you have to support it in libraries and all that, but I just, I love that safety net and I want it.

[00:25:12] Leo Dion (host): So it's, TypeScript has been fantastic.

[00:25:15] Adegboyega Olusunmade: Yes,

[00:25:16] Leo Dion (host): Like one other thing I was gonna say, if we wanna get started, I think what a lot of people don't get is that you're building a command line tool, essentially. I think if you've done that like with a Swift package, then it's not, I. Too much of a bridge to cross to go into server site, Swift.

[00:25:33] Leo Dion (host): 'cause in a sense, that's like what your end result is, right? Is a command line app. And I think for a lot of people, they like have, especially if they've only done iOS development for them, it's like I build an app, I put it on a phone, I upload it to Apple, it gets approved. It's like nothing like you're just building a command line tool and just happens to have a, like a network support, networking support to it.

[00:25:55] Leo Dion (host): So once you get over that, I think that's a big, that's a big mind shift as well.

[00:26:00] Adegboyega Olusunmade: Yes. Yes. That that's a perfect way to to think about it. Just packages that are like command line tools and that's a good way to think about it. Yeah.

[00:26:09] Leo Dion (host): Yeah. Yeah. You, before we close out, you wanted to mention another app you're working on?

[00:26:17] Adegboyega Olusunmade: Yes. So also, so for the last year, which is funny, I don't know, I feel like this year has been the year of journaling apps and all for some reason. Yeah. But I've been working on a journaling app. It's called Glad Mind. So it's one of the, one of these apps where you could do like a bunch of.

[00:26:33] Adegboyega Olusunmade: Things, but it's also very minimal. So you could do like notes, you can make lists on it, do to dos, and you can go back through time. It's it's a very minimal journal taking, journaling for instance, but it's also very fully featured as well. So that's something I've had fun working on.

[00:26:51] Adegboyega Olusunmade: It's also a different mindset of Swift from working in FinTech just in terms of just keeping all your data stored locally and relying on, on, on that infrastructure. I'll say, yeah.

[00:27:01] Leo Dion (host): How do you like we're there's not really a tangent, but it's a little bit, how do you like Swift ui, especially as somebody with a background of web development, like going from CSS and HTML.

[00:27:12] Adegboyega Olusunmade: Yeah. Yeah. So switch Swift ui, the classic thing, it's declarative. So on some level it's very, it's easier to, spin up something. But I think the problem is when people start to think about it in an imperative way, rather than just doing it, just thinking about it in a very declarative way where you are not.

[00:27:30] Adegboyega Olusunmade: Trying to make too convoluted view views that are too convoluted. Working with them as little segments would be the best. Just working on little sections and composing them is the best way to think about switch UI think.

[00:27:43] Leo Dion (host): Yeah. Yeah, totally. Anything else you wanna mention before we close out?

[00:27:47] Adegboyega Olusunmade: So I think that's pretty much it. But I've been seeing like a lot of really nice packages on on Swift org. I saw there was these one command line tools, speaking of command line tools, which kind of allowed you to make like graphical just terminal user interfaces and stuff like that.

[00:28:03] Adegboyega Olusunmade: Tho those are like really interesting. W do you, what do you think about those things?

[00:28:06] Leo Dion (host): Love him. I've talked about 'em quite a bit. I think there's a lot going on there. There's quite a few of 'em that we've talked about on this show. I think, I feel like that's definitely a missing piece. And I'm glad you mentioned it 'cause in the next episode we'll have Natan Rolnik on from Swift Toolkit Dev and he's written quite a few posts about, that, that particular piece like for me, I think the missing part is connecting the Swift ui, not the Swift UI necessarily, but the observable stuff. With the terminal. I think that's fascinating. I don't know how to do it. I don't have the time in my life to play around with it, unfortunately.

[00:28:44] Leo Dion (host): But I feel like that would be awesome to have that ability. I. But yeah I've played with it like XT 100 codes where it can change colors and bold and italics and all that stuff. I've played with all that. Yeah, it's a rabbit hole. But yeah, I think that's definitely something like, that's missing right now in, in the community.

[00:29:03] Leo Dion (host): Yeah.

[00:29:04] Adegboyega Olusunmade: Yeah true. But that's interesting. Yeah. Hopefully in a year or two we might we'll be in a different place, so Yeah.

[00:29:11] Leo Dion (host): Yes. Yeah, I think it is interesting that I've seen a lot lately in the last month or so of people interested in that in particular. So yeah hopefully we'll see something soon. Anything else you wanna mention bga?

[00:29:23] Adegboyega Olusunmade: No. So I think that's pretty much it. So yeah it's been lovely talking to you, Leo.

[00:29:27] Leo Dion (host): Yeah. Lovely talking to you too. Where can people find you online?

[00:29:31] Adegboyega Olusunmade: So you can find me online on Twitter at Aade Ade. That's me right there. But you can also search for like my indie website. So it's do for love.co. Yeah. So say you can check it on those two places, Substack, yeah.

[00:29:47] Leo Dion (host): Awesome, awesome. People can find me on Twitter at Leo g Dion Masson. I'm Leo G Dion at C Im Find out LinkedIn, same name. My company is Bright Digit. If you have anything you wanna share on the show, let me know. If you're watching this on YouTube, please and subscribe. Podcast reviews are always welcome and.

[00:30:09] Adegboyega Olusunmade: yes.

[00:30:10] Leo Dion (host): Subscribe to it in the newsletter and join the Patreon. I think there's a lot of great stuff out there that I've been sharing that you should definitely check out. I'll post the link to that in the show notes. But thank you very much and I look forward to talking to you in the next episode. Bye everybody.

[00:30:26] Adegboyega Olusunmade: Bye guys.