All Episodes

March 14, 2025 25 mins
Mark as Played
Transcript

Episode Transcript

Available transcripts are automatically generated. Complete accuracy is not guaranteed.
Leo Dion (host) (00:03):
Welcome to another episode of Empower Apps.
I'm your host, Leo dn.
Today I'm joined by Natalia Panferova.

Natalia Panferova (guest) (00:11):
Hi.
Really excited to be here.

Leo Dion (host) (00:14):
Yeah.
so I'll let you go aheadand do the introduction.

Natalia Panferova (guest): Hi, I'm Natalia. (00:17):
undefined
I am based in New Zealand and I'm an iOSdeveloper and macOS developer now as well.
I work at Nil Coalescing, which isa small company I founded together
with my partner a few years ago.
we do some consulting and freelancing,and we have a blog, nilcoalescing.com/blog
. Leo Dion (host): Yeah, we've been chatting about your, just a couple of

(00:38):
your blog posts you've done with macOS,but you have a new book out, right?
SwiftUI Essentials.
You wanna talk about that a little bit?

Natalia Panferova (guest) (00:47):
Sure.
Yeah.
It just went out last week.
it's called SwiftUIFundamentals and it's a guide.
On the course framework,principles and APRs.
It's something I wantedto write for a while.
Just never Got a chance to sitdown and write that for a bit.
Yeah, and it's sort of combines myexperience and my knowledge from working,
with SwiftUI since it was released,but also working on the course with

(01:09):
I team at Apple, from 2020 to 2022.
So, after I left Apple, I worked abit in the industry and I noticed
that . The framework obviouslybecame very popular, but there are
still a few misunderstandings andsome people find it quite difficult
to understand how it actually worksand why it works the way it does.
So I was hoping that guide couldhelp to clarify some things and

(01:33):
help people to use the frameworkmore effectively in their project.

Leo Dion (host) (01:37):
Yeah, we've done a lot of episodes on SwiftUI.
people are still tryingto figure everything out.
we had some really great episodeswith Ariel and, Craig and a few
other folks, It's really odd tohave you on, you actually worked
on SwiftUI when you were at Apple.

Natalia Panferova (guest) (01:52):
Yes, I did.
I worked on the core SwiftUI team.
Back then, we were just 10 people andwe were focusing on iOS APIs, like the
core APIs, like navigation, search, text,

Leo Dion (host) (02:02):
and They didn't severance you or anything, right?

Natalia Panferova (guest): Yeah, I remember some. (02:04):
undefined
I don't remember everything,but I remember hopefully
the most important things.

Leo Dion (host) (02:09):
So like, what are the things that most people
don't get about Swifty y.

Natalia Panferova (guest) (02:17):
I think, it's a bit too magical for most people.
Like it does some things andyou dunno why it does them.
it's trying to be really clever.
So like a lot of work behindthe scenes goes into figuring
out how to do the best thing.
Outta the box.
So you just define a view andit just works and it works
differently, different contexts.
So like under the hood, CI hasthis environment which we can also

(02:38):
use for our own values or readingthe values from the environment.
But CI also uses that to understandwhat context the current view is on and
how To display it, it can be completelydifferent based on the platform or
it can be different based on wherein their hierarchy it's presented.
Like buttons can look completely differentin navigation bar in sidebar, in, slide

(03:01):
their actions and they just look a bitdifferent depending on where they are.

Leo Dion (host) (03:06):
Yeah.
'cause that really reminds me ofwhat Paul was saying, Paul Hudson,
talking about how, like, yeah, itdepends on the platform, where it's
situated, it's a markup, and thenkind of you're handing off Apple
to deliver the way they feel fit.
what might be some tips youhave for someone who, who's just

(03:26):
getting started with SwiftUI?
And does it have any knowledgeof UI kit, which is becoming
more often the case than not?
for getting started with SwiftUI.

Natalia Panferova (guest) (03:37):
I think as you just get started, You can
just get started with UI and build.
quite complex apps without UIC knowledge.
I would recommend to not fight theframework, but sort of work with it and
customize things you can customize maybeif something is not quite working out
adjust your app design a little bit.
It's gonna be easier and more robustin the future because if you start

(03:59):
to hack it, it's just going to breakwith the next release So that's
what I try to do in my own projects.
And when I work in companies as well.
I would talk to the designers saying,this is a great design, but it's gonna
be really difficult to implement.
Can be adjusted slightly likethis 'cause it's gonna be.
Easier, faster, and it'll be workingbetter in the future as well.
So that's, I think, one way to look at it.

