← Back to Show Notes

Transcript: Django and iOS - Filip Němeček

Hi, welcome to another episode of Django Chats, a podcast on the Django Web Framework.

I'm Carlton Gibson, joined as ever by Will Vincent.

Hello, Will.

Hi, Carlton.

Hello, Will.

Long time no see.

And today we've got Filip Nemechek with us, who's, well, Filip, well, thanks for coming

on.

I'm going to say you're really an iOS developer, aren't you?

Yeah, that's right.

Hello, everyone.

so it's crazy to be live here because you know i'm used to listening to that intro but

now i have to take part

thanks for coming on so as i say you're you're ostensibly an ios developer but there's a lot

more going on there and so yeah tell us a bit about your background and how come you happen

to be on a django podcast oh well do you want the full version or just yeah no i want the full

version come on give us the backstory yeah i guess i started like programming in 2012 for

around the time first year in college you know and they started us with java and c and

you know that wasn't super great and then i was fortunate enough to have roommates who were

in their third year i think so one of them suggested that i look into c sharp

and that was much more approachable compared to c and you know in java also i think the visual

studio by microsoft was big factor yes good idea i think i somehow transitioned into windows phone

development if anyone remembers that os by microsoft i think it's dead now but yeah i've

did windows phone for i think three years too i had my own apps on their on their store and then

my first like part-time job during school was doing windows phone development and i did

something with SharePoint

I don't remember

and then perhaps even

ASP.NET

and then

I think

late 2016 I switched to Mac

because I think I had some

weird issues with Windows all the time

so I decided to get the MacBook Air

and started doing

iOS

still during school just to learn it

and to be able to develop mobile apps

and

i think that's also when my django like journey or like learning started because you know i switched

to macos and then i realized that you know if i ever get a nice idea for a website or web api or

whatever i cannot build it because i only knew like then the asp.net and you couldn't build it

on mac so i started you know to look around and i didn't want to do java oh so how did you find

Django in that environment because you know you might have found Node or you might have found Ruby

or you might have found... I mean I was sure I didn't want to do the PHP route or JavaScript

backend so I was kind of googling around I think perhaps something like ASP.NET alternatives or

something like that and I think I found Django like relatively quickly it was perhaps even the

first thing I tried after you know deciding to learn something that I could use on my on Mac

and yeah i think i i did that the the initial tutorial with the with the pulse app was it

back then there yeah and i think my my idea or like plan to learn it was to build these

small projects to you know learn different parts of django but you know during the pulse app i i

think i've realized that i kind of understand it and instead i've started working on my my

own projects just small little things and experiments and i think my my first like real

django project was my blog that i did in 2020 i think yeah you should always code your own blog

that's the golden rule right yeah i'm not sure what my motivation was i think it was mostly to

you know learn more more django and to have opportunity to use it for real and i also had

some ideas for like custom stuff that either the statically generated blogs or the wordpress

didn't have so yeah yeah i mean it's good to have you've got to have a site you've got to have

something that you can um like experiment with that you can just go oh i'm going to try this

out and see what happens you need a you know a test bed yeah i i just um i just noticed on your

blog you know the good test is go to dash admin and um you have a interesting response there but

That's a good way to test if it's a Django site.

I appreciate it.

I don't know what you mean, but I forgot about it.

And I think you're probably the second person to ever find it.

It's like an emoji that repeats, you mean?

It's just a single emoji.

But yeah, it just reminds me of, you know, because there's tools like Django Honeypot

and all these things you can do.

But I find it amusing that, oh, you can say it in this podcast, like the Django Project

site which gets a lot of traffic is just dash admin when you're like on the board and everything

else no one can be bothered to to switch it oh sorry side note you will have to switch it now

i mean this is one of the security tips that i always remember this to change the default path

and i use different ones to just be safe yeah sorry to interject that well no okay well i'm

just going to say like you do not like there's no point hiding the django am in url because the

django project site is open source so someone could just you know go to get there you go

yeah there you go that's a bit it wouldn't be it's not much to move it oh secret you are i mean

it's like what are you going to do you're going to write a write a blog post for us like please do

you know like it's not like you know being a fellow where you can change django itself it's

It's just the docs.

Anyways, sorry.

That's something we've done in the past to try to find guests is we're like, I wonder if that's a Django site.

And it's always dash admin, or you can go to look at dash accounts, log in, and that's a pretty good giveaway that it's Django.

I didn't mean to interrupt you too much.

Are you just talking about your blog, and I already added up?

Yeah.

