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
Adegboyega Olusunmade: Lovely to see you as well.
Yeah.
Leo Dion (host): as well.
Adegboyega Olusunmade: Haven't seen you since the Swift Server Conference.
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.
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.
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.
Yeah.
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?
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.
Yeah.
Leo Dion (host): Okay, so you had you, when you built this full Stack app,
you had already had iOS experience.
Is that
Adegboyega Olusunmade: Yes, I did.
Leo Dion (host): Okay, so what made you want to build your backend in Swift?
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?
I can write Swift, so I should just write Swift.
And the backend too.
So that's what I did.
Leo Dion (host): How did you do?
You did the website for Lyriq as well?
Correct.
Adegboyega Olusunmade: Yes, I did.
Leo Dion (host): Okay.
How was it working with your web front end?
Was it JavaScript type script?
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.
Leo Dion (host): And that worked out pretty well as far
as like any JavaScript you had to write clients on the web.
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.
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?
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
Leo Dion (host): you're all doing that, but you're all doing
that vanilla, which is amazing.
Adegboyega Olusunmade: Yeah.
Leo Dion (host): So how did you come up with the idea for Lyriq?
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.
And then, I'll couple of years I just said, let's add more genres
to it and make it more fun.
Leo Dion (host): Okay.
And trivia apps you do, I assume you're a big fan of that,
Adegboyega Olusunmade: oh yes.
Big fan of that category.
Yes.
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.
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.
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.
For my use case, I would say.
Leo Dion (host): Okay.
Any particular packages you had to use or you had to
bring in besides using Vapor?
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,
Leo Dion (host): I wanna go ahead.
Adegboyega Olusunmade: no.
And then just database stuff.
So just like Postgres stuff and that's pretty much it.
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,
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.
Maybe we'll add more authentication methods in the future.
And so assign with Apple was perfect.
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?
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.
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.
'cause people are people, right?
Yeah.
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.
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.
Leo Dion (host): Yep.
That makes total sense.
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.
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.
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.
And there's just like a lot of good integrations with Vapor.
So that was the consideration.
Leo Dion (host): Where are you hosting the site now?
Adegboyega Olusunmade: Currently it's being hosted on fly.
Yeah, McKayla has a lot of thoughts on that, so
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.
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,
Leo Dion (host): types.
Yeah.
Was there any issues setting up your objects and tables?
I assume you use the fluent migration stuff, right?
I do.
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.
You do need to evolve it a couple of times and yeah, so the migrations
are really nice with that.
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?
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.
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.
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.
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?
Do you ever run into issues with that calculation?
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
Leo Dion (host): right,
Adegboyega Olusunmade: so it's, yeah.
So that's gotta, yeah.
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.
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.
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.
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
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?
Adegboyega Olusunmade: Yes.
So you're supposed to figure out the artist.
Leo Dion (host): The artist.
Okay.
How did you source your database?
Like how did you get the data in there?
First of all.
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.
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.
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.
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.
So that was just really convenient as well as the air table.
Yeah.
Leo Dion (host): Is this only internal that people can add lyrics or is it like
in the app itself, you can add lyrics.
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.
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?
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.
And there's also one by some Michael Bubbly.
And
Leo Dion (host): Yeah.
Like a remake or a cover, right?
Adegboyega Olusunmade: like a remake.
Exactly.
So we have instances where we just have different samples
all referenced the same song.
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?
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.
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
Adegboyega Olusunmade: Like techno songs.
Yeah.
I, if you think about some of the Whitney Houston songs, there are like
so many electro techno versions of
Leo Dion (host): yeah.
Of course.
Adegboyega Olusunmade: Whitney songs, for instance.
Yeah.
Leo Dion (host): Yeah.
Anything else database related you wanna talk about?
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.
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.
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.
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?
Adegboyega Olusunmade: So it's just in memory, so it's just not Redis.
So just we've got like native Swift objects yet.
Leo Dion (host): Okay.
Did you have to do anything with Swift six or are you just Swift five?
Adegboyega Olusunmade: Currently it's Swift five.
But yeah.
Leo Dion (host): good.
Adegboyega Olusunmade: Are you having any troubles with Swift six?
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?
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?
Leo Dion (host): Are you using like a Docker file?
Yes.
Adegboyega Olusunmade: Yes.
So we're using a Docker file.
Yeah.
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?
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.
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.
Adegboyega Olusunmade: oh, no.
Wait.
What is the issue we're having with them?
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.
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?
Where would you have them deploy right now?
, 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.
Yeah.
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.
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
Adegboyega Olusunmade: Anywhere.
Leo Dion (host): Yeah, so I, that to me is a big plus with fly io.
Adegboyega Olusunmade: It is.
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.
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
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.
Adegboyega Olusunmade: Yeah.
It's not it's not that bad.
Leo Dion (host): You
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
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.
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
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.
So like the, yeah.
I get where you're coming from though.
X clo Xcode cloud for the server.
Adegboyega Olusunmade: Yeah.
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?
Swift vapor.
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.
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.
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.
Leo Dion (host): How about, did you do any backend like node stuff?
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
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?
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.
That's kinda like a mind chef Swift switch I had and yeah.
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
Adegboyega Olusunmade: Yeah, exactly.
Exactly.
Leo Dion (host): Yeah,
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
Leo Dion (host): Yeah.
That's why I've gone with TypeScript for my.
Web development stuff
Adegboyega Olusunmade: Oh, that's good.
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.
So it's, TypeScript has been fantastic.
Adegboyega Olusunmade: Yes,
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.
'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.
So once you get over that, I think that's a big, that's
a big mind shift as well.
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.
Leo Dion (host): Yeah.
Yeah.
You, before we close out, you wanted to mention another app you're working on?
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.
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.
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.
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.
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.
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.
Leo Dion (host): Yeah.
Yeah, totally.
Anything else you wanna mention before we close out?
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.
Tho those are like really interesting.
W do you, what do you think about those things?
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.
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.
Yeah.
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.
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?
Adegboyega Olusunmade: No.
So I think that's pretty much it.
So yeah it's been lovely talking to you, Leo.
Leo Dion (host): Yeah.
Lovely talking to you too.
Where can people find you online?
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.
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.
Adegboyega Olusunmade: yes.
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.
Adegboyega Olusunmade: Bye guys.