(04:21):
but I think like as you progress, it'sstill useful to learn your kid, firstly
because a lot of C two APIs still rely onyour APIs under the hood, like the push
navigations, the model presentations.
And then a few things you might needto integrate with UI Kit to support.
So I think as like, you don'tneed to tell them both frameworks

(04:43):
straight away, but it's useful toknow them both in the end, I think.

Leo Dion (host) (04:48):
what are some pet peeves you've heard people tell you
about SwiftUI and what do you thinkare some misunderstandings that people
would have to have those pet peeves,

Natalia Panferova (guest) (04:58):
Yeah, I think definitely state management and like
the data flow and how to structure itis a hard one, for many people to get, I
think straight away, especially becauseit changed over the years as well.
Like at first we had all of theselike property wraps and you had to
understand them all and choose thecorrect ones, and now it's a bit less.
But yeah, it just changed recently,so people just started to get

(05:20):
the, the previous way and nowit's a new way and it's all bit

Leo Dion (host) (05:22):
do you prefer?

Natalia Panferova (guest) (05:24):
I use the new way now in my projects, like with
observable and state, just because it'ssupposed to be more performant because
observable object had some issues.
That's why I guess observable was done.

Leo Dion (host) (05:34):
Right,

Natalia Panferova (guest) (05:35):
but it took me like probably a few months
to switch to the new way as well.

Leo Dion (host) (05:39):
Right, right.
Yeah.
I mean I've pretty much gone allin on observation with anything
that can support that os 'causethat's the other issue, right?
Is like if you have to supportit old enough os then you
can't use the new shiny stuff.
one of the things you've beentalking about in your blog is scenes.

(05:59):
I think that is a concept peopledon't understand, and how they work.
We kind of just haveusually one scene, right?
and then everything goes into that.
what do you think people are missingwhen it comes to scenes In SwiftUI?

Natalia Panferova (guest) (06:12):
I think people maybe don't think about
scenes so much because you create anew project and it's already there.
The window group, whichprobably most apps use.
the trick to understand isthat it's not one scene.
It's like actually multiple scenes.
CUI will create as people opennew windows, it doesn't work
this way on iPhone because youcan only open one window of

Leo Dion (host) (06:30):
Right,

Natalia Panferova (guest) (06:31):
Most apps will probably still run on the iPad and
that people can open multiple windows.
If you use the window group well,which you probably will, and
each scene will have a new state.
So like if you have a state you want topreserve for the entire app, so that it's
the same consistent state in every scene.
For example, you have some counteror something and you want to have it.

(06:53):
be the same in every scene, then youhave to put it on the top level in the
app because if you initialize that stateobject inside the content view or any
other view, it's going to be reset.
Like it's because since will createa new hierarchy from scratch with new
state, and everything for every scene.
So that's something tokeep in mind, I think.

Leo Dion (host) (07:14):
I think for me, like SI didn't get scenes until I
started doing Mac OS development.
'cause then like you said, you could havemultiple windows and things like that.
I guess iPad, you couldhave multiple scenes, right?
Because technically youcould have multiple windows.
So, and I would assume Vision OS and Idon't know about TV or definitely not
watch, Yeah, that's I think where you, youreally see where scenes are, are useful.

(07:39):
So there's like scene storage and thenthere's app storage, what, what are
all those and what are they useful for?

Natalia Panferova (guest) (07:47):
Yeah, so these are some helpers of property robots that
we can use to store some small amountof data app storage is just wrap around
user defaults, so that's something youwant to persist, between, app launches
reliably, but it has to be quite small.
Same as user defaults.
So it could be some usernameor some other user setting.

(08:09):
Some configurations that you want topersist, you can store them there.
And since storage, it'sfor state management.
This is something if you want topersist the app state between, launches.
It also has to be quitesmall amount of data,
I does not guarantee it'sgonna be saved because.
If the app is quit, it's going tobe cleared or if the app terminates.

(08:31):
and so if I didn't have time to saveit, it's also going to be cleared.
But it's not like, it's just the appstate, so it's not a disaster if it's
not persisted, but it's nice if it is.

Leo Dion (host) (08:41):
It's like, does it use, so like with, with, okay.
Sorry, with Mac Os you have like WindowsState and that's stored somewhere in
like app group or, you know what I mean?
But that's different fromseeing storage or app storage.
App storage is basically user defaults.
Right.

Natalia Panferova (guest) (09:01):
App search is user default under the hood.