And yeah, I guess in 2020.

And then I think during the COVID lockdowns

and this whole thing, I've started doing more projects.

And I think my first one was the Django blogs,

which is just like super simple site

that lists all the bloggers and links to their sites.

I was inspired by a similar one that already existed for iOS.

I think this is when I bumped into you first, Philippe, is I saw you, I saw you'd done that.

Yeah, that's, and then, right, slightly after that, I did the Django feeds, which is like

the RSS, I want to say aggregator or something.

It basically goes through all the blocks from the Django blocks and indexes the articles.

So you can have them on one place instead of using the RSS readers.

Yeah, that's the one I came across you first.

i think i i think i even probably sent you an email i think i saw something like i don't know

i guess this feels like long ago it must have been only two or three years ago but that's that's

where i saw and i was like wow this is a great resource because it has like yeah the video all

the videos and stuff too which i forgot that i also do videos and probably also podcasts

yeah there's not i don't know how many active podcasts there are anymore there were a couple

but i think there's at least one right there's one there's one we keep going i think there's

I think there's one dedicated one at this point.

If there's others, let us know.

Well, no, that's not fair.

Django Girls intermittently has been putting some out.

And Matt Lehman, Django Riffs, I think it's been a little bit, but he has a bunch.

I want to big up, I don't want to go over Django Feeds because it's a really good resource.

The DjangoProject.com for years has had the community aggregator, but that was, in the day, that was built on a third-party service, which has since crumbled into dust.

And so the sort of back end for the Django community aggregator is broken.

And so there is no, I mean, maybe the old feeds that are still there, they might still

be picked up, but new ones, they're just not validating through this, what's the remains

of this third party service.

So if you want an aggregator for Django topics, Django feeds is in fact your best option.

It's, um, or if you want to just port it over to Django project, there's that.

Um, but so I, I, you know, I want to pick up that there's a resource there that we should

put it, we'll put a link in the show notes definitely for that.

Can I ask as you, what, I don't know if you recall, but when you were switching to Django, what, what were the things that you liked? And there's always something that's a little confusing. Like, do you recall what was a little different?

I mean, it's been a long time ago, but I think one of the struggles was to integrate this rich text editor or something like that.

Because I wanted to have my content with links and bold text, and I forgot how it's called.

There's a couple options.

Yeah, generally putting either Markdown or using...

There's a bunch of...

Yes, Markdown is what I'm using now for my blog and other stuff.

but I use those that generate HTML directly and that was for me pain to get

it to show up in the Django admin because back then I didn't want to build

my own admin so that that was the first thing that comes to mind and then

deployment because now nowadays I can sort of you know do it I always go with

the same same steps from the DigitalOcean tutorial with the Unicorn and

nginx and ubuntu but the first time it was i think i spent like two days trying to get it

you know to run on some kind of hosting and that was difficult yeah no you've you've gone through

all the steps of learning django building your site getting it ready it's like oh now i have

to learn sysadministration too it's like no i mean it's a it's a i think it's a little easier

on a platform as a service,

but it's still...

Yeah, Django itself does not default

to production settings,

so that's something it could do

to be more friendly.

It does have the deployment checklist,

but the docs don't really tell you

they're not a tutorial.

There are tutorials out there.

I have some.

Others have them,

but it would probably be nice

if there was something

in the official docs about...

I mean, even with tutorials

and the detailed ones

like the digit lotion house it's still difficult because there's like so many configuration files

at least the route i use with the unicorn and you need to create the sockets and then you know

the pointed to a project and then to handle the static files and the media files and

you know it's it depends yeah it depends how complex your project is but yeah there's there's

a lot of steps i mean i i even i i constantly google and look up stuff i wrote because i mean

it's a checklist, right? It's like pilots flying planes. They have a checklist. There's a reason

it's a checklist because it's like, I don't know, probably like 10 different things and there's no

real way to remember it all. And you shouldn't have to, but you're just like, oh yeah, what

broke now? Anyways. So I can empathize. But just keep complaining about that every week until

someone does something about it. Okay. We can talk about that, but yeah.

So you're using Django commercially, though,

as the back end for your iOS app.

So would you quickly tell us about your iOS app apps

and then perhaps we can talk about the integrators.

I think this is a fascinating use case

and lovely to talk about that.

So I have a few iOS apps on the App Store

and those that are powered by API.

One is called SwitchBody

and the other was recently released

and renamed to GamingBody.

They're very similar.

SwitchBody is bigger.

It's been on the store since 2021

