Episode Transcript
Transcripts are displayed as originally observed. Some content, including advertisements may have changed.
Use Ctrl + F to search
0:00
Hello
0:00
and welcome to Python Bytes where we deliver
0:02
Python news and headlines directly to your earbuds.
0:05
This is episode 355 recorded October 3rd, 2023. And I am Brian
0:07
Ocken.
0:12
And I am Michael Kennedy. I almost said the second
0:14
because I thought we were going to record yesterday and we
0:16
didn't.
0:17
But, add it off. Anyway, welcome
0:20
everybody. It's
0:22
good to have the show. Thank you everyone
0:24
for supporting us through purchasing
0:27
courses at TalkPythonTraining or purchasing
0:30
the PyTest course, of course,
0:32
or supporting us on Patreon. We love Patreon
0:34
supporters. And if you want to
0:37
reach us, reach us through Fostadon
0:40
on Mastodon at MichaelKennedy,
0:43
at
0:43
BrianOcken, and at PythonBytes.
0:47
And if you're listening to this, you can also join us
0:49
live sometimes. We
0:52
usually are Tuesdays at
0:54
11, Tuesdays at 11-ish
0:57
on Pacific time. So
1:00
join us and you can just go to PythonBytes.fm
1:03
to see the link. But we have
1:05
some exciting news. Yesterday was exciting
1:07
day.
1:08
Tell us why.
1:11
We've been waiting a year for this one. Python 3.12
1:15
is out. Absolutely.
1:18
Absolutely big news. If you
1:21
look at how much stuff, it's easy
1:24
to just go, Oh, what are there's like,
1:26
these four new features I care about
1:28
or something along those lines. It's like, okay,
1:31
well, there's a new Python. If you look
1:33
at the changelog, Brian, if
1:35
you look at the, what's new and you scroll this, I
1:38
threw this into omnivore.app.
1:42
And it said it's 48 minutes of
1:45
reading to read the what's in this release.
1:47
Wow. That's a lot. That's a lot
1:49
of stuff. That's a lot of good
1:51
things. I think
1:54
it's, I don't even know how much it's even
1:56
called out in the what's new because it's
1:58
a little tricky to put in. the not
2:01
new, it's just more. But
2:03
the faster CPython initiative,
2:05
I think, you
2:08
know, is going strong for 3.12 as it was for 11 and
2:10
it will be for 13. So not even covered in the
2:15
what's new, I think is Python 3.12 should
2:18
just be faster. That's really cool. Yeah.
2:21
But if you look at the, you know, they kind
2:23
of have, it's really nice, even though it's 48 minutes
2:26
of reading, they do put the
2:28
headline items at the front here. So
2:31
there's new type parameter syntax
2:34
and pep 695. So,
2:36
Brian, how do you like your generics? I
2:40
haven't talked about it, actually. Or your
2:43
templates. If you're a C++ guy, they don't call
2:45
them generics, like C sharp and Java,
2:47
they call them generics. But C++ calls
2:50
them templates. Yeah.
2:52
So Python calls them generics. We
2:55
have that. We had it before, actually. So this is
2:57
not
2:58
new, new.
3:00
Like there were ways if I scroll
3:02
down somewhere in the big long list, there was
3:05
like, here's how you do it before. And
3:07
here's how you do it now.
3:09
Honestly, meh,
3:11
I mean, no disrespect
3:13
to people working on it, but it's just not like a thing
3:15
that, that I'm going to be focusing.
3:17
It's just not a huge deal to me, right? It's something I feel
3:20
like I'm going to do a lot of
3:21
maybe. I
3:22
feel like most of the places
3:25
that I would have wanted to use it, it's kind of like
3:27
the self parameter sort of takes care of that
3:29
for me. But anyway, very exciting for people
3:31
who do it, do need to use this. And
3:33
if you're building a library, like a package,
3:36
possibly, this will
3:38
give you a lot of flexibility for
3:40
extensions and sensibility
3:43
and whatnot. But I
3:44
don't know. What
3:45
do you think? Exciting? I
3:47
think I'm not excited about yet, but I think I'll be using
3:49
it probably pretty soon. So yeah.
3:53
Yeah. F strings are all grown
3:55
up now. Oh boy, they can do all the Python.
3:57
So F strings, I don't know. People
4:00
know, but fstrings have their own separate
4:02
implementation separate to
4:04
like regular strings and stuff and
4:07
it's a lot of it was done in C. They're
4:10
really wild. Because
4:12
of that, they're somewhat limited in what you can
4:14
put inside the curly braces. There's like different
4:16
kinds of expressions. You can do ternary
4:20
like if tests and you can just say
4:22
like thing.upper as what goes
4:25
in there, but you can't write full
4:28
Python in fstrings. And
4:30
the most obvious was you couldn't put
4:33
quotes in the little curly between
4:35
the curly braces or you couldn't put the same
4:37
quotes that you had on the outside. Yeah,
4:40
I'd always be like, okay, this one's
4:43
getting single quotes because the string is a double
4:45
quote or vice versa. You have to kind of think
4:47
it out. So now it's like a
4:49
little more freeform. What
4:51
can go in there? I don't know. That's
4:53
initially a recommendation of writing your app
4:56
inside the fstring, but you know, it
4:58
gives you more flexibility. So there it is. I
5:01
am super psyched about 648, which
5:04
is a unique per interpreter
5:06
Gil Eric Snow. Man,
5:08
you've been on this for a while. Congratulations and
5:10
that this is out. So this
5:12
has mega possibilities to unlocking
5:16
multi-threaded performance in Python. Don't
5:19
know that it's actually has anything
5:22
to do with threads yet. I
5:24
think it's way more manual and maybe even just at the
5:26
C level. Yeah,
5:28
it said that the pep says it's at the
5:30
C API right now. Three
5:33
thirteen might have a Python
5:35
API access to it. Yeah.
5:38
I mean, what I would love is like, I'm going
5:40
to create a thread and I'll pass
5:42
a flag that says use your own
5:44
Gil LA or
5:47
I'm going to create a thread pool
5:50
executor and say for every thread that you create,
5:53
get a new Gil. That means full
5:55
on parallelism in Python. I
5:57
mean, I'm sitting here on my. Well,
6:00
what we're talking about then is basically
6:02
forking off a new interpreter
6:05
from Python. Yes, in
6:08
a sense, but without a new process.
6:11
Okay. Right? Yeah. So,
6:14
why not? I don't believe you can
6:17
share. Maybe
6:19
you can share data directly. I don't
6:21
think you can share it directly because it would have to
6:23
share the gil. So, I think you've got to like
6:25
serialize the data over, but you
6:28
can get better performance if you don't have to start
6:30
a bunch of processes potentially and
6:32
do some message passing. But, you know, here on my
6:34
M2 Pro Mini, I have 10 cores
6:38
and all the Python I want to write, I'm only going
6:40
to ever be able to do one core's
6:42
worth of work for computational things unless
6:44
I go crazy with like the
6:46
no-gil, scythe on, write some
6:49
C code or, you know, things like that, right?
6:52
So, this has the possibility to take advantage
6:54
of, you know, modern hardware, right?
6:58
Very exciting. Impact monitoring. So, if
7:00
you want to like hook into events
7:03
for like profiling, debugging type
7:05
of stuff, you can do that with this, high-end
7:09
bug effects. And
7:12
also, one of the big things that came in 311 was,
7:14
did you mean type of recommendations for...
7:17
We couldn't import request. Did
7:19
you mean requests, plural? Things
7:22
like that, right? And so, that's further
7:25
improved. There's
7:27
a buffer protocol which allows direct access
7:29
to memory of things like byte arrays and
7:32
other low-level items that you don't have to
7:34
like go through the Python level, you just go, give
7:36
me the direct access to
7:38
the memory, that's kind of cool. Nice. Good
7:41
time, Ben. You can have,
7:43
yeah,
7:43
I bet,
7:45
path.path can be subclassed,
7:47
that's kind of cool. Hey, OS module
7:49
gets Windows things, that's nice. But
7:52
you can see, there's a command line
7:54
interface that adds a SQL lite 3
7:57
module, so you know you can do like python-m. HTTP
8:00
server or something along those lines. You
8:03
can do that for SQLite now as well, which is kind
8:05
of neat. Yeah,
8:08
this is exciting. Async.io has some
8:10
improvements with benchmarks showing up to a 75%
8:12
speed improvement in
8:14
certain areas. I'm sure not generally, but
8:18
yeah, a bunch of other things. There's also some security
8:20
updates, some C API,
8:23
there's performance improvements with comprehension
8:26
inlining and there's a Linux performance
8:29
profiler. Yeah,
8:32
a bunch of different things and
8:34
that's pretty much the highlights. I
8:37
mean there's some thinning, some
8:40
culling of the standard library. There
8:43
was an async-chat example implementation
8:46
type of things
8:47
in the standard
8:49
library, so it's not anymore.
8:52
Good.
8:55
Yeah, so that's not there, but generally
8:59
you look at some of the things that were deprecated or
9:01
removed, but yeah, that pretty
9:04
much covers a few more type things and that's
9:06
your new Python.
9:10
Awesome. Are you excited? How
9:12
long can you switch to it? I'm working on it right
9:14
now, man. Are you? Yeah.
9:18
So yeah, like this.
9:23
I'm going to tell you a story.
9:26
Okay. So yesterday, I have
9:30
been slowly becoming one of the
9:33
maintainers for a plugin called PyTest
9:35
Repeat. So
9:39
it hadn't been tested up through 3.9, I believe.
9:46
So I wanted to, but it worked fine
9:48
on the newer pythons, but I just wanted to make
9:50
sure it was updated. So I did some things
9:52
like move the
9:56
continuous integration
9:58
to GitHub Actions.
9:59
on
10:01
Travis before so moved to get our actions
10:03
and so 312 out I wanted to update
10:06
the test to 312 right so
10:08
this is using talks
10:10
and so I
10:13
I just went through and updated
10:16
the talks any file to add 312
10:19
installed on my machine what's
10:22
the problem ran it and created
10:25
a new virtual environment install
10:27
talks whatever
10:28
and ran it and it blew up
10:30
no no yeah
10:33
it what what happened is I got this
10:36
Python attribute error module
10:38
package util has no attribute
10:41
imp
10:41
importer did you mean zip importer
10:44
I'm like I didn't mean any of that stuff so no
10:48
idea so I'm
10:50
like trying to figure this out like clearly
10:53
other people are releasing at 312 that we
10:55
they surely have come up with this
10:57
I dug through a long I was researching
11:00
a ton on this
11:02
and basically I thought
11:04
there's something weird going on between pip
11:07
and talks and Python 312 because
11:09
I knew that the imp imp importer
11:12
thing was deprecated I don't know what it is
11:14
but I knew it was deprecated and it was taken out in 312
11:17
I think so it's not
11:19
there and no mostly
11:21
you don't have to care about it except
11:24
for I ran into this so what was happening I
11:26
didn't know so I did come up with a fix
11:29
though and I found out this morning with the
11:31
what really was going on so it's
11:33
a long story but I'll try to make it quick
11:35
the the fix I came
11:38
up with was there was a in in
11:41
talks any you can say download
11:43
equals true so when it creates a virtual
11:45
environment
11:46
it creates the it
11:48
updates to the latest pip so
11:50
what was happening was but without
11:53
that I was using an older pip but
11:55
I don't know I didn't know why why was it
11:57
using an older pip that's That's
12:00
the part where I didn't know why. So this fixed
12:02
it, but it's kind of a band-aid. It's a little
12:04
bit of an ugly band-aid. So what's
12:07
the real fix? The real fix
12:09
is, Torx uses
12:11
a package called Virtualenv.
12:14
So that's not the built-in VENV. It's
12:17
the third-party package, Virtualenv.
12:20
And
12:21
Virtualenv has some cool
12:23
features. One of the things it does is it
12:25
keeps a little cache
12:28
of third-party packages
12:30
to store, to load up. And
12:33
it doesn't update them all the time. It does it,
12:35
like, I don't know, every 14 days or something
12:37
like that. It's kind
12:39
of a slow update thing. And it makes
12:41
things run faster because you don't have to keep
12:44
downloading all the time. But I had an old
12:46
pip cached. So the real
12:48
fix was I
12:51
went through and I probably didn't have to do
12:53
the reset, but I called Virtualenv
12:56
with reset app data and
12:59
then did an upgrade. I probably could
13:02
have just done the upgrade. Upgrade embed
13:04
wheels. And it updated my
13:06
pip, cached pip to
13:08
the latest. Anyway, so I'm going to,
13:11
I wrote this article about how I patched
13:13
it. I'm going to update it today to
13:16
say the real fix is to
13:18
clean out your Virtualenv
13:20
pip cache. Or Virtualenv cache. So
13:24
yes, I'm working on updating to 312. Nice.
13:28
Yeah, that's cool. I
13:30
also have to shout out to Jurgen.
13:33
I don't know how to pronounce his last name, GMACH.
13:36
Jurgen helped me to debug
13:39
the problem today. So that was awesome. Excellent.
13:44
One more shout out. Henry Shriner says,
13:46
the buffer protocol that I described is not new,
13:48
but the pure Python version of
13:50
it, 312 is.
13:52
Ah, okay. Excellent.
13:56
All right. Over to you.
13:59
Uh, oh.
13:59
I just did this. This is my topic.
14:04
Just a follow up to my topic. This is your topic. Okay.
14:06
Excellent. Yeah, yeah, cool. All right. Let's
14:09
talk about
14:11
the present by talking a bit about the past. So
14:15
very exciting news. The Python
14:19
developers survey results are out.
14:21
It's slightly confusing
14:24
in that it says the Python developer survey 2022
14:26
results. Like wait a minute.
14:28
It's September 2023. Is
14:31
this last year's one or the, no, this is
14:33
the one that just came out on the PSF
14:36
blog they just, um, I
14:38
found they just announced
14:40
like these are finally put together,
14:43
analyze a report from the 20, the end
14:45
of 2022 is now out. So
14:49
very exciting and also new. I
14:51
did a video on YouTube actually
14:53
where I had a first reaction
14:55
to it. So this is an 18 and a half minute video.
14:58
I'll link to it. You can check it out if you want to go deep.
15:01
And because this video exists, we'll just kind of skim
15:03
it, Brian. We won't go over too much of it, but, uh, I
15:06
basically didn't open up
15:08
or read the survey results until I hit record
15:10
for this video and then I just dove into it. So that's fun. People
15:12
can can check that out if they want, but let's
15:15
see. We can hit some of the highlights, uh,
15:18
general Python usage, 85% of the people who
15:20
Python, Python primarily
15:23
that way. So it's not like
15:25
a second language, you know, but
15:27
it's mainly what they do, which is pretty cool. There's
15:30
a lot of these that add to over a hundred. So, um, take
15:33
it for what it is. There's also like
15:36
a little gray, um, like
15:39
a light gray and a dark gray, um,
15:42
I
15:44
know word or legend, and
15:46
that will, they often overlay these things
15:48
to show them side by side. So for example, it says Python
15:51
usage with what other language? Like if you're
15:53
not, you're going to use another language. What do you also
15:56
use in addition to Python?
15:58
Primarily being Python being the main language. And
16:00
it has like this one is the prior year
16:02
and this year again with
16:04
the offset by one a little bit So
16:08
guess what the top three are JavaScript HTML
16:11
and CSS are those languages? No No,
16:15
can you make it? Here's a rule for what
16:17
is a language in my mind probably can I
16:19
make a thing that runs on its own from that?
16:22
Set of syntax JavaScript. Yes
16:25
C++. Yes Java. Yes, I
16:27
forgot. Yes CSS No, but
16:30
nonetheless Yeah,
16:33
I make that distinction is it like it's like it's a it's
16:35
a I feel like it's a trade-off
16:37
of like I do Java or I
16:39
do Python or I could choose one or the
16:42
other but they're not if it's not interchangeable
16:44
I'm not sure I don't know. It's somewhat interesting,
16:46
but I'm I'm
16:48
on the fence. It's they've got they're
16:50
both complicated enough that I think
16:53
it takes training to learn it So when
16:55
I mean I wouldn't think I wouldn't think of like
16:57
any files as a language But
17:00
so there are a lot there are a lot more complex
17:02
than any file or something Sure.
17:05
All right. So I
17:07
think I put go on that every year. So the the
17:09
top Top three languages
17:12
used along with Python three
17:14
of the four because there's a Combo,
17:17
I don't know. I would really
17:19
call a separate language. But anyway, JavaScript HTML
17:22
CSS combined and SQL and those basically
17:25
that block tells you guess what people
17:28
build web apps with Python, right? That's
17:31
what it says. Yeah here and web apps are
17:33
often five six seven different languages
17:37
which is partly why the web is hard, right, but There's
17:41
that and then Bash
17:43
and shell, I mean that kind of speaks to the
17:45
DevOps Automation side of
17:47
things and then CC plus plus
17:49
Brian you're kind of down in that realm, right? Yeah,
17:51
that's most of the half my time and that's it interesting
17:54
that that's that large still so
17:57
it's cool Yeah, take another thing you
17:59
would want to consider here if you like look at this is
18:02
TypeScript and JavaScript. Those
18:04
should be the same. If you say HTML
18:07
slash CSS,
18:09
you should say JavaScript slash TypeScript,
18:12
which bumps that up even
18:14
higher, right? Because TypeScript
18:16
is just like a better JavaScript. All
18:18
right, let's go. If
18:21
you're going to do data science, most people use
18:23
SQL as their first language
18:26
that they're going to do. And
18:28
yeah, it's interesting. Let's see
18:30
some of these things are about like how
18:32
do you do work? I
18:34
think it's interesting this one here. What do you use Python
18:37
for the most? Web development
18:39
number one, data analysis
18:41
and machine learning, which is kind of like
18:43
the data science block and then other
18:48
whole bunch of other. And
18:50
I think
18:52
I kind of think of Python as having a
18:55
one-third, one-third, one-third kind of partitioning
18:57
where the web development,
18:59
API development,
19:01
stuff,
19:03
service functions, all those things live
19:05
in one-third and then data science lives in another
19:07
third and then there's like
19:10
the catch-all block of everything else.
19:13
So this kind of says that maybe the
19:15
web development side is a little smaller, but the
19:18
end of the random section is a little
19:20
bit bigger, but roughly I
19:22
think that's a good rule of thumb. Yeah.
19:26
Yeah.
19:27
And I
19:31
think finally legacy Python has
19:33
been vanquished. It's been
19:35
vanquished for three years now.
19:37
Python 3 versus Python 2 basically
19:42
it's Python 3. That's like 94-95%. Ironically,
19:46
it went down a little bit to like
19:49
Python 2 made a bit of a comeback this year. It's
19:53
probably within the variability
19:56
of the number of people and the type
19:58
of people that responded to the survey.
22:00
and PSF and have them change this question
22:02
because unit testing framework. I think you
22:05
mean automated testing framework because
22:08
it might not be a unit test and people
22:11
get confused by that maybe.
22:13
I don't know. Yeah potentially. All
22:16
right.
22:19
Okay so what's
22:21
next? I'm
22:24
interested comments out in the live chat
22:26
here about like oh yeah you'll
22:28
never in a build system talks is
22:30
not a unit testing framework yeah
22:33
yeah yeah yeah it does
22:35
Turing complete complete make a CSS
22:37
a language. Is
22:40
CSS Turing complete? If it is
22:43
then yeah totally I think it
22:45
does but I
22:46
don't remember what Turing means anymore
22:50
specifically I mean I kind
22:52
of know it yeah my rule of thumb
22:54
is can I make a thing
22:56
that runs with that I
22:59
don't know but that's that's
23:02
the Michael rule Michael rule but anyway
23:05
yeah on onto the next one for you. The
23:07
next is brought to us by Henry
23:10
Schreiner who's in the audience. Hey Henry thanks
23:13
for putting this together and also
23:15
letting us know about it so we've
23:18
got the scientific Python development
23:20
guide this is a this is
23:22
a big guy so this is really
23:25
cool actually so this is a
23:27
I'm we're gonna post both the the announcement
23:30
post and a link to the guide
23:33
but it's both the same place blog
23:35
scientific Python
23:36
org
23:38
and then there's a learn scientific Python
23:40
org so this is
23:43
pretty awesome it's a very comprehensive
23:46
too so this may have this must have taken a while
23:48
to put together so
23:49
you've got basically like a
23:51
how to use how to develop in Python
23:54
for scientific people and it's
23:57
pretty comprehensive I didn't
23:59
go through
25:53
doing
26:01
things like entry points. So you basically,
26:03
once you pick back install something, it becomes
26:05
a command line. Oh yeah. Capability
26:08
is really awesome as well. There's a lot of neat things
26:10
about packaging that I think not everyone
26:13
are like, well I don't want to put it into PyPI and
26:16
have it open source. So maybe there's other interesting
26:18
aspects still. I'm sharing it internally. Nice,
26:22
and checked out, this is kind of daring
26:24
to do it live, but I checked out the
26:26
test section and yay,
26:29
they talked about PyTest. So, cool,
26:31
I haven't checked out PyTest yet. Good
26:33
job guys. We didn't just suggest none, the none
26:35
for months. None. We suggest
26:38
not testing.
26:41
The world's simplest way to write tests. No.
26:44
Yeah. What about extras?
26:47
You feeling extra? I
26:50
am feeling extra.
26:51
Do you want me to cover mine while
26:53
I'm already up?
26:54
Yeah, go for it. I
26:57
was gonna do this extra attribute thing as
26:59
an extra, but decided to just run with it.
27:03
The quick extra is
27:06
continuing to work on the course. Chapter eight
27:08
is up, configuration files. It's a short
27:10
one, but please don't skip it. It
27:13
will mess you up if you don't understand this. So
27:15
just a few minutes to cover
27:17
some configuration.
27:19
And one of the questions I always
27:21
get is,
27:22
what do the dundra.net files mean
27:25
within a
27:27
test directory? And
27:29
I'm gonna keep it a secret. You gotta watch the course.
27:32
But
27:34
they're good things.
27:36
You're making good progress on this. I
27:38
am, it's a blast. I'm getting great feedback
27:41
from people. Some people from PyBites
27:44
are reviewing it and giving me feedback.
27:46
Some people from JetBrains. It's
27:49
been a really good
27:50
community there. So, cool.
27:53
How about extras from you? Well,
27:57
I have some Mastodon extras. And
28:00
I came across Mona, M-O-N-A
28:03
app, which is a really cool, really
28:07
cool client for Mastodon. I
28:10
believe this is Mac only, yeah? Optimized
28:13
for voiced over, optimized for
28:15
Mac, native design, iPhone,
28:18
iPad, and Mac. So, sorry for people
28:21
not on that one, but if you're on these, this
28:23
is really, really nice. I tried Ivory, I know you
28:25
and I spoke about it like a couple weeks ago, maybe off
28:27
air, but Ivory drives me crazy. It's
28:30
like the big recommendation everyone has. And this is super nice. It
28:33
has a free version, or you can pay $15 once
28:35
forever, and
28:37
then you have it, which is kinda
28:39
nice. So people can check that out. I think I'm gonna move to
28:41
that. Another thing that we talked about the other day,
28:43
Brian, is why
28:46
are these weird domains so
28:48
expensive, right? We have PythonBytes.fm,
28:51
and to renew PythonBytes.fm is $170 a year. I'm
28:55
like, why didn't we just go with .com? Like,
28:57
what were we thinking? Come on, people. We should
28:59
have just done .com, but you know, when we came up with PythonBytes,
29:01
when we started it, the .fm was all the
29:04
rage for all the podcasts, so there it is. And
29:08
it's not a huge deal, but we
29:11
were talking about, where does that money go? And
29:13
the biggest winner of these is the .ai, right? There's
29:18
so many .ai domains
29:21
these days, right, with all the AI startups. And
29:23
it turns out that
29:25
the island of,
29:28
Guilia is a tiny British
29:31
territory with around 16,000 inhabitants, but
29:34
its domain name is .ai.
29:37
And so the software developer who manages
29:40
the domain told Bloomberg it could generate $30
29:42
million for this, 10% of
29:46
the GDP of this tiny island because of the
29:48
.ai domain. Anyway,
29:51
I just thought that was interesting, and I'll just
29:53
throw this in as an extra. What's the .fm, do you
29:55
know? I
29:57
don't know, actually. That's a really good question.
33:50
but
34:00
because we thought it would be easy. Exactly.
34:03
Why is
34:05
it still three months and we're rewriting this section?
34:07
It was supposed to take a week. What
34:10
a bad idea. Do
34:14
this not because it's easy, but because we thought it'd
34:16
be easy.
34:19
Okay, so David shares with us,
34:21
there's the oldschool.am domain for
34:24
Armenia, not AM
34:26
instead of FM. Should we retire
34:28
the FM and go talk radio AM? We
34:31
could put a phonograph-y
34:33
type of filter on our voices and make it
34:35
sound like staticky and kidney. Would
34:38
it be great is to, yeah, do a filter and
34:40
have both, have the AM and FM
34:42
versions and have
34:44
it sound like it's going through any speaker. Simulate
34:48
going through a tunnel and get a little
34:50
staticky and then come back just periodically,
34:52
right, why not? Yeah, and
34:55
filter the high end and low end, so there's just like
34:57
the mid range and that's it. I
35:00
love it. Because
35:03
with AM you have to have the bad car speakers
35:05
also.
35:06
Oh yeah. Anyway.
35:10
Nice.
35:11
Cool. Well,
35:13
thanks again for a wonderful episode.
Podchaser is the ultimate destination for podcast data, search, and discovery. Learn More