Leo Dion (host) (09:02):
SwiftUI previews, What are some tips you have for using them?
do you always try to have a SwiftUIpreview in all your views, or
are you just kinda like, I giveup, this isn't worth my time?

Natalia Panferova (guest) (09:13):
Yeah, I try to have previews for smaller
views where it's faster to build theUI With Swift, I don't have mockups
or something I used to in Sketch, butnow I just usually build something
and see how it looks straight away.
So for that I use the previousjust sort of design with SwiftUI

Leo Dion (host) (09:30):
right.

Natalia Panferova (guest) (09:30):
I would do that for smaller views.
usually and something like contentview or some like wrap reviews,
I usually just delete them.

Leo Dion (host) (09:39):
I basically do the design in a separate clean Xcode project.
I can make the design as complicatedas I want and just hard code a bunch
of values and then copy it over andthen put everything to a state instead
One thing I wanted to ask about was,so we talked about Swift eye previews,
let's talk about layout and I mentionedgeometry reader and things like that.

(10:01):
What are some ways of gettingaround some of the pet peeves,
sorry to use that term again.
with or some of the things thatbug people when it comes to layout.
'cause I know we got some customlayout stuff that we can do now,
but, People still struggle andsometimes they still end up using
Geometry Reader and things like that.
What are people doing wrongwhen they maybe are overusing

(10:24):
those or don't need to use them

Natalia Panferova (guest) (10:25):
I use geometry sometimes as well.
I think the important part isnot to create like a cycle.
If you use the geometry, theyhave to be careful not to, to
like read the geometry, write itsomewhere else, so it's horrendous.

Leo Dion (host) (10:35):
Okay.

Natalia Panferova (guest) (10:36):
I think I know there are few more tools now,
like few new APIs that can help usto avoid using the geometry rhythm.
Like I saw there's container relativeframes, I think something we can use.
And the other few like thingsfor scrolling as well that are
helpful now I think as well.
I could layout and.
Can be different froma few other frameworks.
So you have to sort of get it how itworks, like how, the size is allocated.

(11:01):
The fact that you can't forcea size on a view, it just will
be the size it wants to be.
How F works.
It's actually not like, it's justanother view wrapped in your view.
It's not like it doesn't assign theframe to your view, it's just another
view with that frame that drops

Leo Dion (host) (11:17):
Mm. Yeah, that makes sense.
and I remember having Chris ID off onand talking about how Sizes the way
they're suggested in the hierarchy,like how a size might be suggested
by a parent or a child, and I don't,do you know what I'm talking about?

Natalia Panferova (guest) (11:32):
So like the parent suggest the

Leo Dion (host) (11:34):
that work?

Natalia Panferova (guest) (11:35):
so it starts with the fresh app.
the parent use, I create, and then itsuggests the space to the root view,
the content view, and then the contentview, suggests this space, this child,
and then the child says, okay, I want tobe that big, based on that suggestion.
And then the parent says,okay, this is the space I have.
the child wants to be that big,so I will position it here.

(11:57):
most often it's in the middle.
if you do geometry forexample, it'll go to the top.
So like the parent decides how, whereto position the child, well, the child
decides how to size itself based on that.

Leo Dion (host) (12:08):
It makes complete sense.
Do you still use combine,
so, how do you use it?

Natalia Panferova (guest) (12:14):
I didn't use it that much like over the whole
time because it was a research UIand like search UI obviously relied
heavily on it, so I did use it.
When I used observable objectsbut didn't use like that much.
All the other features of combined,because I worked with Swiss for one year
and then I started working at Apple.

Leo Dion (host) (12:31):
do you have any use cases where you use it now?
in any of your client apps?

Natalia Panferova (guest): I use sync sometimes, like (12:35):
undefined
to, to like sync on a value.
I used that when I was integrating withUI Kit and I had to observe the changes
to like an observable class in UI kit.
So you have to like call syncto update manually your UI kit

Leo Dion (host) (12:51):
Are you using like key value observation and then
creating a publisher from that?

Natalia Panferova (guest) (12:55):
For example, you have observable object, which is
the older way and you have a publishedproperty and then you create the
cancelable, you save it and then yousync, on that published property and
you get a callback when it changesand then you can make your update.
You like it view.
That's how I create it.
And like two way connectionbetween UA and UI kids.

Leo Dion (host) (13:14):
I think it makes sense when you have something that's like,
starts off already being a publisher.
Like a timer or a notificationor any of that stuff.
But otherwise, like if you're doinga network call, yeah, I am pretty
much been doing all async weightnow when it comes to that stuff.