and I've been graduating more features that then needed my own API for, like, there's

a news feed that's, you know, built on the same logic and packages as the Django feeds

where it basically indexes a couple of sites that cover Nintendo news.

And then I just send it to the app via the Django REST framework and I've also added

a support for a games database i'm using the igdb database if anyone knows about that it's

sort of crowdsourced like list of all the games and you know the details and release dates

so that's something i've added this year i think perhaps in may i don't remember the exact

exact dates so that's my main use case right now and so we so we're there you pull in the

the sort of third-party data trim it down to the format you want and then send that out to the app

yes basically that's that's what i'm doing i have my own database and on on the server it and i have

like cron jobs that that just fetch the fetch the new games or update the the existing ones and then

i have my own api endpoints that basically feed the feed app okay and on the ios side you're doing

that um all with um like uh i um what's it called ui kit or swift ui um uh it's it's still mostly

the ui kit framework the older one but i'm using the swift ui for for new views and for new screens

that i'm adding okay and so the question i guess the question is that you're serving so you're

serving json rather than html yes right so you're not using web views on the app so then okay so

So then my experience there is there's kind of a bit of an impedance mismatch.

You sort of, there's a lot of mapper writing.

Do you find that, do you have any tools or tricks or things that you do for them?

Yes, there's some smaller things like, you know, matching the date formats

and there's something else.

Yeah, the snake case versus the, I forgot what the other one, camel case

or like the one that Swift uses.

I can never remember the names of all these things.

I think camel case.

I think Swift has pretty good support for working with JSON

without any third-party clients.

You can basically create your model

and conform it to this protocol that's called codable.

And if you have the same name of keys

and the matching data attributes like number, string, and URL,

you can just parse it in two lines of code.

And it will automatically convert the snake to the camel

and so on, because you give it the transformer.

Fantastic.

So you're really happy with the integration

between what you get from the Django API

and then how you're consuming it at the Swift end?

Yeah, that's been working great.

So you're using REST API, Django REST Framework.

Is that correct?

Yes.

So I had a question there.

How do you like to handle authentication?

Because I find that...

Yeah, that's something I'm not doing, actually.

So my Django REST framework usage is like this read-only

because I don't have any user accounts in the apps.

So it's just like pulling the data to display,

but I don't have like this two-way communication

where the app would be doing like any kind of, you know,

new data creation or edits and et cetera.

Okay. Do you have a sense of, I mean,

because there's JWTs were quite hot and maybe still are.

Like, do you have any sense of what, I mean,

because there's multiple ways to do it still.

And this was actually my first DjangoCon talk was about,

I was like, oh, you know, I was learning all this

and I was like, okay, time for authentication on APIs.

And it was like, you know, four default methods.

And it's a little bit, and then,

so it's a little bit overwhelming.

Maybe you don't because it's not your use case,

but I'm just curious if there's a sense of a best practice

these days around API authentication.

Perhaps, yes, but I'm probably not the best person to ask.

I think I've tried the basic, you know, the token one in the past just, you know, if I need it to be able to do it.

But I'm really not using any kind of auth with the REST framework.

Okay, fair enough.

I think folks are using the add-on package, the NOX, REST NOX, which is the way most people are going these days, just sort of anecdotally.

So, I mean, I wonder what, to ask you a little bit about like your choice of, do you default on REST framework?

Are you happy with it?

Because it's been, it's now in a sort of maintenance mode.

I mean, Tom Christie's explicitly said it's kind of feature complete and it's perfectly stable.

And one thing I think, I think that the reasoning behind that is that they can't really make any changes without affecting people who are already using it.

like you can't you can't adjust you know you can't adjust very much now it's kind of like this is

this is the scope of it it needs to be steady because it's used in an awful lot of deployments

um but i you as a consumer is that affecting you in any way or you know do you have any sort of oh

i wish this was going on or are you just happy i mean yeah i guess i am happy i mean sometimes i'm

doing some like things in the api views that don't feel like the most correct way perhaps when i need

some extra data to um i don't know how to do it we had a get query set method but i think that's

more down to me not not having enough experience to you know implement it correctly and not to the

design of the jingo s framework i have to mention you so your master's thesis was around uh augmented

reality um the new goggles and everything do you what what are your thoughts on that because i'm

i haven't tried them on i'm completely ignorant it's but it seems potentially very cool um yeah

i mean i've tried to like a reason perhaps get some impressions from other devs on like mastodon

and other social media and i think the apple had some like these labs where you can apply and they

