Episode Transcript
Transcripts are displayed as originally observed. Some content, including advertisements may have changed.
Use Ctrl + F to search
0:00
Why is Python so popular? There's plenty of
0:02
room for debate on this, but one solid
0:04
reason is it's easy to adopt, easy to
0:06
use, and caters to people who are not
0:08
quite developers, data scientists, but need
0:10
to get some computing done. Do
0:13
you know where the largest untapped set of
0:15
those people hang out? Excel.
0:17
That's why it's super exciting that Python is
0:20
now going to be built directly into
0:22
Excel. Just go into a
0:24
cell and type equals pi, and you're
0:26
off writing full Python 3 code that
0:28
is backed by a lightweight anaconda distribution
0:30
of Python. We have
0:32
Dr. Sarah Kaiser here to give us the
0:35
rundown on Python and Excel. This
0:37
is Talk Python to Me, episode 445, recorded live and
0:41
on location at Microsoft Ignite in Seattle,
0:43
November 16th, 2023. Welcome
1:00
to Talk Python to Me, a weekly
1:03
podcast on Python. This is your host,
1:05
Michael Kennedy. Follow me on Mastodon, where
1:07
I'm at M Kennedy and follow the
1:10
podcast using at Talk Python, both on
1:12
bostodon.org. Keep up with the show
1:14
and listen to over seven years of
1:16
past episodes at talkpython.fm. We've started
1:19
streaming most of our episodes live
1:21
on YouTube. Subscribe to our YouTube
1:23
channel over at talkpython.fm slash YouTube
1:25
to get notified about upcoming shows
1:27
and be part of that episode.
1:30
This episode is sponsored by POSIT
1:32
Connect from the makers of Shiny.
1:34
Publish, share and deploy all of
1:37
your data projects that you're creating
1:39
using Python. Streamlit dash Shiny bokeh
1:41
fast API, flask, quarto, reports, dashboards
1:44
and APIs. POSIT Connect
1:46
supports all of them. Try POSIT
1:48
Connect for free by going to
1:51
talkpython.fm slash POSIT. POSIT. And
1:54
it's brought to you by the PyBytes developer
1:56
mindset program. PyBytes core mission is to help
1:58
you break the vicious cycle. of tutorial
2:01
paralysis through developing real-world applications.
2:04
The PyPipes Developer Mindset program will help you
2:06
build the confidence you need to become a
2:08
highly effective developer. The link is in your
2:10
podcast player show notes. Sarah,
2:13
welcome to Talk Python to me. Hey, how's
2:15
it going? Hey, it's going super well, super
2:18
well here at Ignite for one more
2:20
time to talk about cool stuff with
2:22
Python and things going on. This time
2:24
it's going to be Excel
2:26
and Python. It's like Reese's Pieces,
2:28
you got your chocolate and my
2:30
peanut butter, like what's going on
2:33
here? I mean, the cats and
2:35
dogs, are they living together or what's happening? The
2:37
old school and the new school. That's
2:39
right. The open source and
2:41
the not. Yeah, yeah. My background
2:44
is I've been a data scientist for a
2:46
long time. I did my PhD in quantum
2:48
computing in like experimental physics stuff. So trying,
2:50
I actually, my first programming
2:52
language was Mathematica and that was actually
2:54
what got me hooked on kind of
2:56
the notebook sort of interface. Yeah, okay.
2:58
Well, normally people say their first programming
3:01
language when that's the background is Matlab.
3:03
Yeah, yeah, yeah. But I would say
3:05
Mathematica is like the proper mathematicians
3:08
programming space because it does
3:11
symbolic math, right? Which is so
3:13
remarkable when you see it go.
3:15
Yeah, like that was basically like
3:17
I could visualize. The thing was
3:19
being able to do easy visualizations.
3:21
So actually after undergrad, I
3:23
worked at Mathematica for a while on their
3:25
visualization team. Really? Yeah.
3:28
What technologies was that in? Thankfully,
3:31
I didn't have to touch any
3:33
of the optimization stuff underneath but
3:35
designing new gauges and plotting filters
3:38
and stuff like that. I really
3:40
enjoy visualizing and understanding data that
3:42
way. And so when I got
3:44
to grad school, realized that none
3:47
of our instruments talked together, like everything
3:49
was an entirely separate archaic,
3:52
non-documented protocol. And we were having
3:54
to somehow like either
3:56
sit By hand and match up all
3:58
of these CSV dumps. from the different
4:00
tools and stuff like that. So basically I
4:02
started learning. Python to make our lab
4:04
work if it's know. Initially it was
4:07
like using a serial and see types
4:09
libraries actually interface with these A P
4:11
eyes but I realized that someone once
4:13
showed me a Jupiter notebooks and are
4:16
like this is our it's of this
4:18
is the way and with his Seven
4:20
Mathematica for by month exactly. So I
4:22
have been using Jupiter notebooks almost since
4:25
they came out with the fits and
4:27
really enjoy that both as a learning.
4:29
Tool A teaching tool and.
4:32
A and of reproducible science To or
4:34
brad says taking the World by Storm
4:36
Roy they were here myself ignite the
4:38
keynote. They were having basically one code
4:41
oriented demo in the two and a
4:43
half hour a keynote and it was.
4:45
Now we have a Jupiter notebook with
4:47
some Python code that's gonna do some
4:50
machine learning and you know that. Back
4:52
to cats and dogs. See, I. Was
4:55
so every course these a sweaty
4:57
doing I'm. A developer advocate at
4:59
Microsoft. On the a Python
5:02
team focusing on data science and machine
5:04
learning a sorts of Python tools. So
5:06
I get it. I get to do
5:08
all the fun stuff with Pandas, Numb
5:10
P, side Pie, and on all of
5:12
those things. And that's kind of why
5:15
when I heard about the Python an
5:17
Excel preview as like. The
5:20
men's I have done many of pandas
5:22
import from thinks that know the third
5:24
of things and was kind of curious
5:26
as to see is initially I was
5:28
like who I'm pretty cool with my.
5:30
Python and not sneer why I want to
5:32
go that way But I said to say
5:34
i think I I'm convinced them are you
5:37
have Yeah yeah because it's kind of had
5:39
a different way than a Jupiter notebook. It's
5:41
hopeless as a my as will talk about
5:44
some fun of of those as we go.
5:46
Who are you have vandalizing Python on the
5:48
behalf of my Sos to? So are you
5:50
talking to like companies that do.net in haste
5:53
do Python are talking to. Companies.
5:55
That love python and same like
5:57
a you should consider Azure or
5:59
are. offering? What does your world
6:01
look like? What do you do today? A
6:03
lot of it is doing testing. I work
6:05
a lot with the VS code team and
6:07
the Jupiter specifically like the Jupiter features
6:09
in VS code to make sure
6:12
all the notebooks work to make
6:14
sure you know packages with kind
6:16
of weird output visualizations you know
6:18
are they rendering properly? Generally I
6:20
think I work with a lot
6:22
of the actual Python open source maintainer
6:24
communities in the kind of scientific Python
6:27
space so like with the non focus
6:29
supported projects. And really just try to
6:31
kind of understand what are they running
6:33
into and as we're definitely
6:35
seeing both with all of the
6:37
LLM and machine learning stuff like data
6:39
is getting so big that I definitely
6:41
can't open it in one Excel sheet.
6:45
And so the data is you know
6:47
basically word to the it's all
6:49
native on the cloud and so there's I think
6:51
a lot of kind of the academic space that
6:53
I'm I come from of like
6:55
that isn't really part of the curriculum or what's
6:57
taught or you know people kind of have to
6:59
learn it ad hoc and so
7:02
basically I kind of like
7:04
to think of myself as someone gets
7:06
to go do all that learning about kind of
7:08
how does science and data interact with
7:10
the cloud in this case specifically Azure
7:12
and. Just trying
7:14
to help build out scenarios like build
7:17
sample apps things like that that can
7:19
make it so they don't have to
7:21
waste their PhD time trying to understand
7:23
cloud DevOps stuff. It
7:26
sounds a little bit like you know a lot of
7:28
people who are just brought into a lab and said
7:30
here you're going to learn Python and then you can
7:32
go do your your actual research. They
7:35
often sort of skim out on
7:37
like some of the very basic software
7:40
like what is get what is how
7:43
do I run this like yeah kind
7:45
of things right so maybe you run
7:47
a lot of workshops like have you
7:49
basically in my postdocs I got really
7:51
tired of my teams and groups that
7:53
I was working with not knowing so
7:55
I basically made a standard two day
7:57
workshop that was like. all
8:00
of the computer science skills you missed in
8:02
your physics degree. We
8:05
did have at one point data that just existed
8:07
only on a jump drive and that jump
8:09
drive walked away and that does not feel
8:11
super good from a research standpoint.
8:15
Yeah let's just say we had
8:17
a review of that and instituted
8:19
new policies. We decided
8:21
backups are good. It's a bit
8:23
of a diversion but I worked
8:25
on some math research before
8:28
I graduated and got
8:30
my bachelor's and it was just in C++
8:33
but we had these large
8:35
silicon graphics computers like big mainframe thing
8:37
and we had onyx workstations that
8:39
went into it. We came in one morning and nobody
8:43
could log in. The computers wouldn't respond or
8:45
turn on us. It's like a quarter million
8:47
dollar computer they got used and it won't
8:49
turn on. We're like oh boy. What
8:52
had happened is one of the grad students
8:55
non-developer types just doing their
8:57
research had
8:59
a problem with their program so they
9:01
started logging to see what was going
9:03
on and they left it running overnight.
9:05
It filled the disk to the very
9:07
last byte and apparently once the last
9:09
byte was gone the whole mainframe couldn't
9:11
operate and just nobody could
9:13
even figure out what was wrong with
9:15
it forever and eventually yeah so you
9:18
know practices. Yeah we also
9:20
had a five million dollar microscope
9:22
get bricked because a younger grad
9:24
student didn't understand that Windows XP
9:27
service pack zero should never be
9:29
plugged into the internet. So
9:33
no firewall none of that. They were
9:35
just like well it has an ethernet
9:38
port and the company said they can
9:40
you know do support over TeamViewer or
9:42
something like that so they were like
9:44
yeah. So we walked in and we had
9:46
to yank it out of the wall and we
9:49
had the police there the next day because it
9:51
had already been doing a legal financial transaction in
9:54
about 30 seconds. You're
9:57
here to arrest a microscope. Yeah I was like it's
9:59
over there. That's not a computer. It
10:01
sort of is. Another
10:04
interesting thing before we dive into our main
10:06
topic here is I'm not sure if this
10:08
is real or not. Is it
10:11
happened or did it not? This quantum work
10:13
that you're doing? Yeah. So
10:15
my PhD was on
10:17
quantum cryptography hardware. So
10:19
both there exist commercial
10:21
devices. So part of it was
10:23
finding side channels and the physical
10:25
devices that you could buy off
10:27
the shelf and then the other
10:29
part was designing satellite optics for
10:31
doing ground to satellite-based
10:34
key exchange. So yeah, that
10:36
was a lot of what I was doing in the
10:38
like prototyping things in the lab that would look like
10:41
a satellite and we'd, you know, satellite on one table
10:43
and around the other. We slowly worked
10:45
out to, we did a bunch of tests in
10:47
an airplane because turns out like putting things on
10:49
a satellite is kind of expensive and. It
10:52
just blew really high at 747. Yeah.
10:57
And weather balloons turn out to be not
10:59
super predictable in the past once you launch
11:01
them. And so if you're trying to like
11:03
aim telescopes, yeah, it kind of
11:05
ended up being messy. But it was pretty
11:07
cool. We got to go. I got to
11:09
help with the design process for these single
11:11
photon kind of collection systems that went from
11:14
literally I'm just putting a couple lenses on
11:16
the table and running python stepper
11:18
motor things in my Jupiter notebook to
11:20
something that was actually automatically tracking and
11:23
working from the ground to an
11:25
airplane. Hopefully eventually a satellite but
11:27
that's kind of out of my hands at this point. Yeah,
11:30
space takes a long time to get to. A lot
11:32
of planning, a lot of, we worked on it for
11:34
eight years and then we had our launch window missed
11:37
by a week. You know, or something like that, right?
11:39
Yeah, that's right. And as a grad student, you got
11:41
to get out of there. Yeah, you're like, I got
11:43
to get a degree. I need to eat. Yeah. So
11:46
let's get going. Cool. Well, that
11:48
sounds like a really fun project. You've learned
11:50
a lot. Whenever you're talking to
11:52
hardware, I think that's a special kind of programming.
11:55
It's not just I run the program and then
11:57
it just goes a little bit like there's stuff it touches.
12:00
Yeah, like you don't get to necessarily do your
12:02
own architectural design that you have
12:04
to kind of first observe and
12:07
usually reverse engineer what the original
12:09
device engineers came up with and
12:11
then figure out how is this,
12:13
you know, this device is streaming
12:16
base, this place, how am
12:18
I going to like, these are entirely different
12:20
like application models. You really chose the serial
12:22
part. Okay. All right, then let's
12:25
go with that. Cool. All right. Now
12:27
before we get into Excel in Python,
12:30
let's maybe talk about working
12:32
with Excel from Python,
12:34
like the reverse, right? So you talked a lot
12:36
about notebooks. And many people
12:38
go from kind of notebook into CSV into
12:41
Excel. And there's some common tools for
12:43
doing that, like even built into pandas, for
12:45
example, to be well, since of what they
12:47
can do there before they have to
12:49
necessarily decide like I need to run it
12:51
in inside of Excel. I think there's still
12:54
a special value to having structured code. Oh,
12:56
yeah, for sure. That you could
12:58
have, I mean, notebooks is like kind of
13:00
a fuzzy structured code. It's not like it's
13:02
not like a proper py file,
13:05
because you can run the stuff still out
13:07
of order. But at least within the cell
13:09
it runs within order, you know, like one
13:11
dimensional out of order, rather than like Excel,
13:13
which is two dimensional potentially, three if you're
13:15
taken to other workbooks. But anyway, what can
13:17
people do if they're not just to talk
13:19
to Excel now? Right.
13:21
I think you kind of alluded to
13:23
it. But the main way there are
13:26
a couple of packages, one is actually
13:28
built into pandas. But I think it's
13:30
a dependency on open py Excel. But
13:32
yeah, that basically, I've
13:34
been playing around with that recently to
13:36
try and see if I can get
13:38
support for the new Python based cells
13:41
in that parser. Turns out parsing XML
13:43
is not fun and not something I
13:45
like doing. But basically,
13:47
the last two days parsing Excel
13:49
are XML. Oh, my gosh, it's
13:51
not funny. And in particular, you
13:53
know, standardized document specs, because that's
13:56
basically so there are wonderful packages
13:58
out there already that do. this
14:00
for you. And so what you would
14:02
do is you basically just hand your
14:04
excel file CSV whatever to these packages
14:07
and they would return them as basically
14:09
whatever you like. Usually I go to
14:11
pandas tables because there are data frames
14:14
because why not? But yeah, so there's
14:16
basically any format that you could pretty
14:18
much want. There's probably already really nice
14:21
to import that and you can just
14:23
go right on your merry way using
14:25
your python. Yeah, you can use the
14:27
xlsxwriter if you want to like create
14:30
excel. Yeah, yeah, yeah. Right? Like yeah,
14:32
it's really cool. You can even like
14:34
make plots but you can from Python
14:37
make a plot in the excel worksheet
14:39
so that when somebody opens it they
14:41
see the plot made in excel. Kind of
14:43
crazy. This
14:45
portion of talk python is brought to
14:47
you by posit the makers of shiny
14:49
formerly our studio and especially
14:52
shiny for python. Let
14:54
me ask you a question. Are you building awesome
14:56
things? Of course you are. You're
14:58
a developer or data scientist. That's what we
15:00
do and you should check out posit connect.
15:03
Posit connect is a way for you
15:05
to publish share and deploy all the
15:07
data products that you're building using python.
15:10
People ask me the same question all the time.
15:12
Michael, I have some cool data science project or
15:14
notebook that I built. How do
15:16
I share it with my users, stakeholders,
15:19
teammates? I need to learn fast API
15:21
or flask or maybe view or react.js.
15:24
Hold on now. Those are cool technologies and I'm
15:26
sure you benefit from them but maybe stay focused
15:28
on the data project. Let posit connect
15:31
handle that side of things. With posit
15:33
connect you can rapidly and securely
15:35
deploy the things you build in
15:37
python. Streamlet, dash, shiny, bokeh, fast
15:39
API, flask, quarto, ports,
15:42
dashboards, and APIs. Posit
15:44
connect supports all of them and posit
15:46
connect comes with all the bells and
15:48
whistles to satisfy IT and other enterprise
15:51
requirements. Make deployment the easiest
15:53
step in your workflow with posit
15:55
connect. For a limited time you
15:57
can try posit connect for free
15:59
for three months by going to
16:01
to talkbython.fm slash posit. That's talkbython.fm
16:03
slash posit. The link is in
16:05
your podcast player show notes. Thank
16:08
you to the team at posit for supporting
16:10
TalkByThon. That's
16:13
been around for a long time. That's not like an
16:15
announcement. Right, people have been, there's been
16:17
different ways and they've come in and
16:20
out of support for different Python
16:22
versions and stuff. But
16:24
there are ways to kind of do that. And
16:26
I see that a lot of people are
16:28
like, I'm working in notebooks, but the final
16:30
consumer of this information is not
16:32
a data scientist or a Python person. They
16:35
live in Excel and they live in Outlook.
16:37
The only thing that can give them is
16:39
Excel spreadsheets or a PDF. Yep, that is
16:41
pretty much always the output of my
16:43
notebooks is I either export it like
16:46
the whole notebook as a PDF or
16:48
yeah, basically organizing things such that I
16:50
can use pandas or something to export
16:53
it to an Excel workbook. But it's
16:55
kind of a pain then because you
16:57
have your, there's that translation step
17:00
that you kind of have to keep going back
17:02
and forth. If you're dialoguing, somebody says, oh, but
17:04
what happens if you do this? And it's like,
17:06
okay, I gotta go rerun and remake a new PDF
17:08
for you. Could you just like do it? I just
17:10
need a quick change. Like, could you just incorporate that
17:13
like, yeah. It's not
17:15
the same change, we gotta read. Ideally, we
17:17
all have nice DevOps pipelines where you just
17:19
commit a change to source and it re-renders
17:22
all the notebooks. That's in a perfect
17:24
world. Of course, that's how it works. Obviously, that's how I always
17:26
work. It is. So
17:28
I guess, before we get into the details
17:31
of how this works, like why? Right,
17:34
because we just laid out, it is possible to like
17:36
go to notebooks, have Excel kind
17:38
of as an output and a save as
17:41
in a sense. The biggest thing for me
17:43
is like, well, it's not intended, of course,
17:45
as any sort of replacement. It really is,
17:47
as you were kind of mentioning before,
17:49
it's like a different front end sort of
17:52
thing. Like we view, there's Python scripts,
17:54
there's Jupyter notebooks, which is kind of like
17:56
an alternative front end. Before writing that Python
17:58
code, I kind of think of... using Excel
18:00
and Python like this as kind
18:02
of using a different kind of
18:04
data first. Like whenever we're thinking about
18:06
data, it's usually in some form of
18:09
grid or table or something like that.
18:11
So like being able to work with
18:14
the data kind of visually in that
18:16
sort of UI is really, really interesting
18:18
and kind of to the point that
18:20
you just made about like the end
18:23
consumer might only know how to use
18:25
Excel and doesn't know anything about Python
18:27
or doesn't know anything about running DevOps
18:29
pipeline. I didn't mean that comment either
18:31
to be disparaging because there are
18:34
people that do incredible stuff with Excel. Maybe
18:36
they shouldn't, but they can and they do.
18:39
I have in kind of delving trying to
18:41
understand what are like the weirdest things Excel
18:43
can do as I've been trying to make
18:45
demos. Like people do some weird like competitions
18:47
with Excel, like there's the painting in Excel.
18:50
Is there a flight simulator in
18:52
there? A flight simulator like you
18:54
can you know with macros, it's
18:57
very scary. So I yeah, absolutely
18:59
like I am not an Excel
19:01
pro. I am a Python developer
19:03
who uses Excel when prompted basically.
19:05
Yeah. Well, there's no
19:08
question, absolutely no debate
19:10
about it that the upper bound of what you
19:12
can do with Python is greater than the upper
19:14
bound of what you can do with Excel. But
19:16
so many people just have they have tabular data
19:18
and they need reports and understanding and change
19:20
this what happens there. Yeah. And
19:23
I think the biggest value like kind
19:25
of having played with this now for
19:27
a little over half a year is
19:29
collaboration. You don't have that kind of you don't
19:31
have to have that iteration loop between okay here
19:34
we talked about it or you know you came
19:36
and sat at my computer while I showed you
19:38
you know my Jupyter Notebook so we can make
19:40
changes like that. All of the things like having
19:43
multiple people in the Excel doc at once you know
19:45
you can just send the share link and they
19:47
can join and they can run things in the notebook
19:49
they don't have to install or set up Python
19:51
and you can just you can leave comments
19:53
like you would in Word docs so like
19:55
basically that whole kind of review
19:58
and collaboration workflow. just
20:00
turns into something that people are already pretty
20:02
familiar with with like Word docs and stuff
20:05
like that Which is a thing that Jupiter
20:07
notebooks generally don't have so I think that's
20:09
kind of the one of the most interesting
20:11
Differentiators between them. Yeah, I just
20:14
like an hour and a half
20:16
ago released the episode on Notebook
20:19
7 and Jupiter lab 4 which comes
20:21
with the real-time collaboration. Yeah, which is
20:24
really exciting So it's
20:26
on the horizon Yeah If it hasn't
20:28
been like a common thing But even
20:30
so again a lot of these people are not
20:32
gonna be in the notebooks to collaborate with you
20:35
Right, right. It's fine and you played with this
20:37
for a while how much of this is going
20:39
to be a gateway Experience to
20:41
doing more like I
20:43
couldn't remember that Excel formula But I asked
20:45
co-pilot and told me to do this Python
20:47
thing and I it totally made more sense
20:49
to me Maybe I should just
20:51
learn a little more Python and and kind of grow
20:54
beyond Excel Like what do you think of this as
20:56
a first step for many people would go? I'm
20:58
not a programmer No way if not
21:00
a geek no, but then they are
21:02
yeah They totally are like if you're playing around
21:04
with a bunch of numbers and making fancy spreadsheets
21:06
and stuff. I'm sorry You're you're nerdy
21:09
about data. And so yeah, I
21:11
think it's a really because there are lots of
21:13
really cool things You can do with Excel But
21:15
as you say like some of the plotting features
21:17
and stuff You can't do like
21:19
you can maybe do but it'd be really hard
21:21
and some it might just be straight up Impossible
21:24
to make you know, like some of the map
21:26
plot lib multi-paneled Aligned plots
21:28
with like interesting statistical plotting
21:31
things that aren't just your standard bar
21:33
and chart sorts of stuff So like if
21:35
you're trying to do some of those statistical
21:37
modeling things or the other big thing is
21:39
like the Python and Excel One of
21:41
the it has Pytorch and stuff like that
21:44
So if you want to do just kind of like
21:46
entry-level machine learning sorts of stuff and you don't want
21:48
to have to like Set up your
21:50
big data source and SQL servers, you know,
21:52
whatever what have you to work with it?
21:54
If you just got your spreadsheet of like
21:57
your home sensor data or something like that
21:59
you can actually just have it make a
22:01
regression model and you don't have to like spin
22:03
up a whole thing you know in environments and
22:05
stuff like that. When you predict the battery in
22:07
your gate will be dead next week. I'm going
22:10
to need to take an action on this. Which
22:12
would be great when then I dismiss the notification
22:14
and still don't remember to do it. Why
22:17
can't we leave the house? Well remember that notification said you're not going
22:19
to be able to open the gate in a week? That
22:21
was a week ago. Mm-hmm sounds familiar. I know
22:24
we were talking earlier that you have some cool
22:26
home assistant automation and stuff. Yeah, yeah, yeah. Awesome.
22:30
So let's just jump
22:32
into it. I mean let's talk about what is Python
22:34
in Excel? Like how do people use it? What
22:36
can it do? What can it do? In
22:39
short, basically having the Python in Excel feature
22:41
means that you can when you're in a
22:43
cell if you type the equal sign which
22:45
is usually how you start a function in Excel.
22:47
Right, you might type equal some parenthesis and then
22:49
off you go something like that. Exactly. You
22:52
drag it around. So you type equals and
22:54
then you type py open parenthesis and that
22:57
basically turns the cell now into a
22:59
Python cell. So it'll have a
23:01
little visual change. It'll turn green
23:03
on the left and there's also
23:05
a keyboard shortcut to do this. It should put the
23:07
Python logo. It should be like a blue, yellow, or
23:09
a cloud. Yeah, green
23:12
is kind of the cell color. I don't know. It
23:15
is green. Anyway, we can file feedback
23:17
on every file. Community
23:19
feedback for the Python people. We need the Python
23:21
logo in there. Let's make it happen. The
23:23
idea is that basically you can change
23:25
a cell in the Excel notebook into
23:27
one that basically is kind of like
23:29
a Jupiter cell. You can type
23:31
Python code. You can import modules.
23:34
You can write functions. You can
23:36
print things like basically anything
23:39
that would be valid in a Jupiter notebook cell. Maybe
23:41
not necessarily the magic commands but
23:44
like it's fair game. Sure. You can get to
23:46
the shell as a hacker I just do. I
23:48
did actually try a lot of that. I
23:51
should say, once you've typed in your code
23:53
there and you run the cell with control
23:56
enter, it's not shift enter because that's a
23:58
very established keyboard shortcut in Excel. Excel
24:01
which moves you around in the grid. So,
24:03
pro tip, remember it's control, enter. But
24:06
what happens then is basically Excel
24:08
connects to a container instance in
24:11
Azure which has a
24:13
standardized Anaconda provided environment. So
24:15
it's an Anaconda environment that
24:18
has a fixed
24:20
declarative set of packages which is
24:22
basically kind of what 80 to
24:24
90% of projects use. We
24:27
can talk about like which ones that are, which
24:29
ones are in that environment in a second. But
24:32
your code then runs in this, you know,
24:34
it referred to as like an iron box
24:37
in this container instance. So it does not,
24:39
there's- I don't know who you are. It
24:41
doesn't know you, well, I mean,
24:43
you are, and it's basically running a
24:46
Jupyter kernel in that box. So like
24:48
the kind of communication, if
24:51
you have multiple cells in your sheet that have
24:53
Python code in it, every time you make a
24:55
change, you know, just like an Excel would normally
24:57
kind of like recalculate everything in the sheet, it
25:00
will basically ping that iron box as
25:02
if it was kind of like a
25:04
Jupyter notebook. That's the thing that surprised
25:07
me most is that it doesn't just
25:09
run locally because you could embed the
25:11
Python runtime into Excel without any trouble.
25:13
Yes. And- In terms of making
25:16
the good path work. Yes. But
25:19
I think part of the, you know, part of the
25:21
design philosophy with this as a feature to Excel
25:24
is this is an enterprise
25:26
product that enterprises want to use and
25:28
IT admins want to feel good about,
25:31
you know, what security permissions, things, you know,
25:33
where data can come from, like
25:36
all the permissioning, you
25:38
don't want the- compliance good stuff. to go, it does
25:40
what? Yeah, no. No, we're not doing
25:42
that. And we just recovered from the ransomware thing. So
25:44
we're definitely not, we're done. So
25:46
what are the restrictions? It has no network
25:49
access. Yeah, so that iron box does not
25:51
talk to, the only thing it can talk
25:53
to is your, you know, instance of Excel.
25:55
It can receive commands, but it doesn't. It
25:57
does not touch the internet otherwise. Interesting. So,
26:00
that automatically changes maybe what some people
26:02
think like for example, Pandas
26:05
read CSV, give it a URL and
26:07
say I want the third table. Like
26:09
it's not gonna do those types of
26:11
things or you can't do request.get against
26:13
some external data. Mm-hmm. Which
26:15
initially I was like really sad about. I
26:18
understand the security things but was a bit
26:20
sad. But then some of my Excel friends
26:22
showed me because this is also kind of
26:25
a challenge in Excel too like you know
26:27
how do you get data, people have things
26:29
in SQL servers, people are databases more
26:31
generally. Every minute I want to have
26:33
it refresh. Yeah, like that kind of
26:35
it's not concurrency but like keeping everything
26:37
up to date is a really big
26:40
headache and the thing is Excel is
26:42
already very good at addressing this. So
26:44
there's something called Power Query which is
26:46
another feature of Excel and that's basically
26:48
so the scenarios like you described like
26:50
if there's a CSV somewhere in a
26:52
GitHub repo that I want to pull
26:54
in, you can use the
26:56
Power Query feature can go fetch that
26:58
and bring that into your Excel file
27:00
that then you can use with Python and
27:03
Excel. So it kind of separates that task
27:05
of getting the data to work
27:07
with kind of prize that out of
27:09
the Python piece but puts it in
27:11
much safer hands. Sure. Secure
27:14
hands I guess if that makes sense.
27:16
Yeah, restricted hands. Okay, it
27:18
doesn't have access to your account, it doesn't
27:20
have a token to your account like your
27:22
Office 365 or whatever. Yeah, it's pretty locked
27:25
down. You can't pip install things, it comes
27:27
free, free can. Yeah. It
27:29
does what it says on the tin and like okay, these are the things
27:31
I can do. Yeah, and
27:33
that again sounds kind of sad
27:35
but honestly like I've been trying to make
27:37
a bunch of samples and stuff and I
27:40
haven't run into too
27:42
many like it's got
27:44
Numpy, Panda, Sci-Fi, Seaborn,
27:46
Astro-Pi. Yeah, Astro-Pi
27:48
is pretty awesome. It's got Matplotlib.
27:51
Yeah. PiTorch and he
27:53
said pi wavelets, how's that for a
27:55
throwback to my mathematical days? That's like
27:57
fast 4a transform, don't work more complicated.
28:00
Scikit-learn, SciPy, SimPy. There's
28:03
your Matlab or your Mathematica right
28:05
there. Yeah, and others, I'll
28:08
link to the options. This
28:12
portion of TalkPython to me is brought to you
28:14
by the PyBites Python Developer
28:16
Mindset Program. It's
28:19
run by my two friends and frequent
28:21
guests, Bob Deldebose and Julian Sequira. And
28:23
instead of me telling you about it, let's hear
28:25
them describe their program. 2024
28:29
is unfolding and with it comes a
28:31
world of opportunities in the Python landscape.
28:34
Opportunities for your Python career and journey
28:36
can come from anywhere and at any
28:38
time. Are you ready to seize them when
28:40
they do? Don't let this
28:42
be the year when opportunities pass you by.
28:45
Our Python coaching is designed to
28:47
prepare you for the unexpected, to
28:49
equip you with the skills and
28:51
confidence needed to tackle any
28:53
Python challenge. Whether it's a
28:55
dream job, a complex project, or
28:58
a new venture, you need to be ready
29:00
for it. With PyBites coaching, 2024
29:02
won't just be another year. Check
29:06
out our PDM program and take the first
29:08
step towards a year filled with Python success.
29:11
Don't just dream about being a developer,
29:14
achieve it with PyBites. Apply
29:16
for the Python Developer Mindset today. It's
29:19
quick and free to apply. The
29:21
link is in your podcast player show notes. Thanks
29:24
to PyBites for sponsoring the show. It
29:28
really does cover most of, obviously
29:31
there are still plenty of cases where you
29:33
will just want to use Python and that's
29:35
okay. This is in
29:37
no way, shape, or form is
29:39
this supposed to take over your
29:41
entire Python workflow. It's really, I
29:43
still am doing my Python development,
29:45
but basically if there are people
29:48
who I know I want to
29:50
especially communicate what I'm doing to, who
29:52
that is their language, I now have a
29:54
tool that I can kind of put the
29:56
things that I would normally have in my
29:59
development environment. in a tool that
30:01
they can access and interact with too that also
30:03
doesn't feel super bad to me. Well,
30:07
what's the alternative? It's the right Excel
30:09
functions and VBA macro. Yeah, I know.
30:11
I'm not doing that. Yeah, it's
30:13
a pretty massive upgrade and I do think it's
30:15
gonna be a bit of a gateway like, you
30:17
know what? This Python stuff is not that complicated.
30:19
It's kind of cool maybe. What do you do
30:21
with those notebooks again? I think
30:23
that'll be cool. Yeah, yeah. I think
30:26
that'll happen. When I think about writing Python, I'll
30:28
use something like PyCharm, like really cool code like
30:30
analysis and then think about it like with
30:33
rough maybe running that's like an integration and
30:35
autocomplete and there might even be like an
30:37
AI magic or maybe this is happening in
30:39
VS code in a real similar way. Then
30:41
when I think about writing Excel formulas, it's
30:43
like one line across. These are not the
30:46
same. So what is it like to write
30:48
Python in Excel? Yeah,
30:50
it definitely I do generally
30:53
try to keep like when I write note
30:55
like in Jupyter notebooks I try to keep
30:57
myself small and not just have giant things
31:00
but yeah, you're totally right like even just
31:02
from the view you can't really
31:04
drag it much bigger than a couple lines.
31:06
You can expand it so it's at least
31:08
multi-line. Yeah, you can see multi-line and that's
31:10
fine and it has syntax highlighting and it does
31:13
have like tab completes. It got like the...
31:15
Does it do like the language server? Language server,
31:17
yep, yep, yep. So yeah, that's actually pretty good.
31:20
As I think was in the keynote
31:22
stuff today, there's co-pilot in Excel and
31:24
so like we'll see I think some
31:26
of these AI features also kind of
31:29
help speed up some of those things. So
31:31
like if you're like I just I want
31:33
a pandas table here and you know to
31:35
convert this part of you know the diction
31:37
the column that's all dictionaries to like their
31:39
own columns and stuff like that it'll just
31:41
write it for you and you don't have
31:43
to that editor editing experience
31:46
is definitely not the same as
31:48
you know working in my beloved vs code
31:50
but well if the keynote here at this
31:52
conference was a drinking game and AI was
31:55
a word you wouldn't have lasted 15 minutes
31:57
and it was two and a half hour.
32:00
There was so much AI this and AI that
32:02
and the AI talking to the AI and here's
32:04
and it's it's quite something But they did show
32:06
a really cool thing of like I've got some
32:08
Python code in here and I've got some Some
32:11
related data and just asking like alright help me
32:14
graph this in Python It would show you like
32:16
a seaborne graph or a matplotlib or something like
32:18
that, which is pretty excellent Honestly, yeah And then
32:20
in this case here then it would be in
32:22
a format that you could share with somebody that
32:25
they could then Excel has what
32:27
if scenario features where it makes it really
32:29
easy to be like well, you know Here's
32:31
the forecast or whatever, but what if this
32:33
change what if interest rates go up? And
32:37
you have like these little drop downs like all
32:39
of those actually work And so like I can
32:41
use cells that are like drop down data validated
32:44
drop down cells and that just feeds as
32:47
Feeds into my Python code and changes,
32:49
you know, like the theme I'm using for
32:51
my matplotlib plots or something like that Go
32:54
a little meta for a moment. Could I
32:56
use? pandas are Excel
32:59
Xls Xsl X writer whatever
33:02
the extension is to
33:04
write an Excel workbook Reggie
33:06
that itself does it has Python in it
33:08
in principle. Yes Are there just formulas or
33:11
just strings that go into formulas? Yes And
33:13
that's precisely what I've been working on recently
33:15
is to try and figure out how to
33:17
integrate into some of those The existing Python
33:20
packages because basically what you need to do
33:22
is make sure all of that data is
33:24
Inserted into the XML document model
33:27
in the right way and stuff
33:29
like it's pretty cool Like you
33:31
can take it you can take an Excel You know an
33:33
Excel notebook if you just change extension to zip then
33:36
you get to see all the XML that's inside
33:38
of it And you can just read hill you
33:40
can just see the sheets that are like here's
33:42
the the Python functions And you can just see
33:44
the strings and stuff like that So you don't
33:47
think there's anything blocking that and that's something that
33:49
I want to be able to help contribute if
33:51
I can to the community So that you could
33:53
actually programmatically write your Excel Sheet
33:56
with Python from right and so things that are
33:58
not allowed like screen scrapers or
34:00
talking to a database, you could kind of
34:02
burn that into Excel as like fix data
34:05
because then keep rebuilding that workbook or something
34:07
like that. All right integration
34:09
between Excel and Python. In Excel, I can say
34:11
I want to take the sum and I select
34:13
the big section and it's like a
34:15
1 colon a 20 and it
34:18
sums those up. But in Python, data
34:20
science land, I don't even know what
34:22
that is. So how do I make,
34:24
obviously the point having Python there is
34:26
to access chunks of data, process it,
34:28
do other things to it, turn it into graphs. What's
34:31
the interop story? Part of the Python
34:33
and Excel feature is that in that
34:35
con environment, there is a module called
34:38
Excel. The abbreviation as
34:40
it's loaded is the letter
34:42
X and then the letter L.
34:44
Basically, that allows you to access
34:47
all kinds of data and properties
34:49
of the worksheet in Python. So
34:51
that's basically whether anything from like
34:54
the cell styling to you can
34:56
literally just put Excel parentheses and
34:58
then in the string, the Excel
35:00
selection, you know, a 1 colon whatever
35:03
selections and it will just then
35:05
is already available in Python. So
35:07
there's kind of this interop package
35:09
that allows you to transition data
35:11
models between what Excel thinks
35:13
of as data and what Python thinks of
35:15
as data. Yeah and basically that comes
35:17
out as a pandas data frame, right?
35:20
Yeah in general, once you run a Python
35:23
or a Python an Excel
35:25
cell that has Python code in it, you run
35:27
it. There's a
35:29
lot of cells, sheets, code. After you
35:31
run it, you have the option of
35:34
two different output formats actually. So you
35:36
can by default, I think it outputs
35:38
as a Python object. Yeah. If it
35:41
recognizes that it's a string or
35:43
a list, it might just display that.
35:45
Or you can kind of intentionally cast
35:47
it to an Excel data type. And
35:50
again, if it can automatically understand that,
35:52
oh, this dictionary should just be in
35:55
a list or something like that. And a lot
35:57
of that functionality is Kind of provided
35:59
by... It a collaboration with anaconda. You'll
36:01
see like if you hover over if you
36:03
have it return like a a python object.
36:05
If you hover over it it'll show you
36:07
like in of the class at might have
36:09
some so you the properties and then you
36:11
could drill and and say turn know turn
36:14
the output into the slaying this property but
36:16
it shows the a little pop up with
36:18
the anaconda logue of sports stuff yeah that
36:20
that's him in or same brand in there
36:22
are no I did notice that as well
36:24
that in Jupiter I can have a cell
36:26
like say like eggs equal something and then
36:28
some other point in time who. I can
36:30
say X squared. Whatever that assumes
36:33
I'm running them. Top.
36:35
To bottom or at least those to sell.
36:37
The one that finds the axis run before
36:39
the one that uses the acts which makes
36:41
notebooks little bit non deterministic. in if you
36:43
don't just go run ourselves but it excels
36:45
exit a whole nother level ride this refers
36:48
to that was points over there and then
36:50
I goes up and then he goes back
36:52
to visit all over. how do we make
36:54
sense of like the connections? Yeah it is
36:56
something that I like always is very impressive
36:58
about Excel because. I like copy and paste.
37:00
tons of things and some all the references
37:03
stay correct. In. A logic that's not what would
37:05
happen if I respected my Python code. By.
37:07
Default the execution order those left
37:09
to right and then down. South.
37:11
That's something I got Earth I
37:13
generally. Just kind of my invention. Use
37:16
single. Columns assessed that's going down and left
37:18
to right on the number of work seat.
37:20
So to evaluate everything in the first like
37:22
the up tabs at the bottom for separate
37:24
seats dat you and go cross see as
37:26
well. Oh yeah yeah and so like honestly
37:28
one of the things that have habits I've
37:30
developed working with this is the first seat
37:32
in like the top left corner I put
37:34
any sort of like in nets are things
37:36
that blink, things I want to have defined
37:38
everywhere. just put in literally the first sell
37:41
that it could ever possibly evaluate and then
37:43
everything else from there I will be what
37:45
it's going to be. Systems for and
37:47
it's that's I make sure those things.
37:49
And actually when it spins up, there
37:51
is a pre defined kind of start
37:54
ups definition block, so it will automatically
37:56
import pandas as be deemed numb. peers
37:58
and p like so you know have to
38:00
like a lot of that kind of standard boilerplate you
38:02
don't have to but if I'm doing
38:04
a notebook where I'm doing a lot of like
38:06
second learn yeah yeah I just always want to
38:08
have that there I just got a copy pasta
38:11
for that make a incredibly thin column
38:14
that that's the view word expanded right that's
38:16
actually I've done that yeah awesome but just
38:18
like in a Jupiter notebook though that kernel
38:20
like if you can define variables like that
38:22
X and you can use that anywhere else
38:24
and then you can also just put it
38:26
in a cell and you can have Excel
38:28
refer to it and it will also know
38:30
what data is there right you might have
38:32
to do the pi or the
38:34
XL to like transform yeah otherwise then you
38:37
just use it yeah yeah awesome so you
38:39
said this runs in Azure and
38:41
it's some lockdown container but
38:44
what version of Python like
38:47
what OS is the container running what's the story
38:49
what do you know about where this actually runs
38:51
are like the to the extent that
38:53
people will care yeah yeah so
38:55
I don't know the specific version
38:58
I'm guessing it's probably 311 but the idea
39:00
is that it is a well-known
39:03
and highly descriptive
39:06
and fixed container descriptive it's it's
39:08
running I believe it's just kind of
39:10
running on a standard boon to like
39:13
Docker it's an Azure container somebody could
39:15
do a sys stop platform and yeah
39:17
get that and get it out right
39:19
interestingly yeah you can try some of
39:22
that but how they've kind of helped
39:24
lock down some of that is there's
39:26
actually hooks because I was actually trying
39:28
to do this I was trying to exfiltrate
39:30
and or escape escape the box but
39:32
they actually seen me they
39:35
have hooks in the Python interpreter that
39:37
basically can catch anything before it touches
39:39
or anything outside of Python and so
39:41
it's I mean I am not a
39:43
security expert I am not a security
39:46
expert but any like naive sort of
39:48
like ha ha I'm gonna import system
39:50
like manipulate permissions OS run open Pippen
39:52
so all of that is pretty safe
39:58
Yeah, it's gonna be. You know, a modern. There's
40:00
no Python is gonna have everything up
40:02
to date and from a supply chain
40:04
standpoint, it's all provided by in a
40:07
which they have assertions about code origin
40:09
and stuff like that. So really it
40:11
should be a reproduce the most best
40:13
definition of a reproducible environment that will
40:16
literally it. So I even in perpetuity
40:18
like of you hand the worksheet to
40:20
somebody else and you ten years later
40:23
come back to it assuming you know
40:25
thera thousand blown up presumably a run
40:27
in a container of exactly the same
40:29
description. Seat on, have to worry about
40:31
owes. Shoot I wrote this and of
40:33
her son of place on that. Now
40:35
the package was built with Python. destroyed
40:38
our allies i'm sorry ass eye for
40:40
an Opportunism weren't so many things that
40:42
soul into that seventy I know it's
40:44
wrong. Yeah like so that the statement
40:46
that I saw and sort of us
40:48
abilities as exists in work both will
40:50
still calculate against the version of environment
40:52
the worth brick was created on and
40:54
users can be prompted to upgrade if
40:56
they want like new mirror and times
40:58
in Python versions or whatever. So. Basically
41:00
there's no requirements such his to
41:02
your project that Tom opinion your
41:04
versions but at the time increase
41:07
in their kind of snapshots effectively
41:09
penned virtual moment. He and as
41:11
I mentioned there is. Kind of like
41:13
a a sixty start up script for it
41:15
that does those and have suggested imports and
41:17
you know settings for things which isn't actually
41:19
view in Excel. It shows you and it's
41:21
read only right now but we eat that
41:23
might be a thing that you might be
41:25
able to edit at the beginning so if
41:27
you know there are the same things in
41:29
that one sell that I always put at
41:31
the beginning maybe I can change that for
41:34
my notebooks sorts of things ya so it's
41:36
still and preview it's not yeah you if
41:38
I go to my Excel that I've got
41:40
and sauna my mac and just try to
41:42
type this. Is the As Nine a
41:44
like not gonna words of estimate? How do
41:46
you get it suggests? So right now you
41:48
ads in the Windows Insider program. So
41:51
you have to have a
41:53
answer sixty five certain subscription for
41:55
itself. You have to enroll
41:57
in the. insiders program which is
41:59
in If you go to your
42:01
account settings in the app right now like because
42:04
it is a gradual rollout I think the initial
42:06
public preview was only in September. Yeah, it's pretty
42:08
new. Yeah, it's it's quite new Like pretty much
42:10
every week when I start working on this, I'm
42:12
like, all right What you know does
42:15
this look the same as it did last week? So
42:18
but right now it's only available for
42:20
Windows machines It is fully intended to
42:22
be available on all platforms including the
42:25
web-based version, which will be super cool
42:27
Yeah, but yeah right now windows initially
42:30
and the feature itself is
42:32
will have some sort of cost
42:34
but that is and how much
42:37
and when is TBD
42:41
Yeah, exactly. Yeah, awesome
42:43
Well really cool to get a look at
42:45
this I think for me personally I think the
42:47
coolest thing about it is that it's gonna expose more
42:50
people to Python Give them a little bit of confidence
42:52
and then they can go only 20 libraries Oh
42:56
over on my PI that org we're just under
43:00
500,000 maybe I could expand the world of it,
43:02
right? That's awesome Yeah, and you don't have to
43:04
like all right download a version of Python
43:06
now or download a version of anaconda now
43:09
Make sure you have all the things installed make sure
43:11
your permissions things on pass like all of that
43:13
just goes away We need a virtual environment activated
43:17
It's just already handled for you and get right
43:19
to the fun stuff. Yeah, that's super cool. All
43:22
right Well, I always ask at the end of
43:24
the show for some pie pi package that you
43:26
think is cool You've come across like anything you're
43:28
like, oh that's interesting people should know about it
43:30
doesn't have to be popular When
43:34
I can't think of the name Generates
43:37
a bunch of fake data for you
43:39
to use. Okay, there's I said makaru
43:41
and makaru is the website. Yeah, Baker Baker
43:44
is good, but this it's like hypothesis. Okay, come
43:46
up with a different one though Well
43:50
one that I is near and dear to
43:52
my heart is actually called PI QIR So
43:55
one of the mentioned the quantum computing stuff
43:57
before one of the open source communities. I'm
43:59
sorry really engaged with is
44:02
actually an open source consortium
44:04
to basically create a LLVM
44:06
style machine agnostic language
44:09
agnostic representation for quantum programs. Wow.
44:11
Okay. Which is really cool and
44:13
like coming most of programming right
44:15
now has kind of was born
44:17
in Python like Python was the
44:20
host for all of this but as it's
44:22
growing up and you know kind of leaving
44:24
the nest as it were from Python basically
44:26
we need ways to interrupt like this huge
44:29
existing tool ecosystem with actual hardware
44:31
and hardware that supports things that
44:33
basically the Python like mental model
44:35
doesn't really match up like and
44:37
that's why you kind of need
44:40
domain specific languages for quantum computing
44:42
but this PyQIR package gives you
44:44
kind of an easy way to
44:46
connect and like bootstrap that interrupt
44:49
from your quantum programs that you've
44:51
written in Python to
44:53
this intermediate representation QIR quantum
44:56
intermediate representation which
44:59
is actually LLVM so you can
45:01
you don't have to figure out
45:03
how to write an export LLVM
45:05
file. Yeah. Awesome. Which is both
45:07
very fun and informative and you can do it
45:09
through Python and Rust. The
45:12
PyO3 Rust crate is my favorite. Yeah.
45:14
Yeah. So that's if you're at all
45:16
interested in quantum computing stuff and
45:19
you have a Python skill
45:21
set or interest that would definitely be a
45:23
package I'd say go check out. Excellent. All
45:25
right. Well final call action people want to
45:27
get started with stuff what do they do?
45:29
Yeah definitely. There is a great blog post
45:32
with the original announcement that's got all of
45:34
the detailed steps for how you find and
45:36
enroll in the insiders programs but other
45:38
than that there is a GitHub repo if you
45:40
do get a chance to play with this and
45:42
find all the things that you hate about it
45:44
and want to come yell at me. I
45:48
field a lot of those questions and enjoy it.
45:50
So yeah you can just come file
45:53
issues on the GitHub repo and you know like
45:55
if something isn't working the way you thought or
45:57
you find a bug that's kind of the best
45:59
way. the team is very active
46:01
here. And so that's a great
46:03
way to kind of get some good
46:06
interaction with the folks who are building this in real
46:08
time. Very cool. Well,
46:10
Sarah, thanks for being here. Yeah, absolutely. Thanks so much for
46:12
having me. Yeah, you bet. Cheers. This
46:15
has been another episode of Talk Python to Me.
46:18
Thank you to our sponsors. Be sure to check out
46:20
what they're offering. It really helps support the show. This
46:23
episode is sponsored by Posit Connect from
46:25
the makers of Shiny. Publish,
46:27
share and deploy all of your data
46:29
projects that you're creating using Python. Streamlet,
46:32
Dash, Shiny, Bokeh, FastAPI,
46:34
Flas, Quattro, Reports, Dashboards
46:36
and APIs. Posit
46:39
Connect supports all of them. Try Posit
46:41
Connect for free by going to talkpython.fm
46:43
slash posit. P-O-S-I-T.
46:47
Are you ready to level up your
46:49
Python career? And could you use a
46:51
little bit of personal and individualized guidance
46:53
to do so? Check out
46:55
the PyBytes Python Developer Mindset Program.
46:58
Want to level up your Python? We have one
47:01
of the largest catalogs of Python video courses over
47:03
at Talk Python. Our content ranges
47:05
from true beginners to deeply advanced topics
47:07
like memory and async. And best of
47:09
all, there's not a subscription in sight.
47:12
Check it out for yourself at training.talkpython.fm.
47:16
Be sure to subscribe to the show, open your favorite
47:18
podcast app, and search for Python. We should be
47:20
right at the top. You can also
47:22
find the iTunes feed at slash iTunes,
47:24
the Google Play feed at slash Play,
47:26
and the Direct RSS feed at
47:28
slash RSS on talkpython.fm. We're
47:31
live streaming most of our recordings these days.
47:33
If you want to be part of the
47:35
show and have your comments featured on the
47:37
air, be sure to subscribe to our YouTube
47:39
channel at talkpython.fm slash YouTube. This
47:42
is your host, Michael Kennedy. Thanks so much for
47:44
listening. I really appreciate it. Now get out there
47:46
and write some Python code. This
47:48
is Matlab sonata, where I'm
47:50
descriptive at home. I use the
47:52
easy method on Fuck Filming to
47:54
play a game Steam run on
47:57
the Internet mobile native practices. I
47:59
have an old computer that says,
Podchaser is the ultimate destination for podcast data, search, and discovery. Learn More