Natalia Panferova (guest): I was going to say. (13:31):
undefined

Leo Dion (host) (13:32):
Have you

Natalia Panferova (guest): and it was already, so (13:32):
undefined

Leo Dion (host) (13:34):
Have you had any issues doing async weight in Swifty

Natalia Panferova (guest) (13:38):
I don't think I had any, but I'm not sure, like
a hundred percent I'm using every timecorrectly . So yeah, I'm using it and,

Leo Dion (host) (13:44):
how are you doing it?

Natalia Panferova (guest) (13:45):
Yeah.
I use tasks.
I know that you shouldn't be usingtoo many tasks because it can like,
create way too many, threads for youand then it's gonna be a problem,
but I don't usually have that manytasks, so it's still, it's working.

Leo Dion (host) (13:57):
how did you get started in development?

Natalia Panferova (guest) (14:00):
It was, a while ago and I started with Java 'cause I was
going to study computational linguistics.
So I was learning data structures,algorithms, and then I was learning
Java and Python because that'slike, especially Python is what
was going to be used mostly.
Then I got a job, doing web . SoI just didn't go to study.
In the end, I was just working,doing some frontend development.

(14:24):
then I learned full stackdevelopment as well.
after that I started learn iOSbecause I wanted to experiment with
one project and seemed like iOS wasthe right way to do that because
it's self-contained and small.
But you can still sell your products.

Leo Dion (host) (14:37):
is there anything you miss about not developing for the iPhone?

Natalia Panferova (guest) (14:41):
I still do web

Leo Dion (host) (14:42):
Do you miss Java?

Natalia Panferova (guest): I don't remember it anymore. (14:43):
undefined
I think I haven't used it for a while.
But I still do web.
most of the web development Ido now is with Swift because I
usually build static websites.

Leo Dion (host) (14:52):
what are you using to build your static website in

Natalia Panferova (guest) (14:54):
Publish.
it's by John Sandel.
we have our own fork and we'retrying to maintain it somewhat

Leo Dion (host) (14:59):
so how did you end up at Apple, if you mind me asking?

Natalia Panferova (guest) (15:02):
I was, using SwiftUI building with SwiftUI since
like the first year it was released.
And I started my blog and I waspublishing articles about whatever,
hacks I came up with because the firstversion SwiftUI was really limited.

Leo Dion (host) (15:14):
Mm-hmm

Natalia Panferova (guest) (15:16):
so the blocks that's growing and.
It was like a different newsletter andI was posting on Twitter back then,
and then someone from the team reachedout and said, we found your blog.
It looks like you're reallypassionate about the framework.
They wouldn't come and work with us.
I started like I interviewed andthen it took like a few months
to get the job in the end,

Leo Dion (host) (15:34):
Right, been doing Mac os development lately, or did you
just, start doing the macOS stuff?

Natalia Panferova (guest): So I was doing a bit (15:40):
undefined

Leo Dion (host) (15:41):
you get into it?

Natalia Panferova (guest) (15:42):
Yeah.
I was doing it a bit, beforeI joined Apple because I was
like, oh, we have SwiftUI now.
I don't need to learn AppKit.
I can just do something with SwiftUI.
But yeah, I started sort of tryingit out a bit and then I obviously
had to learn a bit more about thatbecause I was building APIs for Marcos.
it was tricky because like, I don'tknow the platform as well as I know iOS.

Leo Dion (host) (16:02):
Okay.

Natalia Panferova (guest) (16:03):
but yes, had to learn, had to talk to other people because
if you build a text, API, it is going tobe used everywhere, across all platforms.
So you have to make sureit makes sense everywhere.

Leo Dion (host) (16:12):
Right.

Natalia Panferova (guest) (16:13):
Yeah.
and now recently I just, I have moretime for my own projects now as well.
So I want to try to build more microassets just because it's a bit more
fun because it's more new for me.
lots of room for experimentation.

Leo Dion (host) (16:26):
How far back did you do Mac OS development with 50 Y.

Natalia Panferova (guest) (16:30):
I tried the first year, 2019.

Leo Dion (host) (16:33):
Okay.
We, and you were like, this is great.
Or were you like, oh, because Ijust remember that I had done a
little bit of that kit, not a lot,and I was just like, this is rough.
Did you, what, how did you feel about it?