will invite you to have in-person demo and I think these last for five hours or something but I'm

I don't know I'm just not really interested in in the goggles because I'm not sure what the use case

would be for me I mean in the past I was more interested in the like the VR stuff like the

you know the Oculus Quest or the other other ones because of the perhaps the the fitness

say apps or games to to have some like exercise perhaps during winter but apart from these use

cases i'm not sure what would be the you know the selling point for me so yeah fair enough i mean it

seems certainly at the price point it seems for businesses so maybe military maybe doctors

training or something but it's in terms of you know i heard some people say like for meetings

It could replace in-person meetings, but yeah, I guess we'll see.

I mean, it's all those things, if they work out, they come down to consumers at some point.

But it's sort of hard to put something that blinds you.

Or I guess it doesn't blind you, right?

That's the thing.

It doesn't.

You can still see around, but just to put something in your head.

Yeah, there's some kind of pass-through view, I think.

But, you know, the reveal was in June, so it's been some time since I watched their keynote.

Yeah, fair enough.

Okay, well, let me ask you about something else then.

And so, Carlton, you had to say something.

No, no, no.

I was just going to pop in.

I think, you know, you talked about the price point there.

It's like a lot of money to replace a video call, you know, it seems.

But depending on the quality of it, it's not a lot of money compared to a big display.

You want one of these 27-inch cinema displays, they're more money.

Now, if the goggles are able to produce a screen quality resolution, which, you know,

I read an article claiming they wouldn't be able to,

but, you know, that was based on not,

that wasn't from someone who had actually used them.

But if that's capable,

then they could be cheaper than a couple of pro displays.

And it might be the way forward there.

So that was just one thought that.

Yeah, that's actually one of the use cases.

I think some of my developer friends mentioned that, you know,

you can have like these six MacBook screens in front of you

instead of, you know, with the goggles.

But, you know, for me, I'm still only able to focus on one.

So I don't have the need to have more screens around me because I can, for me, it's like

I can just as easily toggle the windows on the single screen than to look around and

to find where that window is.

So I don't know.

Yeah, no, anyway, just go on.

I was going to ask, so you have so many projects.

It's very impressive.

ImpressKit, can you tell us about what ImpressKit is?

Yeah, that's a bit difficult because, you know, it's been live for two years almost

and I still don't have like this one sentence pitch for it.

That's okay.

It's basically for me and for other indie developers when you need to create a press kit,

that's basically like a bunch of assets and some descriptions about your app or game.

Because then if you want to get in touch with the journalists,

helps to give them all the information and like this press ready assets that are perhaps not

edited or in higher resolution so i've basically built a kind of a cms that's dedicated to creating

these press kits and it's even more focused for or rather on the ios apps and perhaps mac ones too

but there are like some subtle features or tweaks that make it like even more suitable for the ios

ones for example if you create one then it will also give you this download on the app store

batch or generate a qr code that the journalists can scan from their laptop to you know try the app

out and there's some image optimizations where it automatically resizes the image when you upload it

so it's not too large and the journalist doesn't have to waste time downloading like 10 megabytes

of single PNG and then resize it themselves. So that's basically it and there's also some

like support for a press release which is kind of a like a blog post but it's aimed to

at press not like a general like public so that's that and um yeah that's i think the

convoluted pitch that i just came up with but i hope it makes sense yeah i mean press

press kits are important and a pain to to create and to to use as a journalist and others so having

an easy way to manage that

makes a lot of sense. And to have

images, you want to have the best images, you don't

want to...

If you've ever built a press kit

for a website or something else, it makes sense.

But I think it's good as well.

Go on, Karen.

I want to say, yes,

devs often do these

zip files

that they just upload somewhere

and that's also a pain for the

journalists to use because they have to

download it and perhaps you know then the cdn is slow that they are i don't know it's just named

press kit without the name of the app and they have like 10 identical press kit folders in their

downloads and i have to look at look for it so that's that's also motivation for for this project

but but it also acts as like a checklist right so so if i'm an indie dev i have no idea about

what i have to put in a press kit whereas if i go to impress kit i can it's got like you know

upload this image write this text you know yeah that's that's right this was the first first time

i was using webhooks it always always was like scary word for me and then i realized it's basically

you know request that's made by server and not a person if that's like not too much simplification

so i've managed to build the webhook for the for the pedal service that i'm using for you know for

the subscription that's needed to use it so that was probably the

most challenging part of the project. I think there's Stripe and this

one and when I was trying to figure out what to use I basically decided

