The Making of Callsheet with Casey Liss

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.

Creators and Guests

Leo Dion
Host
Leo Dion
Swift developer for Apple devices and more; Founder of BrightDigit; husband and father of 6 adorable kids
Casey Liss
Guest
Casey Liss
A man of occasionally refined taste and usually coarse language.

Join our newsletter

checkmark Got it. You're on the list!
image of podcast supporter
Join 1 supporters
Mastodon © Bright Digit, LLC 2018