Episode Transcript
Available transcripts are automatically generated. Complete accuracy is not guaranteed.
Leo Dion (host) (00:03):
Welcome to
another episode of Empower Apps.
I'm your host, Leo Dion.
Today I'm joined by aAdegboyega Olusunmade.
Boyega is so good to see you
Adegboyega Olusunmade:
Lovely to see you as well. (00:13):
undefined
Yeah.
Leo Dion (host) (00:16):
as well.
Adegboyega Olusunmade (00:16):
Haven't seen
you since the Swift Server Conference.
Leo Dion (host) (00:20):
Yes.
And today we're gonna be talkingabout your wonderful talk at Server
Side Swift, and your experiencebuilding a full stack app Lyriq.
Before we get into that, I'll letyou go ahead and introduce yourself.
Adegboyega Olusunmade (00:32):
Great.
So my name is Boyega.
I currently work as an indiedeveloper working on two projects,
Lyriq, a music gaming app, andglad Mind a journaling app.
So prior to this, I usedto work as a senior dev.
At a FinTech company called Go Money.
And there I helped build outa digital wallet for them.
(00:53):
And, but before that I have alittle bit of web experience
working at an agency, right?
So all of that kind of tied into thetalk I gave in the service side Swift
Conference, which ex, which essentiallywas about how I built Lyriq a music
trivia website and application.
Yeah, so just about me.
Yeah.
Leo Dion (host) (01:13):
Okay, so like how, when
did you get into iOS development or were
you always was it just building this oneapp was your first experience or did you
have other experience building iOS apps?
Adegboyega Olusunmade:
That's a great question. (01:25):
undefined
So I got into iOS Dev 2015.
I would say just as a moresort of a casual level.
So essentially building out littleprojects before I got my first iOS gig.
2019.
So prior to that, I built out I justbuilt out like small apps and then I
got my first iOS gig for a company andbuilt out like the digital Solve a Dig
(01:50):
digital wallets app for them, but thenbe, but that's been my iOS experience.
Yeah.
Leo Dion (host) (01:55):
Okay, so you had you,
when you built this full Stack app,
you had already had iOS experience.
Is that
Adegboyega Olusunmade (02:01):
Yes, I did.
Leo Dion (host) (02:02):
Okay, so what made you
want to build your backend in Swift?
Adegboyega Olusunmade:
That's a great question. (02:09):
undefined
So when I started, I hadme 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, theclassic JavaScript stack?
No, the engineer.
But I just felt the communicationwasn't moving as fast as I wanted it to,
(02:29):
and so I just decided, you know what?
I can write Swift, so Ishould just write Swift.
And the backend too.
So that's what I did.
Leo Dion (host) (02:35):
How did you do?
You did the website for Lyriq as well?
Correct.
Adegboyega Olusunmade (02:40):
Yes, I did.
Leo Dion (host) (02:41):
Okay.
How was it working withyour web front end?
Was it JavaScript type script?
Adegboyega Olusunmade (02:48):
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 justconnected to the backend through leaf.
A template and engine that vapor uses.
So pretty much that mm-hmm.
Leo Dion (host) (03:07):
And that
worked out pretty well as far
as like any JavaScript you hadto write clients on the web.
Adegboyega Olusunmade (03:13):
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 forthe front end was just pretty
basic JavaScripts, right?
So just in terms of figuringout game mechanics for the
trivia part of the app.
And then the rest of the logicwas mostly server defined blood.
Leo Dion (host) (03:34):
it sounds like
basically you're using Leaf for
those who don't know, leaf islike an HTML templating engine
for Vapor, and you're pretty muchusing that to, to build your pages.
And then the JavaScript soundspretty minimal, so you're not doing
anything fancy making HX calls orsomething like that, or calling a
REST API on the Java script, it's alljust flat out HTML, is that correct?
Adegboyega Olusunmade (03:57):
That is correct.
Although I do make a few API calls afew rest calls from the JavaScript and
a little bit of some dumb manipulationwith the JavaScript as well.
Just, yeah, just a
Leo Dion (host) (04:08):
you're all
doing that, but you're all doing
that vanilla, which is amazing.
Adegboyega Olusunmade (04:12):
Yeah.
Leo Dion (host) (04:13):
So how did you
come up with the idea for Lyriq?
Adegboyega Olusunmade (04:17):
So
I've always loved music.
I still do, and it was just, I justalways wanted to build something
revolving around the idea of music and.
Building in that space.
And like it actually came about awhile ago actually, so 2018 I just had
the idea of doing something which wasjust like, just, it was, it started
off hiphop, so I was just like, I'lldo some hiphop songs and people could
(04:38):
play, I could play with my friends.
And then, I'll couple of years Ijust said, let's add more genres
to it and make it more fun.
Leo Dion (host) (04:46):
Okay.
And trivia apps you do, Iassume you're a big fan of that,
Adegboyega Olusunmade (04:50):
oh yes.
Big fan of that category.
Yes.
Leo Dion (host) (04:53):
Okay.
Okay.
So what was like your biggestmind shift going from.
Building a backend, I guessa note's going to Swift.
Adegboyega Olusunmade (05:03):
I, the,
I think the biggest mindset
was the packages, I would say.
From the note ecosystem, there's a lotof libraries, a lot of things you can
get into already so easily, but, withSwift and the server, just certain.
Certain things that weren'tavailable when I started writing it.
But of late, there have been more thingsin the community, but I guess that
(05:23):
was like a little bit of a mind shift.
But as soon as I started writingit and, in my use case was pretty,
it was pretty trivial, let's say.
And so I just started figuringout that if I wanted something,
I could write it and they're justlike, vapor is also quite robust.
For my use case, I would say.
Leo Dion (host) (05:42):
Okay.
Any particular packages youhad to use or you had to
bring in besides using Vapor?
Adegboyega Olusunmade (05:49):
So
we do sign in with Apple.
So we, which uses JWT the webtokens for authentication.
And so I did have to get theauthentication package, the JWT
Apple authentication package.
And so that was, so that, thatwas pretty much the only package
aside from Vapor that we used.
And,
Leo Dion (host) (06:09):
I wanna go ahead.
Adegboyega Olusunmade (06:12):
no.
And then just database stuff.
So just like Postgres stuffand that's pretty much it.
Leo Dion (host) (06:18):
So how, what was the
decision for using sign in with Apple?
I'm curious.
'cause as I used sign inwith Apple with my apps.
For me it was just theease of authentication.
And just it wasn't that bad,honestly, getting it set up like
what was your decision process andexperience using Sign-in with Apple.
Yeah,
Adegboyega Olusunmade:
Yes so just like you. (06:38):
undefined
I think that kind of contributedthe ease of use contributed a lot.
And just because when I was buildingthe app, it was going to be iOS first.
We have plans to bring it to otherplatforms, but it's gonna be iOS first.
And we just decided, that just.
Reduce the complexity thatwe need to get started.
Maybe we'll add more authenticationmethods in the future.
(07:00):
And so assign with Apple was perfect.
Leo Dion (host) (07:02):
Yeah.
I was gonna ask, so like a littlebit getting ahead of the gun here,
but would you ever build like anAndroid app and then have to support
sign in with Google, you think?
Is that kind of a dream, anaspiration or is it like, eh, we
got more important things to do?
Adegboyega Olusunmade (07:19):
No.
So I think we probably will have tosupport Google sign up very soon just
because of on the web we are going tohave people do that, want to get in.
So I guess that's one reason too.
Leo Dion (host) (07:30):
Yeah.
Do you have any like plans?
I don't know I'm, this is somethingI need to look up, but like how
do services allow for multipleauthentications but the single account,
I had to figure that out at some pointbecause I just know people are gonna
sign it with Google on one's place andthen use sign it with Apple and another.
'cause people are people, right?
(07:51):
Yeah.
Adegboyega Olusunmade (07:52):
That is true.
Currently the mental model I have forthat is we might have we will probably
initially start with a very naiveapproach of having to, you could, if
you create another account with anotherservice, you would have two accounts
essentially, but the reconciliationof making it into one account.
Is something that we might do downthe line where if you've signed in
(08:13):
with one of those, you could like,you could have a single user model
that has a sign in with Apple tokenor like a Google sign in token.
Something like that.
Leo Dion (host) (08:22):
Yep.
That makes total sense.
Okay, so you mentioned besidessign it with Apple, you had to
bring in some database stuff.
Let's talk about that.
How, what kind of database did you endup using and why did you pick that one?
Let's just start with that first.
Adegboyega Olusunmade (08:39):
yeah,
no, let's start with that.
So I ended up going withPostgres for the database.
It was, I.
It wasn't really too much of adifficult decision because like
one of, we initially right now SQLLights is getting a lot of like
praise and being very minimal andeasy to deploy in the backend.
But when I was building it, postI initially wanted it, I put it
(09:01):
on Mongo DB on on Heroku and.
Heroku had really good Postgressupport and so that was like the
main reason we went with Postgres.
Just 'cause of Herokusupport was like really good.
But using it currently with Vapor isalso just a breeze because of it gets
to use like Fluence for instance.
And there's just like a lot ofgood integrations with Vapor.
(09:21):
So that was the consideration.
Leo Dion (host) (09:24):
Where are
you hosting the site now?
Adegboyega Olusunmade (09:27):
Currently
it's being hosted on fly.
Yeah, McKayla has a lotof thoughts on that, so
Leo Dion (host) (09:33):
Yes.
Yes.
How do you I don't want to let'sstick with the database stuff.
So you're, you use fluent, right?
For your da, let's explainkind of maybe if you wanna
try, explain what fluent is.
Yes.
Adegboyega Olusunmade (09:46):
So fluent
is an ORM, so object, relational
mapper for your database.
If you're writingSwift or any objective.
Object oriented language, youconverting objects to like what
their database counterpart is.
Fluent helps with that.
So it's so it's vapors, it's avapor library, so it really just
(10:06):
helps with the conversion fromfrom objects to to Postgre native,
Leo Dion (host) (10:10):
types.
Yeah.
Yeah.
Was there any issues settingup your objects and tables?
I assume you use the fluentmigration stuff, right?
I do.
Adegboyega Olusunmade (10:20):
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 thingwith building like relational databases
is, you have an idea of a structure.
But until you actually deploybefore, this is the right structure
for this particular use case.
You do need to evolve it a coupleof times and yeah, so the migrations
(10:40):
are really nice with that.
Leo Dion (host) (10:42):
Yeah, I
agree a hundred percent.
But like as far as like setting upthe objects and tables, were there any
fields that you're like, it does itthis way and I want it this way, or any
like weird parent-child relationships?
Adegboyega Olusunmade (10:55):
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 thatwould be to like, make a.
Make a table and have a parent-childrelation with the eras of the songs.
And, but so that, that waslike one implementation.
(11:18):
But another way would be to have thesongs be, have years of on the songs
and then compute it in a way whereit's where you just compute the ranges
of songs that fall in between that.
And I guess, database professionalmight 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.
(11:39):
You could do like a lot more stuffwith it instead of just like creating
like a table that just has early2000s or the nineties era tag on it.
So I guess that was one where wejust, it was, it would be nice
to be more flexible than less.
Leo Dion (host) (11:54):
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'slike a bit like early eighties but
has like still a lot of like it's kindof disco, so people as seeing it with
seventies, do you know what I mean?
Do you ever run into issueswith that calculation?
Adegboyega Olusunmade (12:18):
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, thissong was like in the nineties.
And I'm like, no, it'sactually in the two thousands.
But I guess that, yeah, so that'sthat's just like a cultural thing
where people feel like a song
Leo Dion (host) (12:34):
right,
Adegboyega Olusunmade (12:35):
so it's, yeah.
So that's gotta, yeah.
Leo Dion (host) (12:39):
Were there any other
like quirks with the database that
you had to take into considerationwith the way music and songs are?
I can think of a ton ofissues, but Go ahead.
Yeah.
Adegboyega Olusunmade (12:50):
yeah, so I think
sourcing for instance, was like a thing
where we had to figure out, 'causewe'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 lotof ways to go about that, for instance.
But figuring out like the, aparticular lyric it's like more.
More work than you think becauseyou have to get like a particular
(13:11):
song lyric that sounds good,isn't too recognizable, but
isn't not too recognizable.
So you have to strikelike a healthy balance.
And so that was like a verymanual process of like actually
going through tons of songs.
So if you made it like an automatedprocess that it was just like
that, we maybe would call insome API and going through songs
(13:31):
manually with a machine assisted.
Wait, it wouldn't beto 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) (13:42):
So let me get so
the way the app works is it gives
you a piece of lyric and you'resupposed to figure out the song.
Is that correct?
Adegboyega Olusunmade (13:49):
Yes.
So you're supposed tofigure out the artist.
Leo Dion (host) (13:52):
The artist.
Okay.
How did you source your database?
Like how did you get the data in there?
First of all.
Adegboyega Olusunmade (13:58):
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 particularsongs, particular particular
playlist of like popular songs andthen try to get like a particular.
Using our methodology, try toget like a particular lyric that
(14:18):
fits into what our brand is.
So just just trying to sourcewithout profanity against songs
that are like catchy but nottoo catchy, stuff like that.
So I guess it was, that's kindalike the source I would say.
Leo Dion (host) (14:30):
How this, I'm
getting really technical and
specific here, but so your teamdid it have a spreadsheet and then
you imported the spreadsheet intoPostgres, or what did you do exactly.
Adegboyega Olusunmade (14:41):
So
we, we had an air table.
So we had an air tableand we also have, I.
We also have a collecting app.
So we have an app where youjust, it's a simple form, right?
So you'd enter into the form and thenyou 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 areally nice letter, you could just
(15:01):
use the app and just enter in thedetails and it goes to the backend.
So that was just really convenientas well as the air table.
Yeah.
Leo Dion (host) (15:09):
Is this only internal
that people can add lyrics or is it like
in the app itself, you can add lyrics.
Adegboyega Olusunmade (15:16):
So
it's only internal for now,
but I could see a future.
Yeah.
I could see a future where peoplecould DM us to submit lyrics and
just that's much more, doing thingsthat don't scale, the classic, yeah.
Leo Dion (host) (15:29):
Yeah.
Yeah.
Any other, like, how do you dealwith something like various art, like
an album that has multiple singers?
I assume you have a parent childrelationship, so you could have
one song with multiple artists.
Is that how you do it?
Adegboyega Olusunmade (15:42):
yes.
So you could have onesong 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 asong feeling good Nina Simone.
And there's also oneby some Michael Bubbly.
(16:03):
And
Leo Dion (host) (16:04):
Yeah.
Like a remake or a cover, right?
Adegboyega Olusunmade (16:07):
like a remake.
Exactly.
So we have instances where wejust have different samples
all referenced the same song.
Leo Dion (host) (16:14):
That feels like the
kind of song too that would've been
sampled by a DJ and then used there.
Like how do you dealwith something like that?
You know what I mean?
Adegboyega Olusunmade (16:25):
Yeah.
Yeah.
So that's the, that's, sothat's an interesting question.
In those cases, we just make a Neilsong, so it's essentially a Neil song.
We'll, yeah, so this a separate thing.
Leo Dion (host) (16:35):
Because I feel
like that's, that song's been used
in a sample in a few not even, Iwouldn't say like a hip hop or rap,
but like something like a techno type
Adegboyega Olusunmade:
Like techno songs. (16:42):
undefined
Yeah.
Yeah.
I, if you think about some of theWhitney Houston songs, there are like
so many electro techno versions of
Leo Dion (host) (16:51):
yeah.
Of course.
Adegboyega Olusunmade:
Whitney songs, for instance. (16:52):
undefined
Yeah.
Leo Dion (host) (16:54):
Yeah.
Anything else databaserelated you wanna talk about?
Adegboyega Olusunmade (16:58):
Yeah do
we do a lot, some database stuff?
We also do some.
And in memory stuff aswell with some of the data.
So because of working with Swiftobjects 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 nativeSwift type and just test that out.
So if you wanted to do likea little thing that we didn't
(17:20):
really need a database for andbecause of the app size itself.
Isn't quite large.
We could like work in memory on certainthings and then just test that out.
And that really allows for like reallyquick deployments and real, really quick
changes just to make sure somethingis up and running live really quick.
So that is just anotherconsideration with databases.
Leo Dion (host) (17:40):
Did you
use like red for any of that
or is it just all memory?
You're talking aboutusing memory and testing?
Adegboyega Olusunmade (17:46):
So it's just
in memory, so it's just not Redis.
So just we've got likenative Swift objects yet.
Leo Dion (host) (17:52):
Okay.
Did you have to do anything withSwift six or are you just Swift five?
Adegboyega Olusunmade:
Currently it's Swift five. (17:57):
undefined
But yeah.
Leo Dion (host) (17:59):
good.
Adegboyega Olusunmade (18:02):
Are you
having any troubles with Swift six?
Leo Dion (host) (18:04):
I've done a little
bit of backend stuff in SW six,
but yeah, it's it's somethingthere's something I want to ask
about, you mentioned Fly io Heroku.
How's your deployment process been?
Adegboyega Olusunmade (18:14):
It's
it's been it's been interesting.
We don't use any CICD at themoment just 'cause it's just
me for like backend stuff.
So essentially it's w with when it usedto be Heroku, it was just a simple get
push command and, that would update theHeroku as well, but with fly, locally,
we just do the fly deploy thing and itspins up instances like really fast.
(18:35):
And so that's, it's a little tooconvenient 'cause you get, you can
push the production like really easily.
So that's currently how it is?
Leo Dion (host) (18:42):
Are you
using like a Docker file?
Yes.
Adegboyega Olusunmade (18:45):
Yes.
So we're using a Docker file.
Yeah.
Leo Dion (host) (18:48):
Are you using
remote builders on fly io or
are you just doing the buildslocally and then uploading them?
Or how do you do that?
Adegboyega Olusunmade (18:57):
No, so
it's, so it uses remote builders.
So FLY has like some magic wherethey don't actually use containers,
but they use containers and so yeah.
So the remote builders likedo all of the work for us.
Leo Dion (host) (19:09):
I've had issues
with the remote builders lately.
So hopefully your yoursare still working.
What were you gonna say?
Go ahead.
Adegboyega Olusunmade (19:18):
oh, no.
Wait.
What is the issuewe're having with them?
Leo Dion (host) (19:22):
so I think Fly io they
outsourced the builders recently in
the last few weeks, and it'll just hangon me whenever I do a remote builder.
So I've started going to doinglocal bills of my containers
and then doing it that way.
Yeah, I don't know.
It's not great.
Yeah, and I use ci, solike I do all that stuff.
(19:43):
But yeah.
Cool.
Any do wanna ask, and speaking, Mikayladid a really good episode where we
talked about choosing the right backend.
What's your thoughts on somebodywho was getting started?
Where would you havethem deploy right now?
, Adegboyega Olusunmade (19:56):
so McKay
and I actually, like we talked
about, we actually talk about thisa lot actually, but I think I would
still go with Fly for a first time.
Even if you're, even if you'relike, if you're write a Swift,
I think Fly is really good for afirst time, just to get started.
Yeah.
Leo Dion (host) (20:13):
I do
Heroku is easier but.
The thing that I like aboutFly, and I am on my bucket
list of things I want to do.
I want to compare, there's severalother ones I have on my list to compare.
But what I like is thewhole Docker thing.
I think it's definitely a learningcurve, but once you get over Docker,
(20:33):
it's actually really nice and the factthat you can just have it in a Docker
file means that I can move it anywhere Iwant and I don't have to be tied to fly.
Whereas with Heroku, Heroku is pretty.
Pretty portable, but like thewhole build pack thing is weird.
It's just not like a first classcitizen and it feels awkward and
(20:54):
Swift, whereas at least like Dockerfile, everybody uses a Docker file.
You can use a Docker file.
I can use a Docker
Adegboyega Olusunmade (21:00):
Anywhere.
Leo Dion (host) (21:01):
Yeah, so I, that
to me is a big plus with fly io.
Adegboyega Olusunmade (21:06):
It is.
Leo Dion (host) (21:06):
probably the cost.
I think it's like basically freekind of to get started yeah.
I'll hold my breath to seehow long that lasts, but Yeah.
Adegboyega Olusunmade (21:13):
Yeah.
Yeah.
I mean it, I think they did likea price thing that they changed.
They changed like a price awhile back, but it's basically
still free for some reason.
So that's good.
But you, like
Leo Dion (host) (21:24):
Heroku.
Nothing against Heroku.
I know there, there was thisbig exodus from Heroku, but
like it's not that expensive.
It's seven bucks a month.
Come on.
Adegboyega Olusunmade (21:32):
Yeah.
It's not it's not that bad.
Leo Dion (host) (21:34):
You
Adegboyega Olusunmade (21:34):
But like you
said, yeah, so like you were saying
just Heroku not being like first classcitizens to like, say Swift deployments.
I'm sure if you're like a sortof a Ruby Dev, it would be
Leo Dion (host) (21:45):
That's
their cup of tea, right?
Is Ruby, and maybe like Nodewould be number two, but yeah,
they're big in a ruby, so yeah.
Adegboyega Olusunmade (21:53):
Yeah, exactly.
So I mean until we have like ourown like Swift deploy thing, then
maybe we would have more fun, I would
Leo Dion (host) (22:01):
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 serverside Swift backend, but I don't wanna
be only server side Swift backend.
I want it to be used by anybody andlike 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 (22:23):
Yeah.
Leo Dion (host) (22:24):
So
what tips do you have?
So you started off doing webdevelopment, then you did iOS
development, and then you didserver side Swift development.
Tips do you have for somebody who'sgoing from, let's start off, let's,
what tips do you have for somebodywho's going from iOS to server site?
Swift vapor.
Adegboyega Olusunmade (22:41):
If you're
going from iOS and service it's
more of a mindset shift and, justa big one in terms of what you
are responsible for, I would say.
If you're in iOS, there's alot of that's taken care of
for you, just in terms of say.
Memory management, for instance, orlike just working with databases,
working with the view, working witha lot of packages, things like that.
(23:03):
So I guess the ownership is like theswitch 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'sthe biggest switch.
And then fig, I think thenthat also just working with
community, like there's a lot of.
There's a lot of great packagesthat are written for Swift.
So you know, if you do check theSwift package index and you see
(23:25):
something that's nice, you couldalways pick it up like really easy.
So I guess that's like a mindsetshift that you should have just, yeah.
Leo Dion (host) (23:34):
How about, did
you do any backend like node stuff?
Adegboyega Olusunmade (23:38):
I
did a little bit of node.
I did, and this is particularlyrelevant to say LEAF for.
I did a lot, I did somePHP work and WordPress.
So templates and libraries like Leafhave some of some similarity to PHP and
Leo Dion (host) (23:51):
That makes sense.
What was your big mind shift from that?
From PHP and Node to doingBack-End and Swift stuff?
Adegboyega Olusunmade (23:57):
So I
guess this is gonna sound.
I feel like just Swift is like a reallynice language just for Back-End.
Just 'cause of just it's ourhandling is something that's, that
just really felt really natural.
So just ensuring that, you areworking with ours like as a
native citizen native type really.
That's kinda like a mind chefSwift switch I had and yeah.
Leo Dion (host) (24:22):
Yeah, especially
if you're working on WordPress, PHP,
I could see how like PHP is looseygoosey and JavaScript is at least
used to be loosey goosey, right?
Whether it's type system where Swiftis like it's all about compile,
break on, compile, not break on run.
So
Adegboyega Olusunmade (24:38):
Yeah, exactly.
Exactly.
Leo Dion (host) (24:40):
Yeah,
Adegboyega Olusunmade (24:41):
Yeah.
Except maybe if you're like, yeah,if you're like a TypeScript person
for instance, maybe that's slightlydifferent JavaScript people really
do like JavaScript, I would say.
But yeah, it's, dynamicallytype, so you do have to watch
out for the bugs and stuff
Leo Dion (host) (24:54):
Yeah.
That's why I've gonewith TypeScript for my.
Web development stuff
Adegboyega Olusunmade (24:59):
Oh, that's good.
Leo Dion (host) (25:00):
I love it.
It's really matured a lot.
I get a lot of thattype safety in there.
There's some weird stuff with the wayyou have to support it in libraries
and all that, but I just, I lovethat safety net and I want it.
So it's, TypeScript has been fantastic.
Adegboyega Olusunmade (25:15):
Yes,
Leo Dion (host) (25:16):
Like one other thing
I was gonna say, if we wanna get
started, I think what a lot of peopledon't get is that you're building
a command line tool, essentially.
I think if you've done that like witha Swift package, then it's not, I.
Too much of a bridge to crossto go into server site, Swift.
'cause in a sense, that's likewhat your end result is, right?
(25:36):
Is a command line app.
And I think for a lot of people, theylike have, especially if they've only
done iOS development for them, it's likeI build an app, I put it on a phone, I
upload it to Apple, it gets approved.
It's like nothing like you're justbuilding a command line tool and just
happens to have a, like a networksupport, networking support to it.
So once you get over that,I think that's a big, that's
(25:58):
a big mind shift as well.
Adegboyega Olusunmade (26:00):
Yes.
Yes.
That that's a perfectway to to think about it.
Just packages that are likecommand line tools and that's
a good way to think about it.
Yeah.
Leo Dion (host) (26:09):
Yeah.
Yeah.
You, before we close out, you wanted tomention another app you're working on?
Adegboyega Olusunmade (26:17):
Yes.
So also, so for the last year,which is funny, I don't know, I feel
like this year has been the year ofjournaling apps and all for some reason.
Yeah.
But I've been workingon a journaling app.
It's called Glad Mind.
So it's one of the, one of these appswhere you could do like a bunch of.
Things, but it's also very minimal.
So you could do like notes, youcan make lists on it, do to dos,
(26:40):
and you can go back through time.
It's it's a very minimal journaltaking, journaling for instance, but
it's also very fully featured as well.
So that's somethingI've had fun working on.
It's also a different mindset ofSwift from working in FinTech just
in terms of just keeping all yourdata stored locally and relying
on, on, on that infrastructure.
(27:00):
I'll say, yeah.
Leo Dion (host) (27:01):
How do you like
we're there's not really a tangent,
but it's a little bit, how do youlike Swift ui, especially as somebody
with a background of web development,like going from CSS and HTML.
Adegboyega Olusunmade (27:12):
Yeah.
Yeah.
So switch Swift ui, the classicthing, it's declarative.
So on some level it's very, it'seasier to, spin up something.
But I think the problem is whenpeople start to think about it in an
imperative way, rather than just doingit, just thinking about it in a very
declarative way where you are not.
Trying to make too convoluted viewviews that are too convoluted.
(27:34):
Working with them as littlesegments would be the best.
Just working on little sectionsand composing them is the best way
to think about switch UI think.
Leo Dion (host) (27:43):
Yeah.
Yeah, totally.
Anything else you wannamention before we close out?
Adegboyega Olusunmade (27:47):
So I
think that's pretty much it.
But I've been seeing like a lot ofreally nice packages on on Swift org.
I saw there was these one commandline tools, speaking of command line
tools, which kind of allowed you tomake like graphical just terminal
user interfaces and stuff like that.
Tho those are like really interesting.
W do you, what do youthink about those things?
Leo Dion (host) (28:06):
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 thatwe've talked about on this show.
I think, I feel like that'sdefinitely a missing piece.
And I'm glad you mentioned it 'causein the next episode we'll have Natan
Rolnik on from Swift Toolkit Dev andhe's written quite a few posts about,
(28:27):
that, that particular piece like for me,I think the missing part is connecting
the Swift ui, not the Swift UInecessarily, 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 toplay around with it, unfortunately.
But I feel like that would beawesome to have that ability.
(28:47):
I.
But yeah I've played with it like XT100 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 definitelysomething like, that's missing
right now in, in the community.
Yeah.
Adegboyega Olusunmade (29:04):
Yeah true.
But that's interesting.
Yeah.
Hopefully in a year or two we mightwe'll be in a different place, so Yeah.
Leo Dion (host) (29:11):
Yes.
Yeah, I think it is interestingthat I've seen a lot lately in
the last month or so of peopleinterested in that in particular.
So yeah hopefully we'llsee something soon.
Anything else you wanna mention bga?
Adegboyega Olusunmade (29:23):
No.
So I think that's pretty much it.
So yeah it's been lovelytalking to you, Leo.
Leo Dion (host) (29:27):
Yeah.
Lovely talking to you too.
Where can people find you online?
Adegboyega Olusunmade (29:31):
So you can
find me online on Twitter at Aade Ade.
That's me right there.
But you can also searchfor like my indie website.
So it's do for love.co.
Yeah.
So say you can check it on thosetwo places, Substack, yeah.
Leo Dion (host) (29:47):
Awesome, awesome.
People can find me onTwitter at Leo g Dion Masson.
I'm Leo G Dion at C Im Findout LinkedIn, same name.
My company is Bright Digit.
If you have anything you wannashare on the show, let me know.
If you're watching this onYouTube, please and subscribe.
Podcast reviews are always welcome and.
Adegboyega Olusunmade (30:09):
yes.
Leo Dion (host) (30:10):
Subscribe to it in
the newsletter and join the Patreon.
I think there's a lot of great stuffout there that I've been sharing
that you should definitely check out.
I'll post the link tothat in the show notes.
But thank you very much andI look forward to talking
to you in the next episode.
Bye everybody.
Adegboyega Olusunmade (30:26):
Bye guys.