discovered that with stripe you need to like handle all the like the taxes and other other

legal stuff and this this pedal is like uh forgot the term but they basically handle a lot more

the seller of records so you don't have to oh yeah that's that's the that's the what is it

carlton they're the seller of records so for tax purposes you buy it off of paddle rather than off

of philippe and then paddle will pay out to um so it's a bit like gumroad um and the other one i

think is fast spring who are quite big in this space and so you buy it off of fast spring or

you buy it off of gumroad or you buy it off of paddle um rather than buying it off philippe so

he doesn't have to do the tax right right well yeah stripe is slight stripe is slowly adding

all these features in so i think eventually they'll get there but i was just i was just

looking yesterday, because I remember when I looked two years ago, it was like, Paddle was

like, yeah, we handle all that. And Stripe was like, that's your problem. And so I was like,

okay. So it seems that seems like the smart move for now, for sure. Because yeah, Stripe keeps

every update, they have new tax features. But I mean, that's well, that's a question for you. I

mean, so I guess all three of us were indie developers in our own way, like, just the

business of selling things online is more cumbersome, I think, than people think. Like

it's probably easier than it's ever been. And yet there's all these, in the United States anyways,

like I have to set up certain legal entities, bank accounts, taxes, like there's all this stuff.

For me, when I was getting started, I felt like it took almost six months just to handle all the

administrative business side that I wasn't even aware of. It was like the price of some degree

of success i don't know is it any easier for you or does that ring true just all this cruft around

like why is it so hard everything's built for big businesses to do yes uh i mean it's kind of easy

now because i have some i don't know how to translate it to english but i think it'd be

something like the solo proprietor or something like that yeah yeah that's that's what i am for

my full-time job i have like this kind of status or i don't know what's what's the term for it and

this also lets me to you know have paid paid products and thanks you know pedal and app store

being this you know this that word that carton said you know so but yeah i mean i've i had my

own apps on the store for like 10 years and i've only had paid once for the last two because it

was always so intimidating and i was afraid to you know mess something up and then either got

find or you know something else so well when i looked into this and again this is definitely

not tax advice but most of the rules around collecting taxes like abroad or in countries

other than your own you need to be at a level that it would seem like it was six figures so

like a hundred thousand like it was it was a high bar so if it was just anyways don't take don't

take that tax advice but um the rules are not designed for for small people and it definitely

helps to have a service like Gumroad or Paddle that will just handle it for you. That's all I

had to say. You know, I mean, I've got exactly the same experiences that, you know, I'm autonomo in

Spain, same thing as you've got, Philippe. And if I didn't have my hair store, who's my accountant

to do the quarterly returns, it would just be like an absolute, I just couldn't do it. I just

couldn't be in business. There's just no way. And they know all the rules and they tell me exactly

what i have to do and i do it but it's still my dreaded day of the quarter when i have to do the

paperwork for the for the accountant it's like oh no not that day well well let me ask about um

coding so what are you what are you excited about now like what what's sort of interesting to you

because you've you've done so many things is there something now some some tool or technique that is

particularly interesting that you want to learn more about you mean like a new framework or like

yeah yeah anything yeah i mean you know regarding to design patterns and all this new stuff i think

i kind of like moved away from it because in the past i used to like really follow all the new

swift features which is the language that apple primarily uses on their platforms and

i could probably name and explain every keyword which now i cannot do also because they added

like 30 more in the last three years so yeah i guess i'm now more focused like on really building

stuff that other people can use and i'm trying to like perhaps focus more on the ux side of things

and ui and also sometimes doing a typography to you know to think like how the app looks and

you know if the dialogues and the interactions make sense and also the wording is

problematic since i'm you know not native speaker which is probably obvious at this point

no in the podcast well i mean you you have an accent but i wouldn't say by your word choice

you're not a native speaker at all oh thanks yeah but you know it's also a bit difficult if you need

some short like alert or some banner that explains some kind of feature to come up with the right

word so yeah i guess i've been more focused on on this and also some like marketing or this

This app store optimization that you need to do to find the good keywords and good screenshots, which is annoying and boring, but there is no way to avoid it if you want to get any downloads.

I feel like I'm in the same place, too.

You start off loving the tech and can I build it?

And then once you build a certain amount of things, then you realize the marketing, the UI, the text, these are the things that matter a lot more than you thought that they do.

and so and they do take time to to do well yes carlton so both of you then with that mindset in

place um how i just think well that makes django perfect for you then because django's trustworthy

