The Making of Callsheet with Casey Liss
Leo Dion (Host): welcome to
another episode of empower apps.
I'm your host, Leo Dion.
Today I'm joined by
Casey Liss.
Casey, thank you so
much for coming on
the show.
Casey Liss (Guest):
Thank you for having me.
I'm
very excited.
Leo Dion (Host): I'll let
you go ahead and start by
introducing
yourself.
Casey Liss (Guest): Yeah.
So like, like you said,
my name is Casey Liss.
I'm a podcaster, an app
developer, occasionally a writer.
You might know me most recently
from my new app Callsheet, which is,
I think, kind of what we're going
to be talking about here today.
Think about it as a movie lookup app
that actually respects you as a user.
You might know me from My podcast with
my good friends Mark Arment and John
Syracusa, the Accidental Tech Podcast,
or perhaps my other podcast with
Mike Hurley Analog over at RelayFM.
That's kind of my shtick, but
I think we're here probably
to talk about Callsheet,
huh?
Leo Dion (Host): Yeah.
So I want to, well, hopefully
we won't get into reviews of
products because I got all my new stuff
this week.
So I'll try to avoid gloating.
I'll try to avoid gloating that
that's for your other show.
But today we'll talk about Callsheet.
So I, I kind of had thought
about having you on when you
had peak of you and masquerade.
But then I, When I heard
about Callsheet, I was like,
okay, this looks awesome.
I tried it out.
It's fantastic.
What, what do you think are
some like lessons you learned
from the other two apps?
That you were able to build
upon when it
comes to
Callsheet?
Casey Liss (Guest): Yeah, I
think that's a great question.
So the other apps the first one that,
that I had released was an app called
Peek A View, and the very, very brief
nickel tour of that is my, at the
time my daughter was two, she's now
five, and we had just been to Disney
World, and she really liked flipping
through pictures on our phones.
Which in and of itself is fine, but I
was deeply worried that she was going
to find the delete button and then start
deleting all the pictures on our phones.
And so it occurred to me,
well, I'm a developer, I
know how to fix this problem.
So Peek A View
is basically a read only photo
gallery and you can limit
what photos you're looking at.
So maybe if you had
an album of like comps
you wanted to show to a
client, you could hand the
client your phone, you know, engage
guided access, which is an Apple thing.
And then the only thing they
can do is look at these, you
know, five or ten pictures or
what have you.
And then Masquerade.
Kind of similar thing once my kids
got to be about three or four years
old and they were no longer squishes
and actual people I got more reluctant
about putting their faces, particularly
on the internet, like it's one thing
to see a random toddler body, but you
know, it's, it's a little different to
see their faces and I didn't want to
be in a situation where they're looking
back on pictures I posted 10 years ago.
It's like, you know, early teenagers and
they're saying, why did you do that dad?
Like, what's wrong with you?
Now, maybe that'll still happen,
and they'll ask, why did you
put emoji over our faces?
But anyway, so the point of, the point
of Masquerade is it uses Apple's,
you know, machine learning APIs to
just quickly let you drop an emoji
on all the faces in a photograph.
And, and you can change which emoji
it is, and so on and so forth.
So that's the nickel
tour of those two apps.
And to answer your question, You
know, what did I learn from them?
Some of the code actually was
pulled directly from each of them.
Like a lot of my app store related
implementation was it was at
least heavily ripped from and
then built upon from Masquerade.
The settings in app settings, you
know, has evolved over my apps and
gotten a little less ugly and a
little more robust with each time.
But generally, I think just
more experience with Swift UI.
Not as much Swift particularly,
but Swift UI specifically.
I wouldn't say I'm the world's
best Swift UI developer, but I've
gotten to the point that I'm, I
can get most things done with only
mild amounts of hair pulling and
googling and so on and so forth.
So, I I, you gotta walk before you can
run, and, and, I don't know if you would
consider Callsheet me running or not in
this already abused metaphor, but I like
to think Callsheet looks pretty decent.
And, you know, I didn't get too out
of, Out of bounds on, you know, doing
weird SwiftUI things in Callsheet
and, and if it wasn't for those other
two apps, I think I would have been
in the deep end and it wouldn't look
near as good as, as it has ended up
looking.
Leo Dion (Host): Were the other
two apps SwiftUI?
Casey Liss (Guest): Mm hmm.
Yeah.
Oh, my, well, peak of view was most,
I know it was like half and half.
It was story.
God, I haven't looked
at that code in a while.
I think it was like half storyboards,
half SwiftUI, if memory serves,
because this was, this was roughly 20,
19 that I had written in 2019,
2020, I think, something like that.
And so it was a bit of, a bit
of UIKit and a bit of SwiftUI.
Masquerade is almost entirely SwiftUI.
And
Callsheet, I don't
think there's any UIKit.
There was briefly during the
beta period, and I don't think
there's any UIKit left in it.
Or if there is, it's so
little, it's effectively none.
Leo Dion (Host): Are you,
are you still actively
developing those
apps?
Casey Liss (Guest): I'm
telling myself I am.
Whether or not I actually
am is up for grabs.
So there's a couple of like minor
bugs in each app that I, that I
need to look at and should fix.
And probably, if I'm honest with
myself, should have fixed already.
But candidly, you know, as a
single app developer, as an indie
app developer, I got to allocate
my time the most appropriate way
and the most appropriate way.
And I would think generally to
advocate to allocate my time is
to put it where the money is and
the money is not in masquerade
and it is not in peak of view.
It's currently in Callsheet.
And so.
If I'm going to spend some time, I'm
probably going to be spending it on
Callsheet, especially since I feel
like, and I don't know, it makes
me feel really gross to kind of pat
myself on the back, but I feel like
I have a kind of good thing going.
Like, Callsheet is not perfect, but
I think it's pretty good, and it's,
I think, far and away the best of
my three apps, and so I want to keep
that momentum going both for me and
for my users and for, you know, them.
Any press that might have an eye
on it or something like that.
And so I want to keep that ball rolling.
And it's hard to do that if I'm context
switching all the time to these other
apps that, while I've certainly made
money from them, it, it, it, it's
not an, it, it wasn't a ton of money.
And, I mean, I haven't made a
ton of money from CallShe, but
I've made orders of magnitude
more than I have from the other
two.
So, you know, you got to
do what you got to do when
there's only one of you.
Leo Dion (Host): Why, why do you
think it's your best app and I, I
mean, both Best app as far as like
the craft of it, but also Best app
as far as the money coming in and
press attention and everything else.
What do you think is, I mean,
I can think of a few reasons
why Callsheet would but
like, what do you think is the
secret to making call
Sheep more
successful than the other ones?
Casey Liss (Guest): Yeah,
it's a great question.
I think it's a few things.
Peak of view.
I think while a good app is an extremely
niche user base, like someone who is
often handing their phone to another
person that they don't trust either
implicitly or explicitly that that
is something that happens fairly
frequently, but maybe not enough
that you're really going to find
an app to, to solve that problem.
With, with masquerade,
I think that actually.
Maybe it's because I'm an old,
but I think that could have a lot
more legs than it ended up having.
If you're someone who is concerned
about privacy and that sort of
thing, and I'm 41, I, my early
years are pre internet, and
you know, the high school ish time
was when the internet was really
starting to become a real and proper
thing, and by the time I went to
college in the early 2000s, you
know, the internet was for real
but that being said You know,
photographs on the Internet.
That was still not as much of a
thing that that makes me sound
older than I mean, but like social
media, the way we think of it today
wasn't a thing like Facebook came
out right after I graduated college.
And so sharing pictures on the
Internet wasn't as common.
And and so for me, having
not grown up with my with my
likeness across the Internet.
Always.
It still feels a little like
skeevy and weird to have photos.
Everywhere, and to put
somebody else's likeness on the internet
without their permission, that seems
a little weird, but I think that
I'm part of a dying breed, and so I
wonder if Masquerade is a relic of a
lost time.
Like, I do think it's a good app, but
I don't know if it's a necessary app.
Now, contrast that with Callsheet.
So, Callsheet...
The, the guiding
idea behind it was, I am So sick and
tired of the Internet Movie Database
app, the IMDB app, that's constantly
nagging you to log in, it's constantly
trying to send you advertisements,
or show you advertisements, it's
constantly auto playing videos,
like, everything about that
experience is just trash, in my
personal opinion, and I'm sure
the people who work on it are
very bright and very good, but when
you have this massive corporate
overlord of Amazon, you
have to, you know, do what
they tell you to do, and so,
Go
Leo Dion (Host): own owns
Casey Liss (Guest): Mm hmm.
Mm hmm.
Yeah, as far as I know.
Yeah, I'm
pretty
Leo Dion (Host): Oh, wow.
Okay,
Casey Liss (Guest): yep.
And so, you know, when Amazon
wants to make money off of it, you
got to do what Amazon wants you to do.
And so, you know, when I sat
down to write what became
Callsheet, I just wanted
something like IMDB that
wasn't Awful to use.
And I think there's a lot of other
people that use IMDb begrudgingly.
And now that there is any alternative,
that's like a cold glass of
water in a very hot place.
You know what I mean?
And so I think that there's a pretty big
audience of people who have also found
this pain and would love to fix it.
Now the things become a little
squishy though when you have,
there's people who have this pain.
But they may not want to spend
money on fixing it, and that's where
it becomes a little tough, right?
And that's where if I'm doing my job
right, then I need to do everything
in my power to make sure that I am
ha I have enough features and enough
good things to justify the cost.
And, and I think I do.
I, I really think the app is
competitively priced, even
when competing with free.
But it's a tough sell.
I mean, anyth from free
to anything is hard.
And that, that's the that's
the big task for Callsheet.
Leo Dion (Host): Yeah, I'm about,
I'm about the same age as you
and I have
six kids
Casey Liss (Guest): Six!
Oh my word, oh my
word.
My wife is one of five and I
find that to be utterly bananas.
I can't imagine six.
Leo Dion (Host): But like,
yeah, four of them are adopted.
So
privacy is definitely a concern.
Yeah.
So like with, with maker or
Casey Liss (Guest): Yeah, yeah.
Leo Dion (Host): yeah.
masquerade.
It's like, Yeah, that makes total sense.
And yeah, we had Josh Holtz
on to talk about privacy.
Peekaboo?
What was it?
Playpen.
Playpen was his app.
Yeah, yeah, yeah.
And it's the same idea
where you use guided access.
So like Peekaboo is like,
yeah, I love that idea of...
I wish there were more apps that
took advantage of guided access.
But...
Yeah, I mean, there's a lot
of reasons why I could see why
call she is successful app.
And like, certainly IMDb makes it
as, as easy as possible for you
to, to build an app that's useful.
Do you want to like explain like,
what were some of the like issues
with IMDb and what you were trying,
why you were trying to make an app
that like, I think you, you put it
as like, that's actually nice to the
user and like a convenient, Yeah,
Casey Liss (Guest): Yeah, so for
me it was both, it started in
a kind of negative way, I guess,
which is just, I don't want to
see a prompt to log in, I don't want
to be shown ads, I don't want to
be shown autoplaying video, I just
want to be able to get in and get
out and look up what I want to look
up.
But then once I started building
Callsheet, it occurred to me, You know,
there's ways I can actually make this
kind of delightful, and some of the
things that I, that I started working
on were things like, you know, being
able to hide spoilers and, you know,
I've told the story a couple of times,
but it's, it's such a pivotal moment for
me years ago, I think it was late 2019,
I was watching the, watching the HBO
miniseries Watchmen, which is phenomenal
if you haven't seen it, couldn't,
couldn't recommend it enough and no
spoilers, but one of the characters,
well, a couple of the characters
really, but one of the characters in
particular had a dual role and you
don't find about, find out about the
characters Other role or I guess I can
it's kind of the actor's other role.
You don't find out about that until
about halfway through the series and so
Early on in the series I was looking up
this particular individual because I was
not familiar with their work at all or
who they were at all And i'm scrolling
through imdb and I see and again no
spoilers, but I see you know, mr.
Smith slash, you know Super agent man
or whatever and I was like, whoa, whoa,
whoa, whoa I was not prepared for that.
I didn't want to know that.
No!
And so, so as I'm building
Callsheet, it occurred to me.
I can fix this.
And so, one of my favorite features of
Callsheet is, at least for TV shows,
as we sit right now, for TV shows,
you can optionally hide spoilers.
Things like character names, episode
counts, you know, what if your
favorite character on the show,
what if they're only in one episode?
Well, I guess that character's
about to get killed off, you
know, or whatever the case may
be, or written off the show.
You can hide episode titles,
episode thumbnails, I forget
what else there is, I feel like
there's one or two other things.
But, the idea being you can hide
all of this stuff, so that as you're
just casually browsing, you're not
putting yourself in a position where
you're ruining a show for yourself.
And, like, you know, Watchmen
wasn't ruined by this revelation
that I had, or this discovery
that I had, but it definitely...
The reveal was worse because I already
knew what was coming and I didn't
want to have that happen again.
And so the more I work with Callsheet,
now that I've got like the standard,
the base level done, the more I work
with it, the more I realize there are
little bits of surprise and delight
that I can do that really can be fun.
And I'm working on currently.
Some of this is already out in
the app store, some of it is not,
but one of, one of the things
I'm working on is, I know I and
a lot of other people always want
to know, well, how old was that
person when this was recorded or
when, you know, when, when it was
released or whatever the case may be.
And so, as you scroll through movies
or, or through a, or a person's,
you know, filmography, it'll show,
well, you know, for the year 2022,
they were 40 or 41 years old.
For the year 2021, they were 39 or 40
years old, or whatever the case may be.
And, and that's already
in the App Store.
And then what's coming in the App
Store is, if you're looking at a movie,
you can see, you know, this actor
plays, you know, Margot Robbie played
Barbie, and she's, I think, like, 33
years old at the time this movie was
released, or something like that.
And that's silly, and...
Maybe some people don't care, but a
lot of people I know just find that
interesting information, and it's
also kind of
Leo Dion (Host): Yeah, totally.
Casey Liss (Guest): you know, how all
the men in the movies are like 10 15
years older than all the women, but
that's neither here nor there, and so,
you know, and so this is stuff that I
can do to surprise and delight my users,
and now that Callsheet is out, and
I'm, you know, Started and I think I've
got that base level done Like I said I
can do a lot more than that more with
that and that I find to be incredibly
riveting and incredibly fun for me too
Because it's so fun to have somebody,
you know get on mastodon and toot at me,
you know Oh, I just saw such and such,
you know, this I just saw this feature
and it oh my gosh I love it so much.
I can't believe I I I I you you did
what I wanted and I didn't even know
I wanted it, which is a very apple
thing And I haven't been I haven't
gotten a lot of those but the fact
that i've gotten any I consider,
you know Personal victory i'm just
pat myself in the back real quick.
So
Leo Dion (Host): Yeah, I love like the
rabbit hole aspect of it, where it's
like, okay, okay, now I go here and then
I find out, oh, this person was in this
movie, this movie has this actor, this
had, oh, and just keep going and going.
That's what I love about it.
It has that like rabbit hole feel to it.
What were like the first initial
challenges you ran into when you started
developing
the app?
Casey Liss (Guest): You
know, that's a good question.
There wasn't,
there wasn't that much.
There's, that's not a very satisfying
answer, but I didn't have that
many like specific challenges.
I think the biggest thing was
the, the information architecture.
Like, how do you represent.
An extremely wide and extremely deep bit
of information, and that's a hard thing
to do, and I had a lot of help from my
friend Ben McCarthy between themselves
and me, I think we landed in a pretty
good spot, but it took a while to figure
out how do I want this app to look, and
Ben has suggested to me some very, very,
just truly gorgeous reimplementations of
what I've got, but It's hard because I
want to make sure that I'm not losing.
Speed in favor of pretty and not
to say that Ben's designs are bad.
I'm not trying to say that at all.
In fact, I can't say enough how amazing
Ben's designs
are,
Leo Dion (Host): When
you're saying design, are
you talking
architecture design or
Casey Liss (Guest): like visual design
So, so, you know, Ben, Ben, what if
you read Jigger, you know, instead of
a poster on one side and information
on the, on the beside it, what if
you do this, you know, and spin
this around and, you know, move the
Jenga, move the Puzzle pieces around
and so on and so forth and Ben's
designs are unquestionably gorgeous
quite a bit better Looking than
what I have today and and Ben deeply
influenced what's already there But
the but the thing the engineering
trade off even in a design context is
how much do I favor?
beautiful over functional and I think
where Ben and I landed, the way it
is now, is riding the line in a good
way between beautiful and functional.
It's not, like, astonishingly
gorgeous, but I think it's
a pretty decent looking app.
But it's also a fast app, and it's
not, not only in terms of actual
performance, but in terms of, you
know, I, I can find what I need
quickly, and I think that's, Incredibly
important for an app like Callsheet,
which is all about looking things
up and then getting out of your way.
And so I don't know if I made
the best trade offs there, but
that's something that I'm always
trying to tweak and make sure I'm
doing the best job I possibly can.
Leo Dion (Host): So we had talked
about where you are pulling the
info from and you're using the movie
database.
Is that, is that the one
that Plex uses for its info?
Okay.
How, I guess, how was
it working with that API
and pulling data and stuff like
Casey Liss (Guest): so extremely great.
Asterisk.
The API is very, very good.
It's very well thought out.
I, I don't know if I, it's one of
those things like as a developer,
I think the biggest compliment I
can give another developer because
most developers are selfish jerks.
Hello.
But the biggest compliment I can give
another developer is, wow, I would
have written it just like that, which
Leo Dion (Host): Okay.
Casey Liss (Guest): Which obviously
is, you know, there's, there's some,
Leo Dion (Host): It makes sense.
It's
like what you
think it does.
Yeah.
Casey Liss (Guest): There's
some negative reads of it.
You gave me the positive
read.
It's like, exactly.
It's intuitive.
Makes sense.
That's the,
that things are where I
would expect them to be.
So on and so forth.
And, and the movie database API
is mostly that where it becomes a
little tough though, is that the
movie database has very strong
opinions about a handful of
things.
And sometimes that runs in contrast
with what either I want or my users
want, so a couple of quick examples.
When I was working on just yesterday,
in a movie, when you're looking at
a movie and scrolling through the
cast or crew of a movie, I wanted
to show the ages of all the actors
or all the crew members or whatever.
And there's no real easy way to do that.
There's no...
It's not like GraphQL, where you can
just pluck things out of a schema
and say, I want this, and I want
this, and I want that, and I want
that,
you know, the schema is the schema.
And so in order to make that work, what
I have to do is, as one of these cells
is coming up on screen, I have to fire
off a network request and get that that.
Cast member or crew
member's birthday, which is
pulling in a crud load of other data
I don't care about, but I need to
get that whole object, and then if it
scrolls off the screen before I get
that response back, then I need to
throw away that request and not care,
and you know that gets to be a fair
bit of management that I have to do on
my end, and there's no mechanism for
me to just say, I'm Hey, when you give
me the cast or give me the crew, can
you throw in that birthday as well?
Like there's no mechanism.
There's no affordance
for that, which is tough.
But the good news is, is
that.
The Movie Database API is so
flippin fast that it actually
mostly doesn't matter.
It is phenomenally fast.
My, I've heard rumblings, this is
not confirmed by anyone at the Movie
Database, but I've heard some rumblings
that they're, and this is outside of
my comfort zone, but they're sitting,
like, all of their stuff is sitting,
like, at CDNs, you know, and like,
I guess, it, it, not only are the,
the, The assets there, but like, I
guess a lot of the data is there.
And so my limited understanding is
this stuff can just happen like darn
Leo Dion (Host): right, right, right,
Casey Liss (Guest): And I
cannot say enough good things
about how fast this API is.
And generally speaking,
it's well designed, you
know, things do make sense.
I wish it was a little bit more
tweakable in certain ways here or there.
Another great example of this.
And it's a community
driven database, right?
So
the data isn't always perfect,
but it's usually pretty
darn good.
But another thing is they
take a hard line stance.
Like I'm not an anime person,
but they take a hard line stance
that the original voice cast
is the only cast that exists.
There are no other casts.
Leo Dion (Host): you
can't find the American
dub for that
Miyazaki
Casey Liss (Guest): Exactly right.
There will be no others.
That is all you get.
Good day, sir.
And that's fine, and I understand
it, especially because that data
can spider out and make their
schema look awful real quick.
But that, that does not
delight my users, right?
And it's, it's, selfishly it's nice to
be able to say, Ah, my hands are tied.
Unselfishly, that's a really crummy
response that I have to give my users
that look, I just I can't get to that
data because the data doesn't exist.
And that's that's tough.
And there's only a couple of occasions.
I can't even think of any
others off top my head.
But there's a couple of occasions
where they take very hard line
stances on stuff like that.
And that's frustrating.
But
ultimately, the there they provide it.
An
incredibly robust API that has
incredibly fast performance and
is really, really good, and their
pricing is phenomenally good for
me, so I can't complain, but so much
right and and as far as I can tell,
it seems like it's reasonably cheap.
To run, I guess this is, this is me,
you know, making some assumptions here.
So I might be dead wrong, but from
what I've gathered from talking to
other people in the community who
are using this API, like they've
gotten kind of sniffs and hints that
it doesn't cost them a lot to run it.
So everyone seems to be aligned,
you know, for the most part, it's
just, there's a couple of things
here and there that I, that I
wish were a little bit different.
Leo Dion (Host): When you say aligned, I
had flashbacks to the recording I did
with Christian so,
Did you look at I
guess, did you look at IMDB,
does
IMDB even have an
Casey Liss (Guest): I didn't think
they did, to be honest with you, and
then I found out just like a month
ago that they actually do, but
if memory serves, the pricing
is hilarious, and not, you know,
speaking of Christian, not dissimilar
from Reddit's style pricing, I
think it was Reddit's much worse,
because who isn't better, I'm sorry,
who's better, but, you know what I
mean, I got that all backwards, you know
what I'm saying Reddit is the worst, is
what I'm trying to say, but anyways the
pricing is not great, but I think it
is potentially workable, but honestly,
The point of this app originally
was to thumb my nose at IMDb,
and I'm past that at this point.
Like, at this point, I'm actually
really enjoying the, the, the
experience of using the movie database.
And while I, I was, I'm struggling
because I don't want to say
that I'm collaborating with them
because that's not really accurate.
But there's a developer forum where I've
posted questions and things like that.
And, like, the, and the CEO
has gotten on because I think
they have a very small team.
I think the team is, you know, under
10 people, possibly under five, and
their CEO is come on and been like,
Oh, yeah, I see what you're saying.
You know, can you go and upvote this
Trello ticket, you know, or whatever,
to show me that you're interested
in this and so on and so forth.
And, and so it's, it's been nice.
And it's delightful.
And it's, it's the antithesis, you
know, I listened to and watched your
episode with Christian, which was great.
And it's the antithesis of poor
Christians experience, which is
Too bad, because Christian's like
10 times nicer than I'll ever be,
but I guess Canadian, am I right?
But but no, it's, it's, it's
been delightful working with
the Movie Database, and I hope
that they're around forever.
Not only for selfish reasons, but
like so much of the stuff that I use,
you, you had mentioned Plex earlier.
Like, I'm a, I'm a Plex superfan.
In fact, I'm a little surprised I
wasn't wearing a Plex shirt today.
That would have been my style.
But but I'm a Plex superfan, and
if The movie database goes away
that like that hurts plaques
among many, many other people.
I really love this app channels
which is like a TV DVR sort of app.
They use the movie database.
You know, the movie database powers.
A lot more of the media related
internet than you would expect.
And so if they were to go
under, there would be much
bigger problems than Callsheet.
And that gives me some amount of
solace, but it's still worrisome,
especially after Twitter and
then Reddit.
Leo Dion (Host): Well, Movie Database
sounds more like a Wikipedia situation
as opposed to like IMDb being
more of a corporate entity, right?
So, I would think it would
be around until hopefully,
God willing, somebody
doesn't buy them and screw them
over,
Casey Liss (Guest): well, and
coincidentally, I found out about
three quarters of the way through
the development of Callsheet
that they do have a corporate
overlord, but you will never in
a million years guess who it is.
Leo Dion (Host): Should I,
you want me to
guess
Casey Liss (Guest): Please feel free.
Think about a, no, a washed up media
company that somehow still exists.
Leo Dion (Host): AOL?
Casey Liss (Guest): A
better hardware company.
Leo Dion (Host): Gateway?
Casey Liss (Guest): Getting
better still, media hardware.
I'll give you one last shot.
Media hardware company, mostly
washed up, nobody cares about
it except John Syracuse.
Leo Dion (Host): It's like
Magnavox
Casey Liss (Guest): No,
you're getting warmer still.
TiVo TiVo owns the
movie
Leo Dion (Host): Oh,
Casey Liss (Guest): I found that
Leo Dion (Host): said Syracuse,
I should have thought of
Casey Liss (Guest): exactly.
So
Leo Dion (Host): nobody owns TiVo?
TiVo?
owns
TiVo?
I
Casey Liss (Guest): as far as I
know, I might have that wrong, but
as far as I
know, that is correct.
So yeah, So TiVo owns
the movie database, which
gives me even more worry.
But,
that being said, I would
think, I would think and hope,
I'm knocking on wood, you can't really
see it, but I would think and hope
that if If TiVo went under, that the
movie database would spin itself out
and, you know, even if pricing had
to change or something like that,
Leo Dion (Host): Is it.
open source?
Are any
parts of it open
source,
Casey Liss (Guest): not to my knowledge,
no, I believe it's all closed source,
but I think that, you know, the two to
ten people that work there hopefully
could reach an agreement with TiVo that
they could spin it out,
you know, do their own
thing,
But yeah.
I, I heard that and I
was both somewhat relieved
and deeply alarmed all at
the same time, we shall see,
Leo Dion (Host): So,
did you look at other alternatives
like Rotten Tomatoes or you've
Common Sense Media on here and
Metacritic?
What did you end up
finding out about those?
So Rotten Tomatoes obviously has
its
own problems as
we've
Casey Liss (Guest): yeah,
yeah, we, that, yeah,
exactly.
So that, that, yeah, exactly right.
It's funny because I don't really
care for these ratings websites.
Like, I don't really want to
see anyone else's ratings.
I find it to be actually a net
negative in my personal opinion.
And the
only
Leo Dion (Host): I
would say that about IMDB as well.
Like the ratings
on there are kind of like
garbage.
So
Yeah.
Casey Liss (Guest): Yeah.
And so for me, like I didn't even have
ratings in the first half of the
Callsheet beta, but I expanded the
beta test to members of my other
podcast, the accidental tech podcast.
So if you are a paid member of
ATP, I would give you a link so you
could sign up for the test flight.
And then now that the test
flight is, or that, that
stretch, the test flight is done.
So they have now all lost their access.
That was part of the deal.
So on and so forth.
Well, anyways, I bring all this up
to say, I had a lot more testers
on this than I had any other app.
By an order of.
by several orders of magnitude.
And after hearing incessant complaining
and moaning about the fact that I didn't
have ratings well, I call them, I call
it a score in app because rating to
an American, you know, is PG, rated
R,
whatever the
Leo Dion (Host): Yeah, yeah, right,
right,
Casey Liss (Guest): we're
saying the same thing.
Anyway, so I eventually added it
to Callsheet because I was just,
the support burden alone was
enough to say, you gotta add this.
And I did.
But I hate it, Leo.
I hate it so much.
And so, so anyway, so to answer
your question, I've asked for
Rotten Tomatoes API access.
You know, it's one of
those like, Oh, our people
will call your people.
But if you want, you can
put your name in the hat.
I did that like two months ago when they
ghosted me since common sense media.
I'm going to get these details wrong,
but I think it was common sense
media that you can get API access,
but your API tokens is limited to
something like five requests a minute.
or something like that.
So, in other words, it seems to be
designed for you to grab data and
then cache it on your end, but that
is not at all the way Callsheet is
designed, and I am not interested in
joining the server business, and so
that's a
Leo Dion (Host): yeah.
I was about to say that, yeah.
now you end
up having to be running
your own
server, which,
yeah.
Casey Liss (Guest): No, no thank
you and then Metacritic, or maybe
it was Metacritic that's, that's
this way, and it was Common Sense
Media that's, yeah, I forget who is
who, but I've, I've asked, I think
it was Metacritic IS for APIX, or
no, they didn't, that's what it was.
Metacritic doesn't provide an API.
Common Sense Media's API
usage limits are hilarious.
And Rotten Tomatoes, just,
it goes into dev null.
And so, I don't think
anyone has ever seen it.
So, so yes, I've looked into these
things, and in a perfect world, as
much as I hate what I call score, but
most people would call rating As much
as I hate it, I would prefer to have
what is generally considered to be
the best, you know, available score.
Which, for most people, you know,
recent news notwithstanding, that
would be Rotten Tomatoes, or if not
Rotten Tomatoes, then Metacritic.
But Metacritic doesn't offer
it, and Rotten Tomatoes
effectively doesn't offer it.
So, what's a guy to do?
And it's just, it's tough.
Well, and that thought crossed my mind.
That
thought
Leo Dion (Host): I feel like I've done
that, I did that like 20 years ago in
college, just was like playing around
with Rotten Tomatoes
when it was actually
cool,
And like,
Casey Liss (Guest): And I
Leo Dion (Host): up like, web scraping.
Casey Liss (Guest): I really thought
about it and part of the, a large
part of the reason why I didn't
do it was that their URLs are not
reliable, you know, it's not where
it's like, you know, such and
such, you know, rottentomatoes.
com slash some identifier
or rottentomatoes.
com slash the exact movie title.
It was
very, very, not literally
random, but seemingly random.
And so because of that, I
just didn't even want to go
down that road because I
didn't think it would be
reliable.
And if it's not reliable,
then what's the point?
Leo Dion (Host): we
brought up Wikipedia.
Did you look if, well,
you have mentioned in a
few releases
pulling info
from Wikipedia.
Casey Liss (Guest): Yeah, well, I
don't pull it in from Wikipedia,
but one of the things, one of the
affordances in Callsheet is this idea
of a quick access link or button,
if you will, and so what I have
it set up for is to jump to trivia
coincidentally on IMDb in a web view,
because I just am a sucker for trivia.
I think that's fascinating,
but that's not everyone.
And so you can choose to have
a quick link to Wikipedia, for
example And there's several others.
I forget what else
parental guidance on IMDB.
What else do I have on there?
Forget what else there is.
But anyways all of them are always
available whenever possible, but there's
one that's like kind of prominent and
Wikipedia, the Wikipedia entry for any
given property is one of those things.
And that was, that was actually
a perfect example of what
we were just talking about.
My initial very ignorant
implementation of this was just
go to, you know, wikipedia.
org slash whatever
whatever slash the title.
And that was all well and good.
But what happens with the little
mermaid when there's a 1990,
whatever version and a 2023 version.
And it was because of somebody reached
out to me on Mastodon and said, Hey,
if you go to wiki data, which is, you
know, a sister project, if you will,
of Wikipedia, you can actually make an
API request and get the exact correct
URL for the, for a particular property.
And I believe, I believe
it was the movie database.
Also offers a Wikidata ID, so I go
to the movie database, and I say,
okay, what's the Wikidata ID, then I
go to Wikidata, and I say, okay, for
this given ID, what's the Wikipedia
ID, and then I can go to Wikipedia,
and say, alright, load the Little
Mermaid, you know, parenthesis, 1990,
whatever, parenthesis, rather than
the Little Mermaid, and just cross
my fingers, and hope I got the right
one so, so that stuff like that, you
know, again, surprise and delight, you
know, both me and my users, you know,
now, now
I
Leo Dion (Host): going to say like,
that's the fun stuff of being a
developer is being able to plug all
that information and like connect stuff.
Yeah, yeah, exactly.
I was going to ask so
we talked about you.
This is all SwiftUI.
Is it using the SwiftUI
app lifecycle or are
you using
app delegates?
Okay.
Casey Liss (Guest): No, well, there
is an app delegate, but it's It's
implemented
using the
Swift UI.
Yeah, exactly.
And and that actually
didn't even happen.
I don't recall what,
what made me even add
an app delegate.
Maybe it was URL opening
Callsheet by URL.
That
might've been what did it, but I
didn't even have it for the longest
time because I didn't need it.
But yeah, it's Swift.
It's all Swift UI, Swift
lifecycle, Swift UI lifecycle.
And that's been fine,
to be honest with you.
There's been a couple of
places where, because of my.
Internal architecture.
This just happened to
me a couple weeks ago.
I forget what I was
working on.
I think it was something making
more robust URL loading, but there
were some places where I need.
Oh, no, you know, or maybe it
was the quick actions on the home
screen icon one way or another.
I needed a piece of data that was over
here, but, you know, the app delegate's
over here, and like, never the two shall
meet, and so on and so forth, and, you
know, this is when any, any Swift or iOS
developer would normally reach for like
Notification Center, but I'm trying to
be a good boy and not just, you know,
punt to Notification Center and I forget
what I ended up doing, I think I ended
up having a singleton for other reasons
that I could glom off of, and it didn't
make me feel like I needed to shower
immediately, so um, so I
consider that a
Leo Dion (Host): created
your own singleton.
because you didn't want
to use the notification
center
singleton.
That's fine.
Casey Liss (Guest): Okay, hush!
Nobody asked you!
No, it's very true, it's very true.
But no, generally speaking,
SwiftUI has been fine.
I mean, I think the early party line
that you can't use it in production,
I think at that point that was true.
I think that's long since been
proven not accurate at all.
I think it's perfectly
fine for production.
Leo Dion (Host): Do you, do
you feel like do you feel
happy with targeting 16?
I guess for like test flight
would make sense if you want
people to actually test it.
But, like, was there anything
where, when, after dub dub, you
were just like, Oh, crap, I wish
we could do this, or I could have done
that if I
targeted 17.
Casey Liss (Guest): 100 percent it
ended up being irrelevant because I
changed the information or the design.
I was gonna say information
architecture, but the design Callsheet.
But early on in call for most
of Callsheet, the search box
was at the top in a standard,
you know, system search box.
It was completely out of the box,
nothing interesting about it, but
it was at the top of the screen
and similar to score slash ratings.
I was getting browbeat constantly.
Oh, what can it be at the bottom?
Can we please have it at the bottom?
Can we please have it at the bottom?
And.
Eventually, I did move it to
the bottom, but now the downside
of that is it's all custom.
It's not the system search box,
which is a little bit of a bummer.
But, you know, it is what it is.
That being said when it was still at
the top, I needed to know, because
of the way I architected the app,
the visual architecture of the app,
I needed to know when the user tapped
on and activated the search field,
you know, so I could change to show
recent searches and so on and so forth.
And in SwiftUI, prior to iOS 17, It was
a mountain of really ugly, really gross
UI kit code to figure that out, like
truly awful code, the sort of code that
you you really wish you never wrote.
And I got a lot of help from my
friend Guy Rambo and writing it.
And then when once you write it, it's
giving you nightmares and night, right?
Well, In SwiftUI and iOS 17, there is
a property where you can do, you know,
searchable and then blah, blah,
blah, and you can provide it a
a binding that it will tell you
whether or not it's activated.
So, it's like, all of this
goes away immediately.
As it turns out, like I said, it all
went away because I changed the way
I was doing things, but that alone
was enough reason for me to almost
immediately go to iOS 17 just to
get rid of all that gross, gross,
gross code that I hated writing.
And if I still had that code.
I haven't looked at my
numbers recently in terms
of 16
versus 17, but I would probably be
moving sooner rather than later to,
to iOS 17 just to get rid of all that.
I don't know.
Leo Dion (Host): I can't imagine your
numbers
have had to be pretty
high
Casey Liss (Guest): Let's see.
So I'm trying to look right now.
I don't have, it's not showing me
percentages, but it looks like just.
off the eye, roughly a third
on 16 and a third on 17, and
then a third of other stuff.
And so that's just looking
quick off the cuff.
I might have that wrong, but based on
the small amount of analytics I have,
that's about what it looks
like.
Leo Dion (Host): Yeah, yeah, yeah.
What made you decide,
well, I have to ask, so
Casey Liss (Guest): Mm hmm.
Leo Dion (Host): you already
did, well it sounds like
you already did Storkit, so.
that's probably why you stuck with
that as opposed to going through like a
revenue cat or
something.
Casey Liss (Guest): Oh, so the bald
spot that's been brewing because I'm
41 years old was probably made worse
during the Storkit implementation
stuff.
Storkit
2, Storkit 2
is what I'm using.
I was using it for
Masquerade as well.
In general, Storkit 2 is pretty good.
The problem I have with Storkit 2 is
that, and I understand why, but It's,
it's frustratingly can't think of the
word I'm looking for, but it's very
minute in the way it surfaces data.
There's no, or at least not that
I'm aware of, there's no real good,
here's one method to call that
gets you the holistic view of the world.
And I get why that is, but
I wish
Leo Dion (Host): It sounds
like the opposite of the movie
database
Casey Liss (Guest): Kind of, yeah.
yeah.
Leo Dion (Host): gives you everything,
but now Apple
gives
you bits and
pieces
Casey Liss (Guest):
Well, that's the thing,
right.
And it's, and I get it because, you
know, what if, what if you have a.
A active subscription in a family plan,
but somehow you also have an active
subscription in an individual plan.
Plus, you have a free trial
that hasn't quite expired.
Like, the permutations that
Apple has to deal with are kind
of bananas, bananas bananas.
And and so I get why it's so granular
is the word I was looking for.
I get why it's so granular, but
from a, from a, from a user of that
API's perspective, so as from a
developer's perspective, that's,
that's leveraging these APIs.
Kind of stinks.
Like I just tell me what's the state
of the world like do they or do they
not have paid access to the app?
That's all I care about and that doesn't
really exist and my understanding is
that and I haven't really looked into
revenue cat much But my understanding
of revenue cat is that it does
a much better job of giving you
that holistic state of the world
and there was a time not too long
before launch That I was like this
far away from saying I'm going to
rip this all out and go to RevenueCat
because I just can't with this anymore.
I didn't end up going with RevenueCat
partially because I'm cheap and I didn't
want to give them any of my money, which
isn't to say that it's not deserved.
They deserve my money
if I were to use it.
I just didn't want to give it to them.
And so, that, that, that's, and, and
their pricing, as much as I'm joking
about, their pricing is actually
extremely generous for someone like me.
It's not, I don't know if
it's quite as generous for
like an Amazon, if you will.
But for somebody at my level,
it's very, very generous.
I'm not even sure that I would
have needed to pay them money.
But again, like I think I've spent too
much time with Marco Arment and, and,
and, and Apple ecosystem in general.
And if I can own the whole widget,
I'll own the whole damn widget.
And so I wrote it all for myself
and in the grand scheme of
things, like I'm glad I did.
I think, from what I can
tell, it works pretty well.
Ask me again in a year when renewals
start happening, but it's, as far
as I can tell, it's working well.
But it was a slog.
And I think it was a slog because
I didn't, in no small part, because
I didn't have my own expectations
set appropriately, in that it's
up to me to micromanage all of
these different moving parts.
And I can't just go to Apple,
like I keep saying, and say,
Are they, are they registered?
Are they paid?
Or are they not?
That doesn't really exist.
Leo Dion (Host): Did you did
you try using any of the user
testing stuff for subscriptions
at all?
Or,
Casey Liss (Guest): I
did I tried using the
unit testing stuff, which is
not exactly what you asked.
I tried using the unit testing
stuff, and that went okay.
I forget what it was that
caused problems, but it seemed
like it was only half baked.
Very well could be a
user issue on my end.
Very, very well could be.
That being said, the StoreKit 2 testing
where you can create a set of products
in your Xcode project and tweak those
and, and so on and so forth, that is
just chef's kiss, like, wonderful.
Leo Dion (Host): Okay.
I, I'm jumping into Storkit 2 with
my Mac app, and like, so I'm just
kind of curious how that experience
is, and like, yeah, I'm worried
about, you said all the edge cases
of like, trials and family
subscriptions and all that
Casey Liss (Guest): It
gets, it gets gross quick.
I mean, it's, it is
surmountable, but it gets gross.
And actually like a super
top secret, just the two of
us, nobody else is listening.
Right.
If you go, if you
Leo Dion (Host): I'll cut this out.
Casey Liss (Guest): no, it's, I'm just
kidding.
I'm just
kidding.
If you go to, if go to Callsheet
or if you, excuse me, if you go to
Safari and do Callsheet colon
slash slash subs, S U B S, it
will open up a read only view
that shows my view of the world.
So like, if I ever have.
An issue where someone's like,
dude, I've paid for this.
Why is it not registering, you
know, that I've paid for it?
Then you can go to Callsheet
colon slash slash subs, and it'll
show, you know, for all of the
different products I have, here's
what store kit two is telling me.
Like, you know, you're registered,
you're not registered, you'd
never purchased, and so on and so
forth.
And,
Leo Dion (Host): for the person,
it's the person
who's logged into
that
Casey Liss (Guest):
right, it's, right, right.
right.
On their, on your own phone.
So if you're a Callsheet,
know, user, you can try
this out just for grins and giggles,
and see, see what, see what.
store
kid is
telling
Leo Dion (Host): view.
I love that.
Casey Liss (Guest): And this was an
idea of my dear friend Jelly, who
writes the wonderful app, GifWrapped.
Jelly did something similar.
I forget where you find it in his app.
I don't think it's a secret,
but it's hidden somewhere.
Well anyways, but he he had
suggested to me you should do
this and I was like, no, I don't
Okay, fine, I think I should.
And so, I haven't actually needed it
yet, knock on wood, once again, but
I'm really, really glad it's there, so
if there's a problem, at least I have
some amount of view, you know, because
I could have a person screenshot it,
and I believe, actually, if memory
serves, you can also, like, copy a
really crummy text based view, or
maybe it's an image, view of what
everything is, so that they could
send that to me in, like, an email or
whatever.
It's, it's hideous.
But it doesn't matter.
It's just
something to give me a tool to help
my users if they need that help.
Leo Dion (Host): Makes total sense.
Alright, so we talked about giving
RevenueCat a cut and AppStore a
little bit.
Let's talk
about the fun
you had with getting
this
Casey Liss (Guest): Too soon!
No, it's, it was, it was, it
was an adventure for sure.
Leo Dion (Host): you wanna
kinda, I mean, I heard the
story on ATP, but I'll let you go ahead
and
explain
Casey Liss (Guest): Yeah, so,
so I sent the app to AppReview
shortly before I was going
on a week long vacation.
And I did that, the app was
ready, but I was a couple of weeks
before when I wanted to launch.
But my theory was...
You know, I'm coming up on vacation,
knowing me, all I'm going to think about
is work during this entire vacation.
Unless I can get
this through AppReview, if I can get
it through AppReview once, generally
speaking, knock on wood, generally
speaking, once you get it through
once, you know, short of something
very unusual, it'll continue to
get approved, maybe you'll have an
issue here or there, but generally
speaking, once you get over that first
big hurdle, then you're okay.
So I thought, okay, the week before I
go, I'm going to send it to AppReview.
They'll approve it and then I'll
be on vacation and know that even
if nothing else happens, I have
a version that I could release to
the App Store when I'm back home.
I released it to the App Store and they,
they looked at it overnight Eastern
time and they sent me a screenshot.
I'm, gosh, I should call up App Store
Connect to make sure I'm telling the
story right, but the general gist of it
was they sent a screenshot saying, well,
you have media playback in this app.
And that's not allowed because
you don't have rights to
the things you're playing.
Okay?
And they sent me a screenshot of some
anime show where, I don't think there
was even a play button on screen, but it
was showing a list of, like, episodes.
And that was their justification
for the fact that they could
play media on this app.
And I'm like, mm, no?
You can't even play a
freakin trailer in the app.
What are you talking about?
Of course, I said this in a very polite
and kind way but, you know, I was
like, What, what are you talking about?
That's not, that's not a thing.
And so, I feel like there was one
other thing that they complained
about, and then they said, well, okay.
You can't use any Disney or Marvel or
any, you know, media in any of this app,
especially your App Store screenshots.
Like, they sent me my own App Store
screenshots as justification for this.
And I'm like...
What the hell do I do with this?
There's so many apps in the app
store that are clearly using
Disney, Marvel, Pixar, all these
different pieces of media, you know,
posters and images and whatnot.
Like, what am I supposed
to do with this?
And so I sent them a response
via app store connect.
And I was like, look what
again, on a very polite way.
What?
Like,
How is this a thing?
You know, I, I can't, this app isn't
possible without, I mean, I guess
strictly speaking it is, but it
effectively is impossible without
using the media from, or without using
the images from all these things.
What do you expect me to do?
And like, look, like Letterboxd,
which is, you know, I've spoken
with their developers a couple
times, they seem like incredibly
kind and wonderful people.
Letterboxd, the very first screenshot
on your app store for the Letterboxd
app was like Infinity War or something
like that, I forget what it was.
Like, are you serious with this?
And so, we go back and forth
a couple times, and I'm
getting nowhere, and again, I'm
being polite, although I'm getting...
Clearly,
my fuse is running out of fuse.
And so I said, you know,
these interactions were
happening in near real time as
close as App Store
Connect can get real time.
So I think to myself, all
right, here's what you do.
I sent them a message and said,
hey, why don't you give me a call?
Let's just hash this out verbally.
We'll take care of it.
I'm sure it'll be fine.
You know, here, my number is,
you know, 1 2 and just give me
a call and we'll talk about it.
And I thought, since we're going back
and forth constantly about this, I'll
get a call in the next 10 minutes.
This
was like the Wednesday or Thursday
before I leave for the beach.
They send a response back
fairly quickly that says, Sure,
we would love to call you.
We'll talk to you sometime in the
next three to five business days.
No!
We were just talking!
Like, no!
Call me now!
So, we go to the beach.
I think it was Monday or Tuesday.
I want to say it was Monday.
And I get a call.
Actually, I missed a call from Apple.
And this very kind gentleman,
I believe his name was Richard,
leaves me a message and says,
Hey, why don't you call me back?
A phone number, which was
critical.
Because you don't get, that's worth,
that's worth its weight in gold.
But so Richard calls me and leaves a
message saying to call me back.
I miss the call, and then as I'm
like figuring out, I'm saying to my
wife Erin, I'm like oh my god, oh my
god, ah, ah, ah, ah, what do I do?
And then my phone rings,
and it's him again.
We get on the phone, I'm like, look,
I, I, I, I, I, I, I was like panting,
and I'm not just because I walked a few
yards away from everything else and all
the noise and the beach, but I'm panting
because I'm like my heart is racing.
I should have in retrospect looked
at my watch to see if it read
a heart
rate, because my heart must
have been going like 160
beats a minute or something.
I'm like, I'm standing still, and I'm
like, well, well, here's the, and I was.
just a lunatic on the phone, and not in
a nasty way, in a like, I just, I don't
know what to
do
way.
It's so nervous, beyond nervous,
I mean, it's like asking a girl
out for the first time kind of nervous.
And so anyway and so this, this
very calm, very level headed
guy, Richard, says in so many words,
we've taken a look,
you're absolutely right.
There's no problems.
I'm gonna hit go.
You're good to go.
At which point I basically fainted onto
the sand and said, Thank you so much!
Oh my god, I love you!
You know?
And so,
it ended up that once I got to someone
with some amount of authority, It seemed
like it all went away, lickety split,
and I haven't yet had an issue since.
Meanwhile, well, so, but, meanwhile, I'd
heard reports from ATP listeners and
from other developers who, you know,
who watched what I say on Mastodon or
whatever, and a lot of other people
have said, look, I've gotten similar
rejections, what you've got to do is...
If you put a little blurb, you know, in,
in App Store Connect, there's a little
section where you can write like notes
to the reviewers and you can put in a
little blurb that says, look, I have
rights to this stuff because of the
movie databases, APIs, terms of use in
terms of service and so on and so forth.
Because basically the movie database
says, look, if you're uploading
something, you have to have the
rights to upload it because we are not
claiming those rights,
so on and so forth.
And so I think it's one of those
things where Apple just wants to
be able to point to somebody else.
If, if Disney comes to Apple and says,
this is BS, Apple wants
to be able to say,
that's not us.
It's them.
It's them.
And for at first that was me.
And now I can say, no, no,
no, don't worry about it.
It's not me.
It's over there.
I can say.
Oh,
it's them.
And so that seems to be
enough from what I can
tell to keep apple satisfied.
But it was a stressful week
or so, or, you know, handful
of days because here it is.
I've worked, you know, something
like six months on this app,
which maybe that was too much.
Maybe I'm just not a fast developer.
I don't know.
But I worked hard on
it one way or another.
I worked hard on it.
And this is six months of my life.
And Now it's hanging in the balance
as to whether or not, you know,
Mickey Mouse is going to be upset
about what I've put in this app and,
and it worked out okay, but oh, I, I
I have, I, there was, it was some trauma
while it was going on, I tell you what
Leo Dion (Host): yeah, and it's
also like, I mean, I think it's
a little microcosm of what other
developers have run into of just
like, Oh, we had the wrong reviewer
who didn't know what was going on.
Like the stuff about playing, like the
fact that you don't support streaming or
do
Casey Liss (Guest): yeah, right,
Leo Dion (Host): like they
were confused about that.
And it's just like, that I felt like
it was a perfect little like anecdote
that every developer has gone through
where it's just like luckily you
ran into Richard and I think we've
all Ran into our Richards once in a
while when we've had
calls from app store.
But like, Yeah,
I can imagine
how
stressful that
is.
Casey Liss (Guest): it was, it was
awful, and I mean, in the grand scheme
of things, if this was my stress for
the year, I'm sitting pretty, but in
the heat of the moment, man, it was, it
was rough and, and it, again, it ended
up fine, and once I got, once I got
through to Richard, it, it was fine,
and actually, to, to Richard's credit,
you know, he said, you have my number,
if you run into issues in the future,
you know, feel free to call, and we'll
work it out, which, at this point, I
was ready to marry him but but anyway,
so, it, it, I think it will be fine in
the future, but it's just tough, because
this isn't my entire livelihood, But
it's a large portion of it and it was
hanging in the balance because one or
two people who didn't really understand
Or maybe maybe it was me that didn't
understand one way or another a couple
of people didn't understand what the
state of the world was what was is or
should be and Maybe the six months of my
life would have been down the drain and
I and I would have had nothing for to
show For it and that's that's tough And
well, I don't know that I'm necessarily
on team side loading when it comes to
iPhones and stuff like that It's hard.
It's hard to Simultaneously accept
that there is one gatekeeper to
get your work onto these devices.
That's a tough pill to swallow.
And I don't know what the right answer
is.
Leo Dion (Host): Yeah.
And just like, I don't have
a problem with the cuts.
I don't have a problem
with the 30 percent cut.
I don't have a problem with a lot of
things, but like the whole flakiness
of app review, I feel like as a, as
a system that's supposed to set up
to protect users, like sometimes it
doesn't even do a good job with that.
We're.
Allows crappy scammy apps in it's
just, yeah, I feel like there
needs to be more done on, on that
front, like, unless, unless you're
just going to go to sideloading,
It's just a crappy experience
for developers and users
Casey Liss (Guest): Yep.
100 percent agree.
Leo Dion (Host):
Anything else you want to
talk about
that specifically
Casey Liss (Guest): With
regard to AppReview, no.
I mean, it did work out, and I mean, I
feel like this is one of those things
that within a few days of it being over,
I was able to laugh about it, but, phew,
heat of the moment, it was not fun.
Leo Dion (Host): It's
a, it's a good lesson
learned,
I
Casey Liss (Guest): It is, it
Leo Dion (Host): now, you know, if you
ever run into this
again, you won't
have a heart
attack.
Casey Liss (Guest): well, I will still
have a heart attack, but hopefully it
will be, I will recover from it quicker.
Leo Dion (Host): So let's talk
about some of the features
you're really proud of.
Launch time.
Casey Liss (Guest): I mean,
Leo Dion (Host): you want to explain
Casey Liss (Guest): yeah, so in
the show notes, I had put in two
different sections like launch time
and since and what I mean by that
is, you know, at the time at which
I
Leo Dion (Host): when you launch the
Casey Liss (Guest):
yeah, I mean, I think the
launch time is also that was
ambiguous of me.
I think the
launch time is pretty good.
But what I meant by that is, you
know, what did I have at launch time?
And you had put in and I'm very happy
that you did, you know, accessibility.
You know, I took a spin with voiceover
and tried to make it as good as I could.
And then right around the time that I
was getting to polish on the app,
that's when WWDC was in early June.
And so I spent some time with
some accessibility engineers
and they're happy to go through
your app and tell you, you know,
here's some things you can fix.
Here's some quick wins you can
have and so on and so forth.
And that there wasn't that many action
items that came from those discussions.
I mean, they're only
like half an hour long.
But the action items that came
from them made the voiceover
experience so much better.
So a silly example of
this,
Leo Dion (Host): Those sessions are
awesome.
Casey Liss (Guest): they're incredible,
I cannot recommend them enough.
A silly example of this is, I'll
show like, you know, score and
then a percentage on screen.
And I didn't realize that
in voiceover, there are two
different SwiftUI elements, and
so it would read like, score,
and then just sit there, and
then you'd have to swipe.
You know, 73%.
And they
said, and I forget the property or
the thing you have to flip off the top
of my head, but they said, basically,
you can treat this as one item.
And so when voiceover hits
it, it'll say score 73%.
And something silly like that makes a
world of difference for voiceover users.
And so I was really happy with that.
And I've had some voiceover users say,
you know, look, it's not perfect, but
this is, especially for version one.
It's really, really good.
And you did a really good job.
And that makes me incredibly happy
because, you know, as, as has been
often said, and there's a really
good Microsoft graphic about this
that I was reminded of in the last
couple of days, everyone either
does or will use accessibility
at some point, and maybe it's
something like you have a broken arm.
So you have a temporary accessibility
problem, or maybe it's something that.
You know, you, your eyes
have just been dilated.
So you need to crank your
font up to a thousand percent
just for a little while.
Like, even if you don't have a
permanent need for accessibility
affordances, almost everyone
will use them from time to time.
And so for it to be good, it makes me
very happy.
We talked about spoiler avoidance that,
that launched or that was at launch
time.
I'm, I still remain really,
really proud of that.
I think it's a really clever thing.
And.
It wouldn't surprise me entirely
if like IMDB or something like
that, or someone like that apes it,
which in the grand scheme of things,
that's, that's a, compliment, right?
Like if they ape it, then
that, that's okay, I guess.
And I'm really proud of that.
And the speed of the app, you know,
we talked about that a little bit
with regard to my ambiguous launch
time, but, and also with the API.
The app is fast.
As long as your internet connection is
at least decent, the app is real fast.
I'm really, really happy about that.
And then for stuff
that's happened since,
My first big project since launching
was getting integration with the
aforementioned Channels and Plex.
Channels, again, is
like a software based
DVR that you can run on your network.
And I actually know one of the
guys that's one of the founders.
He's local here in Richmond.
Even leaving that aside, it's
a phenomenal app if you're a
weirdo that still wants cable,
but doesn't want a cable box.
Hello, it's me.
And there's other uses for it as well.
Don't get me wrong, but
that's what I use it for.
And Channels is phenomenal.
And it was really fun working with
the guy's name is John Maddox,
working with John in getting
integration between the two apps.
And especially as an indie developer,
it's very unusual to have that
kind of collaboration with anyone.
And between the stuff with Ben that
we talked about earlier and the
stuff with John.
It was incredibly fun
to get the channels integration
squared away, and that is pretty
robust and works pretty well, and
I'm pretty darn proud of that.
The Plex integration, I use Plex
even more than I use channels.
I adore Plex, it's my jam.
The Plex integration is very rickety,
and for very complicated reasons that
if you have 40 hours, I'm happy to
talk you through, but suffice it to
say, it's just a very old technology
that Plex uses to do these sorts of
things, and it, and it's just, it's very
rickety, and so the Plex integration,
when it works, is just magic, it's
incredible, same with channels, is
magic, and it makes me incredibly happy,
because what happens is, on screen,
it'll say, now playing, you know, Plex
Letterkenny, or whatever the case may
be, and if possible, it'll even jump
you to, like, you know, Letterkenny,
Daybears Day, and it'll jump you
to the exact episode that you're,
that you're watching, and it's just
incredible surprise and delight, but
Leo Dion (Host): this is you can
play the show you're
you want to
watch through Callsheet,
is
Casey Liss (Guest):
No, no, no, I'm sorry.
No, no, no, thank you for asking.
So, what I mean is, you're sitting
on the couch, the Apple TV is playing
Letterkenny, or whatever the case
may be, on Plex, or on channels, and
Callsheet will reach out to channels,
or Plex, or whatever, and say, Hey,
what are you playing right now?
And the Apple TV will report back, Oh,
I'm playing Letterkenny Daybearsday.
And so, you know, it's the perfect couch
moment, you know, or couch instant,
as John calls it.
Again, channels integration is
pretty robust, works pretty well.
Plex integration I've called
experimental, because honestly...
There's not a lot more I can do
with it that I'm aware of, but
it's very, very rickety, and
so I
Leo Dion (Host): I've always
been Like interested in playing
around with Plex and the Plex API.
I use Plex as well So it's
it's unfortunate that it
is
rickety
Casey Liss (Guest): In the defense of
Plex, it's, I mean, Plex started
in like the late 90s as Xbox Media
Center, you know, so it's got a long
lineage and basically what, what
Plex did is they created their own
zero config, zero conf, you know,
zero configuration, like Bonjour,
basically they made their own like
version of Bonjour before Bonjour
was the thing, whereas channels
having been made in the last five or
10 years has the advantage of just
Using Bonjour, and so who to thunk it,
but this Apple created technology called
Bonjour has incredibly good support in
Swift APIs, whereas, you know, doing
raw BSD socket work in, which is what
I, you know, well, I used a third
party library, but effectively, you
know, you need to do raw sockets to do
the same thing with Plex, that's less
robust and a lot less fun, but in the
defense of Plex, I mean, it's because
this stuff was written 20 years,
literally 20 years ago, and they
haven't had to mess with it since.
So what are you going to
Leo Dion (Host): Yeah Yeah
makes total sense total sense.
Yeah Go back
you were talking about spoiler
avoidance.
Are you do
are you good on time?
Casey Liss (Guest): Oh, yeah, yeah.
Mm hmm.
Mm
Leo Dion (Host): Okay, cool.
On spoiler avoidance, I wanted
to jump in and talk about using
the redacted, that's a, the
redacted view modifier.
How was
that?
Casey Liss (Guest): It was, it was fine.
Basically, I wrote a, a custom, I
think it was a view modifier, right,
a custom view modifier that, that
lets me, that I call conditionally
redacted, and so basically it's,
you know, dot conditionally redacted
if, and then you provide a Boolean
that says, you know, either you
need to redact it or you don't, or,
you know, or, or a, or an inline
function that, that figures it out.
It'll, I think it's auto closure
there if memory serves that it'll
evaluate it and so on and so
forth.
Leo Dion (Host): You can pass
in a Boolean and then it does
it or doesn't do it based on whether the
user wants it.
Yeah.
Okay.
Casey Liss (Guest): But under the
hood, all it's doing is it's dropping
a dot redacted, you know, reason
placeholder or whatever the case may be.
And yeah, that's all the, the outta
the box with Do I redaction stuff?
Leo Dion (Host): Okay, cool.
What,
so what do you have planned in
the
future?
Casey Liss (Guest): I can't tell.
No.
So I, I have some new
stuff, some old stuff.
Like I should actually look
how many GitHub issues I have.
There's a zillion,
but
Leo Dion (Host): let's
let's talk
about like just iPad support.
Did
you start looking into
Casey Liss (Guest): Yeah.
that's going to happen sooner
rather than later, so I,
for what it's worth, I have
45 open GitHub issues.
Now, when I say issues, I don't
necessarily mean, like, problems.
A lot of these are, like,
enhancements and so on and
so forth.
Features.
163 closed, so I got that going for me.
But anyways but yeah, so I have
a lot that I'm noodling with.
It's, it's tough to figure
out what the right answer is.
Like, clearly the rightest thing to
do, and I've been kicking the can down
the road because I don't, I don't, I
don't know the best way to go about it,
but as you said, better iPad support,
like Callsheet works on the iPad,
but it's not well laid out, there's
a really inefficient use of space,
and I need to do better about it.
Making iPad a first class citizen
and a great example of this is, as
we talked about earlier, this quick
access link thing where you can jump to
Trivia or jump to Wikipedia, whatever.
The way that works on iPhone is there's
the one icon that's your like favorite
and then a button that says like more
links, I forget what I have it say now.
And if you hit that more button or
whatever the case may be, links button,
it'll drop down or pop up a menu that
says, okay, well, you know, here's
Trivia, but you can do Wikipedia,
parental guidance, you know, technical
information, so on and so forth.
Well.
On iPad, I have the width that I
can just split out all of those, you
know, that line of icons and just
have them all immediately available.
That's a silly example of
something that I need to do
that I just haven't done yet.
But broadly, you know, better
iPad support so that it
works a lot better on iPad.
And then I've promised a bunch of people
who have asked me once iPad support
is better, I'll flip the switch on.
What is it?
Continuity?
No, not continuity.
What am I'm thinking of?
Catalyst.
Thank you.
I'll, I'll flip the switch
on Catalyst so that you can
use it on the Mac as well.
It's just right now, I don't
love the way it is on iPad and
I don't love, thus, I don't
love the way it is on the Mac.
And once the iPad isn't
embarrassing, then I'll,
I'll, I'll flip the switch for
Catalyst and so you
Leo Dion (Host): Yeah, that makes
Casey Liss (Guest): it'll, so it'll
work on the Mac.
Leo Dion (Host): like
rotations and stuff for
like, if you want to do
split view on
an eye, like not
Casey Liss (Guest): you know,
I don't know if I, yeah, yeah.
Yeah.
Leo Dion (Host): side by,
Casey Liss (Guest): I think
that does work if memory serves.
You can tell how often
I run the iPad app.
If memory serves, you can do
slide over and all that jazz.
But I haven't looked at that
in a while, to be honest.
And I do need to get on that.
I'm trying to grab all the
things that users are complaining
about, which isn't that much.
And I say that as
though it's a bad thing.
Like, the fact that your users
are telling you, Can you fix this?
I don't like that, or whatever.
That's a compliment.
Like, even if it's a complaint,
it's still a compliment.
So...
Leo Dion (Host): love it
enough
to
tell
Casey Liss (Guest): Exactly.
So I'm trying to get through
some of that stuff, and I think
I've got most of it at this point.
So I just gotta, I gotta go
through my GitHub issues list.
I just shipped a test
flight up beta yesterday.
I got a couple other things in
flight with regard to URL handling.
So, we were talking about channels
earlier, and channels, if it detects
that you have Callsheet installed,
will offer to open things in Callsheet.
But, because of some oddities with
the way channels, well I shouldn't
say oddities, because of some
choices that channels makes which are
perfectly reasonable for them, they
don't always have a movie database
ID to give me, especially for like
a particular episode of a TV show.
So, so when they kick over
to Callsheet, they might say,
Hey, this user is watching
Letterkenny Season 8, Episode 7.
But they don't give me any identifiers
that I can use to make an API call.
Well, so what I need to do, one of the
things I want to do is start caching
the fact that the user was watching,
what did I say, Season 8, Episode 7,
and kind of put that aside for a
minute and go and figure out, the
user search for Letterkenny, figure
out, you know, which is the correct
episode or which is the correct show.
And then once they do, I can bring that
data back and jump them directly to the
right, the right episode of Letterkenny
or, you know, whatever the case may be.
Once, once they've established,
this is the thing I'm looking for.
So I need to work on that.
But other than that, there's,
there's a couple of other things
that I'm contemplating that
I think could be really fun.
I do have a dog.
I, I don't think I've lost sight of
reality, like an average dog owner.
You know, the dog, the dog is
a dog, and, and I love her very
much, but, you know, she's,
she's just a dog.
But I know a lot of people are very
sensitive about their dogs, and
there's a website, Does the Dog Die?
I think
it's com and and they do have an API,
and so one of my tasks that I want to
look into is, is it easy enough that I
could integrate with does the dog die,
and maybe it would be opt in, but you
could tell, you know, oh, if you're
sensitive to these sorts of things,
maybe steer clear of, you know,
this particular movie, you know,
or whatever the case may be, so
that's a silly example of something
that I think could be fun both
for me and for my users, but,
No promises.
We'll see what happens.
Leo Dion (Host): yeah.
yeah.
Do you ever think, this is one of
the things we have in the notes,
but like, do you think Apple could,
ever support something to where an
app could integrate as you watch a
video or a movie app where you could
do something like Amazon X
ray or Amazon prime
X
Casey Liss (Guest): they
could,
but they
Leo Dion (Host): like,
that would.
be awesome.
Casey Liss (Guest): would.
And you know, a lot of people have
asked me, well, wait, you know, I see
that you've got this Plex and Channels
integration, but I don't always, or
maybe ever, use Plex or Channels.
I use the Apple TV app, or
whatever the case may be.
You know, I only ever watch
Apple TV stuff, or maybe
I only ever watch YouTube.
And, Shouldn't there be an API
where Apple just tells you this
is what the person's watching.
It doesn't matter what
freaking app they're using.
And my selfish answer is yes.
Yes, there should be that API.
And I guess like, you know, the home
automation people have reached out and
Home Assistant is this like very, very
nerdy home automation app that allegedly
will let you do this sort of thing.
And I started spelunking
through their source code.
And first of all, I think
most of it's Python, which I'm
okay at, but I'm not great at.
Second of all.
Like, the way they go about discovering
this is extremely convoluted.
Third of all, I think you need to, like,
pair Home Assistant with your Apple TV.
And, like, that is not the
way it works with channels and
Plex integration right now.
Like, it just, it works.
If it's there, it works.
And so, like, in a lot of ways, this
is, like, the holy grail for Callsheet,
but it would also be kind of ugly, too.
So, I don't know if
it's the right answer.
But...
Leo Dion (Host): be a
lot of maintenance too, and
Casey Liss (Guest): Yeah, it's so
much support burden, like it's just, I
don't know if that juice is worth the
squeeze, but you know, why, why doesn't
Apple just provide an API for this?
And then I was talking to
somebody, I can't remember who it
was, and they pointed
out, well, because that's
that's deeply privacy invasive.
And I'm like, wait, wait, wait,
what are you talking about?
And they said, well, what if Facebook
knew?
All the things you watched
on your television.
Does that seem good?
And then it was like, okay, light bulb.
Yep.
The Apple will never
provide this information.
Never in a million years, because
the, the tools of the world, the
jerks of the world will use this
to do terrible and gross things.
And I just don't see Apple allowing it.
Now, of course, the for me, what I
would say is, well, can we opt into it?
Could a user opt in to sharing
their data with Callsheet or
whatever the case may be?
And maybe,
yeah, or whatever, or what exactly,
like your location or what have you.
Callsheet doesn't care
about your location, but you
know, you know what I mean?
So it's like you said,
things
along those lines, same idea.
And and maybe I still don't
think they would do it, but maybe
Leo Dion (Host): how about the other
way where, like, we've had a few
guests on who do music apps, right?
Where it's like, oh, you
can tap into Music Kit
and show album art or show
metadata attached to the
music you're listening to, so.
Like, basically you have a video player
that has access
to it.
Apple TV plus
or
Casey Liss (Guest): Yeah, I mean,
one could dream and I,
I hope
Leo Dion (Host): one good dream.
Casey Liss (Guest): I don't, I don't
expect it to happen in a million
years, but but no, I, I think, I
think there are ways in which I
can do everything in my power
to try to put that information
front and center for my users.
You know, I haven't looked into YouTube
integration as an example, but it
may be possible to do
that sort of thing.
Of course, at that point, I'm
probably adopting the Chromecast
APIs, which make me feel super gross.
And so again, that juice may
not be worth the squeeze, but
it's worth looking into.
Leo Dion (Host): Was there anything
else from dub dub this year as far
as like behind the scenes things
like Swift data or Observation or
any of that stuff that you're like,
oh, I wish we could do well Swift data.
Maybe
Casey Liss (Guest): not for me because
I don't really store that much.
But little I do store,
I store in CloudKit.
And,
I have a fairly, I have a fairly
thin wrapper API that I put in
front of CloudKit that I'm actually
really proud of that makes it pretty
darn straightforward to drop data
into or pull data out of CloudKit.
So I don't really need Swift data
because there's just not that much.
You know, it's
your
Leo Dion (Host): Yeah, yeah,
Casey Liss (Guest): it's
your, your, pins, your
spoiler settings
and stuff like that.
With regard to observation...
I like the API in principle, but I've
heard that there's a lot of gotchas
that if you're not following, this
is very, very much in the spirit
of SwiftUI, if you're not following
the happy path, I understand that
it gets pretty ugly pretty quick.
And since what I have is already
working and doesn't really cause
me any problems, I'm extremely
reluctant to switch it up to the
new hotness just for funsies.
That being said, one
of my near term goals.
Probably in the next week or so is I
really, really want to investigate and
probably use tip kit tip kit is this
new thing where, you know, you can pop
up, pop up overlays at convenient times
for the user and say, Hey, you know, if
you tap here, it'll do such and such.
So coming back to my conversation,
you know, I keep wanting to surprise
and delight, if you're looking at
a movie and it shows the run time
and say it's an hour and 30 minutes
or whatever, if you tap the text
that says an hour and 30 minutes,
it'll show a popover that says ends
at, you know, 90 minutes from now.
So if it's, if it's noon and you tap
that popover for a movie that's 90
minutes long, it says ends at 1 30.
And so the idea here is if you're
looking at this movie and saying, Oh,
do I have the time to watch this before
bed or before I have to pick up my
kid from school or whatever the case
may be, you can just tap that button
and it'll say, Oh, it ends at 1 30.
And you know whether or not
you have the time to watch it.
Well, that's not particularly
discoverable, right?
Like, you have to know that
this thing that doesn't even
look like a button is tappable.
And so, TipKit, in theory, having not
actually used it yet, would be a really
great way to have a little popover that
says, Hey, if you want, you can tap on
this and it'll show you some extra data,
you know, or whatever the case may be.
And so, I'm really, really
looking forward to digging into
that and hopefully playing with
it and seeing if I can get some
good, good mileage out of it.
Leo Dion (Host): Yeah.
That makes total sense.
Any plans for offline?
Some sort
of offline access?
What does the app
do
when you're offline?
Sorry, I had
Casey Liss (Guest): tough.
No, it's, it's a fair question.
It basically says tough noogies.
Try again.
I, I feel like
it's, it's a completely fair
question.
I don't know that there's a need for it.
like, if you're, if you're watching
something on a plane and you can't
access Callsheet, like I don't
think that's that critical.
Like the advantage of
Callsheet is it's not flighty.
You know, if you don't have
an update on who that actor is.
It'll be okay.
You know what I mean?
It's not a, it's not a time critical
mission critical sort of thing.
I could be convinced I'm wrong
about that, but I don't, I'm not
too worked up about it
or too worried about it.
So I think it'd be, it
would be a fascinating
engineering challenge.
Like what is the right way to figure?
Well, how do you figure
out what data to capture?
What's the right way to capture it?
How do you store it?
How do you keep it efficient?
How do you not explode the app?
to be, you know, 700 megs
worth of random photos that
you never look at again.
Like again, from an engineering
perspective, it's a fascinating
challenge, but I just don't
think that that's a challenge I
necessarily have at this time.
Leo Dion (Host): Yep.
Makes total sense.
Before we close out,
we had one question on Mastodon
that I wanted to answer.
And I think we both have a C sharp
background from a hundred years ago.
Casey Liss (Guest): Yeah,
Leo Dion (Host): Did you,
Did you, ever look at
Xamarin,
or whatever the heck they
Casey Liss (Guest): yeah.
I did, what was it called?
It was mono something at the time.
I forget what it was called at the
time,
Leo Dion (Host): It was called Mono,
and then it was called Xamarin,
and then
they renamed it
again
Casey Liss (Guest): Oh, did they?
I did not know that.
When I looked
at.
Leo Dion (Host): I'm so out of the
loop,
Casey Liss (Guest): Yeah, same.
So I haven't been a NET
developer since 2016.
Is that right?
I think that's right.
And so anyways, I, I love dot net.
I really did a C sharp
at the time anyway.
And as far as I know,
it's still the case.
C sharp was a phenomenal language.
You had brief mentioned in
the show notes about combine.
Combine is if you, if you ask
me, is apples take on Rx and
Rx I believe was born or was
at least popularly popularized
in C sharp as far as I'm aware.
So, Thank you.
So anyways, I love C sharp.
I loved dot net.
I didn't love windows and
I didn't love a lot of
the Microsoft other things.
Visual Studio was also great.
But at the time when Xamarin was
new, I had looked at it and thought.
It's similarly as we spoke about before.
If I were to do it, this
is how it would look.
And then when they did, I think
when they first offered mobile
support, I had also looked at it.
and again thought, Okay, like this
isn't necessarily what I would want
in terms of I'd rather use, you know,
the Objective C APIs and whatnot.
But if you're going to suck Objective
C, which is very different than,
you know, C sharp, if you're
going to suck that into C sharp,
it's a pretty good way to do it.
It makes a lot of sense,
so on and so forth.
I haven't looked at it since then, and
this would have been, you know, like
iOS 3 or 4 or something like that.
So, it's just not, leaving
aside the fact that I, I don't
really know C sharp anymore.
Like that, that muscle
is long since atrophied.
Even, even leaving that aside.
I find that having that middle layer
between you and the platform vendor,
I find that to be fairly distasteful.
And, and, and it, it makes you
beholden to even more people.
In the same way I didn't want
to be beholden to Revenue Cat.
for stuff that would actually
arguably make my life way better.
I don't want to be beholden
to Microsoft or whoever owns
Xamarin this minute to, to have
to do their updates before I
can accept, like before I can
embrace Tipkit as an example.
And maybe they're super fast.
Like, I, I, I am casually
acquainted with a guy who, last
I heard, was working on Xamarin.
I think more on the
Android side than iOS.
But, and he's incredibly
bright, incredibly nice.
Some, he lives somewhere
around Richmond.
It's not that the people are bad.
It's not that the project
is necessarily bad.
It's just it doesn't solve a need that I
have in my life.
And so I haven't really
looked at it now.
Leo Dion (Host): Yeah, so
it's funny because when I
started doing iOS development,
it was back during Objective
C
and like, I had to
do retain and
Casey Liss (Guest): Oh, yeah.
Same.
Yeah, yeah.
Leo Dion (Host): It felt.
so
backwards, like, other than
the fact that the iPad is
an awesome device, I felt
like, and I had been doing Silverlight,
so I was doing
Casey Liss (Guest): wow.
You're one of those.
Wow.
Leo Dion (Host): yes, yes and it felt
so backwards now, in like 2023 with
Swift, and I mean, I still think,
like, there's, there's nothing you
gain from, from going to Xamarin
unless you're like, what ends up
being is you're some massive company
where you have a ton of NET developers
and you need an internal app.
Otherwise, like, there
really is no, no real
need to go to Xamarin.
I, I just
don't see the reason
Casey Liss (Guest): I,
I completely agree.
And I mean, obviously everything
is an engineering trade off, right?
We've talked about that a
few times this, this episode.
And, and I think there are
engineering scenarios or situations
where it does make sense.
But I think generally speaking.
Even if you're an Indie, like even
if you're an Indie who knows C sharp
up, down, inside, out, so on and so
forth, you're, you've still got this
entire API surface that is Cocoa Touch
that you need to learn and potentially
SwiftUI or UIKit or whatever.
Like those are incredibly broad and
deep API surfaces that you're going to
need to conquer one way or the other.
So why not just conquer it in a
first class language that one of the
things I love about Swift is when,
Swift is kind of like a Rorschach
test where It looks like whatever
you want it to look like, like as a C
sharp person, it looked like C sharp.
Objective C developers, well, a lot of
them are very, well, were very cranky.
Most of them have come
around at this point.
But, but yeah, if you're an Objective
C developer and you're not too
cranky, you will look at it and
say, Oh, I see the Objective C here.
And I've
understood that like Rust and Python
people and Scala people can look at
it and be like, Oh, yep, I see that.
And, and so Swift has its
problems for sure and has
gotten extremely complicated
over the last couple of years.
I think.
Almost woefully so, but that being
said, it is still a great language.
It still does at least try to have
progressive disclosure.
so you don't need to be in a language
expert in order to get things done.
Again, I think that's getting tougher
now, but generally speaking, it's true.
So it's, it's a really great language.
That's fun to work with.
And there's not that much
boilerplate that gets in the way.
In fact, one of the things I love
most about Swift is that they're
always trying to remove boilerplate,
you know, the observation stuff.
I'm like hat, what is
it?
Hash preview,
you know.
Yeah, that's
Leo Dion (Host): about
removing boilerplate.
That's
like, that's it.
Casey Liss (Guest): Exactly right.
So there, even though
Swift can be daunting.
It doesn't often feel like busy
work, whereas so much of like
raw UI kit felt like busy work.
A lot of Objective C, although I
did like Objective C quite a bit,
a lot of it felt like busy work.
And it's uncommon for me anyway.
to find Swift feeling like busywork.
I can fight Swift.
I certainly do fight Swift somewhat
often, but it never, it's almost
never that it feels like I'm
just doing something because I
have to, not because I want to.
You know what I mean?
That's, it's a thin distinction,
but it's an important one.
Leo Dion (Host): It's
by the way, it's called
NET
MAUI,
is
Casey Liss (Guest): Are you serious?
Leo Dion (Host): Yeah, yeah,
Bad timing.
Casey Liss (Guest): Oh, true.
Very true.
Leo Dion (Host): I was gonna say
like one of my first contracts
was as I iOS developer was working
with a company that they wanted
to build their business layer in
Xamarin so that they can share
it with Android and.
Casey Liss (Guest): I mean, that makes
Leo Dion (Host): And then they
brought me, they brought me on as
the storyboard objective C expert
and it worked.
It
worked
Casey Liss (Guest): Fair enough.
Leo Dion (Host): Yeah, but
they're, they're a massive
company with, it was
like an
internal app.
So it makes total
Casey Liss (Guest): I agree.
I agree.
Leo Dion (Host): Anything
else, Casey?
I think we covered
Casey Liss (Guest): No, I
appreciate all your time.
You know, we had talked before the
show that you wanted to keep it to
like somewhere around 45 minutes
and here we are like double that.
So I appreciate, I appreciate
the time you've given me.
But no, I, I, I'm very happy to be on.
And certainly if you ever have the
occasion that you would like me
to come back, you tell me when.
Leo Dion (Host): Awesome.
Awesome.
Where can
people find you,
Casey Liss (Guest): Yeah,
so my website is caseyliss.
com C A S E Y L I S S but you
can find my podcast at http.
fm and relay.
fm slash analog, spelled the
correct way or with the U E
on the end, take your pick.
So, you can, you can check all
those out and I'm on Mastodon.
I'm on mastodon.
social as Casey Liss, Instagram as
Casey Liss, and that's basically any
of the places that I actually frequent.
I'm on threads, but I
almost never look at it.
Are you doing anything with threads?
I, I never pay attention.
Leo Dion (Host): Well,
did They just
add the web
interface
Casey Liss (Guest): I don't
think I've even loaded it yet.
Leo Dion (Host): Yeah, not now.
Not really.
You gotta,
when are you going to
change the
theme song?
So
it
Casey Liss (Guest): Ah, I know, I know.
We've talked to Jonathan Mann.
This is the ATP theme song.
I think it goes, I can't sing,
but it goes, If you're into
Twitter, you can follow them.
We're using, we're hanging our hat on
the fact that it says, If you're into
Twitter, which yes, I know it's strictly
speaking X right now, but whatever.
So we're hanging our
hat on that, that, that.
We're, we've talked to Jonathan about
slotting something in there, but none of
the four of us, three, three hosts and
Jonathan, man none of the four of us are
quite sure what we should try to slot in
instead, so we're just keep kicking that
can down the road forever is probably
what's going to end up happening.
It's a relic of a bygone era when
Twitter was not as actively evil.
Well, slash a thing at all.
Fair point.
Leo Dion (Host): Thank you
so much,
Casey.
It was great
Casey Liss (Guest): No, you as well.
Thank you.
I
appreciate It
Leo Dion (Host): People can find me on.
X at Leo G Dion.
I'm a Macedon at Leo G Dion at C dot M.
They, my company is bright
digit break, go to bright digit.
com for all the other
episodes and articles we have.
If you're listening to this on a
podcast player, I'd love a review.
And if you're watching this on
YouTube, like, and subscribe, please.
Thank you so much.
And I look forward to
talking to you again.
Bye everyone.