Natalia Panferova (guest) (16:46):
Yeah, I thought it was quite difficult and like
the design was difficult for me as wellto understand what to do with micros.
But with iOS, I sort of understandwhat I want with micros,
it's more difficult for me.

Leo Dion (host) (16:57):
yeah.
So, as I've been talking about it onthe podcast, I've been doing a lot of
Mecca West development with Bushel, andthere were some articles that really
interested me, that you had recently.
Well, building like a menu bar utility.
You want to talk about that and likehow cool that is and why, and why.

(17:18):
Why is it so powerful to do in Mac Os?

Natalia Panferova (guest) (17:21):
Sure, yeah.
I wanted to build like a tool for myself,that, I would use, basically I write my
blog in lockdown and the lockdown partsthat we use, it struggles to par URLs for
Apple Doc, like, when they have brackets.
so like fails every time.
So I have to code them manually.
So I'm like, I just want a toolthat's . I can like press the keyboard
shortcut or something, and I just likeeuro code, your codes, euros for me.

(17:43):
So I'm like, oh, it could be a coolproject to try to build as a micros
utility just to learn new thingsand I can use it myself as well,
So I thought my new bar would be theright thing to do because it's quite
limited functionality, maybe too much.
I tried using the menu by extra.
Worked out mostly.
Well, there were a few things.
They were tricky, like sizing the icon tothe custom icon to use for the menu bar.

(18:06):
They had to drive your things, had togo with some hack in the end then like
presenting settings window, the, the,in the way that it like behaves the same
way as other settings windows, like,so it comes to the front straight away,
but then doesn't stay at the front.
Mine stays because I usefloating window for that.

Leo Dion (host) (18:23):
Okay.

Natalia Panferova (guest) (18:24):
Yeah, or just the fact that you can't
add right click to the menu bar.
like many menu bar apps, youcan right click on them and
they show additional options.
Quit, button.
And I couldn't implement that.
I couldn't find a way toimplement that in my app.

Leo Dion (host) (18:38):
Did you had to do anything with AppKit or Relic was what's,
is it NSVU Representable or any of thatstuff to like, where have you had, where
have you found the need to do that?
in your macOS app development?

Natalia Panferova (guest) (18:52):
so I haven't used wrappers, but I did use,
AP Delicate, like n as App Delicate,

Leo Dion (host) (18:58):
Okay.

Natalia Panferova (guest) (18:58):
Yes, yes,

Leo Dion (host) (18:59):
Yeah.
Okay.

Natalia Panferova (guest) (19:01):
yeah.

Leo Dion (host) (19:02):
Well, what did you have to use it for?

Natalia Panferova (guest): I think it's something to do (19:05):
undefined
with the startup of the app.
I think maybe it's to present.
I wanted, like when the app is firstopened, I wanted to open the, like,
because when you start the menu barapp, it just starts with an icon in the
menu bar, but it doesn't open the app.
And I think I used somethingfrom AppKit to open for

Leo Dion (host) (19:22):
you want it to open the menu bar,

Natalia Panferova (guest) (19:23):
Yeah.

. Leo Dion (host) (19:24):
That's where you have that like application as agent.
'cause then it thinks,oh, you just want like.
A menu bar item where it'slike, no, you want a window too.
what are some things if I, an iOSdeveloper and you want to build your
first Mac app and you want to useSwiftUI, what are some other things
that maybe somebody should know about?
if they're gonna getinto macOS development.

Natalia Panferova (guest) (19:48):
I think there's a few more ways to integrate
with the system and I think userswill probably expect more system
integration from Marcos app.
Like you can, add an option to start theapp or start up like a launch login it.
Then you can add system services.
That's what I looked at as well.

Leo Dion (host) (20:05):
Are you looking at App Store and Sandboxed, or are
you looking at outside App Store.

Natalia Panferova (guest) (20:10):
So for now App Store, but we are thinking
of building our own platform to sellapps from, just from our website.
Especially now we have like a bookplatform so we could adapt it to sell
apps just because it is probably gonnabe faster and a bit more like we would
be more free to what APIs we can use.

Leo Dion (host) (20:25):
One of the things I've had to do, is, getting into the NSWindow
API and like assigning a NSWindowDelegate.
I've had to do that quite a bit becausethere's certain things I want to do, like.
Get rid of like the minimizebutton or other things like that.
Or changing the size.
so I started building bushel notthis year, but the year before.

(20:47):
And I know they've added some stufffor Windows SwiftUI and Mac Os.
there's a lot of power in that.
That, I've found when it comes to steppingback to the app kit stuff when I need to,