it doesn't break over time you know it's easy to update between versions it's state you know

the next time you come back to it it's still the same as it was you might have a new thing but that

new thing's not going to impinge on you until you get need to get you know doesn't that make django

just the perfect choice when you're in that position of hey i'm focusing on other things

yeah it does that's why i use it right well this is i wonder how much is like a maturity thing

carlton right because on the orange site every year or something people rediscover django and

it's like yeah like you're not are you really innovating like all these new frameworks like

that's great and javascript blah blah blah but like what are you actually trying to do here

It just feels like it's a tool. And if you want a tool, it kind of checks 95% of the boxes. I mean, this is something I've picked up because I've been mentoring some people. And people who are newer in their career, it's not that they think things are more complicated than they are, but they're just not aware of off-the-shelf solutions.

So there's so many that, you know, they just don't know that the road that's been tread by all the other developers and that if they ask the right question, there's generally a simple, elegant solution.

It's just, can they find that for themselves?

So very, very few things in web development are that hard if you know where to look, I guess is what I'm saying.

And so I've had, I don't know, recently I had that.

This person was, she was like, wait, it's not this.

And I was like, no, I like we took, I let her talk for 10, 15 minutes.

And I was like, it's really just as simple as this.

I think there's a lot of that with the years you see that certain patterns, you know, work well and, yeah, don't fight the framework kind of thing.

That's my TED Talk.

Okay.

We'll get you on stage.

Oh, God, no.

No.

Well, maybe we can talk about, are there new features that are interesting?

I mean, as an iOS developer or Carlton, I know, you know, 5.0 is coming out.

That's something you're very excited about.

But maybe for you, Filip, does async matter to your work?

Or are there any features that we always ask if you could just wave a wand?

Is there something that Django could provide that would make your life easier?

I mean, if I could have this one-button deployment from PyCharm, perhaps,

like Microsoft had, or perhaps they even have it now right from the Visual Studio

if you use their cloud service.

If you are logged in, you can still press the button and it will do the deployment for you.

I haven't used it in like seven years, so it might be different now, but any improvements towards deploying would be great.

And probably it's also the case that if you use the platform as a service, it's much easier.

That's what I'm doing.

I've been using the simple VPS since my school days

where I didn't have a budget for more pricier solutions.

So perhaps that would also solve my issues

if I paid for Heroku or what's the other one, the new one?

That's the Fly or something?

Fly is one of the very popular ones, yeah.

I mean, Carlton, deployment.

I mean, I want you to say something,

But I've thought about, I think I've mentioned this before, you know, so starter projects, right?

Like, is there a market for a starter project like my Django X or something that is like one-click and deploy on Heroku Fly?

I mean, all these platforms as a service, it's not too hard to handle the basic case of environment variables, static files.

it's just hard to know if that's enough for someone who knows what they're doing

because i feel like every deployment becomes custom at a point but carlton please

no but this is exactly where i think that the platforms as a service go it's not they go wrong

they're brilliant for what they want to do as long as you fit in the neat little box then that

they are simpler but as soon as you i know you want to add redis server and so you know maintain

in the channels package and the number one cause of tickets is people on say Heroku or another one

who can't get the configuration right to configure the connection to redis because it's you know a

weird url and they have to get this ssl correct and have to do all these things and they just

don't know how and whereas if you try and connect to redis on localhost nobody has ever ever opened

an issue saying oh i couldn't connect to redis on localhost right because that just never goes

wrong it just literally never goes wrong and the trouble with the platform as a service is once you

step out of that that neat little oh you're just running your app box you're suddenly into

distributed systems because you're connecting to a database over the internet you're connecting to

redis over the internet you're connecting to some other search service over the internet rather than

running it all on your vps which costs you know you scale up your vps maybe it costs you 10 bucks

a month and you're running you know the biggest box under the sun like that's an exaggeration

that's not the biggest box under the sun but it's more it's more than enough box for your website

right is my point and it's got redis locally it's got this like yes it's slightly more complex to

provision it that first time yes you have to sort of keep it updated a little bit over time but on

average as you scale your application having a you know vps with everything you want on it is a lot

less effort than trying to configure you know matching services across you know http connections

which drop out on you for no reason and all the rest of it i would argue i would argue you know i

you know if it's literally just that's my experience because you know once once i managed

to finally you know deploy it for the first time then you know it basically seems to run without

issues and I can just update it with new code and update the Django and other packages and

it works from that point, but the initial deployment, if you get stuck and miss something,

yeah no i mean i think there are too there are too many moving parts so my my idea with button

is that you take a clean server and you run a script to get it ready for your app and then

run another script to get your app there and that's it you know there's no more you know

no app to get installed sudo oh i didn't do sudo oh i've got to change the configuration file

ah where even is the configuration file where is the log file none of all of that just abstract it

to carlton and well no but that's no but that's what i've been that's what i'm working on i'm

working on exactly that because i see the same problem again again again again it's people

fighting to either go what i consider to be kind of a bit too simple with the platform as a service

and then saving trouble for later or getting stuck in this this this sort of mire of ad is too many

moving parts like there has to be a there's a big gap there that has to be able to fill i think i've

appreciated that newer platforms as a service, because there's a whole bunch of after Heroku

ones. It's a really hard problem to solve. I mean, so like in my, in my beginner's book,

I switch to fly.io. I still have Heroku in my other two books. You know, Heroku is, you have

to pay for it now, but it really just kind of works when they're not down, which they haven't

it down for a while. So I've had occasions where I'm mentoring people and they just can't,

I don't want to say names, but some of the newer options have had troubles. And we're just like,

you know what, like, let's just take two minutes and switch to Heroku. And it just works. Again,

this is a simpler use case. This is more toy projects. But yeah, just to reiterate, it's a

hard, hard problem, right? Because for all these platforms as a service, there just seem to be so

many edge cases around databases and connecting to other things. And I guess they have to cover

all the main frameworks right not just django so i have empathy for their challenges but i hope they

would just fix it monumentally hard so one thing i want to ask you is you know so the new ios 17

or more generally when you're dealing with ios they change pretty regularly and it can be a hard

thing a moving target like what what is that like where you sit because way back 10 years ago when i

worked on the mobile app for Quizlet, it was deeply frustrating that they switched from iPhone

4 to iPhone 5, where the screen size changed, I think, for the first time. And so all of a sudden

on the App Store, we had a lot of users. We started getting all these one-star reviews on launch day

because we didn't fit the new screen form. But Facebook, Google, and a couple other big companies

did. And we're like, well, no one told us. Apple didn't tell anyone about the changes, but we were

getting punished for it. So it definitely felt like a closed system where it was the opposite

of the web, right? Like we were, we eventually scrambled and fixed it. But I find that, yeah,

the closed systems of iOS, as powerful as it is, you're kind of at the, Apple just calls the shots

and you have to move with them. So what's your experience been over the years using iOS is a

long way of saying? I mean, it's been pretty positive. I think I got lucky because I got

into iOS when the Swift 3 was out

because I remember there was this big migration

and changes from Swift 2 to Swift 3

where Apple changed a lot of stuff

at the language level.

So I think people had to migrate a lot of code

and otherwise it seems fairly stable.

Most of the new features you don't need to adopt right away

and even if there's something like the dark mode

with iOS 13 or some widget changes right now

with the iOS 17, you know, until you, I think for most of these,

until you compile with the new Xcode and upload new build,

the, you know, stuff should work as before, even on the new iOS.

So it doesn't break until you submit new version and forget to fix something.

But yeah, there is this, you know, as we mentioned previously in the UI kit

and SwiftUI in iOS, you kind of have these two ways to build UIs.

the UIKit is the older one and that's much more stable mainly because Apple also doesn't

add much new stuff to it but the SwiftUI one that's the declarative framework it's sort of

similar to perhaps the Flutter that's the multi-platform one or on the Android people

they have the Jetpack Compose or something like that and basically the idea is that the UI is

represented by state so I guess the main benefit is that you cannot have these like bugs that are

due to like missing synchronization between the data and the UI where you would forget to like

update button to say like success or disable it and in the code or like in the logic it will be

disabled but the screen would show something else that's not present but you know since this is a

new framework apple's been changing it quite a bit i think especially perhaps around navigation where

you have like the logic to move between screens they've been changing this a lot with the swift ui

swift ui api so that's i think currently most like changed or unstable part of the ios development

but otherwise i think it's pretty good you know we get the first xcode betas in june right after

their dub dub conference where they announced the new you know operating systems and sometimes even

the new hardware like the goggles this year and then in september like late september is the

release date for all the platforms so there's a couple of months to you know start working on

new apis and i run out compatibility issues and and similar possible problems so i think that's

but it's a nice experience overall yeah the summer is busy with the swift ui um like one of the

promises and they all sort of like they all sort of have the same thing if you go into the microsoft

worlds there's the i can't even remember the maua.net framework which is supposed to be