Natalia Panferova (guest) (21:02):
Yeah.

Leo Dion (host) (21:02):
So another book out your last year, right, called Swift Gems.
what is that about and how isthat different from your new book?
SwiftUI Essentials.

Natalia Panferova (guest) (21:11):
Yeah, so Swift Jams is more like a collection of
tips that have been collected over theyears because I think it's fun to find
this like little nuggets of informationthat you can use, instead of a book
that you can open on any page and like,oh, this is a cool Swift feature I can
integrate right now into my project.
And some of them are like syntacticsugar that will make coat cleaner
or prettier, or some of them are.

(21:34):
for optimization purposes as well, likesome ways to deal with collections,
that could your code as well.
So it's like a few different thingsthat I've been collecting and I
thought, why not put them into a bookand organize them like by topics?
So it was like a fun thing to do,especially like last year I was also
employed, so I had a bit less time.
that was a perfect book to writebecause I could do it in the evenings.

(21:56):
I didn't have to like sitdown and write it all at once.
Could like write a tip every evening.

Leo Dion (host) (22:01):
What kind of feedback have you gotten from
people where they're like, oh, Itotally didn't know about that.

Natalia Panferova (guest) (22:05):
the mostly quite happens that, oh,
there's like so many things Ididn't know that's like amazing.
And I was like, yeah.
And I also like, forget those things.
I remember writing about that.
I should go back to my book and see what Iwrote about that so I can use it as well.
So it's good for me as well.

Leo Dion (host) (22:20):
I think this has been great.
Natalia, thank you so muchfor coming on the show.
I really appreciate it.
or can people find youand your books, online?

Natalia Panferova (guest): So it's neil co.com. (22:30):
undefined
So Neil Co is like the operator and Swift.
the blog is neil co.com/blog andthe books is books dot neil co.com.
And I'm also on all sorts of socialplatforms like X Masteron, blue Sky,
LinkedIn, so it's at not Rova, on X.

(22:50):
And Masteron Social aswell, not Rova and Blue Sky.
It's also the same, not fer.

Leo Dion (host) (22:57):
Yeah, and we'll have links to all that in those show notes.
So definitely take a look at that.
thank you so much, Natalia, that wasreally good and super informative.
Thank you.

Natalia Panferova (guest): Thank you for inviting me. (23:06):
undefined

Leo Dion (host) (23:09):
People can find me online.
Leo g Dion, I'm on all the stuff.
If you're watching this onYouTube, please like and subscribe.
And if you're listening to this onyour favorite podcast player, please
post a review, share this online,and we will talk to you again.
Bye everybody.
Advertise With Us

Popular Podcasts

On Purpose with Jay Shetty

On Purpose with Jay Shetty

I’m Jay Shetty host of On Purpose the worlds #1 Mental Health podcast and I’m so grateful you found us. I started this podcast 5 years ago to invite you into conversations and workshops that are designed to help make you happier, healthier and more healed. I believe that when you (yes you) feel seen, heard and understood you’re able to deal with relationship struggles, work challenges and life’s ups and downs with more ease and grace. I interview experts, celebrities, thought leaders and athletes so that we can grow our mindset, build better habits and uncover a side of them we’ve never seen before. New episodes every Monday and Friday. Your support means the world to me and I don’t take it for granted — click the follow button and leave a review to help us spread the love with On Purpose. I can’t wait for you to listen to your first or 500th episode!

Crime Junkie

Crime Junkie

Does hearing about a true crime case always leave you scouring the internet for the truth behind the story? Dive into your next mystery with Crime Junkie. Every Monday, join your host Ashley Flowers as she unravels all the details of infamous and underreported true crime cases with her best friend Brit Prawat. From cold cases to missing persons and heroes in our community who seek justice, Crime Junkie is your destination for theories and stories you won’t hear anywhere else. Whether you're a seasoned true crime enthusiast or new to the genre, you'll find yourself on the edge of your seat awaiting a new episode every Monday. If you can never get enough true crime... Congratulations, you’ve found your people. Follow to join a community of Crime Junkies! Crime Junkie is presented by audiochuck Media Company.

Ridiculous History

Ridiculous History

History is beautiful, brutal and, often, ridiculous. Join Ben Bowlin and Noel Brown as they dive into some of the weirdest stories from across the span of human civilization in Ridiculous History, a podcast by iHeartRadio.

Music, radio and podcasts, all free. Listen online or download the iHeart App.

Connect

© 2025 iHeartMedia, Inc.