multi-platform you develop your ui once and then you can deploy it and apple tell the same story

you know you can perhaps build your swift ui for your iphone but it'll go to ipad easily and then

onto the mac easily do you find that i mean is it it would never seem to me is the great utopia that

is promised when the marketing materials yeah it's definitely not there yet i feel i mean

between the iphone and ipad i think it's pretty close and perhaps even with the watch with the

swift ui where like your components automatically adapt to use this same picker or same button and

it gets you know different uis based on the platform but you know then going with ios

code base to to mac is more difficult and you have multiple choices like to build you can

build this fully native app you can do the the catalyst one which is like ipad version with some

like changes and then you have this i forgot the term it's something like ipad apps for mac and

that's like just this ipad app that runs on a on mac with minimal changes but that's also

also has some issues and you can even detect it in code so you cannot provide any customization

in this mode i think and then the other thing people go for then is they end up building

electron apps because they want this kind of multi-platform well she kind of thought have

you never been tempted that route because you've got django you can serve html with it you're doing

that for your impress kit you never thought oh i'll just stick a web view in here and

And not really, because I think you can pretty quickly see that the app is not native,

you know, because you can try to zoom it or you can scroll up and down and you'll see

that it's either like, you know, it's janky or it's some kind of weird issue.

And I'm not sure if that's probably also part of the WebKit or, I think I've read some blog

post and similar where people say that apple isn't like or doesn't have the incentive to improve

safari too much or like the webkit engine but i'm not sure that's more like it's just completely

different you know technology and i think i i think we have to be fair to like it seems to me

at least that webkits come or safaris come on an awful lot in the last say couple of years i say

two years there's been a big move forward i don't know okay interesting thank you well maybe as a

as a final question when do you think the new uh switch is going to come out right the switch to

the pro right you have all the insight yeah um all right that's a surprise question didn't expect

this um i mean the the original one is quite quite old at this point i think it was 2017 perhaps

when nintendo launched the original switch so that's six years and i think the standard

like lifespan of these game consoles is perhaps seven or eight not sure you know we didn't have

many generations even with the playstation and xbox and somewhere longer somewhere shorter so

i i guess i have no idea and i mean there are some some rumors about you know this performance boost

and this ray tracing and similar um i don't know it feels weird to me because nintendo never really

like focused on performance even with the older consoles and their handhelds you know they have

completely different i think mindset you know for their games and i think it also helps that

you know mario and all these like flagship titles they have this like cartoon graphics so they

you know they don't need the performance to have these super realistic scenes and

words so i mean i i hope that you know for the new switch and for it to be backwards compatible

so i can it it will perhaps bring more interest to to my app you know and there's new new console

that's sort of similar and it's not not completely different yeah i remember when it first came out

they launched with the first Zelda, Breath of the Wild,

and they sold more Breath of the Wild games than consoles, as I recall,

which was sort of bad.

I'm pretty sure that's the case.

Yeah, we have one.

I mean, it's amazing.

Yeah, it's amazing what they can eke out of the performance.

I think, you know, regarding Zelda,

that's probably the most embarrassing fact about me and Switch

is that I've tried the first one and the Breath of the Wild,

and it just wasn't a game for me.

And when I tell this to someone who played it,

they're like, what, how?

Well, you need all the time in the world is the problem.

I would recommend just going off topic,

like Hogwarts Legacy is like my favorite game

I've played in a long time.

I'm not a big gamer, but it's coming out,

I think in a month or two, finally on the Switch.

So shout out to Ravenclaw.

Nice.

Hey, well, Carlton, I think we're out of time.

Anything else you wanted to ask?

No, I was just going to bring up GoldenEye, but I won't.

Well, it's only on the streaming one, though, unfortunately.

I would have got that, but you said infinite time.

It's like literally since children, my gaming time has evaporated into none.

Retirement years.

Yeah, yeah, I save it for when I'm retired.

Philippe, thank you very much for coming on.

It's really interesting to talk to you.

and to talk to how you're using Django, you know,

as the back end for your iOS apps.

I think that's fascinating.

And, you know, I hope you've enjoyed coming on.

Yeah, cool.

Thanks for the invite.

And hopefully at least some of what I said makes sense.

And if anyone wants to, you know, ask me more questions or get in touch,

like feel free to send me an email or something.

I think in the show notes there should be links perhaps to my blog

that has the contact info.

All right, thanks very much.

Well, we are, as ever, at DjangoChat.com, and we'll see everyone next time.

Bye-bye.

Bye-bye.